From a1b0ab7044100daaa7e0f1da2d2ca45e38098963 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期一, 29 三月 2021 09:13:25 +0800
Subject: [PATCH] 2021-3-29-2
---
HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs | 481 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 480 insertions(+), 1 deletions(-)
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
index de4cba5..dbf88dd 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
@@ -1,18 +1,497 @@
锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.DriverLayer;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+
namespace HDL_ON.UI
{
public partial class ClassificationPage
{
/// <summary>
+ /// 鏇存柊鐣岄潰淇℃伅
+ /// 鏇存柊鍔熻兘鎵撳紑鏁伴噺
+ /// 鏇存柊鍏ㄥ叧鍔熻兘鐘舵��
+ /// </summary>
+ /// <param name="function"></param>
+ public static void UpdataInfo(Function function)
+ {
+ Application.RunOnMainThread(() => {
+ if (bodyView == null)
+ return;
+ try
+ {
+ ShowFunction vv = ShowFunction.Light;
+ switch (function.spk)
+ {
+ case SPK.FloorHeatStandard:
+ vv = ShowFunction.FloorHeating;
+ break;
+ case SPK.AcStandard:
+ vv = ShowFunction.AC;
+ break;
+ case SPK.CurtainRoller:
+ case SPK.CurtainShades:
+ case SPK.CurtainSwitch:
+ case SPK.CurtainTrietex:
+ vv = ShowFunction.Curtain;
+ break;
+ case SPK.LightCCT:
+ case SPK.LightDimming:
+ case SPK.LightRGB:
+ case SPK.LightSwitch:
+ vv = ShowFunction.Light;
+ break;
+ case SPK.ElectricSocket:
+ case SPK.ElectricTuyaAirCleaner:
+ case SPK.ElectricTuyaFan:
+ case SPK.ElectricTuyaWaterValve:
+ case SPK.ElectricTuyaWeepRobot:
+ case SPK.ClothesHanger:
+ vv = ShowFunction.Electric;
+ break;
+ }
+ UpdataFunctionOnCount(vv, function.spk);
+ UpdataCloseAllButton(function);
+ }
+ catch
+ {
+ }
+ });
+ }
+
+ /// <summary>
+ /// 鏇存柊鍔熻兘鎵撳紑鏁伴噺
+ /// </summary>
+ /// <param name="functionCategory"></param>
+ static void UpdataFunctionOnCount(ShowFunction functionCategory, string functionType)
+ {
+ try
+ {
+ for (int i = 0; i < bodyView.functionsPageView.ChildrenCount; i++)
+ {
+ if (bodyView.functionsPageView.GetChildren(i).GetType() == typeof(FrameLayout))
+ {
+ var view1 = bodyView.functionsPageView.GetChildren(i) as FrameLayout;
+ for (int j = 0; j < view1.ChildrenCount; j++)
+ {
+ if (view1.GetChildren(j).GetType() == typeof(FrameLayout))
+ {
+ var view2 = view1.GetChildren(j) as FrameLayout;
+ for (var k = 0; k < view2.ChildrenCount; k++)
+ {
+ if (view2.GetChildren(k).GetType() == typeof(FrameLayout))
+ {
+ var view3 = view2.GetChildren(k) as FrameLayout;
+ if (view3 == null)
+ {
+ continue;
+ }
+ if (view3.Tag == null || view3.Tag.ToString() != functionCategory + "_View")
+ {
+ //MainPage.Log($"i={i}:j={j}:k={k} view3 tag : {view3.Tag.ToString()}");
+ continue;
+ }
+ for (var o = 0; o < view3.ChildrenCount; o++)
+ {
+ if (view3.GetChildren(o).GetType() == typeof(Button))
+ {
+ var btn = view3.GetChildren(o) as Button;
+ if (btn.Tag != null)
+ {
+ string btnText = "0";
+ switch (functionCategory)
+ {
+ case ShowFunction.FloorHeating:
+ btnText = FunctionList.List.GetFloorHeatingList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
+ break;
+ case ShowFunction.AC:
+ btnText = FunctionList.List.GetAcList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
+ break;
+ case ShowFunction.Curtain:
+ btnText = FunctionList.List.GetCurtainList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
+ break;
+ case ShowFunction.Light:
+ btnText = FunctionList.List.GetLightList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
+ break;
+ case ShowFunction.Electric:
+ btnText = FunctionList.List.GetElectricals().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count.ToString();
+ break;
+ }
+ if (btn.Tag.ToString() == functionCategory + "_onCount")
+ {
+ btn.Text = btnText;
+ }
+ else if (btn.Tag.ToString() == functionCategory + "_AllControl")
+ {
+ btn.IsSelected = btnText != "0";
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MainPage.Log($"鏇存柊鍏ㄥ叧鎸夐挳寮傚父 : {ex.Message} ");
+ }
+ }
+ /// <summary>
+ /// 鏇存柊鍏ㄥ叧鍔熻兘鐘舵��
+ /// </summary>
+ static void UpdataCloseAllButton(Function function)
+ {
+ for (int i = 0; i < bodyView.roomListView.ChildrenCount; i++)
+ {
+ if (bodyView.roomListView.GetChildren(i).GetType() == typeof(FrameLayout))
+ {
+ var view1 = bodyView.roomListView.GetChildren(i) as FrameLayout;
+ if (!function.roomIds.Contains(view1.Tag.ToString()))
+ continue;
+ for (int j = 0; j < view1.ChildrenCount; j++)
+ {
+ if (view1.GetChildren(j).GetType() == typeof(Button))
+ {
+ var btn = view1.GetChildren(j) as Button;
+ if (btn.Tag != null && btn.Tag.ToString() == "AllClose")
+ {
+ if (function.trait_on_off.curValue.ToString() == "on")
+ {
+ btn.Visible = true;
+ }
+ else
+ {
+ foreach (var rId in function.roomIds)
+ {
+ if (rId == null)
+ {
+ continue;
+ }
+ var r = SpatialInfo.CurrentSpatial.RoomList.Find(s => s.roomId == rId);
+ if (r == null)
+ {
+ continue;
+ }
+ var ssd = r.GetRoomFunctions(false).FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on");
+ var sss = ssd.Count;
+ if (sss == 0)
+ {
+ btn.Visible = false;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍔犺浇鍏抽棴鎴块棿鎵�鏈夊姛鑳戒簨浠�
+ /// </summary>
+ void LoadEvent_CloseAllFunction(Button btn, Room room)
+ {
+ try
+ {
+ btn.MouseUpEventHandler = (sender, e) =>
+ {
+ Action action = () =>
+ {
+ new System.Threading.Thread(() =>
+ {
+ foreach (var f in room.GetRoomFunctions(false))
+ {
+ f.trait_on_off.curValue = "off";
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add("on_off", f.trait_on_off.curValue.ToString());
+ Control.Ins.SendWriteCommand(f, d);
+ }
+
+ foreach (var m in Music.A31MusicModel.A31MusicModelList)
+ {
+ if (m.roomIds.Contains(room.roomId))
+ {
+ Music.SendMethod.Pause(m);
+ }
+ }
+ })
+ { IsBackground = true }.Start();
+
+ btn.Visible = false;
+ };
+ new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.TipCloseAllFunctionInRoom, action);
+ };
+ foreach (var f in room.GetRoomFunctions(false))
+ {
+ if (f.trait_on_off.curValue.ToString() == "on")
+ {
+ btn.Visible = true;
+ break;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MainPage.Log($"load close all function : {ex.Message} ");
+ }
+ }
+
+ /// <summary>
/// 鍔犺浇浜嬩欢鍒楄〃
/// </summary>
void LoadEventList()
{
-
+ LoadEvent_ShowedChange();
}
#region 椤堕儴瀵艰埅鏍忎簨浠�
+ /// <summary>
+ /// 鏄剧ず鐣岄潰鍒囨崲
+ /// </summary>
+ void LoadEvent_ShowedChange()
+ {
+ contentPageView.PageChange = (sender, e) =>
+ {
+ if (contentPageView.PageIndex == 0)
+ {
+ btnRoomTilte.IsSelected = true;
+ btnRoomTilte.TextSize = CSS_FontSize.HeadlineFontSize;
+ btnRoomTilte.IsBold = true;
+ btnFuncTitle.IsSelected = false;
+ btnFuncTitle.TextSize = CSS_FontSize.TextFontSize;
+ btnFuncTitle.IsBold = false;
+ }
+ else
+ {
+ btnFuncTitle.IsSelected = true;
+ btnFuncTitle.TextSize = CSS_FontSize.HeadlineFontSize;
+ btnFuncTitle.IsBold = true;
+ btnRoomTilte.IsSelected = false;
+ btnRoomTilte.TextSize = CSS_FontSize.TextFontSize;
+ btnRoomTilte.IsBold = false;
+ }
+ };
+ btnRoomTilte.MouseUpEventHandler = (sender, e) =>
+ {
+ if (btnRoomTilte.IsSelected)
+ {
+ return;
+ }
+ btnRoomTilte.IsSelected = true;
+ btnRoomTilte.TextSize = CSS_FontSize.HeadlineFontSize;
+ btnFuncTitle.IsSelected = false;
+ btnFuncTitle.TextSize = CSS_FontSize.TextFontSize;
+
+ contentPageView.PageIndex = 0;
+ };
+ btnFuncTitle.MouseUpEventHandler = (sender, e) => {
+ if (btnFuncTitle.IsSelected)
+ {
+ return;
+ }
+ btnFuncTitle.IsSelected = true;
+ btnFuncTitle.TextSize = CSS_FontSize.HeadlineFontSize;
+ btnRoomTilte.IsSelected = false;
+ btnRoomTilte.TextSize = CSS_FontSize.TextFontSize;
+ contentPageView.PageIndex = 1;
+ };
+ }
#endregion
+
+ /// <summary>
+ /// 鍏抽棴鎵撳紑鍏ㄩ儴閫変腑绫诲瀷鍔熻兘
+ /// </summary>
+ void LoadEvent_SwitchFunction(Button btn, ShowFunction functionCategory,FrameLayout view)
+ {
+ btn.MouseUpEventHandler = (sender, e) => {
+ btn.IsSelected = !btn.IsSelected;
+ var onoff = btn.IsSelected ? "on" : "off";
+ var waitPage = new Loading();
+ view.AddChidren(waitPage);
+ waitPage.BackgroundColor = 0x00000000;
+ waitPage.Start("");
+
+
+ new System.Threading.Thread(() =>
+ {
+ try
+ {
+ //鍏ㄥ紑鍏ㄥ叧
+ //if (DB_ResidenceData.Instance.GatewayType == 0 && !Control.Ins.IsRemote)
+ if (Control.Ins.GatewayOnline_Local)
+ {
+ switch (functionCategory)
+ {
+ case ShowFunction.AC:
+ foreach (var f in FunctionList.List.GetAcList())
+ {
+ f.trait_on_off.curValue = onoff;
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
+ Control.Ins.SendWriteCommand(f, d);
+ System.Threading.Thread.Sleep(100);
+ }
+ break;
+ case ShowFunction.FloorHeating:
+ foreach (var f in FunctionList.List.GetFloorHeatingList())
+ {
+ f.trait_on_off.curValue = onoff;
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
+ Control.Ins.SendWriteCommand(f, d);
+ System.Threading.Thread.Sleep(100);
+ }
+ break;
+ case ShowFunction.Light:
+ foreach (var f in FunctionList.List.GetLightList())
+ {
+ f.trait_on_off.curValue = onoff;
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
+ Control.Ins.SendWriteCommand(f, d);
+ System.Threading.Thread.Sleep(100);
+ }
+ break;
+ case ShowFunction.Electric:
+ foreach (var f in FunctionList.List.GetElectricals())
+ {
+ f.trait_on_off.curValue = onoff;
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
+ Control.Ins.SendWriteCommand(f, d);
+ System.Threading.Thread.Sleep(100);
+ }
+ break;
+ }
+ }
+ else
+ {
+ switch (functionCategory)
+ {
+ case ShowFunction.AC:
+ List<Function> acList = new List<Function>();
+ foreach(var f in FunctionList.List.GetAcList())
+ {
+ acList.Add(f);
+ }
+ Control.Ins.SwtichFunctions(onoff == "on", acList);
+ break;
+ case ShowFunction.FloorHeating:
+ List<Function> fhList = new List<Function>();
+ foreach (var f in FunctionList.List.GetFloorHeatingList())
+ {
+ fhList.Add(f);
+ }
+ Control.Ins.SwtichFunctions(onoff == "on", fhList);
+ break;
+ case ShowFunction.Light:
+ List<Function> lightList = new List<Function>();
+ foreach (var f in FunctionList.List.GetLightList())
+ {
+ lightList.Add(f);
+ }
+ Control.Ins.SwtichFunctions(onoff == "on", lightList);
+ break;
+ case ShowFunction.Electric:
+ List<Function> eleList = new List<Function>();
+ foreach (var f in FunctionList.List.GetElectricals())
+ {
+ eleList.Add(f);
+ }
+ Control.Ins.SwtichFunctions(onoff == "on", eleList);
+ break;
+ }
+
+
+ }
+ }
+ catch (Exception ex)
+ {
+ MainPage.Log($"{functionCategory}鍏ㄥ紑鍏ㄥ叧澶辫触:{ex.Message}");
+ }
+ finally
+ {
+ Application.RunOnMainThread(() =>
+ {
+ waitPage.Hide();
+ waitPage.RemoveFromParent();
+ });
+ }
+ })
+ { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start();
+ };
+ }
+
+
+ /// <summary>
+ /// 绐楀笜鍏ㄥ紑鍏ㄥ叧
+ /// </summary>
+ void LoadEvent_CurtainSwitch(Button btnClose, Button btnOpen,FrameLayout view)
+ {
+ btnOpen.MouseUpEventHandler = (sender, e) =>
+ {
+ DB_ResidenceData.Instance.GlobalCurtainStatus = true;
+ btnOpen.IsSelected = true;
+ btnClose.IsSelected = false;
+ var waitPage = new Loading();
+ waitPage.BackgroundColor = 0x00000000;
+ view.AddChidren(waitPage);
+ waitPage.Start("");
+ new System.Threading.Thread(() =>
+ {
+ try
+ {
+ foreach (var f in FunctionList.List.GetCurtainList())
+ {
+ f.trait_on_off.curValue = "on";
+ f.SetAttrState(FunctionAttributeKey.Percent, "100");
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add("on_off", f.trait_on_off.curValue.ToString());
+ Control.Ins.SendWriteCommand(f, d);
+ System.Threading.Thread.Sleep(100);
+ }
+ }
+ catch (Exception ex)
+ {
+ MainPage.Log($"绐楀笜鍏ㄥ紑鍏ㄥ叧澶辫触:{ex.Message}");
+ }
+ finally
+ {
+ Application.RunOnMainThread(() =>
+ {
+ waitPage.Hide();
+ waitPage.RemoveFromParent();
+ });
+ }
+ })
+ { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start();
+ };
+
+ btnClose.MouseUpEventHandler = (sender, e) =>
+ {
+ DB_ResidenceData.Instance.GlobalCurtainStatus = false;
+ btnClose.IsSelected = true;
+ btnOpen.IsSelected = false;
+ foreach (var f in FunctionList.List.GetCurtainList())
+ {
+ f.trait_on_off.curValue = "off";
+ f.SetAttrState(FunctionAttributeKey.Percent, "0");
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add("on_off", f.trait_on_off.curValue.ToString());
+ Control.Ins.SendWriteCommand(f, d);
+ }
+ };
+
+
+ }
}
}
+
--
Gitblit v1.8.0