陈嘉乐
2020-08-03 e56137e33ed5c77a485f9e83ee4b6534cfdf6432
HDL_ON/UI/UI2/FuntionControlView/Music/View/DialogView.cs
@@ -216,6 +216,7 @@
                    string msg = Language.StringByID(StringId.addMusicList) + list.ListName;
                    new PublicAssmebly().TipMsgAutoClose(msg, false);
                };
                fileIconBtn.MouseUpEventHandler += click;
                fileNameBtn.MouseUpEventHandler += click;
                addFlieRow.MouseUpEventHandler += click;
            }
@@ -225,7 +226,7 @@
        /// <summary>
        /// 选中组合的播放器的界面
        /// </summary>
        public void PlayMergence()
        public void PlayMergence(A31MusicModel a31MusicModel)
        {
            #region
@@ -357,6 +358,7 @@
                    SelectedImagePath = "MusicIcon/selectedIcon.png",
                };
                PlayRow.AddChidren(selectedIconBtn);
                ///加大几点范围
                Button clickBtn = new Button
@@ -364,7 +366,11 @@
                    Height = Application.GetRealHeight(50),
                };
                PlayRow.AddChidren(clickBtn);
                if (a31MusicModel.UniqueDeviceName == player.UniqueDeviceName)
                {
                    clickBtn.IsSelected = selectedIconBtn.IsSelected = true;
                    playList1.Add(a31MusicModel);
                }
                clickBtn.MouseUpEventHandler += (sender, e) =>
                {
                    clickBtn.IsSelected = !clickBtn.IsSelected;
@@ -423,7 +429,6 @@
                var host_Music_If = playList1.Find((c) => c.ServerClientType == 1);
                if (host_Music_If == null)
                {
                    var playList2 = new List<A31MusicModel>();
                    for (int i = 0; i < playList1.Count; i++)
                    {
@@ -432,7 +437,6 @@
                        {
                            playList2.Add(musics);
                        }
                    }
                    if (playList2.Count == 0)
@@ -577,20 +581,20 @@
                    addFlieRow.AddChidren(songNameBtn);
                    var wText = songNameBtn.GetTextWidth();//获取文本宽度
                    if (wText > 280)
                    if (wText >Application.GetRealWidth(220))
                    {
                        songNameBtn.Width = Application.GetRealWidth(280);
                        songNameBtn.Width = Application.GetRealWidth(220);
                    }
                    else
                    {
                        songNameBtn.Width = wText + 5;
                        songNameBtn.Width = wText + Application.GetRealWidth(15);
                    }
                    //歌手控件
                    Button singerBtn = new Button
                    {
                        X = songNameBtn.Right,
                        Y = Application.GetRealHeight(15),
                        Width = Application.GetRealWidth(280 - songNameBtn.Width),
                        Width = Application.GetRealWidth(220)- wText,
                        Height = Application.GetRealHeight(20),
                        TextColor = Color.MusicNoTxetColor,
                        TextSize = TextSize.Text12,
@@ -598,11 +602,6 @@
                        Text = "-" + player.A31PlayStatus.Artist.Trim(),
                    };
                    addFlieRow.AddChidren(singerBtn);
                    if (wText > 280)
                    {
                        ///歌名长度小于250才可以显示歌手出来
                        singerBtn.Width = Application.GetRealWidth(0);
                    }
                }
                else
                {
@@ -878,6 +877,8 @@
        /// <param name="musicList1"></param>
        void MergeThreading(A31MusicModel serverMusic, List<A31MusicModel> musicList1)
        {
            A31MusicModel mainModel = null;
            bool mainModelCollection = false;
            MusicMain.loading.Start(Language.StringByID(StringId.inConfiguration));
            bool _if = false;
            System.Threading.Tasks.Task.Run(() =>
@@ -938,10 +939,14 @@
                                    for (int j = 0; j < A31MusicModel.A31MusicModelList.Count; j++)
                                    {
                                        var music = A31MusicModel.A31MusicModelList[j];
                                        if(music.collection && !mainModelCollection)
                                        {
                                            mainModelCollection = true;
                                        }
                                        if (music.UniqueDeviceName == serverMusic.UniqueDeviceName)
                                        {
                                            music.ServerClientType = 1;
                                            mainModel = music;
                                            music.Slave = tmepSlaves;
                                            //过滤掉主播放器;
                                            continue;
@@ -960,12 +965,17 @@
                                        }
                                    }
                                    serverMusic.MainPlayName = str;
                                    foreach(var music in A31MusicModel.A31MusicModelList)
                                    {
                                        if(music.ServerClientType == 1)
                                        {
                                            music.MainPlayCollection = mainModelCollection;
                                        }
                                    }
                                    A31MusicModel.Save();
                                    break;
                                }
                            }
                        }
                        catch { }
                    }
@@ -1050,7 +1060,6 @@
                                {
                                    if (tmepSlaves.slave_list.Count == 0)
                                    {
                                        var host_music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == a31player.UniqueDeviceName);
                                        if (host_music != null)
                                        {
@@ -1082,7 +1091,6 @@
                                                music.IsOnLine = false;//先不允许读取
                                            }
                                        }
                                    }
                                    var host_a31player = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == a31player.UniqueDeviceName);
@@ -1123,7 +1131,9 @@
            });
        }
        /// <summary>
        /// 播放器名称
        /// </summary>
        public string NamePlayer(A31MusicModel a31player)
        {
            if (a31player.ServerClientType == 1)
@@ -1140,12 +1150,26 @@
        A31MusicModel currVolumePlay = null;//当前的播放器
        int startVolume = 0;//之前的音量
        int endVolume = 0;//现在的音量
        string if_volume ="";//标记是调节总音量还是单个播放器音量;
        /// <summary>
        /// 播放器音量的界面
        /// </summary>
        /// <param name="a31player">主播放器</param>
        public void PlayerVolumeView(A31MusicModel a31player)
        {
            volumePlayList.Clear();
            for (int i = 0; i < a31player.Slave.slave_list.Count; i++)
            {
                var slave = a31player.Slave.slave_list[i];
                var music_If = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == slave.uuid.Replace("uuid:", ""));
                if (music_If != null)
                {
                    music_If.ServerClientType = -1;
                    music_If.A31PlayStatus.vol = slave.volume;
                    volumePlayList.Add(music_If);
                }
            }
            volumePlayList.Add(a31player);
            #region
            //主控件
            Dialog volumedialog = new Dialog();
@@ -1153,32 +1177,18 @@
            //父控件
            FrameLayout frame = new FrameLayout { };
            volumedialog.AddChidren(frame);
            frame.MouseUpEventHandler += (sen, e) =>
            {
                volumedialog.Close();
                if (updateVolumeThread != null)
                {
                    try
                    {
                        if (updateVolumeThread.IsAlive)
                        {
                            updateVolumeThread.Abort();
                        }
                    }
                    catch { }
                }
            };
            //白色快父控件
            FrameLayout dialogFra = new FrameLayout()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealHeight(397),
                Y = Application.GetRealHeight(397-20),
                Width = Application.GetRealWidth(344),
                Height = Application.GetRealHeight(250),
                Height = Application.GetRealHeight(250+20),
                BackgroundColor = Color.WhiteColor,
                Radius = (uint)Application.GetRealHeight(12),
            };
            frame.AddChidren(dialogFra);
            #region 确认 取消
            //显示头部信息父控件
            FrameLayout topFra = new FrameLayout()
            {
@@ -1199,21 +1209,6 @@
                TextSize = TextSize.Text14,
            };
            topFra.AddChidren(cancelnBtn);
            cancelnBtn.MouseUpEventHandler += (sen, e) =>
            {
                volumedialog.Close();
                if (updateVolumeThread != null)
                {
                    try
                    {
                        if (updateVolumeThread.IsAlive)
                        {
                            updateVolumeThread.Abort();
                        }
                    }
                    catch { }
                }
            };
            //标题控件
            Button txetBtn = new Button
            {
@@ -1241,8 +1236,8 @@
                TextSize = TextSize.Text14,
            };
            topFra.AddChidren(confirmBtn);
            confirmBtn.MouseUpEventHandler += (sen, e) =>
            {
            EventHandler<MouseEventArgs> eventHandler= (sen,e) => {
                volumedialog.Close();
                if (updateVolumeThread != null)
                {
@@ -1256,31 +1251,72 @@
                    catch { }
                }
            };
            cancelnBtn.MouseUpEventHandler += eventHandler;
            confirmBtn.MouseUpEventHandler += eventHandler;
            frame.MouseUpEventHandler += eventHandler;
            #endregion
            #region 总音量的View
            FrameLayout totalVolumeFra = new FrameLayout
            {
                Height = Application.GetRealHeight(64),
                Y = Application.GetRealHeight(58),
            };
            dialogFra.AddChidren(totalVolumeFra);
            Button totalvolumeTextBtn = new Button
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(8),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(14),
                TextColor = Color.MusicNoTxetColor,
                TextSize = TextSize.Text10,
                TextAlignment = TextAlignment.CenterLeft,
                Text = Language.StringByID(StringId.totalVolume),
            };
            totalVolumeFra.AddChidren(totalvolumeTextBtn);
            DiyImageSeekBar totalVolSeekBar = new DiyImageSeekBar
            {
                Y = Application.GetRealHeight(12),
                X = Application.GetRealWidth(28),
                Width = Application.GetRealWidth(240),
                Height = Application.GetRealHeight(54),//进度条父控件背景高度
                IsProgressTextShow = false,//显示百分比
                IsClickable = true,//进度条是否滑动
                ProgressBarColor = Color.SelectedColor,//选中进度条颜色
                ThumbImagePath = "MusicIcon/progressIcon.png",//进度条按钮图标
                ThumbImageHeight = Application.GetMinRealAverage(54),//进度条按钮图标的高度(默认正方形:宽和高一样)
                SeekBarViewHeight = Application.GetMinRealAverage(8),//进度条的高度
                Progress = int.Parse(a31player.A31PlayStatus.vol),
                //ProgressChangeDelayTime=
            };
            totalVolumeFra.AddChidren(totalVolSeekBar);
            Button totalVolumeValueBtn = new Button
            {
                X = Application.GetRealWidth(289),
                Y = Application.GetRealHeight(31),
                Width = Application.GetRealWidth(26 + 15),
                Height = Application.GetRealHeight(17),
                TextColor = Color.MusicNoTxetColor,
                TextSize = TextSize.Text12,
                TextAlignment = TextAlignment.CenterLeft,
                Text = totalVolSeekBar.Progress.ToString() + "%",
            };
            totalVolumeFra.AddChidren(totalVolumeValueBtn);
            #endregion
            VerticalScrolViewLayout volumeViewLayout = new VerticalScrolViewLayout
            {
                Y = Application.GetRealHeight(58),
                Height = dialogFra.Height - Application.GetRealHeight(58),
                Y =Application.GetRealHeight(58+64),
                Height = dialogFra.Height - Application.GetRealHeight(58+64),
                Width = Application.GetRealWidth(343),
            };
            dialogFra.AddChidren(volumeViewLayout);
            volumePlayList.Clear();
            for (int i = 0; i < a31player.Slave.slave_list.Count; i++)
            {
                var slave = a31player.Slave.slave_list[i];
                var music_If = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == slave.uuid.Replace("uuid:", ""));
                if (music_If != null)
                {
                    music_If.ServerClientType = -1;
                    music_If.A31PlayStatus.vol = slave.volume;
                    volumePlayList.Add(music_If);
                }
            }
            volumePlayList.Add(a31player);
            for (int i = 0; i < volumePlayList.Count; i++)
            {
                var player = volumePlayList[i];
                #region 调节当个播放器View
                FrameLayout volumeFra = new FrameLayout
                {
                    Height = Application.GetRealHeight(64),
@@ -1295,17 +1331,10 @@
                    TextColor = Color.MusicNoTxetColor,
                    TextSize = TextSize.Text10,
                    TextAlignment = TextAlignment.CenterLeft,
                    Text = player.Name + Language.StringByID(StringId.volumeMusic),
                };
                volumeFra.AddChidren(volumeTextBtn);
                if (player.ServerClientType == -1)
                {
                    volumeTextBtn.Text = player.Name + Language.StringByID(StringId.volumeMusic);
                }
                else if (player.ServerClientType == 1)
                {
                    volumeTextBtn.Text = Language.StringByID(StringId.totalVolume);
                }
                DiyImageSeekBar volSeekBar = new DiyImageSeekBar
                {
@@ -1328,7 +1357,7 @@
                {
                    X = Application.GetRealWidth(289),
                    Y = Application.GetRealHeight(31),
                    Width = Application.GetRealWidth(26),
                    Width = Application.GetRealWidth(26+15),
                    Height = Application.GetRealHeight(17),
                    TextColor = Color.MusicNoTxetColor,
                    TextSize = TextSize.Text12,
@@ -1336,39 +1365,39 @@
                    Text = player.A31PlayStatus.vol + "%",
                };
                volumeFra.AddChidren(valueBtn);
                #endregion
                ///音量进度条点击事件
                EventHandler<int> progressClick = (sender, e) =>
                {
                    if (currVolumePlay == null || (currVolumePlay != null && currVolumePlay.UniqueDeviceName != player.UniqueDeviceName))
                    {
                        currVolumePlay = player;
                    }
                    endVolume = e;
                    if (player.ServerClientType == -1)
                    {
                        valueBtn.Text = volSeekBar.Progress + "%";
                        //SendMethod.ControlVolume(volSeekBar.Progress, player);
                    }
                    else if (player.ServerClientType == 1)
                    {
                        for (int j = 0; j < volumePlayList.Count; j++)
                        {
                            var music = volumePlayList[j];
                            var frameLayout = (FrameLayout)volumeViewLayout.GetChildren(j);
                            var diyImageSeekBar = (DiyImageSeekBar)frameLayout.GetChildren(1);
                            var button = (Button)frameLayout.GetChildren(2);
                            diyImageSeekBar.Progress = volSeekBar.Progress;
                            button.Text = volSeekBar.Progress + "%";
                            //SendMethod.ControlVolume(volSeekBar.Progress, music);
                        }
                    }
                    if_volume = "Volume";
                    valueBtn.Text = volSeekBar.Progress + "%";
                };
                volSeekBar.OnProgressChangedEvent += progressClick;
                volSeekBar.OnStopTrackingTouchEvent += progressClick;
            }
            EventHandler<int> totalProgressClick = (sender, e) =>
            {
                if_volume = "totalVolume";
                endVolume = e;
                totalVolumeValueBtn.Text = totalVolSeekBar.Progress + "%";
                for (int j = 0; j < volumePlayList.Count; j++)
                {
                    var music = volumePlayList[j];
                    var frameLayout = (FrameLayout)volumeViewLayout.GetChildren(j);
                    var diyImageSeekBar = (DiyImageSeekBar)frameLayout.GetChildren(1);
                    var button = (Button)frameLayout.GetChildren(2);
                    diyImageSeekBar.Progress = totalVolSeekBar.Progress;
                    button.Text = totalVolSeekBar.Progress + "%";
                }
            };
            totalVolSeekBar.OnProgressChangedEvent += totalProgressClick;
            totalVolSeekBar.OnStopTrackingTouchEvent += totalProgressClick;
            #endregion
        }
@@ -1394,24 +1423,31 @@
                    while (true)
                    {
                        System.Threading.Thread.Sleep(500);
                        if (startVolume == endVolume || currVolumePlay == null)
                        if (startVolume == endVolume)
                        {
                            continue;
                        }
                        startVolume = endVolume;
                        if (currVolumePlay.ServerClientType == -1)
                        {
                            SendMethod.ControlVolume(endVolume, currVolumePlay);
                        }
                        else if (currVolumePlay.ServerClientType == 1)
                        if (if_volume == "totalVolume")
                        {
                            for (int j = 0; j < volumePlayList.Count; j++)
                            {
                                var music = volumePlayList[j];
                                //每个500毫秒发从播放器音量命令
                                SendMethod.ControlVolume(endVolume, music);
                                System.Threading.Thread.Sleep(1000);
                            }
                        }
                        else if(if_volume == "Volume")
                        {
                            if (currVolumePlay == null)
                            {
                                continue;
                            }
                            SendMethod.ControlVolume(endVolume, currVolumePlay);
                        }
                    }
                }