陈嘉乐
2020-06-16 7167334c0e89dd84827d59e726123d14776e3a09
HDL_ON/UI/Music/A31PlayMusicPage.cs
@@ -14,10 +14,22 @@
        public override void RemoveFromParent()
        {
            base.RemoveFromParent();
            timerThread?.Abort();
            Volume.VolumeChange = null;
            if (timerThread != null)
            {
                try
                {
                    if (timerThread.IsAlive)
                    {
                        timerThread.Abort();
                    }
                }
                catch { }
            }
        }
        View.PlayView playView = new View.PlayView();
        public void Show()
        {
            ///1秒定时更新状态
@@ -51,6 +63,35 @@
            playView.viewFrameLayout(middLayout);
            #endregion
            ///切换播放模式点击事件;
            playView.playOrderBtn.MouseUpEventHandler += (sender, e) =>
             {
                 string msg = Language.StringByID(StringId.switchTo);
                 switch (A31MusicModel.Current.A31PlayStatus.loop)
                 {
                     //0列表循环,1单曲循环,2随机播放;
                     case "0":
                         A31MusicModel.Current.A31PlayStatus.loop = "1";
                         playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png";
                         msg += Language.StringByID(StringId.singleMode);
                         break;
                     case "1":
                         A31MusicModel.Current.A31PlayStatus.loop = "2";
                         playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/random.png";
                         msg += Language.StringByID(StringId.randomMode);
                         break;
                     case "2":
                         A31MusicModel.Current.A31PlayStatus.loop = "0";
                         playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/list.png";
                         msg += Language.StringByID(StringId.listMode);
                         break;
                 }
                 new PublicAssmebly().TipMsgAutoClose(msg, false,1000);
                 string url = "http://" + A31MusicModel.Current.IPAddress + "/httpapi.asp?command=setPlayerCmd:" + "loopmode:" + A31MusicModel.Current.A31PlayStatus.loop;
                 SendMethod.SendCommand(url);
             };
            ///添加喜爱点击事件;
            playView.loveBtn.MouseUpEventHandler += (sender, e) =>
            {
@@ -104,40 +145,7 @@
                }
                A31MusicModel.Save();
                ////保存
                //string saveRoomUIName = "A31_" + A31MusicModel.Current.IPAddress;
                //Shared.IO.FileUtils.WriteFileByBytes(saveRoomUIName,
                //Shared.SimpleControl.CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(A31MusicModel.Current)));
            };
            ///切换播放模式点击事件;
            playView.playOrderBtn.MouseUpEventHandler += (sender, e) =>
             {
                 string msg = Language.StringByID(StringId.switchTo);
                 switch (A31MusicModel.Current.A31PlayStatus.loop)
                 {
                     //0列表循环,1单曲循环,2随机播放;
                     case "0":
                         A31MusicModel.Current.A31PlayStatus.loop = "1";
                         playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/single.png";
                         msg += Language.StringByID(StringId.singleMode);
                         break;
                     case "1":
                         A31MusicModel.Current.A31PlayStatus.loop = "2";
                         playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/random.png";
                         msg += Language.StringByID(StringId.randomMode);
                         break;
                     case "2":
                         A31MusicModel.Current.A31PlayStatus.loop = "0";
                         playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/list.png";
                         msg += Language.StringByID(StringId.listMode);
                         break;
                 }
                 new PublicAssmebly().TipMsgAutoClose(msg, false);
                 string url = "http://" + A31MusicModel.Current.IPAddress + "/httpapi.asp?command=setPlayerCmd:" + "loopmode:" + A31MusicModel.Current.A31PlayStatus.loop;
                 SendMethod.SendCommand(url);
             };
            ///我的列表点击事件
            playView.playlistBtn.MouseUpEventHandler += (sender, e) =>
            {
@@ -156,7 +164,7 @@
                    Width = Application.GetRealWidth(344),
                    Height = Application.GetRealHeight(460),
                    BackgroundColor = Color.WhiteColor,
                    Radius=(uint)Application.GetRealHeight(12),
                    Radius = (uint)Application.GetRealHeight(12),
                };
                popFra.AddChidren(dialogFra);
                dialogFra.AddChidren(loading);//dialogFra刷新图标父控件
@@ -210,7 +218,7 @@
                    Y = Application.GetRealHeight(15),
                    Width = Application.GetRealWidth(28 + 12),//28
                    Height = Application.GetRealHeight(20),
                    TextID =StringId.cancelMusic,
                    TextID = StringId.cancelMusic,
                    TextColor = Color.MusicNoTxetColor,
                    TextSize = TextSize.Text14,
                    TextAlignment = TextAlignment.CenterLeft,
@@ -234,11 +242,20 @@
                ///移除界面
                EventHandler<MouseEventArgs> removeFromParentView = (sen, e1) =>
                 {
                     if (updateSelectedMusicThread != null && updateSelectedMusicThread.IsAlive)
                     if (updateSelectedMusicThread != null)
                     {
                         updateSelectedMusicThread.Abort();
                         ///关闭线程
                         try
                         {
                             if (updateSelectedMusicThread.IsAlive)
                             {
                                 updateSelectedMusicThread.Abort();
                                 ///关闭线程
                             }
                         }
                         catch { }
                     }
                     popFra.RemoveFromParent();
                 };
                backIextBtn.MouseUpEventHandler += removeFromParentView;
@@ -261,7 +278,7 @@
                            A31MusicModel.Current.CurrentPlayMusicInfoList = new List<MusicInfo>();
                            return;
                        }
                        var playString = SendMethod.GetCurrentPlayList();
                        var playString = SendMethod.GetCurrentPlayList(A31MusicModel.Current);
                        A31MusicModel.Current.CurrentPlayMusicInfoList = new List<MusicInfo>();
                        var se = System.Security.SecurityElement.FromString(playString);
                        while (se.Children != null)
@@ -313,13 +330,31 @@
                });
            };
            ///音量图标点击事件
            playView.volIconBtn.MouseUpEventHandler += (sender, e) =>
            {
                if (A31MusicModel.Current.ServerClientType == 1 && A31MusicModel.Current.Slave.slave_list.Count != 0)
                { ///主播放器
                   //new View.DialogView { }.PlayerVolumeView(A31MusicModel.Current);
                    var volumeView = new View.DialogView { };
                    volumeView.PlayerVolumeView(A31MusicModel.Current);
                    volumeView.UpdateVolume();
                }
            };
            ///音量进度条点击事件
            int startVolume =0;//之前的音量
            //int endVolume = 0;//现在的音量
            EventHandler<int> progressClick = (sender, e) =>
            {
                playView.volValueBtn.Text = playView.volSeekBar.Progress + "%";
                A31MusicModel.Current.ControlVolume(playView.volSeekBar.Progress);
                A31MusicModel.Current.A31PlayStatus.vol = playView.volSeekBar.Progress.ToString();
                if (startVolume != e)
                {
                    startVolume = e;
                    SendMethod.ControlVolume(e, A31MusicModel.Current);
                    A31MusicModel.Current.A31PlayStatus.vol = e.ToString();
                }
            };
            playView.volSeekBar.OnProgressChangedEvent += progressClick;
            playView.volSeekBar.OnStopTrackingTouchEvent += progressClick;
@@ -327,25 +362,25 @@
            playView.prevBtn.MouseDownEventHandler += (sender, e) =>
            {
                playView.prevBtn.IsSelected = true;
                SendMethod.Previous();
                SendMethod.Previous(A31MusicModel.Current);
            };
            playView.prevBtn.MouseUpEventHandler += (sender, e) =>
            {
                playView.prevBtn.IsSelected = false;
            };
            };
            ///暂停/播放点击事件
            playView.playBtn.MouseDownEventHandler += (sender, e) =>
            {
                if (playView.playBtn.IsSelected)
                {
                    playView.playBtn.IsSelected = false;
                    SendMethod.Pause();
                    SendMethod.Pause(A31MusicModel.Current);
                    A31MusicModel.Current.A31PlayStatus.status = "pause";
                }
                else
                {
                    playView.playBtn.IsSelected = true;
                    SendMethod.Play();
                    SendMethod.Play(A31MusicModel.Current);
                    A31MusicModel.Current.A31PlayStatus.status = "play";
                }
            };
@@ -353,7 +388,7 @@
            playView.nextBtn.MouseDownEventHandler += (sender, e) =>
            {
                playView.nextBtn.IsSelected = true;
                SendMethod.Next();
                SendMethod.Next(A31MusicModel.Current);
            };
            playView.nextBtn.MouseUpEventHandler += (sender, e) =>
            {
@@ -367,12 +402,18 @@
                    return;
                }
                playView.volSeekBar.Progress = volume;
                A31MusicModel.Current.ControlVolume(playView.volSeekBar.Progress);
                A31MusicModel.Current.A31PlayStatus.vol = playView.volSeekBar.Progress.ToString();
                if (startVolume != volume)
                {
                    startVolume = volume;
                    SendMethod.ControlVolume(volume, A31MusicModel.Current);
                    A31MusicModel.Current.A31PlayStatus.vol = volume.ToString();
                }
            };
        }
        System.Threading.Thread timerThread;
        /// <summary>
        /// 定时更新状态
@@ -474,9 +515,8 @@
                            //更新播放器音量给系统音量
                            Volume.MusicVolume = playView.volSeekBar.Progress;
                            //当前播放音乐时间        
                            int playSecond = int.Parse(A31MusicModel.Current.A31PlayStatus.curpos) / 1000;// + (int)(DateTime.Now - A31MusicModel.Current.LastDateTime).TotalSeconds;
                                                                                                          //currentMusiceA31.musicPalyTime = (playSecond*10).ToString();
                                                                                                          //分钟
                            int playSecond = int.Parse(A31MusicModel.Current.A31PlayStatus.curpos) / 1000 + (int)(DateTime.Now - A31MusicModel.Current.LastDateTime).TotalSeconds;
                            int playMusicMinute = playSecond / 60;
                            //秒钟
                            int playMusicSecond = playSecond % 60;
@@ -508,7 +548,8 @@
                            }
                            playView.songNameTextView.Text = (A31MusicModel.Current.A31PlayStatus.Title == null ? "Unkown" : A31MusicModel.Current.A31PlayStatus.Title);
                            playView.singerBtn.Text = (A31MusicModel.Current.A31PlayStatus.Artist == null ? "Unkown" : A31MusicModel.Current.A31PlayStatus.Artist.Trim());
                            //更新源的界面
                            showSourcePage();
                        }
                        catch (Exception e)
                        {
@@ -520,6 +561,150 @@
            })
            { IsBackground = true };
            timerThread.Start();
        }
        /// <summary>
        /// 更新不同音乐源界面图标状态
        /// </summary>
        void showSourcePage()
        {
            playView.loveBtn.Alpha = 1;
            playView.loveBtn.Enable = true;
            playView.playlistBtn.Alpha = 1;
            playView.playlistBtn.Enable = true;
            playView.prevBtn.Alpha = 1;
            playView.prevBtn.Enable = true;
            playView.nextBtn.Alpha = 1;
            playView.nextBtn.Enable = true;
            playView.playOrderBtn.Alpha = 1;
            playView.playOrderBtn.Enable = true;
            //btnPlay.Alpha = 1;
            //btnPlay.Enable = true;
            playView.volSeekBar.IsClickable = true;
            switch (A31MusicModel.Current.A31PlayStatus.Source)
            {
                case "QPLAY"://QQ音乐
                    //currentsource.UnSelectedImagePath = "MusicIcon/qqmusic1.png";
                    playView.loveBtn.Alpha = 0.5f;
                    playView.loveBtn.Enable = false;
                    break;
                case "AIRPLAY"://酷狗音乐
                    //currentsource.UnSelectedImagePath = "MusicIcon/kumusic.png";
                    playView.loveBtn.Alpha = 0.5f;
                    playView.loveBtn.Enable = false;
                    playView.volSeekBar.IsClickable = false;
                    break;
                case "SONGLIST-NETWORK"://本地音乐
                    //currentsource.UnSelectedImagePath = "MusicIcon/musicMusic1.png";
                    break;
                case "SONGLIST-LOCAL"://USB
                    //currentsource.UnSelectedImagePath = "MusicIcon/USB1.png";
                    break;
                case "RADIO-NETWORK"://在线电台
                    //currentsource.UnSelectedImagePath = "MusicIcon/local1.png";
                    playView.playlistBtn.Alpha = 1;
                    playView.playlistBtn.Enable = true;
                    playView.prevBtn.Alpha = 0.5f;
                    playView.prevBtn.Enable = false;
                    playView.nextBtn.Alpha = 0.5f;
                    playView.nextBtn.Enable = false;
                    playView.playOrderBtn.Alpha = 0.5f;
                    playView.playOrderBtn.Enable = false;
                    break;
                case "STATION-NETWORK"://Pandora电台
                    playView.volSeekBar.IsClickable = false;
                    //currentsource.UnSelectedImagePath = "MusicIcon/pandora1.png";
                    playView.loveBtn.Alpha = 0.5f;
                    playView.loveBtn.Enable = false;
                    playView.prevBtn.Alpha = 0.5f;
                    playView.prevBtn.Enable = false;
                    playView.playOrderBtn.Alpha = 0.5f;
                    playView.playOrderBtn.Enable = false;
                    break;
                case "BLUETOOTH"://蓝牙
                   // currentsource.UnSelectedImagePath = "MusicIcon/bluetooth1.png";
                    playView.loveBtn.Alpha = 0.5f;
                    playView.loveBtn.Enable = false;
                    playView.playlistBtn.Alpha = 0.5f;
                    playView.playlistBtn.Enable = false;
                    playView.prevBtn.Alpha = 0.5f;
                    playView.prevBtn.Enable = false;
                    playView.nextBtn.Alpha = 0.5f;
                    playView.nextBtn.Enable = false;
                    playView.playOrderBtn.Alpha = 0.5f;
                    playView.playOrderBtn.Enable = false;
                    //btnPlay.Alpha = 0.5f;
                    //btnPlay.Enable = false;
                    break;
                case "LINE-IN"://线路输入
                    // currentsource.UnSelectedImagePath = "MusicIcon/muiscline1.png";
                    playView.loveBtn.Alpha = 0.5f;
                    playView.loveBtn.Enable = false;
                    playView.playlistBtn.Alpha = 0.5f;
                    playView.playlistBtn.Enable = false;
                    playView.prevBtn.Alpha = 0.5f;
                    playView.prevBtn.Enable = false;
                    playView.nextBtn.Alpha = 0.5f;
                    playView.nextBtn.Enable = false;
                    playView.playOrderBtn.Alpha = 0.5f;
                    playView.playOrderBtn.Enable = false;
                    //btnPlay.Alpha = 0.5f;
                    //btnPlay.Enable = false;
                    break;
                default:
                    //currentsource.UnSelectedImagePath = "MusicIcon/dlna.png";
                    playView.volSeekBar.IsClickable = false;
                    playView.loveBtn.Alpha = 0.5f;
                    playView.loveBtn.Enable = false;
                    playView.playlistBtn.Alpha = 0.5f;
                    playView.playlistBtn.Enable = false;
                    playView.prevBtn.Alpha = 0.5f;
                    playView.prevBtn.Enable = false;
                    playView.nextBtn.Alpha = 0.5f;
                    playView.nextBtn.Enable = false;
                    playView.playOrderBtn.Alpha = 0.5f;
                    playView.playOrderBtn.Enable = false;
                    break;
            }
            //if (A31MusicModel.Current.A31PlayStatus.playSource == "UPnPServer")
            //{
            //    currentsource.UnSelectedImagePath = "MusicIcon/dlna.png";
            //}
            //else if (A31MusicModel.Current.A31PlayStatus.playSource == "Tidal")
            //{
            //    currentsource.UnSelectedImagePath = "MusicIcon/Tidal1.png";
            //}
        }
        /// <summary>
        /// 显示当前播放音乐View
@@ -621,10 +806,17 @@
                ///点击播放事件
                clickBtn.MouseUpEventHandler += (sender, e) =>
                {
                    if (updateSelectedMusicThread != null && updateSelectedMusicThread.IsAlive)
                    if (updateSelectedMusicThread != null)
                    {
                        updateSelectedMusicThread.Abort();
                        ///关闭线程
                        try
                        {
                            if (updateSelectedMusicThread.IsAlive)
                            {
                                updateSelectedMusicThread.Abort();
                                ///关闭线程
                            }
                        }
                        catch { }
                    }
                    System.Threading.Tasks.Task.Run(() =>
                    {
@@ -636,7 +828,7 @@
                            A31MusicModel.Current.A31PlayStatus.Title = songBtn.Text;
                            System.Threading.Tasks.Task.Run(() =>
                            {
                                SendMethod.ListMusicPlay(playListName, clickBtn.Tag);
                                SendMethod.ListMusicPlay(playListName, clickBtn.Tag, A31MusicModel.Current);
                            });
                        });
                    });
@@ -690,7 +882,8 @@
                    });
                }
            });
            })
            { IsBackground = true };
            updateSelectedMusicThread.Start();
        }
    }