From 01c46e7bfe9aa8fb20b29f70c83c03a307af548a Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期二, 22 十二月 2020 16:35:16 +0800 Subject: [PATCH] 2020-12-22 1.更新。 --- HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs | 493 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 462 insertions(+), 31 deletions(-) diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs index e846ab5..02efd04 100644 --- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs +++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs @@ -1,4 +1,7 @@ 锘縰sing System; +using System.Collections.Generic; +using HDL_ON.DAL.Server; +using HDL_ON.DriverLayer; using HDL_ON.Entity; using Shared; @@ -6,62 +9,490 @@ { public partial class HomePage { - public static void UpdataLightView(Light light) + /// <summary> + /// 鏇存柊涓婚〉澶╂皵 + /// </summary> + public static void LoadEvent_RefreshAir() + { + if (bodyView != null) + { + bodyView.btnTempValues.Text = MainPage.cityInfo.temperature == null ? "--" : MainPage.cityInfo.temperature + "掳"; + bodyView.btnHumidityValues.Text = MainPage.cityInfo.humidity == null ? "--" : MainPage.cityInfo.humidity + "%"; + bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25; + } + } + /// <summary> + /// 纭杩炴帴鐘舵�� + /// </summary> + public static void LoadEvent_CheckLinkStatus() + { + if (bodyView != null) + { + Application.RunOnMainThread(() => + { + if (Control.Ins.GatewayOnline) + { + if (Control.Ins.IsRemote) + { + bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.MainColor; + } + else + { + bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipRemote; + } + } + else + { + bodyView.btnLinkStateTip.BackgroundColor = CSS.CSS_Color.LinkTipFail; + } + }); + } + } + + /// <summary> + /// 鍔犺浇鍔熻兘鏀惰棌鎸夐挳浜嬩欢 + /// </summary> + void LoadEvent_FunctionCollection(Button btn, Function function) + { + btn.MouseUpEventHandler += (sender, e) => + { + function.collect = false; + if (function.functionCategory == FunctionCategory.Music)//澶勭悊闊充箰涓讳粠鍏崇郴 + { + if ((function as Music.A31MusicModel).ServerClientType == 1) + { + (function as Music.A31MusicModel).MainPlayCollection = false; + Music.A31MusicModel.Save(); + } + } + string msg = function.name + Language.StringByID(StringId.CollectionCancelled); + LoadDeviceFunctionControlZone(); + function.SaveFunctionData(true); + new PublicAssmebly().TipMsgAutoClose(msg, true); + }; + } + /// <summary> + /// 鍔犺浇鍦烘櫙鏀惰棌鎸夐挳浜嬩欢 + /// </summary> + void LoadEvent_SceneCollection(Button btn, Scene scene) + { + btn.MouseUpEventHandler += (sender, e) => + { + scene.collect = false; + string msg = scene.name + Language.StringByID(StringId.CollectionCancelled); + LoadSceneFunctionControlZone(); + scene.CollectScene(); + new PublicAssmebly().TipMsgAutoClose(msg, true); + }; + } + + /// <summary> + /// 淇敼鏄剧ず鐨勫姛鑳界被鍨� + /// 璁惧鍔熻兘/鍦烘櫙鍔熻兘 + /// </summary> + void LoadEvent_ChangeShowedFunctionType() + { + 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; + CurShowTypeIsFunction = true; + 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; + CurShowTypeIsFunction = false; + 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; + CurShowTypeIsFunction = true; + } + else + { + btnChangeScene.IsSelected = true; + btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize; + btnChangeScene.IsBold = true; + btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize; + btnChangeFunction.IsSelected = false; + btnChangeFunction.IsBold = false; + CurShowTypeIsFunction = false; + } + }; + } + + /// <summary> + /// 鏇存柊鏄剧ず鐘舵�� + /// </summary> + public static void UpdataFunctionStates(Function function) { Application.RunOnMainThread(() => { - if (bodyView != null) + try { - foreach (var dic in LightViews) + if (bodyView != null) { - if (dic.Key == light.sid) + foreach (var view in bodyView.functionViews) { - var state = light.state == 1; - var view = dic.Value; - for (int i = 0; i < view.ChildrenCount; i++) + if (view.Tag.ToString() == function.sid) { - if (view.GetChildren(i).GetType() == typeof(Button)) + var state = function.trait_on_off.curValue.ToString() == "on"; + for (int i = 0; i < view.ChildrenCount; i++) { - var btn = view.GetChildren(i) as Button; - btn.IsSelected = state; - if (btn.Tag != null && btn.Tag.ToString() == "state") + if (view.GetChildren(i).GetType() == typeof(Button)) { - btn.Text = light.lastState; + var btn = view.GetChildren(i) as Button; + btn.IsSelected = state; + if (btn.Tag != null && btn.Tag.ToString() == "state") + { + if (function.functionCategory == FunctionCategory.Music) + { + btn.Text = (function as Music.A31MusicModel).A31PlayStatus.Title; + } + else + { + btn.Text = function.lastState; + } + } } } } } } } + catch (Exception ex) + { + MainPage.Log($"HomePage updata funciton states error {ex.Message}"); + } }); } - - void LoadSwitchEvent(Function function,Button btnSwitch,FrameLayout view) + /// <summary> + /// 鍔犺浇鍦烘櫙鎺у埗浜嬩欢 + /// </summary> + void LoadEvent_ControlScene(Button btnCoverd, Button btnName, Button btnZone,Button btnShowDelay, Scene scene) { - btnSwitch.MouseUpEventHandler += (sender, e) => + EventHandler<MouseEventArgs> eventHandler = (sender, e) => { - if (function.functionCategory == FunctionType.Light) + //鍦烘櫙姝e湪鍊掕鏃舵墽琛屼腑锛屼笉鍏佽鍐嶇偣鍑� + if (scene.LastExecutionTime == "" || Convert.ToDouble(scene.LastExecutionTime) + Convert.ToDouble(scene.delay) < Convert.ToDouble(Utlis.GetTimestamp(false))) { - var curState = !btnSwitch.IsSelected; - for (int i = 0; i < view.ChildrenCount; i++) - { - if (view.GetChildren(i).GetType() == typeof(Button)) - { - var btn = view.GetChildren(i) as Button; - btn.IsSelected = curState; - } - } - new System.Threading.Thread(() => + scene.LastExecutionTime = Utlis.GetTimestamp(false); + } + else + { + return; + } + string msg = scene.name + Language.StringByID(StringId.AlreadyOpened); + new PublicAssmebly().TipMsgAutoClose(msg, true); + Control.Ins.ControlScene(scene); + scene.SceneCountDown(btnShowDelay); + //new System.Threading.Thread(() => { + // int time = Convert.ToInt32(scene.delay); + // if (time > 0) + // { + // while (time > 0) + // { + // Application.RunOnMainThread(() => + // { + // if (time / 60 > 1) + // { + // btnShowDelay.Text = (time / 60).ToString() + "min"; + // } + // else + // { + // btnShowDelay.Text = (time--).ToString() + "s"; + // } + // }); + // if (time / 60 > 1) + // { + // System.Threading.Thread.Sleep(time / 60 * 60000); + // } + // else + // { + // System.Threading.Thread.Sleep(1000); + // } + // } + // Application.RunOnMainThread(() => + // { + // btnShowDelay.Text = ""; + // }); + // } + //}) + //{ IsBackground = true, Priority = System.Threading.ThreadPriority.BelowNormal }.Start(); + + }; + btnCoverd.MouseUpEventHandler = eventHandler; + btnName.MouseUpEventHandler = eventHandler; + btnZone.MouseUpEventHandler = eventHandler; + } + + /// <summary> + /// 鍔犺浇鐏厜寮�鍏充簨浠� + /// </summary> + /// <param name="function"></param> + /// <param name="btnSwitch"></param> + void LoadEvent_SwitchFunction(Function function, Button btnSwitch) + { + btnSwitch.MouseUpEventHandler = (sender, e) => + { + btnSwitch.IsSelected = !btnSwitch.IsSelected; + new System.Threading.Thread(() => + { + 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) { var light = function as Light; - light.state = btnSwitch.IsSelected ? 1 : 0; - Control.Send("write", function, 3); - }) - { IsBackground = true }.Start(); - } + d.Add(FunctionAttributeKey.OnOff, light.trait_on_off.curValue.ToString()); + if (btnSwitch.IsSelected) + { + d.Add(FunctionAttributeKey.Brightness, light.lastBrightness.ToString()); + } + else + { + light.lastBrightness = light.brightness; + } + d.Add(FunctionAttributeKey.FadeTime, light.fadeTime.ToString()); + Control.Ins.SendWriteCommand(light, d); + } + else + { + d.Add("on_off", function.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(function, d); + } + }) + { IsBackground = true }.Start(); }; } + + /// <summary> + /// 鍔犺浇鐢佃鎺у埗浜嬩欢 + /// </summary> + /// <param name="tV"></param> + /// <param name="button"></param> + void LoadEvent_ControlTV(TV tV, Button button) + { + button.MouseUpEventHandler = (sender, e) => + { + tV.ControlTV(InfraredCode_TV.Power); + }; + } + + /// <summary> + /// 鍔犺浇绐楀笜鎺у埗浜嬩欢 + /// </summary> + void LoadEvent_ControlCurtain(Curtain curtain, Button btnClose, Button btnOpen) + { + btnClose.MouseDownEventHandler = (sender, e) => + { + btnClose.IsSelected = true; + }; + btnClose.MouseUpEventHandler = (sender, e) => + { + btnClose.IsSelected = false; + curtain.trait_on_off.curValue = "off"; + curtain.percent = 0; + System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); + d.Add("on_off", curtain.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(curtain, d); + }; + + btnOpen.MouseDownEventHandler = (sender, e) => + { + btnOpen.IsSelected = true; + }; + btnOpen.MouseUpEventHandler = (sender, e) => + { + btnOpen.IsSelected = false; + curtain.trait_on_off.curValue = "on"; + curtain.percent = 100; + System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); + d.Add("on_off", curtain.trait_on_off.curValue.ToString()); + Control.Ins.SendWriteCommand(curtain, d); + }; + } + + /// <summary> + /// 鍔犺浇璺宠浆淇℃伅涓績椤甸潰 + /// </summary> + void LoadEvent_GotoMessageCenterPage() + { + EventHandler<MouseEventArgs> eventHandler = (sender, e) => + { + + //鎴块棿鍒犻櫎浜嬩欢 + Action backAction = () => { + RegisterGetPushMessageAction(); + GetUnreadPushMessages(); + }; + + var skipPage = new MessageCenterPage(); + MainPage.BasePageView.AddChidren(skipPage); + skipPage.LoadPage(backAction); + MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; + }; + btnMsgBg.MouseUpEventHandler = eventHandler; + btnMsgTime.MouseUpEventHandler = eventHandler; + btnMsg.MouseUpEventHandler = eventHandler; + btnMsgIcon.MouseUpEventHandler = eventHandler; + } + + + #region 鏌ヨ鏈璇绘秷鎭垪琛� + /// <summary> + /// 鏄惁姝e湪璇诲彇 + /// </summary> + bool isGetting; + /// <summary> + /// 鏌ヨ鏈娑堟伅骞舵樉绀� + /// </summary> + void GetUnreadPushMessages() + { + System.Threading.Tasks.Task.Run(() => + { + try + { + if (isGetting) return; + + isGetting = true; + + var result = new HttpServerRequest().PushSerivceGetPushmessagelist(); + if (result.Code == StateCode.SUCCESS) + { + //鏈鐨勬秷鎭垪琛� + var unreadList = new List<PushMessageInfo>(); + + var pushMessageInfoList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PushMessageInfo>>(result.Data.ToString()); + + if (pushMessageInfoList != null && pushMessageInfoList.Count > 0) + { + foreach (var info in pushMessageInfoList) + { + if (!info.isRead) + { + unreadList.Add(info); + break; // 璺冲嚭寰幆 + } + } + + if (unreadList != null && unreadList.Count > 0) + { + Application.RunOnMainThread(() => + { + ShowMesBtnState(unreadList[0], false); + }); + } + else + { + Application.RunOnMainThread(() => + { + ShowMesBtnState(pushMessageInfoList[0], true); + }); + } + } + } + else + { + + } + } + catch (Exception ex) + { + } + finally + { + isGetting = false; + } + }); + } + + /// <summary> + /// 鏄剧ず鏈璇绘秷鎭� + /// </summary> + /// <param name="pushMessageInfo"></param> + /// <param name="allRead">鎵�鏈夐兘宸茶</param> + void ShowMesBtnState(PushMessageInfo pushMessageInfo, bool allRead) + { + if (bodyView == null) return; + btnMsg.Text = pushMessageInfo.messageTitle + ": " + pushMessageInfo.messageContent; + btnMsgTime.Text = GetUnixToDateTime(pushMessageInfo.createTime); + btnMsgIcon.IsSelected = !allRead; + } + + /// <summary> + /// 閲嶇疆鏈娑堟伅鎺т欢 + /// </summary> + void ResetMesBtnRead() + { + if (bodyView == null) return; + btnMsg.Text = "..."; + btnMsgTime.Text = "00:00"; + btnMsgIcon.IsSelected = false; + } + + /// <summary> + /// 鏃堕棿鏍煎紡杞崲澶勭悊 + /// </summary> + /// <param name="time">姣鏃堕棿鎴�</param> + /// <returns></returns> + string GetUnixToDateTime(long time) + { + try + { + return Utlis.ToFriendlyDisplay(time); + } + catch (Exception ex) + { + return ""; + } + } + + /// <summary> + /// 娉ㄥ唽鏀跺埌鎺ㄩ�佺洃鍚� + /// </summary> + void RegisterGetPushMessageAction() + { + Action RegisterGetPushMessageAction = () => { + if (bodyView != null) + { + //Utlis.WriteLine("GetPushMessageAction H鏀跺埌鎺ㄩ��"); + GetUnreadPushMessages(); + } + }; + HDLCommon.GetPushMessageAction = RegisterGetPushMessageAction; + } + + /// <summary> + /// 鍙栨秷鏀跺埌鎺ㄩ�佺洃鍚� + /// </summary> + void UnregisterGetPushMessageAction() + { + HDLCommon.GetPushMessageAction = null; + } + + #endregion + } } -- Gitblit v1.8.0