wxr
2023-04-11 cd70a2a8a2bdebf51259d8f39ed110a34b9be9e5
HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs
@@ -1,4 +1,6 @@
using System;
using System.Collections.Generic;
using HDL_ON.Common;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
@@ -9,6 +11,7 @@
    public class CombinedDimmingListPage : FrameLayout
    {
        FrameLayout bodyView;
        VerticalScrolViewLayout contentView;
        public CombinedDimmingListPage()
        {
@@ -20,10 +23,20 @@
            new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView_AddIcon("CombinedDimming",
                (s,c)=>{
                    try
                    {
                        var page = new AddGroupControlPage(null,
                            ()=> {
                                ReadGroupControlList();
                            });
                        MainPage.BasePageView.AddChidren(page);
                        page.LoadPage();
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    }
                    catch { }
                });
            var contentView = new VerticalScrolViewLayout()
            contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(550),
@@ -31,76 +44,220 @@
            };
            bodyView.AddChidren(contentView);
            new System.Threading.Thread(() => {
                var http = new HttpServerRequest();
                var pack = http.GetGroupControlList();
                if(pack != null)
                {
                    if(pack.Code == StateCode.SUCCESS)
                    {
                        var data = Newtonsoft.Json.JsonConvert.DeserializeObject<GroupControl>(pack.Data.ToString());
                    }
                }
            }) { IsBackground = true }.Start();
            ReadGroupControlList();
            #region 
            contentView.AddChidren(new Button() { Height = Application.GetRealHeight(8) });
            var row = new FrameLayout()
            {
                Height = Application.GetRealHeight(65),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            var btnTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealHeight(10),
                Width = Application.GetRealWidth(308),
                Height = Application.GetRealHeight(24),
                TextID = StringId.AdministratorPermissionMigration,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
            };
            row.AddChidren(btnTitle);
            var btnAdministratorPermissionMigrationExplan = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = btnTitle.Bottom,
                Width = Application.GetRealWidth(308),
                Height = Application.GetRealHeight(21),
                TextID = StringId.AdministratorPermissionMigrationExPlan,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextColor = CSS_Color.PromptingColor1,
            };
            row.AddChidren(btnAdministratorPermissionMigrationExplan);
            var btnAdministratorPermissionMigrationSkinIcon = new Button()
            {
                X = Application.GetRealWidth(343),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/RightIcon.png",
            };
            row.AddChidren(btnAdministratorPermissionMigrationSkinIcon);
            row.AddChidren(
                new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Y = Application.GetRealHeight(64),
                    Height = Application.GetRealHeight(1),
                    Width = Application.GetRealWidth(343),
                    BackgroundColor = CSS_Color.DividingLineColor,
                });
            #endregion
        }
        /// <summary>
        /// 读取组控数据
        /// </summary>
        private void ReadGroupControlList()
        {
            new System.Threading.Thread(() => {
                var pack = ApiUtlis.Ins.HttpRequest.GetGroupControlList();
                if (pack != null)
                {
                    if (pack.Code == StateCode.SUCCESS)
                    {
                        try
                        {
                            var groupControlList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
                            Application.RunOnMainThread(() =>
                            {
                                LoadGroupControlView(groupControlList);
                            });
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"读取组控列表失败:{ex.Message}");
                        }
                    }
                    else
                    {
                        IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                    }
                }
            })
            { IsBackground = true }.Start();
        }
        private void LoadGroupControlView(List<GroupControl> list)
        {
#if DEBUG
            if (list.Count == 0)
            {
                list.Add(new GroupControl()
                {
                    name = "组合调光1",
                    roomIds = new List<string> { Room.CurrentSpatial.RoomList[0].roomId },
                    sid = "00000000000000001",
                    type = "light",
                    uids = new List<string>() { Room.CurrentSpatial.RoomList[0].uid },
                });
                list.Add(new GroupControl()
                {
                    name = "组合调光2",
                    roomIds = new List<string> { Room.CurrentSpatial.RoomList[0].roomId },
                    sid = "00000000000000002",
                    type = "light",
                    uids = new List<string>() { Room.CurrentSpatial.RoomList[0].uid },
                });
            }
#endif
            if (list.Count == 0)
            {
            }
            else
            {
                contentView.RemoveAll();
                foreach (var groupControl in list)
                {
                    var functionRow = new RowLayout()
                    {
                        Height = Application.GetRealHeight(65),
                        BackgroundColor = CSS_Color.MainBackgroundColor,
                        LineColor = 0x00000000
                    };
                    contentView.AddChidren(functionRow);
                    var btnRight = new Button()
                    {
                        X = Application.GetRealWidth(339),
                        Gravity = Gravity.CenterVertical,
                        Width = Application.GetMinRealAverage(16),
                        Height = Application.GetMinRealAverage(16),
                        UnSelectedImagePath = "Public/Right.png",
                    };
                    functionRow.AddChidren(btnRight);
                    var btnFunctionName = new Button()
                    {
                        X = Application.GetRealWidth(16),
                        Y = Application.GetRealHeight(10),
                        Width = Application.GetRealWidth(308),
                        Height = Application.GetRealHeight(24),
                        TextAlignment = TextAlignment.CenterLeft,
                        TextSize = CSS_FontSize.SubheadingFontSize,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        Text = groupControl.name,
                    };
                    functionRow.AddChidren(btnFunctionName);
                    var btnFunctionLocationInfo = new Button()
                    {
                        X = Application.GetRealWidth(16),
                        Y = btnFunctionName.Bottom,
                        Width = Application.GetRealWidth(308),
                        Height = Application.GetRealHeight(21),
                        TextAlignment = TextAlignment.CenterLeft,
                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                        TextColor = CSS_Color.PromptingColor1,
                        Text = groupControl.GetRoomListName(),
                    };
                    functionRow.AddChidren(btnFunctionLocationInfo);
                    functionRow.AddChidren(
                        new Button()
                        {
                            Gravity = Gravity.CenterHorizontal,
                            Y = Application.GetRealHeight(64),
                            Height = Application.GetRealHeight(1),
                            Width = Application.GetRealWidth(343),
                            BackgroundColor = CSS_Color.DividingLineColor,
                        });
                    EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
                        var page = new AddGroupControlPage(groupControl,
                           () => {
                           });
                        MainPage.BasePageView.AddChidren(page);
                        page.LoadPage();
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    };
                    functionRow.MouseUpEventHandler = eventHandler;
                    btnRight.MouseUpEventHandler = eventHandler;
                    btnFunctionName.MouseUpEventHandler = eventHandler;
                    btnFunctionLocationInfo.MouseUpEventHandler = eventHandler;
                    var btnDelGroupControl = new Button()
                    {
                        TextColor = CSS_Color.MainBackgroundColor,
                        BackgroundColor = CSS_Color.WarningColor,
                        TextID = StringId.Del,
                        TextAlignment = TextAlignment.Center,
                    };
                    functionRow.AddRightView(btnDelGroupControl);
                    btnDelGroupControl.MouseUpEventHandler = (sender1, e1) => {
                        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)
                                            {
                                                list.Remove(groupControl);
                                                LoadGroupControlView(list);
                                            }
                                            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();
                    };
                }
            }
        }
    }
}