From 7167334c0e89dd84827d59e726123d14776e3a09 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期二, 16 六月 2020 11:14:13 +0800
Subject: [PATCH] 2020-06-16-1

---
 HDL_ON/UI/Music/View/DialogView.cs |  787 ++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 599 insertions(+), 188 deletions(-)

diff --git a/HDL_ON/UI/Music/View/DialogView.cs b/HDL_ON/UI/Music/View/DialogView.cs
index ed6f4de..b136a9a 100644
--- a/HDL_ON/UI/Music/View/DialogView.cs
+++ b/HDL_ON/UI/Music/View/DialogView.cs
@@ -114,7 +114,6 @@
             FileView(dialog, verticalScrolViewLayout, musicInfo);
 
         }
-
         void FileView(Dialog dialog, VerticalScrolViewLayout verticalScrolViewLayout, MusicInfo musicInfo)
         {
             verticalScrolViewLayout.RemoveAll();
@@ -343,10 +342,9 @@
                     TextColor = Color.TextColor,
                     TextSize = TextSize.Text14,
                     TextAlignment = TextAlignment.CenterLeft,
-                    Text = player.Name,
+                    Text = NamePlayer(player),
                 };
                 PlayRow.AddChidren(PlayNameBtn);
-
 
                 //閫変腑鍥炬爣鎺т欢
                 Button selectedIconBtn = new Button
@@ -404,7 +402,21 @@
 
                 if (playList1.Count <= 1)
                 {
-                    new PublicAssmebly().TipMsgAutoClose("鑷冲皯閫変腑涓や釜浠ヤ笂鎾斁鍣�", false);
+                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.selectAtLeastTwoPlayers), false);
+                    return;
+                }
+                int number = 0;
+                foreach (var musin in playList1)
+                {
+                    if (musin.ServerClientType == 1)
+                    {
+                        number++;
+                    }
+                }
+                if (number >= 2)
+                {
+                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.cannotSelectTwoOrMoreMainPlayersToCombine), false);
+                    //濡傛灉閮芥槸涓绘挱鏀炬垜灏变笉鑳界粍鍚�;
                     return;
                 }
                 ///鏌ヨ鏄惁宸茬粡瀛樺湪涓绘挱鏀�;
@@ -416,7 +428,7 @@
                     for (int i = 0; i < playList1.Count; i++)
                     {
                         var musics = playList1[i];
-                        if (musics.A31PlayStatus.playSource == "play")
+                        if (musics.A31PlayStatus.status == "play")
                         {
                             playList2.Add(musics);
                         }
@@ -432,7 +444,7 @@
                         //鍙湁涓�涓挱鏀惧櫒鍦ㄦ挱鏀�,榛樿涓轰富鎾彂鍣�;
                         dialog.Close();
                         var player = playList2[0];
-                        Threading(player, playList1);
+                        MergeThreading(player, playList1);
                     }
                     else
                     {
@@ -441,12 +453,13 @@
                 }
                 else
                 {
-                    Threading(host_Music_If, playList1);
+                    dialog.Close();
+                    MergeThreading(host_Music_If, playList1);
                 }
             };
         }
         /// <summary>
-        /// 閫変腑涓绘挱鏀惧櫒鐨勭晫闈�
+        /// 閫変腑鏌愪釜闊充箰涓轰富鎾斁鍣ㄧ殑鐣岄潰
         /// </summary>
         /// <param name="musicList1">鏄剧ず灏嗚缁勫悎鐨勬挱鏀惧櫒鍒楄〃</param>
         ///  /// <param name="musicList2">鏄剧ず鍦ㄦ挱鏀鹃煶涔愭挱鏀惧櫒鍒楄〃</param>
@@ -548,19 +561,66 @@
                 };
                 verticalScrolViewLayout.AddChidren(addFlieRow);
 
-                //鎾斁鍣ㄥ悕绉版帶浠�
-                Button PlayNameBtn = new Button
+                if (player.A31PlayStatus.status == "play")
                 {
-                    X = Application.GetRealWidth(20),
-                    Y = Application.GetRealHeight(15),
-                    Width = Application.GetRealWidth(150),
-                    Height = Application.GetRealHeight(20),
-                    TextColor = Color.TextColor,
-                    TextSize = TextSize.Text14,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Text = player.Name,
-                };
-                addFlieRow.AddChidren(PlayNameBtn);
+                    Button songNameBtn = new Button
+                    {
+                        X = Application.GetRealWidth(20),
+                        Y = Application.GetRealHeight(15),
+                        Width = Application.GetRealWidth(150),
+                        Height = Application.GetRealHeight(20),
+                        TextColor = Color.TextColor,
+                        TextSize = TextSize.Text14,
+                        TextAlignment = TextAlignment.CenterLeft,
+                        Text = player.A31PlayStatus.Title,
+                    };
+                    addFlieRow.AddChidren(songNameBtn);
+
+                    var wText = songNameBtn.GetTextWidth();//鑾峰彇鏂囨湰瀹藉害
+                    if (wText > 280)
+                    {
+                        songNameBtn.Width = Application.GetRealWidth(280);
+                    }
+                    else
+                    {
+                        songNameBtn.Width = wText + 5;
+                    }
+                    //姝屾墜鎺т欢
+                    Button singerBtn = new Button
+                    {
+                        X = songNameBtn.Right,
+                        Y = Application.GetRealHeight(15),
+                        Width = Application.GetRealWidth(280 - songNameBtn.Width),
+                        Height = Application.GetRealHeight(20),
+                        TextColor = Color.MusicNoTxetColor,
+                        TextSize = TextSize.Text12,
+                        TextAlignment = TextAlignment.CenterLeft,
+                        Text = "-" + player.A31PlayStatus.Artist.Trim(),
+                    };
+                    addFlieRow.AddChidren(singerBtn);
+                    if (wText > 280)
+                    {
+                        ///姝屽悕闀垮害灏忎簬250鎵嶅彲浠ユ樉绀烘瓕鎵嬪嚭鏉�
+                        singerBtn.Width = Application.GetRealWidth(0);
+                    }
+                }
+                else
+                {
+                    //鎾斁鍣ㄥ悕绉版帶浠�
+                    Button PlayNameBtn = new Button
+                    {
+                        X = Application.GetRealWidth(20),
+                        Y = Application.GetRealHeight(15),
+                        Width = Application.GetRealWidth(150),
+                        Height = Application.GetRealHeight(20),
+                        TextColor = Color.TextColor,
+                        TextSize = TextSize.Text14,
+                        TextAlignment = TextAlignment.CenterLeft,
+                        Text = NamePlayer(player),
+                    };
+                    addFlieRow.AddChidren(PlayNameBtn);
+
+                }
 
                 //閫変腑鍥炬爣鎺т欢
                 Button selectedIconBtn = new Button
@@ -603,26 +663,222 @@
             {
                 if (selectedBtn.Name.ToString() == "No")
                 {
-                    new PublicAssmebly().TipMsgAutoClose("杩樻病閫変腑鎾斁鍣�", false);
+                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.noSelectedPlay), false);
                     return;
                 }
                 dialogF.Close();
                 dialog.Close();
-               
+
                 var serverMusic = selectedBtn.Tag as A31MusicModel;
-                Threading(serverMusic, musicList1);
+                MergeThreading(serverMusic, musicList1);
             };
 
         }
+        /// <summary>
+        /// 閫変腑瑙i櫎缁勫悎鐨勬挱鏀惧櫒鐨勭晫闈�
+        /// </summary>
+        public void DetachPlayMergence(A31MusicModel a31player)
+        {
 
+            #region
+            //涓绘帶浠�
+            Dialog dialog = new Dialog()
+            {
+                BackgroundColor = Color.PopupBackgroundColor,
+            };
+            dialog.Show();
+            //鐖舵帶浠�
+            FrameLayout frame = new FrameLayout { };
+            dialog.AddChidren(frame);
+            frame.MouseUpEventHandler += (sen, e) =>
+            {
+                dialog.Close();
+            };
+            //鐧借壊蹇埗鎺т欢
+            FrameLayout dialogFra = new FrameLayout()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(397),
+                Width = Application.GetRealWidth(344),
+                Height = Application.GetRealHeight(250),
+                BackgroundColor = Color.WhiteColor,
+                Radius = (uint)Application.GetRealHeight(12),
+            };
+            frame.AddChidren(dialogFra);
+            //鏄剧ず澶撮儴淇℃伅鐖舵帶浠�
+            FrameLayout topFra = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(344),
+                Height = Application.GetRealHeight(50),
+            };
+            dialogFra.AddChidren(topFra);
+            //鍙栨秷鎺т欢
+            Button cancelnBtn = new Button
+            {
+                X = Application.GetRealWidth(20),
+                Y = Application.GetRealHeight(15),
+                Width = Application.GetRealWidth(60),
+                Height = Application.GetRealHeight(20),
+                TextID = StringId.cancelMusic,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = Color.MusicNoTxetColor,
+                TextSize = TextSize.Text14,
+            };
+            topFra.AddChidren(cancelnBtn);
+            cancelnBtn.MouseUpEventHandler += (sen, e) =>
+            {
+                dialog.Close();
+            };
+            //鏍囬鎺т欢
+            Button txetBtn = new Button
+            {
+                X = cancelnBtn.Right + Application.GetRealWidth(20),
+                Y = Application.GetRealHeight(14),
+                Width = Application.GetRealWidth(152),
+                Height = Application.GetRealHeight(22),
+                TextColor = Color.TextColor,
+                TextSize = TextSize.Text16,
+                TextAlignment = TextAlignment.Center,
+                TextID = StringId.checkTheReleasePlayer,
+                //Text = "閫変腑瑙i櫎鎾斁鍣�",
+                IsBold = true,
+            };
+            topFra.AddChidren(txetBtn);
+
+            //纭鎺т欢
+            Button confirmBtn = new Button
+            {
+                X = Application.GetRealWidth(344 - 60 - 20),
+                Y = Application.GetRealHeight(15),
+                Width = Application.GetRealWidth(60),
+                Height = Application.GetRealHeight(20),
+                TextID = StringId.confirmMusic,
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = Color.SelectedColor,
+                TextSize = TextSize.Text14,
+            };
+            topFra.AddChidren(confirmBtn);
+
+            VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
+            {
+                Y = Application.GetRealHeight(50),
+                Height = dialogFra.Height - Application.GetRealHeight(50),
+                Width = Application.GetRealWidth(344),
+            };
+            dialogFra.AddChidren(verticalScrolViewLayout);
+
+            var playList1 = new List<A31MusicModel>();
+            playList1.Add(a31player);
+            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)
+                {
+                    playList1.Add(music_If);
+                }
+            }
+
+
+            var playList2 = new List<A31MusicModel>();
+            for (int i = 0; i < playList1.Count; i++)
+            {
+                var player = playList1[i];
+                RowLayout PlayRow = new RowLayout
+                {
+                    Height = Application.GetRealHeight(50),
+                    LineColor = Color.WhiteColor,
+                    SubViewWidth = Application.GetRealWidth(80),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
+                };
+                verticalScrolViewLayout.AddChidren(PlayRow);
+
+
+                //鎾斁鍣ㄥ悕绉版帶浠�
+                Button PlayNameBtn = new Button
+                {
+                    X = Application.GetRealWidth(20),
+                    Y = Application.GetRealHeight(15),
+                    Width = Application.GetRealWidth(150),
+                    Height = Application.GetRealHeight(20),
+                    TextColor = Color.TextColor,
+                    TextSize = TextSize.Text14,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = NamePlayer(player),
+                };
+                PlayRow.AddChidren(PlayNameBtn);
+
+
+                //閫変腑鍥炬爣鎺т欢
+                Button selectedIconBtn = new Button
+                {
+                    X = Application.GetRealWidth(303),
+                    Y = Application.GetRealHeight(11),
+                    Width = Application.GetMinRealAverage(28),
+                    Height = Application.GetMinRealAverage(28),
+                    UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
+                    SelectedImagePath = "MusicIcon/selectedIcon.png",
+                };
+                PlayRow.AddChidren(selectedIconBtn);
+
+                ///鍔犲ぇ鍑犵偣鑼冨洿
+                Button clickBtn = new Button
+                {
+                    Height = Application.GetRealHeight(50),
+                    Tag = player.UniqueDeviceName,
+                };
+                PlayRow.AddChidren(clickBtn);
+
+                clickBtn.MouseUpEventHandler += (sender, e) =>
+                {
+                    clickBtn.IsSelected = !clickBtn.IsSelected;
+                    selectedIconBtn.IsSelected = clickBtn.IsSelected;
+                    var uuid = playList2.Find((obj) => obj.UniqueDeviceName == clickBtn.Tag.ToString());
+                    if (selectedIconBtn.IsSelected)
+                    {
+                        if (uuid == null)
+                        {
+                            playList2.Add(player);
+                        }
+                    }
+                    else
+                    {
+                        if (uuid != null)
+                        {
+                            playList2.Remove(player);
+                        }
+                    }
+                };
+                //绾�
+                Button lineBtn = new Button
+                {
+                    Y = PlayRow.Height - 1,
+                    X = Application.GetRealWidth(20),
+                    Width = Application.GetRealWidth(304),
+                    Height = 1,
+                    BackgroundColor = Color.LineColor,
+                };
+                PlayRow.AddChidren(lineBtn);
+            }
+            #endregion
+            confirmBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                if (playList1.Count == 0)
+                {
+                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.noCheckTheReleasePlayer), false);
+                    return;
+                }
+                dialog.Close();
+                RemoveThreading(a31player, playList2);
+            };
+        }
         /// <summary>
         /// 鍙戦�佺粍鍚堝懡浠ら�昏緫澶勭悊鐨勬柟娉�
         /// </summary>
         /// <param name="serverMusic">涓绘挱鏀惧櫒</param>
         /// <param name="musicList1"></param>
-        void Threading(A31MusicModel serverMusic, List<A31MusicModel> musicList1)
+        void MergeThreading(A31MusicModel serverMusic, List<A31MusicModel> musicList1)
         {
-            MusicMain.loading.Start("閰嶇疆涓�...");
+            MusicMain.loading.Start(Language.StringByID(StringId.inConfiguration));
             bool _if = false;
             System.Threading.Tasks.Task.Run(() =>
             {
@@ -656,7 +912,6 @@
                             //杩囨护鎺変富鎾斁鍣�;
                             continue;
                         }
-                        System.Threading.Thread.Sleep(1000);//绛夊緟涓�绉掑啀鍙戞暟鎹�
                         var dd = SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid);
                         if (null == SendMethod.OpenWeb("http://" + clientMusic.IPAddress + "/httpapi.asp?command=ConnectMasterAp:ssid=" + ssid + ":ch=" + serverIfon.WifiChannel + ":auth=OPEN:encry=NONE:pwd=:chext=0:JoinGroupMaster:eth" + serverIfon.eth2 + ":wifi" + serverIfon.ra0 + ":uuid" + serverIfon.uuid))
                         {
@@ -665,9 +920,10 @@
 
                             }
                         }
+                        System.Threading.Thread.Sleep(1000);//绛夊緟1绉掑啀鍙戞暟鎹�
                     }
                     DateTime dateTime = DateTime.Now;
-                    while ((DateTime.Now - dateTime).TotalMilliseconds < 12 * 1000)
+                    while ((DateTime.Now - dateTime).TotalMilliseconds < 15 * 1000)
                     {
                         System.Threading.Thread.Sleep(1000);
                         try
@@ -736,24 +992,181 @@
 
         }
         /// <summary>
-        /// 鍒嗗紑缁勫悎鐨勬挱鏀惧櫒鐨勭晫闈�
+        /// 瑙i櫎缁勫悎鍛戒护閫昏緫澶勭悊鐨勬柟娉�
         /// </summary>
-        public void DetachPlayMergence(A31MusicModel a31player)
+        /// <param name="a31player">涓绘挱鏀惧櫒</param>
+        /// <param name="playList1"></param>
+        void RemoveThreading(A31MusicModel a31player, List<A31MusicModel> playList1)
         {
+            MusicMain.loading.Start(Language.StringByID(StringId.lifting));
+            var slaveList = new List<Slave>();
+            slaveList.AddRange(a31player.Slave.slave_list);
+           // bool host_If = false; //琛ㄧず鏄惁鏄剧ず瑙i櫎鐨勬挱鏀�
+            bool _if = false;
+            System.Threading.Tasks.Task.Run(() =>
+            {
+                try
+                {
+                    var play_If = playList1.Find((obj) => obj.UniqueDeviceName == a31player.UniqueDeviceName);
+                    if (play_If == null)
+                    {
+                        //瀛愰煶绠变笌涓婚煶绠辨柇寮�鐨勫懡浠�
+                        for (int i = 0; i < playList1.Count; i++)
+                        {
+                            var clientMusic = playList1[i];
+                            if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.IPAddress))
+                            {
+                                if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.IPAddress))
+                                {
 
+                                }
+                            }
+                            ///姣忚В闄や竴涓挱鏀惧櫒闇�瑕佺瓑寰�3绉�
+                            System.Threading.Thread.Sleep(3000);//绛夊緟3绉掑啀鍙戞暟鎹�
+                        }
+                    }
+                    else
+                    {
+                        //瑙f暎缁勭殑鍛戒护
+                        if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:Ungroup"))
+                        {
+                            if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:Ungroup"))
+                            {
+
+                            }
+                        }
+                    }
+                    DateTime dateTime = DateTime.Now;
+                    while ((DateTime.Now - dateTime).TotalMilliseconds < 12 * 1000)
+                    {
+                        System.Threading.Thread.Sleep(1000);
+                        try
+                        {
+                            var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
+                            if (result != null && result != "Failed")
+                            {
+                                var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
+                                if (tmepSlaves != null)
+                                {
+                                    if (tmepSlaves.slave_list.Count == 0)
+                                    {
+
+                                        var host_music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == a31player.UniqueDeviceName);
+                                        if (host_music != null)
+                                        {
+                                            host_music.ServerClientType = 0;//瑙i櫎涓讳粠鍏崇郴
+                                            host_music.MainPlayName = "";
+                                        }
+                                        for (int a = 0; a < slaveList.Count; a++)
+                                        {
+                                            var uuid = slaveList[a].uuid.Replace("uuid:", "");
+                                            var music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == uuid);
+                                            if (music != null)
+                                            {
+                                                music.ServerClientType = 0;//瑙i櫎涓讳粠鍏崇郴
+                                                music.IsCanShow = true;//鍏佽鏄剧ず
+                                                music.IsOnLine = false;//鍏堜笉鍏佽璇诲彇
+                                            }
+                                        }
+                                    }
+                                    else
+                                    {
+                                        for (int b = 0; b < tmepSlaves.slave_list.Count; b++)
+                                        {
+                                            var uuid = tmepSlaves.slave_list[b].uuid.Replace("uuid:", "");
+                                            var music = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == uuid);
+                                            if (music != null)
+                                            {
+                                                music.ServerClientType = 0;//瑙i櫎涓讳粠鍏崇郴
+                                                music.IsCanShow = true;//鍏佽鏄剧ず
+                                                music.IsOnLine = false;//鍏堜笉鍏佽璇诲彇
+                                            }
+                                        }
+
+                                    }
+
+                                    var host_a31player = A31MusicModel.A31MusicModelList.Find((c) => c.UniqueDeviceName == a31player.UniqueDeviceName);
+                                    string str = host_a31player.Name;
+                                    for (int b = 0; b < tmepSlaves.slave_list.Count; b++)
+                                    {
+                                        str = str + "+" + tmepSlaves.slave_list[b].name;
+                                    }
+                                    host_a31player.MainPlayName = str;///鏀瑰彉涓绘挱鏀惧櫒鐨勬樉绀哄悕绉�
+                                    _if = true;//瑙i櫎鎴愬姛
+                                    A31MusicModel.Save();
+                                    break;
+                                }
+                            }
+
+                        }
+                        catch { }
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        MusicMain.loading.Hide();
+                        ///鍙互鎻愮ず瑙i櫎澶辫触;
+                        if (_if)
+                        {
+                            //瑙i櫎鎴愬姛鎵嶅彲浠ュ埛鏂扮晫闈�
+                            MainPage.BasePageView.RemoveViewByTag("MusicMain");
+                            var musicMain = new MusicMain();
+                            MainPage.BasePageView.AddChidren(musicMain);
+                            musicMain.Show();
+                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                        }
+                    });
+                }
+            });
+
+        }
+
+        public string NamePlayer(A31MusicModel a31player)
+        {
+            if (a31player.ServerClientType == 1)
+            {
+                return a31player.MainPlayName;
+            }
+            else
+            {
+                return a31player.Name;
+            }
+        }
+       
+        List<A31MusicModel> volumePlayList = new List<A31MusicModel>();
+        A31MusicModel currVolumePlay = null;//褰撳墠鐨勬挱鏀惧櫒
+        int startVolume = 0;//涔嬪墠鐨勯煶閲�
+        int endVolume = 0;//鐜板湪鐨勯煶閲�
+        /// <summary>
+        /// 鎾斁鍣ㄩ煶閲忕殑鐣岄潰
+        /// </summary>
+        /// <param name="a31player">涓绘挱鏀惧櫒</param>
+        public void PlayerVolumeView(A31MusicModel a31player)
+        {
             #region
             //涓绘帶浠�
-            Dialog dialog = new Dialog()
-            {
-                BackgroundColor = Color.PopupBackgroundColor,
-            };
-            dialog.Show();
+            Dialog volumedialog = new Dialog();
+            volumedialog.Show();
             //鐖舵帶浠�
             FrameLayout frame = new FrameLayout { };
-            dialog.AddChidren(frame);
+            volumedialog.AddChidren(frame);
             frame.MouseUpEventHandler += (sen, e) =>
             {
-                dialog.Close();
+                volumedialog.Close();
+                if (updateVolumeThread != null)
+                {
+                    try
+                    {
+                        if (updateVolumeThread.IsAlive)
+                        {
+                            updateVolumeThread.Abort();
+                        }
+                    }
+                    catch { }
+                }
             };
             //鐧借壊蹇埗鎺т欢
             FrameLayout dialogFra = new FrameLayout()
@@ -770,7 +1183,7 @@
             FrameLayout topFra = new FrameLayout()
             {
                 Width = Application.GetRealWidth(344),
-                Height = Application.GetRealHeight(50),
+                Height = Application.GetRealHeight(58),
             };
             dialogFra.AddChidren(topFra);
             //鍙栨秷鎺т欢
@@ -788,7 +1201,18 @@
             topFra.AddChidren(cancelnBtn);
             cancelnBtn.MouseUpEventHandler += (sen, e) =>
             {
-                dialog.Close();
+                volumedialog.Close();
+                if (updateVolumeThread != null)
+                {
+                    try
+                    {
+                        if (updateVolumeThread.IsAlive)
+                        {
+                            updateVolumeThread.Abort();
+                        }
+                    }
+                    catch { }
+                }
             };
             //鏍囬鎺т欢
             Button txetBtn = new Button
@@ -800,12 +1224,10 @@
                 TextColor = Color.TextColor,
                 TextSize = TextSize.Text16,
                 TextAlignment = TextAlignment.Center,
-                //TextID = StringId.selectedMergence,
+                TextID = StringId.volumeAdjustment,
                 IsBold = true,
-                Text= a31player.Name,
             };
             topFra.AddChidren(txetBtn);
-
             //纭鎺т欢
             Button confirmBtn = new Button
             {
@@ -819,197 +1241,186 @@
                 TextSize = TextSize.Text14,
             };
             topFra.AddChidren(confirmBtn);
-
-            VerticalScrolViewLayout verticalScrolViewLayout = new VerticalScrolViewLayout
+            confirmBtn.MouseUpEventHandler += (sen, e) =>
             {
-                Y = Application.GetRealHeight(50),
-                Height = dialogFra.Height - Application.GetRealHeight(50),
-                Width = Application.GetRealWidth(344),
+                volumedialog.Close();
+                if (updateVolumeThread != null)
+                {
+                    try
+                    {
+                        if (updateVolumeThread.IsAlive)
+                        {
+                            updateVolumeThread.Abort();
+                        }
+                    }
+                    catch { }
+                }
             };
-            dialogFra.AddChidren(verticalScrolViewLayout);
 
-            var playList1 = new List<A31MusicModel>();
-            playList1.Add(a31player);
+            VerticalScrolViewLayout volumeViewLayout = new VerticalScrolViewLayout
+            {
+                Y = Application.GetRealHeight(58),
+                Height = dialogFra.Height - Application.GetRealHeight(58),
+                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)
                 {
-                    playList1.Add(music_If);
+                    music_If.ServerClientType = -1;
+                    music_If.A31PlayStatus.vol = slave.volume;
+                    volumePlayList.Add(music_If);
                 }
             }
+            volumePlayList.Add(a31player);
 
-
-            var playList2 = new List<A31MusicModel>();
-            for (int i = 0; i < playList1.Count; i++)
+            for (int i = 0; i < volumePlayList.Count; i++)
             {
-                var player = playList1[i];
-                RowLayout PlayRow = new RowLayout
+                var player = volumePlayList[i];
+                FrameLayout volumeFra = new FrameLayout
                 {
-                    Height = Application.GetRealHeight(50),
-                    LineColor = Color.WhiteColor,
-                    SubViewWidth = Application.GetRealWidth(80),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
+                    Height = Application.GetRealHeight(64),
                 };
-                verticalScrolViewLayout.AddChidren(PlayRow);
-
-
-                //鎾斁鍣ㄥ悕绉版帶浠�
-                Button PlayNameBtn = new Button
+                volumeViewLayout.AddChidren(volumeFra);
+                Button volumeTextBtn = new Button
                 {
-                    X = Application.GetRealWidth(20),
-                    Y = Application.GetRealHeight(15),
-                    Width = Application.GetRealWidth(150),
-                    Height = Application.GetRealHeight(20),
-                    TextColor = Color.TextColor,
-                    TextSize = TextSize.Text14,
+                    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 = player.Name,
+
                 };
-                PlayRow.AddChidren(PlayNameBtn);
-
-
-                //閫変腑鍥炬爣鎺т欢
-                Button selectedIconBtn = new Button
+                volumeFra.AddChidren(volumeTextBtn);
+                if (player.ServerClientType == -1)
                 {
-                    X = Application.GetRealWidth(303),
-                    Y = Application.GetRealHeight(11),
-                    Width = Application.GetMinRealAverage(28),
-                    Height = Application.GetMinRealAverage(28),
-                    UnSelectedImagePath = "MusicIcon/noSelectedIcon.png",
-                    SelectedImagePath = "MusicIcon/selectedIcon.png",
+                    volumeTextBtn.Text = player.Name + Language.StringByID(StringId.volumeMusic);
+                }
+                else if (player.ServerClientType == 1)
+                {
+                    volumeTextBtn.Text = Language.StringByID(StringId.totalVolume);
+                }
+
+                DiyImageSeekBar volSeekBar = 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(player.A31PlayStatus.vol),
+                    //ProgressChangeDelayTime=
                 };
-                PlayRow.AddChidren(selectedIconBtn);
+                volumeFra.AddChidren(volSeekBar);
 
-                ///鍔犲ぇ鍑犵偣鑼冨洿
-                Button clickBtn = new Button
+                Button valueBtn = new Button
                 {
-                    Height = Application.GetRealHeight(50),
-                    Tag = player.UniqueDeviceName,
+                    X = Application.GetRealWidth(289),
+                    Y = Application.GetRealHeight(31),
+                    Width = Application.GetRealWidth(26),
+                    Height = Application.GetRealHeight(17),
+                    TextColor = Color.MusicNoTxetColor,
+                    TextSize = TextSize.Text12,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = player.A31PlayStatus.vol + "%",
                 };
-                PlayRow.AddChidren(clickBtn);
+                volumeFra.AddChidren(valueBtn);
 
-                clickBtn.MouseUpEventHandler += (sender, e) =>
+
+                ///闊抽噺杩涘害鏉$偣鍑讳簨浠�
+                EventHandler<int> progressClick = (sender, e) =>
                 {
-                    clickBtn.IsSelected = !clickBtn.IsSelected;
-                    selectedIconBtn.IsSelected = clickBtn.IsSelected;
-                    var uuid = playList2.Find((obj) => obj.UniqueDeviceName== clickBtn.Tag.ToString());
-                    if (selectedIconBtn.IsSelected)
+
+                    if (currVolumePlay == null || (currVolumePlay != null && currVolumePlay.UniqueDeviceName != player.UniqueDeviceName))
                     {
-                        if (uuid == null)
-                        {
-                            playList2.Add(player);
-                        }
+                        currVolumePlay = player;
                     }
-                    else
+                    endVolume = e;
+                    if (player.ServerClientType == -1)
                     {
-                        if (uuid != null)
+                        valueBtn.Text = volSeekBar.Progress + "%";
+                        //SendMethod.ControlVolume(volSeekBar.Progress, player);
+                    }
+                    else if (player.ServerClientType == 1)
+                    {
+                        for (int j = 0; j < volumePlayList.Count; j++)
                         {
-                            playList2.Remove(player);
+                            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);
                         }
                     }
                 };
-                //绾�
-                Button lineBtn = new Button
-                {
-                    Y = PlayRow.Height - 1,
-                    X = Application.GetRealWidth(20),
-                    Width = Application.GetRealWidth(304),
-                    Height = 1,
-                    BackgroundColor = Color.LineColor,
-                };
-                PlayRow.AddChidren(lineBtn);
+                volSeekBar.OnProgressChangedEvent += progressClick;
+                volSeekBar.OnStopTrackingTouchEvent += progressClick;
             }
             #endregion
-            confirmBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                if (playList1.Count == 0)
+
+        }
+        /// <summary>
+        /// 瀹氭椂闊抽噺骞朵笖鍙戦�佸懡浠�
+        /// </summary>
+        System.Threading.Thread updateVolumeThread;
+        public void UpdateVolume()
+        {
+            if (updateVolumeThread != null) {
+                try
                 {
-                    new PublicAssmebly().TipMsgAutoClose("杩樻病鏈夐�夋嫨瑙i櫎缁勬挱鏀惧櫒", false);
-                    return;
+                    if (updateVolumeThread.IsAlive) {
+                        updateVolumeThread.Abort();
+                    }
                 }
-                dialog.Close();
-
-                MusicMain.loading.Start("瑙i櫎涓�...");
-                bool _if = false;
-                System.Threading.Tasks.Task.Run(() =>
+                catch { }
+            }
+            updateVolumeThread = new System.Threading.Thread(() =>
+            {
+                try
                 {
-                    try
+                    while (true)
                     {
-                        var play_If = playList1.Find((obj) => obj.UniqueDeviceName == a31player.UniqueDeviceName);
-                        if (play_If == null)
+                        System.Threading.Thread.Sleep(500);
+                        if (startVolume == endVolume || currVolumePlay == null)
                         {
-                            //瀛愰煶绠变笌涓婚煶绠辨柇寮�鐨勫懡浠�
-                            for (int i = 0; i < playList1.Count; i++)
-                            {
-                                var clientMusic = playList1[i];
-                                if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.IPAddress))
-                                {
-                                    if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:SlaveKickout:" + clientMusic.IPAddress))
-                                    {
+                            continue;
+                        }
+                        startVolume = endVolume;
 
-                                    }
-                                }
-                                ///姣忚В闄や竴涓挱鏀惧櫒闇�瑕佺瓑寰�3绉�
-                                System.Threading.Thread.Sleep(3000);//绛夊緟3绉掑啀鍙戞暟鎹�
+                        if (currVolumePlay.ServerClientType == -1)
+                        {
+                            SendMethod.ControlVolume(endVolume, currVolumePlay);
+                        }
+                        else if (currVolumePlay.ServerClientType == 1)
+                        {
+                            for (int j = 0; j < volumePlayList.Count; j++)
+                            {
+                                var music = volumePlayList[j];
+                                SendMethod.ControlVolume(endVolume, music);
                             }
                         }
-                        else
-                        {
-                            //瑙f暎缁勭殑鍛戒护
-                            if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:Ungroup"))
-                            {
-                                if (null == SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:Ungroup"))
-                                {
 
-                                }
-                            }
-                        }
-                        DateTime dateTime = DateTime.Now;
-                        while ((DateTime.Now - dateTime).TotalMilliseconds < 12 * 1000)
-                        {
-                            System.Threading.Thread.Sleep(1000);
-                            try
-                            {
-                                var result = SendMethod.OpenWeb("http://" + a31player.IPAddress + "/httpapi.asp?command=multiroom:getSlaveList");
-                                if (result != null && result != "Failed")
-                                {
-                                    var tmepSlaves = Newtonsoft.Json.JsonConvert.DeserializeObject<Slaves>(result);
-                                    if (tmepSlaves != null && tmepSlaves.slave_list.Count == 0)
-                                    {
-                                        _if = true;//瑙i櫎鎴愬姛
-                                        A31MusicModel.Save();
-                                        break;
-                                    }
-                                }
-
-
-                            }
-                            catch { }
-                        }
                     }
-                    catch { }
-                    finally
-                    {
-                        Application.RunOnMainThread(() =>
-                        {
-                            MusicMain.loading.Hide();
-                            ///鍙互鎻愮ず瑙i櫎澶辫触;
-                            if (_if)
-                            {
-                                //瑙i櫎鎴愬姛鎵嶅彲浠ュ埛鏂扮晫闈�
-                                MainPage.BasePageView.RemoveViewByTag("MusicMain");
-                                var musicMain = new MusicMain();
-                                MainPage.BasePageView.AddChidren(musicMain);
-                                musicMain.Show();
-                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                            }
-                        });
-                    }
-                });
-               
-            };
-      }
+                }
+                catch { }
+            })
+            { IsBackground = true };
+            updateVolumeThread.Start();
+        }
+
     }
     [System.Serializable]
     public class A31Wifi鈥�    {

--
Gitblit v1.8.0