wxr
2024-09-24 691dbe24f5724f153e07947c7b75bdfea5f0b6d5
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -1,8 +1,10 @@
using System;
using System.Collections.Generic;
using HDL_ON.Common;
using HDL_ON.DAL.Server;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
@@ -33,7 +35,7 @@
                                    }
                                    if (btn.Tag.ToString() == function.sid)
                                    {
                                        if (function.online)
                                        if (function.isOnline())
                                        {
                                            btn.UnSelectedImagePath = "Collection/Functionbg.png";
                                            btn.IsSelected = false;
@@ -46,7 +48,7 @@
                                    }
                                    else if (btn.Tag.ToString() == "OnlineTag")
                                    {
                                        btn.Visible = !function.online;
                                        btn.Visible = !function.isOnline();
                                    }
                                }
                            }
@@ -238,6 +240,105 @@
        }
        /// <summary>
        /// 更新功能组控主页
        /// </summary>
        public static void RefreshGroupControlView()
        {
            if (bodyView != null)
            {
                if (FunctionList.List.groupControls.Count == 0)
                {
                    bodyView.loadNavView();
                    bodyView.contentView.PageIndex = 0;
                }
                bodyView.LoadGroupControlFunctionControlZone();
            }
        }
        void CheckTokenValid()
        {
            //Dome模式
            if (MainPage.NoLoginMode)
            {
                return;
            }
            try
            {
                #region 账号登录状态(登录token是否有效)
                if (ApiUtlis.Ins.IsValidToken)
                {
                    if (tokenInvalidMsgView == null)
                    {
                        tokenInvalidMsgView = new FrameLayout()
                        {
                            Y = Application.GetRealHeight(113) - Application.GetRealWidth(24),
                            Height = Application.GetRealWidth(24),
                            BackgroundColor = 0xFF69A0F7,
                        };
                        topView.AddChidren(tokenInvalidMsgView);
                        Button btnTokenInvalidIcon = new Button()
                        {
                            X = Application.GetRealWidth(16),
                            Gravity = Gravity.CenterVertical,
                            Width = Application.GetRealWidth(20),
                            Height = Application.GetRealWidth(20),
                            UnSelectedImagePath = "Collection/TokenInvalidTipIcon.png"
                        };
                        tokenInvalidMsgView.AddChidren(btnTokenInvalidIcon);
                        var btnTokenInvalidTip = new Button()
                        {
                            X = btnTokenInvalidIcon.Right + Application.GetRealWidth(4),
                            TextAlignment = TextAlignment.CenterLeft,
                            TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                            TextColor = CSS_Color.MainBackgroundColor,
                            TextID = StringId.TokenInvalidMsg,
                        };
                        btnTokenInvalidTip.Width = btnTokenInvalidTip.GetTextWidth() + Application.GetRealWidth(8);
                        tokenInvalidMsgView.AddChidren(btnTokenInvalidTip);
                        btnTokenInvalidTip.MouseUpEventHandler = (sender, e) => {
                            new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.TokenInvalidTipMsg,StringId.Cancel,StringId.GoLogin, () => {
                                HDLCommon.Current.Logout();
                            });
                        };
                        var btnRight = new Button()
                        {
                            X= btnTokenInvalidTip.Right,
                            Gravity = Gravity.CenterVertical,
                            Width = Application.GetMinRealAverage(8),
                            Height = Application.GetMinRealAverage(8),
                            UnSelectedImagePath = "Public/RightIcon2.png",
                        };
                        tokenInvalidMsgView.AddChidren(btnRight);
                    }
                }
                else
                {
                    if (tokenInvalidMsgView != null)
                    {
                        if (tokenInvalidMsgView.Parent != null)
                        {
                            tokenInvalidMsgView.RemoveAll();
                            tokenInvalidMsgView.RemoveFromParent();
                            tokenInvalidMsgView = null;
                        }
                    }
                }
                #endregion
                bodyView.linkStateMsgView.Y = ApiUtlis.Ins.IsValidToken ? Application.GetRealHeight(113) : Application.GetRealHeight(113) - Application.GetRealWidth(24);
            }
            catch (Exception ex)
            {
                MainPage.Log("Error", $"HomePage 账号登录状态信息显示异常:{ex.StackTrace}");
            }
        }
        /// <summary>
        /// 更新连接状态图标
        /// </summary>
        void CheckLinkStatus()
@@ -248,17 +349,15 @@
                return;
            }
            bodyView.linkStateMsgView.Y = ApiUtlis.Ins.IsValidToken ? Application.GetRealHeight(113) : Application.GetRealHeight(113) - Application.GetRealWidth(24);
            if (!Control.Ins.GatewayOnline_Local && !Control.Ins.GatewayOnline_Cloud)
            {
                bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail;
                bodyView.btnLinkStateTip.TextID = StringId.NetworkAnomaly;
                bodyView.environmentalView.Y = Application.GetRealHeight(8) + btnResidenceName.Bottom;
                bodyView.linkStateMsgView.Visible = true;
            }
            else
            {
                bodyView.btnLinkStateTip.BackgroundColor = 0x00000000;
                bodyView.btnLinkStateTip.Text = "";
                bodyView.environmentalView.Y = Application.GetRealHeight(1) + btnResidenceName.Bottom;
                bodyView.linkStateMsgView.Visible = false;
            }
        }
@@ -278,6 +377,26 @@
                }catch(Exception ex)
                {
                    MainPage.Log($"LoadEvent_CheckLinkStatus : {ex.Message}");
                }
            });
        }
        /// <summary>
        /// 确认Token是否有效
        /// </summary>
        public static void LoadEvent_CheckTokenValid()
        {
            Application.RunOnMainThread(() =>
            {
                try
                {
                    if (bodyView != null)
                    {
                        bodyView.CheckTokenValid();
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log("Error",$"LoadEvent_CheckTokenValid : {ex.StackTrace}");
                }
            });
        }
@@ -325,146 +444,24 @@
        /// </summary>
        void LoadEvent_ChangeShowedFunctionType()
        {
            btnChangeFunction.MouseUpEventHandler = (sender, e) =>
            if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl && FunctionList.List.groupControls.Count>0)
            {
                btnChangeFunction.IsSelected = true;
                btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                btnChangeFunction.IsBold = true;
                btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
                btnChangeScene.IsSelected = false;
                btnChangeScene.IsBold = false;
                CurShowTypeContent = 0;
                contentView.PageIndex = 0;
            };
            btnChangeScene.MouseUpEventHandler = (sender, e) =>
            {
                btnChangeScene.IsSelected = true;
                btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                btnChangeScene.IsBold = true;
                btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
                btnChangeFunction.IsSelected = false;
                btnChangeFunction.IsBold = false;
                CurShowTypeContent = 1;
                contentView.PageIndex = 1;
            };
            contentView.PageChange = (sender, e) =>
            {
                if (contentView.PageIndex == 0)
                {
                    btnChangeFunction.IsSelected = true;
                    btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                    btnChangeFunction.IsBold = true;
                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
                    btnChangeScene.IsSelected = false;
                    btnChangeScene.IsBold = false;
                }
                else if (contentView.PageIndex == 1)
                {
                    btnChangeScene.IsSelected = true;
                    btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                    btnChangeScene.IsBold = true;
                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
                    btnChangeFunction.IsSelected = false;
                    btnChangeFunction.IsBold = false;
                }
            };
            if (DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
            {
                btnChangeGroupControl.MouseUpEventHandler = (sender, e) => {
                    btnChangeFunction.IsSelected = false;
                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
                    btnChangeFunction.IsBold = false;
                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
                    btnChangeScene.IsSelected = false;
                    btnChangeScene.IsBold = false;
                    btnChangeGroupControl.IsSelected = true;
                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                    btnChangeGroupControl.IsBold = true;
                    CurShowTypeContent = 2;
                    contentView.PageIndex = 2;
                };
                btnChangeFunction.MouseUpEventHandler = (sender, e) => {
                    btnChangeFunction.IsSelected = true;
                    btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                    btnChangeFunction.IsBold = true;
                    btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
                    btnChangeScene.IsSelected = false;
                    btnChangeScene.IsBold = false;
                    CurShowTypeContent = 0;
                    contentView.PageIndex = 0;
                    btnChangeGroupControl.IsSelected = false;
                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
                    btnChangeGroupControl.IsBold = false;
                };
                btnChangeScene.MouseUpEventHandler = (sender, e) => {
                    btnChangeScene.IsSelected = true;
                    btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                    btnChangeScene.IsBold = true;
                    btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
                    btnChangeFunction.IsSelected = false;
                    btnChangeFunction.IsBold = false;
                    CurShowTypeContent = 1;
                    contentView.PageIndex = 1;
                    btnChangeGroupControl.IsSelected = false;
                    btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
                    btnChangeGroupControl.IsBold = false;
                };
                contentView.PageChange = (sender, e) =>
                {
                    if (contentView.PageIndex == 0)
                    {
                        btnChangeFunction.IsSelected = true;
                        btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                        btnChangeFunction.IsBold = true;
                        btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
                        btnChangeScene.IsSelected = false;
                        btnChangeScene.IsBold = false;
                        btnChangeGroupControl.IsSelected = false;
                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
                        btnChangeGroupControl.IsBold = false;
                    }
                    else if (contentView.PageIndex == 1)
                    {
                        btnChangeScene.IsSelected = true;
                        btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                        btnChangeScene.IsBold = true;
                        btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
                        btnChangeFunction.IsSelected = false;
                        btnChangeFunction.IsBold = false;
                        btnChangeGroupControl.IsSelected = false;
                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
                        btnChangeGroupControl.IsBold = false;
                    }
                    else if (contentView.PageIndex == 2)
                    {
                        btnChangeFunction.IsSelected = false;
                        btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
                        btnChangeFunction.IsBold = false;
                        btnChangeScene.TextSize = CSS.CSS_FontSize.TextFontSize;
                        btnChangeScene.IsSelected = false;
                        btnChangeScene.IsBold = false;
                        btnChangeGroupControl.IsSelected = true;
                        btnChangeGroupControl.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                        btnChangeGroupControl.IsBold = true;
                    }
                };
            }
        }
        object lockObj = new object();
        /// <summary>
        /// 更新显示状态
        /// </summary>
        public static void UpdataFunctionStates(Function function)
        {
            if(bodyView == null)
            {
                return;
            }
            Application.RunOnMainThread(() =>
            {
                try
@@ -533,12 +530,28 @@
                                        }
                                    }
                                }
                                else if(function.spk == SPK.SensorHelp)
                                else if (function.spk == SPK.SensorHelp)
                                {
                                    var tempStatus = function.attributes.Find((sta) => sta.key == FunctionAttributeKey.AlarmStatus);
                                    if(tempStatus != null)
                                    if (tempStatus != null)
                                    {
                                        state = tempStatus.curValue.ToString() == "alarm";
                                    }
                                }
                                else if (function.spk == SPK.SensorPir || function.spk == SPK.SensorPirHold)
                                {
                                    var tempStatus = function.attributes.Find((sta) => sta.key == "people_status");
                                    if (tempStatus != null)
                                    {
                                        state = tempStatus.curValue.ToString() == "true";
                                    }
                                }
                                else if (function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
                                {
                                    var tempStatus = function.attributes.Find((sta) => sta.key == "contact_status");
                                    if (tempStatus != null)
                                    {
                                        state = tempStatus.curValue.ToString() == "open";
                                    }
                                }
                                else
@@ -655,7 +668,7 @@
        {
            btnSwitch.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                if (!function.isOnline())//离线不允许操作
                {
                    new Tip()
                    {
@@ -675,6 +688,7 @@
                            btnSwitch.IsSelected = !btnSwitch.IsSelected;
                        });
                    }
                    function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    if (function.spk == SPK.LightDimming || function.spk == SPK.LightRGB)
@@ -699,6 +713,11 @@
                    //    }
                    //    Control.Ins.SendWriteCommand(function, d);
                    //}
                    else if (function.spk == SPK.GroupControl)
                    {
                        d.Add("on_off", function.trait_on_off.curValue.ToString());
                        (function as GroupControl).Control(d);
                    }
                    else
                    {
                        d.Add("on_off", function.trait_on_off.curValue.ToString());
@@ -718,7 +737,7 @@
        {
            btnSwitch.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                if (!function.isOnline())//离线不允许操作
                {
                    new Tip()
                    {
@@ -762,16 +781,16 @@
        {
            btnClose.MouseUpEventHandler = (sender, e) =>
            {
                if (!curtain.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                //if (!curtain.isOnline())//离线不允许操作
                //{
                //    new Tip()
                //    {
                //        CloseTime = 1,
                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                //        Direction = AMPopTipDirection.None,
                //    }.Show(MainPage.BaseView);
                //    return;
                //}
                btnClose.IsSelected = true;
                curtain.trait_on_off.curValue = "off";
                curtain.SetAttrState(FunctionAttributeKey.Percent, 0);
@@ -779,23 +798,23 @@
                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(curtain, d);
            };
            btnOpen.MouseUpEventHandler = (sender, e) =>
            {
                if (!curtain.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                //if (!curtain.isOnline())//离线不允许操作
                //{
                //    new Tip()
                //    {
                //        CloseTime = 1,
                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                //        Direction = AMPopTipDirection.None,
                //    }.Show(MainPage.BaseView);
                //    return;
                //}
                btnOpen.IsSelected = true;
                Dictionary<string, string> d = new Dictionary<string, string>();
                curtain.trait_on_off.curValue = "on";
                curtain.SetAttrState(FunctionAttributeKey.Percent, 100);
                Dictionary<string, string> d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(curtain, d);
            };
@@ -812,7 +831,7 @@
            };
            btnUp.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                if (!function.isOnline())//离线不允许操作
                {
                    new Tip()
                    {
@@ -843,7 +862,7 @@
            };
            btnDown.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                if (!function.isOnline())//离线不允许操作
                {
                    new Tip()
                    {
@@ -888,9 +907,9 @@
                skipPage.LoadPage(backAction);
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            btnMsgBg.MouseUpEventHandler = eventHandler;
            btnMsgTime.MouseUpEventHandler = eventHandler;
            btnMsg.MouseUpEventHandler = eventHandler;
            //btnMsgBg.MouseUpEventHandler = eventHandler;
            //btnMsgTime.MouseUpEventHandler = eventHandler;
            //btnMsg.MouseUpEventHandler = eventHandler;
            btnMsgIcon.MouseUpEventHandler = eventHandler;
        }
@@ -975,8 +994,8 @@
        void ShowMesBtnState(PushMessageInfo pushMessageInfo, bool allRead)
        {
            if (bodyView == null) return;
            btnMsg.Text = pushMessageInfo.messageTitle + ": " + pushMessageInfo.messageContent;
            btnMsgTime.Text = GetUnixToDateTime(pushMessageInfo.createTime);
            //btnMsg.Text = pushMessageInfo.messageTitle + ": " + pushMessageInfo.messageContent;
            //btnMsgTime.Text = GetUnixToDateTime(pushMessageInfo.createTime);
            btnMsgIcon.IsSelected = !allRead;
        }
@@ -986,8 +1005,8 @@
        void ResetMesBtnRead()
        {
            if (bodyView == null) return;
            btnMsg.Text = "...";
            btnMsgTime.Text = "00:00";
            //btnMsg.Text = "...";
            //btnMsgTime.Text = "00:00";
            btnMsgIcon.IsSelected = false;
        }