From f9181a9c8125136f597add7c30cb2ff508d54ba7 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期四, 25 七月 2024 17:34:32 +0800
Subject: [PATCH] 2024年07月25日17:33:40

---
 HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs |  324 +++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 260 insertions(+), 64 deletions(-)

diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
index b64cdd0..3ae8804 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
@@ -2,6 +2,7 @@
 using System;
 using System.Collections.Generic;
 using System.Threading;
+using HDL_ON.Common;
 using HDL_ON.DAL.Server;
 using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
@@ -50,7 +51,8 @@
         /// <summary>
         /// 鍥炶皟鍒锋柊
         /// </summary>
-        Action backActon;
+        Action<GroupControl> addActon;
+        Action delAction;
         /// <summary>
         /// 鏄惁鏂板缇ゆ帶
         /// </summary>
@@ -64,7 +66,7 @@
 
         GroupControlType groupControlType = new GroupControlType();
 
-        public AddGroupControlPage(GroupControl groupControl, Action action)
+        public AddGroupControlPage(GroupControl groupControl, Action<GroupControl> addAction,Action delAction)
         {
             bodyView = this;
             if(groupControl == null)
@@ -78,19 +80,90 @@
                 editDataString = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl);
             }
             groupControlLightList = new List<Function>();
-            backActon = action;
+            this.addActon = addAction;
+
+            this.delAction = delAction;
+
             lightList = FunctionList.List.GetLightList();
         }
 
         public void LoadPage()
         {
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
-            new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView();
+            if (isAdd)
+            {
+                var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.GroupControl));
+                topView.maginY = 10;
+                topView.LoadTopView();
+            }
+            else
+            {
+                var topView = new TopViewDiv(bodyView, "");
+                topView.maginY = 10;
+                topView.LoadTopView_SettingText(()=> {
 
+                    Action action = () => {
+                        var waitPage = new Loading();
+                        this.AddChidren(waitPage);
+                        waitPage.Start("");
+                        new System.Threading.Thread(() =>
+                        {
+                            try
+                            {
+                                var pack = ApiUtlis.Ins.HttpRequest.DelGroupControl(groupControl.userDeviceGroupControlId);
+                                if (pack != null)
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        try
+                                        {
+                                            if (pack.Code == StateCode.SUCCESS)
+                                            {
+                                                var delTemp = FunctionList.List.groupControls.Find((obj) => groupControl.sid == obj.sid);
+                                                FunctionList.List.groupControls.Remove(delTemp);
+                                                //list.Remove(groupControl);
+                                                this.RemoveFromParent();
+                                                delAction?.Invoke();
+                                            }
+                                            else
+                                            {
+                                                IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
+                                            }
+                                        }
+                                        catch (Exception ex)
+                                        {
+                                            MainPage.Log($"鍒锋柊缁勬帶鏁版嵁寮傚父:{ex.Message}");
+                                        }
+                                    });
+                                }
+                            }
+                            catch (Exception ex)
+                            {
+                                MainPage.Log($"鍒犻櫎缁勬帶寮傚父:{ex.Message}");
+                            }
+                            finally
+                            {
+                                Application.RunOnMainThread(() => {
+                                    if (waitPage != null)
+                                    {
+                                        waitPage.Hide();
+                                        waitPage.RemoveFromParent();
+                                        waitPage = null;
+                                    }
+                                });
+                            }
+                        })
+                        { IsBackground = true }.Start();
+
+                    };
+                    new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.DoYouWantDelCombinedDimming, action);
+
+                }, Language.StringByID(StringId.DelGroupControl),true);
+            }
             var contentView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(550),
+                Y = Application.GetRealHeight(64+10),
+                Height = Application.GetRealHeight(667-64-10),
             };
             bodyView.AddChidren(contentView);
 
@@ -105,7 +178,7 @@
             Button btnGroupNameTitle = new Button()
             {
                 X = Application.GetRealWidth(16),
-                Width = Application.GetRealWidth(78),
+                Width = Application.GetRealWidth(178),
                 TextID = StringId.GroupNmae,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = CSS_FontSize.SubheadingFontSize,
@@ -182,6 +255,7 @@
                 Action chooseRoomBackAction = () => {
                     try
                     {
+                        groupControl.uids = groupControl.roomIds;
                         btnLocationValues.Text = groupControl.GetRoomListName();
                     }
                     catch { }
@@ -253,13 +327,13 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextID = StringId.SelectedAll,
             };
-            if (groupControlLightList.Count > 0)
+            if (groupControlLightList.Count == lightList.Count)
             {
                 btnChooseAll.TextID = StringId.Cancel;
             }
             roomFloorChangeView.AddChidren(btnChooseAll);
             btnChooseAll.MouseUpEventHandler = (sender, e) => {
-                if (groupControlLightList.Count > 0)
+                if (groupControlLightList.Count == lightList.Count)
                 {
                     groupControlLightList.Clear();
                     btnChooseAll.TextID = StringId.SelectAll;
@@ -267,11 +341,33 @@
                 }
                 else
                 {
+                    groupControlLightList.Clear();
                     groupControlLightList.AddRange(lightList);
                     btnChooseAll.TextID = StringId.Cancel;
                     btnConfrim.IsSelected = true;
                 }
-                LoadLightRow(lightList);
+
+                for (int i = 0; i < functionListView.ChildrenCount; i++)
+                {
+                    var view = functionListView.GetChildren(i);
+                    if (view.GetType() == typeof(LightRow))
+                    {
+                        if (view.Tag != null && view.Tag.ToString() == "row")
+                        {
+                            for (int j = 0; j < (view as FrameLayout).ChildrenCount; j++)
+                            {
+                                var btn = (view as FrameLayout).GetChildren(j);
+                                if (btn.GetType() == typeof(Button))
+                                {
+                                    if (btn.Tag != null && btn.Tag.ToString() == "ChooseIcon")
+                                    {
+                                        (btn as Button).IsSelected = groupControlLightList.Count == lightList.Count;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
             };
 
             #endregion
@@ -279,7 +375,7 @@
             functionListView = new VerticalScrolViewLayout()
             {
                 Y = Application.GetRealHeight(220),
-                Height = Application.GetRealHeight(640 - 12 - 52 - 100 -100),
+                Height = Application.GetRealHeight(640 - 12 - 52 - 100 -100-10),
             };
             bodyView.AddChidren(functionListView);
 
@@ -326,6 +422,7 @@
                         new PublicAssmebly().TipMsg(StringId.Tip, StringId.PlsEntryGroupName);
                         return;
                     }
+                    groupControl.name = name;
                     if (groupControlLightList.Count < 2)
                     {
                         new PublicAssmebly().TipMsg(StringId.Tip, StringId.PlsSelectMoreData);
@@ -333,7 +430,6 @@
                     }
                     if (isAdd)
                     {
-                        groupControl.name = name;
                         groupControl.sids.Clear();
                         foreach (var light in groupControlLightList)
                         {
@@ -349,58 +445,137 @@
                                 MainPage.Log($"鏂板缇ゆ帶杞崲鏁版嵁寮傚父:{ex.Message}");
                             }
                         }
-                        try
+                        var waitPage = new Loading();
+                        bodyView.AddChidren(waitPage);
+                        waitPage.Start("");
+                        new Thread(() =>
                         {
-                            groupControl.type = groupControlType.type;
-                            groupControl.sid = groupControl.NewGroupControlSid();
-                            var pack = Common.ApiUtlis.Ins.HttpRequest.AddGroupControl(new List<GroupControl>() { groupControl });
-                            if (pack != null)
+                            try
                             {
-                                if (pack.Code == StateCode.SUCCESS)
+                                groupControl.type = groupControlType.type;
+                                groupControl.sid = groupControl.NewGroupControlSid();
+                                var pack = ApiUtlis.Ins.HttpRequest.AddGroupControl(new List<GroupControl>() { groupControl });
+                                if (pack != null)
                                 {
-                                    backActon?.Invoke();
-                                    this.RemoveFromParent();
+                                    if (pack.Code == StateCode.SUCCESS)
+                                    {
+                                        try
+                                        {
+                                            var addTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
+                                            if (addTemp != null && addTemp.Count > 0)
+                                                groupControl.userDeviceGroupControlId = addTemp[0].userDeviceGroupControlId;
+                                            FunctionList.List.groupControls.Add(groupControl);
+                                        }
+                                        catch (Exception ex)
+                                        {
+                                            MainPage.Log($"娣诲姞缇ゆ帶寮傚父锛岃浆璇戣繑鍥炴暟鎹け璐�:{ex.Message}");
+                                        }
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            addActon?.Invoke(groupControl);
+                                            this.RemoveFromParent();
+                                        });
+                                    }
+                                    else
+                                    {
+                                        IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
+                                    }
                                 }
-                                else
-                                {
-                                    IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
-                                }
+
                             }
-                        }
-                        catch (Exception ex)
-                        {
-                            MainPage.Log($"鏂板缇ゆ帶寮傚父:{ex.Message}");
-                        }
+                            catch (Exception ex)
+                            {
+                                MainPage.Log($"鏂板缇ゆ帶寮傚父:{ex.Message}");
+                            }
+                            finally
+                            {
+                                Application.RunOnMainThread(() => {
+                                    try
+                                    {
+                                        waitPage.Hide();
+                                        waitPage = null;
+                                    }
+                                    catch { }
+                                });
+                            }
+                        })
+                        { IsBackground = true }.Start();
                     }
                     else
                     {
-                        try
+                        var waitPage = new Loading();
+                        bodyView.AddChidren(waitPage);
+                        waitPage.Start("");
+                        new Thread(() =>
                         {
-                            var newEditDataString = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl);
-                            //娌℃湁鏇存柊鏁版嵁鍒欑洿鎺ラ��鍑�
-                            if (newEditDataString == editDataString)
+                            try
                             {
-                                this.RemoveFromParent();
-                                return;
-                            }
-                            var pack = Common.ApiUtlis.Ins.HttpRequest.EditGroupControl(new List<GroupControl>() { groupControl });
-                            if (pack != null)
-                            {
-                                if (pack.Code == StateCode.SUCCESS)
+                                //var newEditDataString = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl);
+                                //var newEditDataString1 = Newtonsoft.Json.JsonConvert.SerializeObject(groupControlLightList);
+                                //var newEditDataString2 = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl.sids);
+                                ////娌℃湁鏇存柊鏁版嵁鍒欑洿鎺ラ��鍑�
+                                //if (newEditDataString == editDataString && newEditDataString1 == newEditDataString2)
+                                //{
+                                //    this.RemoveFromParent();
+                                //    return;
+                                //}
+                                groupControl.sids.Clear();
+                                foreach (var light in groupControlLightList)
                                 {
-                                    backActon?.Invoke();
-                                    this.RemoveFromParent();
+                                    try
+                                    {
+                                        var gc = new GroupControlFunction();
+                                        gc.sid = light.sid;
+                                        gc.spk = light.spk;
+                                        groupControl.sids.Add(gc);
+                                    }
+                                    catch (Exception ex)
+                                    {
+                                        MainPage.Log($"鏂板缇ゆ帶杞崲鏁版嵁寮傚父:{ex.Message}");
+                                    }
                                 }
-                                else
+
+                                var pack = ApiUtlis.Ins.HttpRequest.EditGroupControl(new List<GroupControl>() { groupControl });
+                                if (pack != null)
                                 {
-                                    IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
+                                    if (pack.Code == StateCode.SUCCESS)
+                                    {
+                                        var temp = FunctionList.List.groupControls.Find((obj) => obj.userDeviceGroupControlId == groupControl.userDeviceGroupControlId);
+                                        if (temp != null)
+                                        {
+                                            temp = groupControl;
+                                        }
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            addActon?.Invoke(temp);
+                                            this.RemoveFromParent();
+                                        });
+                                    }
+                                    else
+                                    {
+                                        IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
+                                    }
                                 }
                             }
-                        }
-                        catch (Exception ex)
-                        {
-                            MainPage.Log($"缂栬緫缇ゆ帶寮傚父:{ex.Message}");
-                        }
+                            catch (Exception ex)
+                            {
+                                MainPage.Log($"缂栬緫缇ゆ帶寮傚父:{ex.Message}");
+                            }
+                            finally
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    try
+                                    {
+                                        waitPage.Hide();
+                                        waitPage = null;
+                                    }
+                                    catch { }
+                                });
+
+                            }
+                        })
+                        { IsBackground = true }.Start();
 
                     }
                 }
@@ -426,6 +601,12 @@
                                 var groupControlTypes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControlType>>(pack.Data.ToString());
                                 if (groupControlTypes != null && groupControlTypes.Count > 0)
                                 {
+                                    //groupControlType = new GroupControlType {
+                                    //      type = "LIGHT",
+                                    //        typeName ="鐏厜鎺у埗",
+                                    //        spks = new List<string> { "light.switch" },
+                                    //         spkAttrs = new List<string> { "on_off" }
+                                    //};
                                     groupControlType = groupControlTypes[0];
                                     Application.RunOnMainThread(() => {
                                         LoadLightRow(lightList);
@@ -459,6 +640,10 @@
                                     groupControl = groupControlTemps[0];
                                     Application.RunOnMainThread(() =>
                                     {
+                                        if (groupControl.sids.Count == lightList.Count)
+                                        {
+                                            btnChooseAll.TextID = StringId.Cancel;
+                                        }
                                         LoadLightRow(lightList);
                                     });
                                 }
@@ -486,7 +671,7 @@
         /// <summary>
         /// 鏄剧ず鐨勮澶囩殑鎬绘暟
         /// </summary>
-        int showCount = 0;
+        int showCount = -1;
 
         /// <summary>
         /// 鍔犺浇鍔熻兘row
@@ -506,18 +691,19 @@
                     {
                         if (!isAppend)
                         {
-                            showCount = 0;
+                            showCount = -1;
                             functionListView.RemoveAll();
                         }
-                        int i = 0;
-                        foreach (var function in functions)
+                        for(var i =0;i<100;i++)
+                        //foreach (var function in functions)
                         {
-                            i++;
-                            if (i > 100)
+                            showCount++;
+                            if (showCount >= functions.Count)
                             {
                                 break;
                             }
-                            showCount++;
+                            var function = functions[showCount];
+
                             var functionDiv = new LightRow(function)
                             {
                                 Gravity = Gravity.CenterHorizontal,
@@ -525,7 +711,7 @@
                                 BorderColor = 0x00FFFFFF,
                                 BorderWidth = 1,
                                 BackgroundColor = CSS_Color.MainBackgroundColor,
-                                Tag = function.spk + function.sid
+                                Tag = "row"
                             };
                             functionDiv.AddChidren(new Button()
                             {
@@ -538,13 +724,22 @@
 
                             Action setAction = () =>
                             {
-                                if (groupControlLightList.Count > 0)
+                                if (groupControlLightList.Count > 1)
                                 {
                                     btnConfrim.IsSelected = true;
                                 }
                                 else
                                 {
                                     btnConfrim.IsSelected = false;
+                                }
+                                if (groupControlLightList.Count != functions.Count)
+                                {
+                                    btnChooseAll.TextID = StringId.SelectedAll;
+                                }
+                                else
+                                {
+                                    if(btnChooseAll.TextID != StringId.Cancel)
+                                        btnChooseAll.TextID = StringId.Cancel;
                                 }
                             };
                             if (groupControl.sids.Find((obj) => obj.sid == function.sid) != null)
@@ -564,12 +759,8 @@
                                 TextAlignment = TextAlignment.Center,
                                 TextSize = CSS_FontSize.SubheadingFontSize,
                                 TextColor = CSS_Color.FirstLevelTitleColor,
-                                Text = "鍔犺浇鏇村",
+                                TextID = StringId.LoadMore,
                             };
-                            if (Language.CurrentLanguage != "Chinese")
-                            {
-                                btnAppend.Text = "Load more";
-                            }
                             functionListView.AddChidren(btnAppend);
                             btnAppend.MouseUpEventHandler = (sender, e) =>
                             {
@@ -613,8 +804,12 @@
                 var form = new FloorRoomSelectPopupView();
                 form.ShowDeviceFunctionView(btnFloor, this.lightList, (selectId, listFunc) =>
                 {
+                    groupControlLightList.Clear();
+                    groupControl.sids.Clear();
+                    btnChooseAll.TextID = StringId.SelectAll;
+                    btnConfrim.IsSelected = false;
                     btnChooseAll.MouseUpEventHandler = (sender2, e2) => {
-                        if (groupControlLightList.Count > 0)
+                        if (groupControlLightList.Count == listFunc.Count)
                         {
                             groupControlLightList.Clear();
                             btnChooseAll.TextID = StringId.SelectAll;
@@ -622,6 +817,7 @@
                         }
                         else
                         {
+                            groupControlLightList.Clear();
                             groupControlLightList.AddRange(listFunc);
                             btnChooseAll.TextID = StringId.Cancel;
                             btnConfrim.IsSelected = true;

--
Gitblit v1.8.0