コード例 #1
0
        /// <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;
            }
        }
コード例 #2
0
 private void ArtworkLoad(GridItemInfo gi)
 {
     if (!String.IsNullOrEmpty(gi.PictureUrl))
     {
         lblArtworkType.Text = "WEB";
     }
     else
     {
         isArtworkLoadComplete = true;
         lblArtworkType.Text   = "NONE";
     }
     picArtwork.Image = gi.Picture;
 }
コード例 #3
0
 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;
         }
     }
 }
コード例 #4
0
        /// <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;
        }
コード例 #5
0
        /// <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);
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        /// <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;
                }
            }
        }
コード例 #8
0
        /// <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();
            }
        }
コード例 #9
0
        /// <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();
            }
        }