From 23fb45dd846ed8b62304c408c6bbe64265d4ac8b Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 20 十二月 2019 18:57:16 +0800
Subject: [PATCH] 代码合并

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs |  384 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 329 insertions(+), 55 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs
index e1f47a1..d5408d6 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs
@@ -46,6 +46,7 @@
         public Action<List<BindListResponseObj>> action;//鍥炶皟缁戝畾鐩爣椤甸潰鍒锋柊
         int currentModeID = 0;//褰撳墠妯″紡ID
         string curDeviceBindType = "";//褰撳墠璁惧缁戝畾绫诲瀷
+        List<int> typeDetailModeList = new List<int> { };
         #endregion
 
         /// <summary>
@@ -344,30 +345,256 @@
         /// </summary>
         /// <param name="gateway">Gateway.</param>
         /// <param name="key">Key.</param>
-        private void KeyModeList()
+        async private void KeyModeList()
         {
             midVerticalScrolViewLayout.RemoveAll();
             switch (curDeviceBindType)
             {
                 case "AddSwitch":
                     currentClusterID = 6;
-                    AddSwitchMode();
+                    typeDetailModeList = await GetAddSwitchMode();
+                    if (typeDetailModeList == null)
+                    {
+                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                    }
+                    else
+                    {
+                        AddSwitchMode();
+                    }
                     break;
                 case "AddDimmer":
-                    AddDimmerMode();
                     currentClusterID = 8;
+                    typeDetailModeList = await GetAddDimmerMode();
+                    if (typeDetailModeList == null)
+                    {
+                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                    }
+                    else
+                    {
+                        AddDimmerMode();
+                    }
                     break;
                 case "AddCurtain":
                     currentClusterID = 258;
-                    AddCurtainMode();
+                    typeDetailModeList = await GetAddCurtainMode();
+                    if (typeDetailModeList == null)
+                    {
+                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                    }
+                    else
+                    {
+                        AddCurtainMode();
+                    }
                     break;
             }
         }
 
-        private void AddSwitchMode()
+        /// <summary>
+        /// 鑾峰彇寮�鍏冲叿浣撶被鍨�
+        /// </summary>
+        /// <returns></returns>
+        System.Threading.Tasks.Task<List<int>> GetAddSwitchMode()
         {
+            return System.Threading.Tasks.Task.Run(async () =>
+             {
+                 Application.RunOnMainThread(() =>
+                 {
+                     CommonPage.Loading.Start();
+                 });
+                 typeDetailModeList.Clear();
+                 List<int> result3 = new List<int> { };
+                 try
+                 {
+                     //鑾峰彇绗笁绾у姛鑳�
+                     if (currentKey.privateFuncThirdLevelList.Count == 0 || currentKey.privateFuncThirdLevelList.Contains(100) == false || currentKey.privateFuncThirdLevelList.Contains(101) == false || currentKey.privateFuncThirdLevelList.Contains(102) == false)
+                     {
+                         result3 = await currentKey.GetPanelDeviceFunctionLevel3(256, 100);
+                         foreach (var l3 in result3)
+                         {
+                             currentKey.privateFuncThirdLevelList.Add(l3);
+                         }
+                     }
+                     else
+                     {
+                         if (currentKey.privateFuncThirdLevelList.Contains(100) == true)
+                         {
+                             result3.Add(100);
+                         }
+                         if (currentKey.privateFuncThirdLevelList.Contains(101) == true)
+                         {
+                             result3.Add(101);
+                         }
+                         if (currentKey.privateFuncThirdLevelList.Contains(102) == true)
+                         {
+                             result3.Add(102);
+                         }
+                     }
+                 }
+                 catch (Exception ex)
+                 {
+                     var aa = ex.Message;
+                 }
+                 finally
+                 {
+                     Application.RunOnMainThread(() =>
+                     {
+                         CommonPage.Loading.Hide();
+                     });
+                 }
+                 return result3;
+             });
+        }
+
+        /// <summary>
+        /// 鑾峰彇璋冨厜鍏蜂綋绫诲瀷
+        /// </summary>
+        /// <returns></returns>
+        System.Threading.Tasks.Task<List<int>> GetAddDimmerMode()
+        {
+            return System.Threading.Tasks.Task.Run(async () =>
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    CommonPage.Loading.Start();
+                });
+                typeDetailModeList.Clear();
+                List<int> result3 = new List<int> { };
+                try
+                {
+                    //鑾峰彇绗笁绾у姛鑳�
+                    if (currentKey.privateFuncThirdLevelList.Count == 0
+                        || currentKey.privateFuncThirdLevelList.Contains(200) == false
+                        || currentKey.privateFuncThirdLevelList.Contains(201) == false
+                        || currentKey.privateFuncThirdLevelList.Contains(203) == false
+                        || currentKey.privateFuncThirdLevelList.Contains(204) == false
+                        || currentKey.privateFuncThirdLevelList.Contains(205) == false)
+                    {
+                        result3 = await currentKey.GetPanelDeviceFunctionLevel3(256, 200);
+                        foreach (var l3 in result3)
+                        {
+                            currentKey.privateFuncThirdLevelList.Add(l3);
+                        }
+                    }
+                    else
+                    {
+                        if (currentKey.privateFuncThirdLevelList.Contains(200) == true)
+                        {
+                            result3.Add(200);
+                        }
+                        if (currentKey.privateFuncThirdLevelList.Contains(201) == true)
+                        {
+                            result3.Add(201);
+                        }
+                        if (currentKey.privateFuncThirdLevelList.Contains(203) == true)
+                        {
+                            result3.Add(203);
+                        }
+                        if (currentKey.privateFuncThirdLevelList.Contains(204) == true)
+                        {
+                            result3.Add(204);
+                        }
+                        if (currentKey.privateFuncThirdLevelList.Contains(205) == true)
+                        {
+                            result3.Add(205);
+                        }
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Hide();
+                    });
+                }
+                return result3;
+            });
+        }
+
+        /// <summary>
+        /// 鑾峰彇绐楀笜鍏蜂綋绫诲瀷
+        /// </summary>
+        /// <returns></returns>
+        System.Threading.Tasks.Task<List<int>> GetAddCurtainMode()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                CommonPage.Loading.Start();
+            });
+            return System.Threading.Tasks.Task.Run(async () =>
+            {
+                typeDetailModeList.Clear();
+                List<int> result3 = new List<int> { };
+                try
+                {
+                    //鑾峰彇绗笁绾у姛鑳�
+                    if (currentKey.privateFuncThirdLevelList.Count == 0
+                        || currentKey.privateFuncThirdLevelList.Contains(300) == false
+                        || currentKey.privateFuncThirdLevelList.Contains(301) == false
+                        || currentKey.privateFuncThirdLevelList.Contains(302) == false
+                        || currentKey.privateFuncThirdLevelList.Contains(303) == false
+                        || currentKey.privateFuncThirdLevelList.Contains(304) == false)
+                    {
+                        result3 = await currentKey.GetPanelDeviceFunctionLevel3(256, 300);
+                        foreach (var l3 in result3)
+                        {
+                            currentKey.privateFuncThirdLevelList.Add(l3);
+                        }
+                    }
+                    else
+                    {
+                        if (currentKey.privateFuncThirdLevelList.Contains(300) == true)
+                        {
+                            result3.Add(300);
+                        }
+                        if (currentKey.privateFuncThirdLevelList.Contains(301) == true)
+                        {
+                            result3.Add(301);
+                        }
+                        if (currentKey.privateFuncThirdLevelList.Contains(302) == true)
+                        {
+                            result3.Add(302);
+                        }
+                        if (currentKey.privateFuncThirdLevelList.Contains(303) == true)
+                        {
+                            result3.Add(303);
+                        }
+                        if (currentKey.privateFuncThirdLevelList.Contains(304) == true)
+                        {
+                            result3.Add(304);
+                        }
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Hide();
+                    });
+                }
+                return result3;
+            });
+        }
+
+        async private void AddSwitchMode()
+        {
+            if (typeDetailModeList == null)
+            {
+                //鍐嶆鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑绫�
+                typeDetailModeList = await GetAddSwitchMode();
+                if (typeDetailModeList == null)
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                    });
+                    return;
+                }
+            }
             Button oldMode = null;
-            for (int i = 0; i < 3; i++)
+            int i = 0;
+            foreach (var modeSwitchValue in typeDetailModeList)
             {
                 #region 缁戝畾琛║I鏄撅紙鏃犳暟鎹鐞嗭級
                 var rowLayout = new FrameLayout()
@@ -410,17 +637,21 @@
                 rowLayout.AddChidren(line2);
                 #endregion
 
-                if (i == 0)
+                switch (modeSwitchValue)
                 {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.OnOffOn);
+                    case 100:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.OnOffOn);
+                        break;
+                    case 101:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.OnOffoFF);
+                        break;
+                    case 102:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.OnOffOnOff);
+                        break;
                 }
-                if (i == 1)
+
+                if (i == typeDetailModeList.Count - 1)
                 {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.OnOffoFF);
-                }
-                if (i == 2)
-                {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.OnOffOnOff);
                     line2.Visible = false;
                 }
 
@@ -486,13 +717,39 @@
                 rowLayout.MouseUpEventHandler += hander;
                 btnModeText.MouseUpEventHandler += hander;
                 btnChoose.MouseUpEventHandler += hander;
+                i++;
             }
         }
 
-        private void AddDimmerMode()
+        async private void AddDimmerMode()
         {
+            if (typeDetailModeList == null)
+            {
+                //鍐嶆鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑绫�
+                typeDetailModeList = await GetAddDimmerMode();
+                if (typeDetailModeList == null)
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                    });
+                    return;
+                }
+            }
             Button oldMode = null;
-            for (int i = 0; i < 5; i++)
+            int i = 0;
+
+            List<int> typeDetailModeListTemp = new List<int> { };
+            foreach (var modeSwitchValue in typeDetailModeList)
+            {
+                if (modeSwitchValue == 202)
+                {
+                    continue;
+                }
+                typeDetailModeListTemp.Add(modeSwitchValue);
+            }
+
+            foreach (var modeSwitchValue in typeDetailModeListTemp)
             {
                 #region 缁戝畾琛║I鏄撅紙鏃犳暟鎹鐞嗭級
                 var rowLayout = new FrameLayout()
@@ -534,26 +791,27 @@
                 };
                 rowLayout.AddChidren(line2);
                 #endregion
+                switch (modeSwitchValue)
+                {
+                    case 200:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode1);
+                        break;
+                    case 201:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode2);
+                        break;
+                    case 203:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode3);
+                        break;
+                    case 204:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode4);
+                        break;
+                    case 205:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode5);
+                        break;
+                }
 
-                if (i == 0)
+                if (i == typeDetailModeList.Count - 1)
                 {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode1);
-                }
-                if (i == 1)
-                {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode2);
-                }
-                if (i == 2)
-                {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode3);
-                }
-                if (i == 3)
-                {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode4);
-                }
-                if (i == 4)
-                {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.DimmerMode5);
                     line2.Visible = false;
                 }
 
@@ -640,14 +898,28 @@
                 rowLayout.MouseUpEventHandler += hander;
                 btnModeText.MouseUpEventHandler += hander;
                 btnChoose.MouseUpEventHandler += hander;
-
+                i++;
             }
         }
 
-        private void AddCurtainMode()
+        async private void AddCurtainMode()
         {
+            if (typeDetailModeList == null)
+            {
+                //鍐嶆鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑绫�
+                typeDetailModeList = await GetAddSwitchMode();
+                if (typeDetailModeList == null)
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                    });
+                    return;
+                }
+            }
             Button oldMode = null;
-            for (int i = 0; i < 5; i++)
+            int i = 0;
+            foreach (var modeSwitchValue in typeDetailModeList)
             {
                 #region 缁戝畾琛║I鏄撅紙鏃犳暟鎹鐞嗭級
                 var rowLayout = new FrameLayout()
@@ -689,26 +961,27 @@
                 };
                 rowLayout.AddChidren(line2);
                 #endregion
+                switch (modeSwitchValue)
+                {
+                    case 300:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdUp);
+                        break;
+                    case 301:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdDown);
+                        break;
+                    case 302:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdStop);
+                        break;
+                    case 303:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdUpStop);
+                        break;
+                    case 304:
+                        btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdDownStop);
+                        break;
+                }
 
-                if (i == 0)
+                if (i == typeDetailModeList.Count - 1)
                 {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdUp);
-                }
-                if (i == 1)
-                {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdDown);
-                }
-                if (i == 2)
-                {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdStop);
-                }
-                if (i == 3)
-                {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdUpStop);
-                }
-                if (i == 4)
-                {
-                    btnModeText.Text = Language.StringByID(R.MyInternationalizationString.WcdDownStop);
                     line2.Visible = false;
                 }
 
@@ -795,6 +1068,7 @@
                 rowLayout.MouseUpEventHandler += hander;
                 btnModeText.MouseUpEventHandler += hander;
                 btnChoose.MouseUpEventHandler += hander;
+                i++;
             }
         }
 

--
Gitblit v1.8.0