Пример #1
0
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (0 > e.RowIndex)
            {
                return;
            }
            Hzexe.QQMusic.Model.SongItem si = (dataGridView1.Rows[e.RowIndex].DataBoundItem as TableModel).SongItem;
            var col = dataGridView1.Columns[e.ColumnIndex];

            Action <EnumFileType, SongItem> fun = new Action <EnumFileType, SongItem>((ext, obj) =>
            {
                var att = ext.GetFileType();

                string musicfilename            = $"{obj.title}-{obj.singer[0].name}.{att.Suffix}";
                saveFileDialog1.CheckPathExists = true;
                saveFileDialog1.CheckFileExists = false;
                saveFileDialog1.DefaultExt      = att.Suffix;
                saveFileDialog1.OverwritePrompt = true;
                saveFileDialog1.ValidateNames   = true;
                saveFileDialog1.Tag             = new { si = obj, ft = ext };
                saveFileDialog1.Filter          = $"{att.Suffix}(*.{att.Suffix})|*.{att.Suffix}";
                saveFileDialog1.FileName        = musicfilename;
                saveFileDialog1.ShowDialog();
            });

            if ("Ape" == col.DataPropertyName)
            {
                fun(EnumFileType.Ape, si);
            }
            else if ("Flac" == col.DataPropertyName)
            {
                fun(EnumFileType.Flac, si);
            }
            else if ("Mp3_320k" == col.DataPropertyName)
            {
                fun(EnumFileType.Mp3_320k, si);
            }
            else if ("Mp3_128k" == col.DataPropertyName)
            {
                fun(EnumFileType.Mp3_128k, si);
            }
            else if ("M4a" == col.DataPropertyName)
            {
                fun(EnumFileType.M4a, si);
            }
            else if ("Play" == col.DataPropertyName)
            {
                EnumFileType type         = si.file.GetAvailableFileType();//取当前歌曲可用的类型
                EnumFileType downloadType = 0;
                downloadType |= (type & EnumFileType.Ape);
                if (downloadType == 0)
                {
                    downloadType |= (type & EnumFileType.Flac);
                }
                if (downloadType == 0)
                {
                    downloadType |= (type & EnumFileType.Mp3_320k);
                }
                if (downloadType == 0)
                {
                    downloadType |= (type & EnumFileType.Mp3_128k);
                }
                if (downloadType == 0)
                {
                    downloadType |= (type & EnumFileType.M4a);
                }



                string url = api.GetDownloadSongUrl(si, downloadType);
                mediaPlayer.SetMedia(new Uri(url));

                Task.Run(async() =>
                {
                    //尝试载歌词
                    var ms = new System.IO.MemoryStream();
                    if (await api.downloadLyricAsync(si, ms))
                    {
                        ms.Position = 0;
                        lrc         = Lrc.InitLrc(ms);
                    }
                    else
                    {
                        lrc = null;
                    }
                    ms.Dispose();
                    mediaPlayer.Play();
                });
            }
        }