/// <summary> /// RowNoにあるデータを割り込みする(次に再生する) /// </summary> /// <param name="id"></param> public void interruptRowNo(int rowNo) { long playingcount = playingList.Count; if (playingcount > 0) { // 既存のリストに割り込み GridItemInfo gi = (GridItemInfo)LinearAudioPlayer.GridController.getRowGridItem(rowNo); gi.IsInterrupt = true; var interruptNode = playingList.Find(playingList.LastOrDefault(g => g.IsInterrupt)); if (interruptNode == null) { interruptNode = playingList.First; } playingList.AddAfter(interruptNode, gi); if (LinearGlobal.LinearConfig.PlayerConfig.RestCount != -1) { LinearGlobal.LinearConfig.PlayerConfig.RestCount++; } LinearGlobal.LinearConfig.PlayerConfig.RestMaxCount++; } else { // リストを作成して追加 GridItemInfo gi = (GridItemInfo)LinearAudioPlayer.GridController.getRowGridItem(rowNo); playingList.AddLast(gi); LinearGlobal.LinearConfig.PlayerConfig.RestMaxCount = 1; } }
private void ArtworkLoad(GridItemInfo gi) { if (!String.IsNullOrEmpty(gi.PictureUrl)) { lblArtworkType.Text = "WEB"; } else { isArtworkLoadComplete = true; lblArtworkType.Text = "NONE"; } picArtwork.Image = gi.Picture; }
public void updatePlayingList(GridItemInfo gi) { // todo:ラムダ式に変える? foreach (var gridItemInfo in playingList) { if (gridItemInfo.Id == gi.Id) { // todo:最終再生日時だけで十分? gridItemInfo.Lastplaydate = gi.Lastplaydate; gridItemInfo.IsSkipped = false; break; } } }
/// <summary> /// 再生中リストをDBから復元 /// </summary> public void restorePlayingList() { ConditionGridItemInfo cgi = new ConditionGridItemInfo(); cgi.Value = SQL; object[][] resultList = SQLiteManager.Instance.executeQueryNormal( SQLBuilder.selectPlaylist( SQLResource.SQL001, LinearGlobal.PlaylistMode, "", LinearEnum.FilteringMode.DEFAULT, cgi)); foreach (object[] recordList in resultList) { GridItemInfo gi = LinearAudioPlayer.GridController.createLoadGridItem(recordList); playingList.AddLast(gi); } LinearGlobal.LinearConfig.PlayerConfig.RestCount = playingList.Count; LinearGlobal.LinearConfig.PlayerConfig.RestMaxCount = playingList.Count; }
/// <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); } }
public PlayItemInfo getNextPlayInfo() { if (LinearGlobal.LinearConfig.PlayerConfig.RestCount == 0) { return(null); } // 2番目のタイトルとアーティストを取得。取得できない場合はnullを返す var nextNode = playingList.First.Next; if (nextNode == null) { return(null); } PlayItemInfo pii = new PlayItemInfo(); GridItemInfo nextItem = nextNode.Value; pii.Id = nextItem.Id; pii.Title = nextItem.Title; pii.Artist = nextItem.Artist; return(pii); }
/// <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> /// アルバム一括タグ更新 /// </summary> private void allAlbumTrackUpdate(bool isTrackNoSort) { if (!isValid()) { return; } // IDを取得する long id = FileInfoList[0].Id; // 更新対象を取得する List <DbParameter> paramList = new List <DbParameter>(); paramList.Add(new SQLiteParameter("Id", id)); string sql = SQLResource.SQL048; if (isTrackNoSort) { sql += "ORDER BY ALBUM, ABS(TRACK), ID"; } else { sql += "ORDER BY ID"; } object[][] resultList = SQLiteManager.Instance.executeQueryNormal(sql, paramList); // amazonAlbumListをループ int i = 0; int albumIndex = albumView.SelectedRows[0].Index; AmazonItemInfo aii = amazonItemInfoList[albumIndex]; foreach (var amazonItemTrackInfo in aii.Tracks) { if (resultList.Length >= i + 1) { GridItemInfo gi = new GridItemInfo(); gi.Id = long.Parse(resultList[i][0].ToString()); if (String.IsNullOrEmpty(resultList[i][2].ToString())) { gi.FilePath = resultList[i][1].ToString(); } else { gi.FilePath = Path.Combine(LinearGlobal.TempDirectory, resultList[i][2].ToString()); gi.Tag = resultList[i][1].ToString(); gi.Option = resultList[i][2].ToString(); } gi.Genre = resultList[i][4].ToString(); // 更新する対象 gi.Title = amazonItemTrackInfo.TrackName; gi.Artist = aii.Artist; gi.Album = aii.Title; gi.Track = amazonItemTrackInfo.TrackNumber; if (aii.ReleaseDate.Length >= 4) { gi.Year = aii.ReleaseDate.Substring(0, 4); } gi.Picture = picAmazonImage.Image; gi.Selection = (int)EnumMode.SINGLE; LinearGlobal.StockTagEditList.Add(gi); } i++; } /* * // id, filepath, option, track * foreach (var record in resultList) * { * GridItemInfo gi = new GridItemInfo(); * gi.Id = long.Parse(record[0].ToString()); * if (String.IsNullOrEmpty(record[2].ToString())) * { * gi.FilePath = record[1].ToString(); * } else * { * gi.FilePath = Path.Combine(LinearGlobal.TempDirectory, record[2].ToString()); * gi.Tag = record[1].ToString(); * gi.Option = record[2].ToString(); * } * * gi.Track = int.Parse(record[3].ToString()); * gi.Genre = record[4].ToString(); * * if (gi.Track-1 >= 0) * { * //int albumIndex = albumView.SelectedRows[0].Index; * int trackIndex = gi.Track - 1; * //AmazonItemInfo aii = amazonItemInfoList[albumIndex]; * * // 更新する対象 * gi.Title = aii.Tracks[trackIndex].TrackName; * gi.Artist = aii.Artist; * gi.Album = aii.Title; * gi.Track = aii.Tracks[trackIndex].TrackNumber; * gi.Year = aii.ReleaseDate.Split('-')[0].Trim(); * gi.Picture = picAmazonImage.Image; * * gi.Selection = (int) EnumMode.SINGLE; * * LinearGlobal.StockTagEditList.Add(gi); * * } * }*/ Action saveTagAction = () => { var saveTagResult = LinearAudioPlayer.PlayController.saveTag(); if (saveTagResult.Count > 0) { Action uiAction = () => { LinearAudioPlayer.PlayController.saveTagEnd(saveTagResult); }; LinearGlobal.MainForm.ListForm.BeginInvoke(uiAction); } }; LinearAudioPlayer.WorkerThread.EnqueueTask(saveTagAction); // TODO:いる? if (LinearGlobal.StockTagEditList.Count > 0) { Action getPcitureAction = () => { LinearAudioPlayer.PlayController.getPicture(gi); Action uiAction = () => { if (this.IsHandleCreated) { ArtworkLoad(gi); } }; this.BeginInvoke(uiAction); }; LinearAudioPlayer.WorkerThread.EnqueueTask(getPcitureAction); this.Hide(); } }
/// <summary> /// OKボタンクリック時 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOk_Click(object sender, EventArgs e) { // 更新がなかったらそのまま閉じる if (gi != null && txtTitle.Text.Equals(gi.Title) && txtArtist.Text.Equals(gi.Artist) && txtAlbum.Text.Equals(gi.Album) && txtTrackNo.Text.Equals(gi.Track.ToString()) && txtGenre.Text.Equals(gi.Genre) && txtYear.Text.Equals(gi.Year) && checkArtworkSave.Checked == beforeCheckArtwork) { _result = false; this.Close(); return; } // タグ情報を保存 if (this.isValid()) { if (this.Mode == EnumMode.MULTI) { if (MessageUtils.showQuestionMessage( String.Format( MessageResource.Q0002, this.FileInfoList.Count.ToString())) == DialogResult.Cancel) { return; } } foreach (TagEditFileInfo tefi in _fileInfoList) { // タグ編集情報 GridItemInfo tagEditInfo = new GridItemInfo(); tagEditInfo.Id = tefi.Id; if (!String.IsNullOrEmpty(tefi.ArchiveFilePath)) { tagEditInfo.FilePath = tefi.FilePath; tagEditInfo.Tag = tefi.ArchiveFilePath; tagEditInfo.Option = tefi.TargetPath; } else { tagEditInfo.FilePath = tefi.FilePath; } if (this.Mode == EnumMode.MULTI) { tagEditInfo.Artist = txtArtist.Text; tagEditInfo.Album = txtAlbum.Text; if (!String.IsNullOrEmpty(txtTrackNo.Text)) { tagEditInfo.Track = int.Parse(txtTrackNo.Text); } tagEditInfo.Genre = txtGenre.Text; tagEditInfo.Year = txtYear.Text; tagEditInfo.Selection = (int)EnumMode.MULTI; } else { tagEditInfo.Title = txtTitle.Text; tagEditInfo.Artist = txtArtist.Text; tagEditInfo.Album = txtAlbum.Text; tagEditInfo.Track = int.Parse(txtTrackNo.Text); tagEditInfo.Genre = txtGenre.Text; tagEditInfo.Year = txtYear.Text; if (checkArtworkSave.Checked) { tagEditInfo.Picture = new Bitmap(picArtwork.Image); } else { tagEditInfo.Picture = null; } tagEditInfo.Selection = (int)EnumMode.SINGLE; } LinearGlobal.StockTagEditList.Add(tagEditInfo); } //LinearGlobal.StockTagEditInfo = tagEditInfo; Action saveTagAction = () => { var saveTagResult = LinearAudioPlayer.PlayController.saveTag(); if (saveTagResult.Count > 0) { Action uiAction = () => { LinearAudioPlayer.PlayController.saveTagEnd(saveTagResult); }; LinearGlobal.MainForm.ListForm.BeginInvoke(uiAction); } }; LinearAudioPlayer.WorkerThread.EnqueueTask(saveTagAction); this.Hide(); } }