/// <summary> /// コンストラクタ(複数) /// </summary> public TagEditDialog() { InitializeComponent(); buttonConvertZip.Enabled = false; btnRename.Enabled = false; FileInfoList = new List <TagEditFileInfo>(); this._mode = EnumMode.MULTI; SourceGrid.RowInfo[] rows = LinearAudioPlayer.GridController.getSelectRowsInfo(); foreach (SourceGrid.RowInfo r in rows) { TagEditFileInfo tefi = new TagEditFileInfo(); GridItemInfo gi = (GridItemInfo)LinearAudioPlayer.GridController.getRowGridItem(r.Index); tefi.Id = gi.Id; tefi.TargetPath = gi.Option; if (String.IsNullOrEmpty(tefi.TargetPath)) { // オーディオファイル tefi.FilePath = gi.FilePath; } else { // 圧縮ファイル tefi.FilePath = Path.Combine(LinearGlobal.TempDirectory, gi.Option); tefi.ArchiveFilePath = gi.FilePath; } FileInfoList.Add(tefi); } }
/// <summary> /// タグ編集情報を設定する。 /// </summary> /// <param name="id"></param> public void setTagEditInfo(long id) { FileInfoList = new List <TagEditFileInfo>(); TagEditFileInfo tagEdit = new TagEditFileInfo(); // 初期化 picArtwork.Image = null; tagEdit.Id = id; object result = SQLiteManager.Instance.executeQueryOneRecord( SQLResource.SQL019, new SQLiteParameter("Id", id)); if (System.DBNull.Value != result) { IList <object> record = (IList <object>)result; tagEdit.FilePath = record[0].ToString(); tagEdit.TargetPath = record[1].ToString(); tagEdit.ArchiveFilePath = ""; if (!String.IsNullOrEmpty(tagEdit.TargetPath)) { // 圧縮ファイルの場合は存在するか確認し、なかったら解凍する tagEdit.ArchiveFilePath = tagEdit.FilePath; tagEdit.FilePath = Path.Combine(LinearGlobal.TempDirectory, tagEdit.TargetPath); if (!File.Exists(tagEdit.FilePath)) { SevenZipManager.Instance.extract(tagEdit.ArchiveFilePath, tagEdit.TargetPath, LinearGlobal.TempDirectory); } } gi = new GridItemInfo(); gi.Id = tagEdit.Id; gi.FilePath = tagEdit.FilePath; gi.Tag = tagEdit.ArchiveFilePath; gi.Option = tagEdit.TargetPath; // タグ取得 LinearAudioPlayer.PlayController.getTag(gi); // 設定 buttonConvertZip.Enabled = false; btnRename.Enabled = false; this._mode = EnumMode.SINGLE; txtFilePath.Text = gi.FilePath; txtArchivePath.Text = tagEdit.ArchiveFilePath; initalData(); textSearch.Text = gi.Album; // GoogleImageローテート用 bg_album = txtAlbum.Text; bg_artist = txtArtist.Text; bg_title = txtTitle.Text; picArtwork.InitialImage = Image.FromFile(LinearGlobal.StyleDirectory + "\\loading.gif"); picArtwork.LoadCompleted += new AsyncCompletedEventHandler(picArtwork_LoadCompleted); isArtworkLoadComplete = false; if (!String.IsNullOrEmpty(tagEdit.ArchiveFilePath) && !".zip".Equals(Path.GetExtension(tagEdit.ArchiveFilePath).ToLower())) { buttonConvertZip.Enabled = true; } if (!String.IsNullOrEmpty(tagEdit.ArchiveFilePath)) { btnRename.Enabled = true; } FileInfoList.Add(tagEdit); if (gi.Picture == null || gi.IsNoPicture) { Action getPcitureAction = () => { LinearAudioPlayer.PlayController.getPicture(gi); Action uiAction = () => { if (this.IsHandleCreated) { ArtworkLoad(gi); } }; if (this.IsHandleCreated) { this.BeginInvoke(uiAction); } }; LinearAudioPlayer.WorkerThread.EnqueueTask(getPcitureAction); } else { isArtworkLoadComplete = true; lblArtworkType.Text = "FILE"; picArtwork.Image = gi.Picture; checkArtworkSave.Checked = true; beforeCheckArtwork = true; } } }
/// <summary> /// ZIP変換する。 /// </summary> /// <returns></returns> private bool convertZip() { // Todo: ファイルからまとめてZIP圧縮をサポートする。 bool result = false; try { TagEditFileInfo fileInfo = _fileInfoList[0]; string oldArchiveFilePath = fileInfo.ArchiveFilePath; string newArchiveFilePath = oldArchiveFilePath.Replace(Path.GetExtension(oldArchiveFilePath), ".zip"); if (File.Exists(fileInfo.ArchiveFilePath)) { // アーカイブファイル内一覧取得 IList <string> targetPathList = SevenZipManager.Instance.getFileNames(oldArchiveFilePath); // アーカイブを解凍する SevenZipManager.Instance.extract(oldArchiveFilePath, Path.Combine(LinearGlobal.TempDirectory, "conv")); // ZIPで再圧縮 SevenZipManager.Instance.compress(newArchiveFilePath, targetPathList, Path.Combine(LinearGlobal.TempDirectory, "conv")); // DB更新 updateDB(oldArchiveFilePath, newArchiveFilePath); // フォーム内変数更新 foreach (TagEditFileInfo tefi in _fileInfoList) { tefi.ArchiveFilePath = newArchiveFilePath; } // グリッド更新 int i = 1; while (i <= LinearAudioPlayer.GridController.Grid.Rows.Count - 1) { if (oldArchiveFilePath.Equals(LinearAudioPlayer.GridController.getValue(i, (int)GridController.EnuGrid.FILEPATH))) { LinearAudioPlayer.GridController .Grid[i, (int)GridController.EnuGrid.FILEPATH].Value = newArchiveFilePath; } i++; } // ファイルを削除 FileUtils.moveRecycleBin(oldArchiveFilePath); } txtArchivePath.Text = newArchiveFilePath; result = true; } catch (Exception ex) { MessageUtils.showMessage(MessageBoxIcon.Error, MessageResource.E0003 + "\n" + ex.Message); } return(result); }