From cc0d80c7d86c6d0167269b3408c4b30c24ce84e9 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 23 三月 2020 16:55:37 +0800
Subject: [PATCH] ???????
---
ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs | 2943 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 1,472 insertions(+), 1,471 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
old mode 100755
new mode 100644
index fa0c778..f582b6d
--- a/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
+++ b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
@@ -1,1471 +1,1472 @@
-锘縰sing System;
-using System.Collections.Generic;
-using Shared.Common;
-using Shared.Phone.UserView;
-using Shared.R;
-using Shared.Phone.Device.CommonForm;
-using Shared.Phone.UserCenter;
-using ZigBee.Device;
-
-namespace Shared.Phone.Category
-{
- /// <summary>
- /// 鍒嗙被鐨勪富鐣岄潰
- /// </summary>
- public class CategoryMainForm : EditorCommonForm
- {
- #region 鈻� 鍙橀噺澹版槑___________________________
-
- /// <summary>
- /// The instance.
- /// </summary>
- public static CategoryMainForm instance;
- /// <summary>
- /// 鍦烘櫙鍔熻兘涓儴鑳屾櫙bodyView(楂樺害涓鸿澶囪彍鍗曠殑閭d釜鐧借壊鑳屾櫙鐨勪笂閮ㄥ埌灞忓箷搴曢儴)
- /// </summary>
- public FrameLayout functionSceneBodyView;
- /// <summary>
- /// 涓儴鑳屾櫙bodyView(楂樺害涓哄満鏅姛鑳藉垏鎹㈡帶浠剁殑搴曢儴鍒板睆骞曞簳閮�)
- /// </summary>
- public FrameLayout functionSceneAutoBodyView;
- /// <summary>
- /// 鍙充笂瑙掓坊鍔犳寜閽�
- /// </summary>
- private IconViewControl btnTopRightAdd = null;
- /// <summary>
- /// 妤煎眰鎺т欢
- /// </summary>
- private NormalViewControl btnFloorName = null;
- /// <summary>
- /// 妤煎眰鍥炬爣鎺т欢
- /// </summary>
- private IconViewControl btnFloorIcon = null;
- /// <summary>
- /// 璁惧琛屾帶浠�
- /// </summary>
- private Dictionary<string, Controls.DeviceRowCommon> dicDeviceRowControl = new Dictionary<string, Controls.DeviceRowCommon>();
-
- #endregion
-
- #region 鈻� 鍒濆鍖朹____________________________
-
- /// <summary>
- /// 鏋勯�犳柟娉�
- /// </summary>
- public CategoryMainForm()
- {
- BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
- instance = this;
- }
-
- /// <summary>
- /// 鏄剧ず鐣岄潰--榛樿鍦烘櫙鐣岄潰
- /// </summary>
- public void ShowForm()
- {
- //鍏堟竻闄ゅ惂
- this.RemoveAll();
- //鍒濆鍖栧ご閮ㄦ帶浠�
- this.InitTopControl();
- //鍒濆鍖栦腑闂存帶浠�
- this.InitMidControls();
- //娣诲姞璁惧鐘舵�佷笂鎶ヤ簨浠�
- this.AddNormalDeviceReportEvent();
- //娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠�
- this.AddSensorDeviceReportEvent();
- }
-
- /// <summary>
- /// 鍒濆鍖栧ご閮ㄦ帶浠�
- /// </summary>
- private void InitTopControl()
- {
- //澶撮儴FrameLayout
- this.topFrameLayout = new FrameLayout();
- topFrameLayout.Y = Application.GetRealHeight(104);
- topFrameLayout.Height = Application.GetRealHeight(127);
- topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
- this.AddChidren(topFrameLayout);
- //鏍囬鍒嗙被
- var btnTitle = new NormalViewControl(300, 95, true);
- btnTitle.X = ControlCommonResourse.XXLeft;
- btnTitle.Gravity = Gravity.CenterVertical;
- btnTitle.TextID = R.MyInternationalizationString.Category;
- btnTitle.TextSize = 24;
- btnTitle.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
- btnTitle.IsBold = true;
- topFrameLayout.AddChidren(btnTitle);
-
- //鍙充笂瑙掓坊鍔犳寜閽�
- this.btnTopRightAdd = new IconViewControl(104);
- btnTopRightAdd.X = Application.GetRealWidth(953);
- btnTopRightAdd.Gravity = Gravity.CenterVertical;
- btnTopRightAdd.UnSelectedImagePath = "Item/Add_Category.png";
- topFrameLayout.AddChidren(btnTopRightAdd);
- btnTopRightAdd.ButtonClickEvent += (sender, e) =>
- {
- if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
- {
- //娣诲姞鍦烘櫙
- Add_Scene();
- }
- else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 2)
- {
- //娣诲姞鑷姩鍖�
- Add_Automation();
- }
- };
- }
-
- /// <summary>
- /// 鍒濆鍖栦腑闂存帶浠�
- /// </summary>
- private void InitMidControls()
- {
- //搴旇鏄痓ody鍚�
- this.bodyFrameLayout = new FrameLayout();
- bodyFrameLayout.Y = topFrameLayout.Bottom;
- bodyFrameLayout.Height = Application.GetRealHeight(1549);
- bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
- this.AddChidren(bodyFrameLayout);
-
- //鍦烘櫙,鍔熻兘,鑷姩鍖栫殑鍒囨崲鎺т欢鐨勫鍣�
- var frameSwitchBack = new FrameLayout();
- frameSwitchBack.Height = Application.GetRealHeight(127);
- bodyFrameLayout.AddChidren(frameSwitchBack);
-
- //鎷ユ湁妤煎眰鏃�
- this.btnFloorName = null;
- this.btnFloorIcon = null;
- if (Config.Instance.Home.FloorDics.Count > 0)
- {
- //妤煎眰鍚�
- this.btnFloorName = new NormalViewControl(200, 69, true);
- btnFloorName.X = frameSwitchBack.Width - Application.GetRealWidth(200 + 120);
- btnFloorName.Y = Application.GetRealHeight(17);
- btnFloorName.TextAlignment = TextAlignment.CenterRight;
- btnFloorName.IsBold = true;
- btnFloorName.Text = HdlResidenceLogic.Current.GetFloorNameById(Config.Instance.Home.CurrentFloorId);
- frameSwitchBack.AddChidren(btnFloorName);
- btnFloorName.ButtonClickEvent += (sender, e) =>
- {
- var floors = new Device.Category.SelectFloor();
- AddChidren(floors);
- floors.Init(580, 330, Direction.Right);
- floors.changeFloor = true;
- floors.FloorAction += (floorId) =>
- {
- btnFloorName.Text = Config.Instance.Home.GetFloorNameById(floorId);
- HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom();
- //鍒锋柊bodyView
- this.RefreshBodyView();
- };
- };
- //妤煎眰鍥炬爣
- this.btnFloorIcon = new IconViewControl(69);
- btnFloorIcon.X = Application.GetRealWidth(950);
- btnFloorIcon.Y = btnFloorName.Y;
- btnFloorIcon.UnSelectedImagePath = "Item/Drop_Down.png";
- frameSwitchBack.AddChidren(btnFloorIcon);
- btnFloorIcon.ButtonClickEvent += (sender, e) =>
- {
- btnFloorName.ButtonClickEvent?.Invoke(sender, e);
- };
- }
-
- //鐩墠涓嶇煡閬撻儹闆煄鐨勮繖涓叿浣撴斁鍦ㄥ摢涓殑浣嶇疆
- this.functionSceneAutoBodyView = new FrameLayout();
- functionSceneAutoBodyView.Y = frameSwitchBack.Bottom;
- functionSceneAutoBodyView.Height = Application.GetRealHeight(1423);
- bodyFrameLayout.AddChidren(functionSceneAutoBodyView);
-
- //鍦烘櫙,鍔熻兘,鑷姩鍖栫殑鍒囨崲鎺т欢
- var switchContr = new SceneFunctionSwitchControl();
- switchContr.Width = Application.GetRealWidth(650);
- switchContr.Gravity = Gravity.CenterVertical;
- frameSwitchBack.AddChidren(switchContr);
- var listTitle = new List<string>();
- listTitle.Add(Language.StringByID(R.MyInternationalizationString.uScence));
- listTitle.Add(Language.StringByID(R.MyInternationalizationString.uFunction));
- if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
- {
- //鎴愬憳娌℃湁鑷姩鍖�
- listTitle.Add(Language.StringByID(R.MyInternationalizationString.Automation));
- }
- //璁剧疆鍒濆鍊�
- switchContr.SetDefultIndex(UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex);
- //閫夋嫨浜嬩欢
- switchContr.SelectTabEvent += (selectIndex) =>
- {
- UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex = selectIndex;
- //鍒锋柊bodyView
- this.RefreshBodyView();
- };
- //寮�濮嬪垵濮嬪寲
- switchContr.InitControl(listTitle);
- }
-
- /// <summary>
- /// 鍒锋柊bodyView
- /// </summary>
- public void RefreshBodyView()
- {
- this.functionSceneAutoBodyView.RemoveAll();
-
- HdlThreadLogic.Current.RunMainInThread(() =>
- {
- bool floorVisible = true;
- //鍦烘櫙
- if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
- {
- //鍒濆鍖栨埧闂磋彍鍗�
- this.InitRoomMenuControl();
- //鏄剧ず鍙充笂瑙掔殑鍔犲彿
- this.btnTopRightAdd.Visible = true;
- }
- //鍔熻兘
- else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 1)
- {
- //鍒濆鍖栨埧闂磋彍鍗�
- this.InitRoomMenuControl();
- //闅愯棌鍙充笂瑙掔殑鍔犲彿
- this.btnTopRightAdd.Visible = false;
- }
- //鑷姩鍖�
- else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 2)
- {
- this.ShowAutotion();
- //闅愯棌妤煎眰
- floorVisible = false;
- //鏄剧ず鍙充笂瑙掔殑鍔犲彿
- this.btnTopRightAdd.Visible = true;
- }
-
- //淇敼妤煎眰鐨勬樉绀烘晥鏋�
- if (this.btnFloorName != null)
- {
- this.btnFloorName.Visible = floorVisible;
- this.btnFloorIcon.Visible = floorVisible;
- }
- });
- }
-
- #endregion
-
- #region 鈻� 鎴块棿鑿滃崟鎺т欢_______________________
-
- /// <summary>
- /// 鍒濆鍖栨埧闂磋彍鍗曟帶浠�
- /// </summary>
- private void InitRoomMenuControl()
- {
- //褰撳墠妤煎眰鐨勫叏閮ㄦ埧闂�
- var lisrRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
- //鎴块棿鑿滃崟鎺т欢
- var roomSwitchContr = new RoomDeviceGroupMenuControl(lisrRoom);
- roomSwitchContr.Y = Application.GetRealHeight(-55);
- this.functionSceneAutoBodyView.AddChidren(roomSwitchContr);
- //璁剧疆鍒濆鍊�
- roomSwitchContr.SetDefultIndex(HdlRoomLogic.Current.CurrentRoom.Id);
- //閫夋嫨浜嬩欢
- roomSwitchContr.SelectRoomEvent += (selectRoom) =>
- {
- HdlRoomLogic.Current.CurrentRoom = selectRoom;
- //鍦烘櫙
- if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
- {
- //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
- this.functionSceneBodyView.RemoveAll();
- HdlThreadLogic.Current.RunMainInThread(() =>
- {
- //鍒锋柊鍦烘櫙鍒嗘敮鎺т欢
- this.RefreshSceneView(selectRoom);
- });
- }
- //鍔熻兘
- else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 1)
- {
- //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
- this.functionSceneBodyView.RemoveAll();
- HdlThreadLogic.Current.RunMainInThread(() =>
- {
- //鍒锋柊璁惧鍒嗘敮鎺т欢
- this.RefreshFunctionView(selectRoom);
- });
- }
- };
-
- //鍔熻兘鍜屽満鏅痓odyView
- this.functionSceneBodyView = new FrameLayout();
- functionSceneBodyView.Y = roomSwitchContr.Bottom;
- functionSceneBodyView.Height = functionSceneAutoBodyView.Height - roomSwitchContr.Bottom;
- functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
-
- //鎵ц鍒濆鍖�
- roomSwitchContr.InitControl();
- }
-
- #endregion
-
- #region 鈻� 鍔熻兘鍒嗘敮___________________________
-
- /// <summary>
- /// 鍒锋柊鍔熻兘鍒嗘敮鎺т欢
- /// </summary>
- /// <param name="room"></param>
- private void RefreshFunctionView(Common.Room room)
- {
- //鑾峰彇鍒嗙粍鍚庣殑璁惧
- var dicGroupDevice = this.GetAllGroupDevice(room);
- if (dicGroupDevice.Count == 0)
- {
- this.ShowNoFunctionTip();
- return;
- }
-
- //璁惧鑿滃崟鐨勭櫧鑹茶儗鏅�
- var functionBack1 = new FrameLayout();
- functionBack1.X = ControlCommonResourse.XXLeft;
- functionBack1.Height = Application.GetRealHeight(160);
- functionBack1.Width = Application.GetRealWidth(1028);
- functionBack1.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
- functionSceneBodyView.AddChidren(functionBack1);
- functionBack1.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft);
- var functionBack2 = new FrameLayout();
- functionBack2.X = ControlCommonResourse.XXLeft;
- functionBack2.Y = functionBack1.Bottom - Application.GetRealHeight(50);
- functionBack2.Height = Application.GetRealHeight(279 - 160 + 50);
- functionBack2.Width = Application.GetRealWidth(1028);
- functionBack2.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
- functionSceneBodyView.AddChidren(functionBack2);
- functionBack2.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
-
- //璁惧鑿滃崟鐨勫乏鍙虫粦鍔ㄧ殑鎺т欢
- var HorizontalView = new HorizontalScrolViewLayout();
- HorizontalView.X = Application.GetRealWidth(CommonFormResouce.X_Left);
- HorizontalView.Height = Application.GetRealHeight(279);
- HorizontalView.Width = Application.GetRealWidth(1028);
- functionSceneBodyView.AddChidren(HorizontalView);
-
- //璁惧鐨勮儗鏅鍣�
- var frameDeviceBack = new FrameLayout();
- frameDeviceBack.X = ControlCommonResourse.XXLeft;
- frameDeviceBack.Y = HorizontalView.Bottom + Application.GetRealHeight(35);
- frameDeviceBack.BackgroundColor = UserCenterColor.Current.White;
- frameDeviceBack.Width = bodyFrameLayout.Width;
- frameDeviceBack.Height = functionSceneBodyView.Height - HorizontalView.Bottom - Application.GetRealHeight(35);
- frameDeviceBack.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
- functionSceneBodyView.AddChidren(frameDeviceBack);
-
- //璁惧鍒楄〃鎺т欢
- var listDeviceView = new VerticalListControl(35);
- listDeviceView.Y = Application.GetRealHeight(11);
- listDeviceView.Width = Application.GetRealWidth(1022);
- listDeviceView.Height = frameDeviceBack.Height - Application.GetRealHeight(11);
- listDeviceView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
- frameDeviceBack.AddChidren(listDeviceView);
-
- //涓婁竴娆¢�夋嫨鐨勮彍鍗�
- MainPage.Controls.DeviceFunctionUnallocatedControl oldSelectContr = null;
- DeviceRowInfo nowSelectDeviceInfo = null;
- foreach (int Textid in dicGroupDevice.Keys)
- {
- var rowInfo = dicGroupDevice[Textid];
-
- //璁惧绫诲瀷鐨勫鍣�
- var devieFrame = new FrameLayout();
- devieFrame.Width = Application.GetRealWidth(220);
- HorizontalView.AddChidren(devieFrame);
-
- //鑿滃崟鍥剧墖鎺т欢
- var deviceObjContr = new MainPage.Controls.DeviceFunctionUnallocatedControl();
- devieFrame.AddChidren(deviceObjContr);
- deviceObjContr.InitControl(Language.StringByID(Textid), rowInfo.IconPath, rowInfo.IconPathSelected, rowInfo.listDeviceKeys);
- deviceObjContr.ButtonClickEvent += (sender, e) =>
- {
- //閫夋嫨鐨勬槸鍚屼竴涓笢瑗跨殑璇�,涓嶅鐞�
- if (nowSelectDeviceInfo.TextId != rowInfo.TextId)
- {
- //涓婁竴娆$殑鑿滃崟鍙栨秷,鏈鑿滃崟閫夋嫨
- oldSelectContr.SetSelectStatu(false);
- deviceObjContr.SetSelectStatu(true);
- oldSelectContr = deviceObjContr;
-
- nowSelectDeviceInfo = rowInfo;
- HdlThreadLogic.Current.RunMainInThread(() =>
- {
- //鍒濆鍖栬澶囧垪琛ㄦ帶浠�
- this.InitListDeviceControls(listDeviceView, rowInfo);
- });
- }
- };
-
- if (nowSelectDeviceInfo == null)
- {
- //璁剧疆鍒濆閫夋嫨
- nowSelectDeviceInfo = rowInfo;
- //璁板綍鍒濆閫夋嫨鐨勮彍鍗曟帶浠�
- oldSelectContr = deviceObjContr;
- deviceObjContr.SetSelectStatu(true);
- }
- }
- if (nowSelectDeviceInfo != null)
- {
- //鍒濆鍖栭粯璁ょ殑璁惧鍒楄〃鎺т欢
- this.InitListDeviceControls(listDeviceView, nowSelectDeviceInfo);
- }
- }
-
- /// <summary>
- /// 鎻愮ず娌℃湁鍔熻兘
- /// </summary>
- private void ShowNoFunctionTip()
- {
- var noFunction = new Button()
- {
- Y = Application.GetRealHeight(320),
- Width = Application.GetMinRealAverage(757),
- Height = Application.GetMinRealAverage(435),
- UnSelectedImagePath = "Item/NoFunction.png",
- Gravity = Gravity.CenterHorizontal
- };
- functionSceneBodyView.AddChidren(noFunction);
-
- var noFunctionTip = new Button()
- {
- Y = noFunction.Bottom + Application.GetRealHeight(32),
- Height = Application.GetRealHeight(200),
- Width = Application.GetRealWidth(700),
- Gravity = Gravity.CenterHorizontal,
- Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}", "\r\n"),
- TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
- TextAlignment = TextAlignment.Center,
- IsMoreLines = true
- };
- functionSceneBodyView.AddChidren(noFunctionTip);
- }
-
- #endregion
-
- #region 鈻� 鍒濆鍖栬澶囧垪琛ㄦ帶浠禵________________
-
- /// <summary>
- /// 鍒濆鍖栬澶囧垪琛ㄦ帶浠�
- /// </summary>
- /// <param name="listView"></param>
- /// <param name="rowInfo"></param>
- private void InitListDeviceControls(VerticalListControl listView, DeviceRowInfo rowInfo)
- {
- //鍏堟竻绌�
- listView.RemoveAll();
-
- var listDevice = new List<CommonDevice>();
- foreach (var mainkeys in rowInfo.listDeviceKeys)
- {
- var device = LocalDevice.Current.GetDevice(mainkeys);
- if (device != null)
- {
- listDevice.Add(device);
- }
- }
-
- HdlThreadLogic.Current.RunMain(() =>
- {
- var listContr = new List<Controls.DeviceRowCommon>();
- foreach (var device in listDevice)
- {
- Controls.DeviceRowCommon cardContr = null;
- //绐楀笜
- if (device.Type == DeviceType.WindowCoveringDevice)
- {
- cardContr = new Controls.DeviceCurtainRowControl(listView.rowSpace / 2);
- }
- //缁х數鍣�
- else if (device.Type == DeviceType.OnOffOutput)
- {
- cardContr = new Controls.DeviceRelayRowControl(listView.rowSpace / 2);
- }
- //绌烘皵寮�鍏�
- else if (device.Type == DeviceType.AirSwitch)
- {
- cardContr = new Controls.DeviceAirSwitchRowControl(listView.rowSpace / 2);
- }
- //绌鸿皟
- else if (device.Type == DeviceType.Thermostat)
- {
- cardContr = new Controls.DeviceAcRowControl(listView.rowSpace / 2);
- }
- //褰╃伅(璋冨厜鍣�)
- else if (device.Type == DeviceType.DimmableLight)
- {
- cardContr = new Controls.DeviceColorLightRowControl(listView.rowSpace / 2);
- }
- //浼犳劅鍣�
- else if (device.Type == DeviceType.IASZone)
- {
- cardContr = new Controls.DeviceSensorRowControl(listView.rowSpace / 2);
- }
- //娓╂箍搴�
- else if (device.Type == DeviceType.TemperatureSensor)
- {
- cardContr = new Controls.DeviceTemperatureRowControl(listView.rowSpace / 2);
- }
- //闂ㄩ攣
- else if (device.Type == DeviceType.DoorLock)
- {
- cardContr = new Controls.DeviceDoorLockRowControl(listView.rowSpace / 2);
- }
- //鏃犳硶璇嗗埆
- else
- {
- cardContr = new Controls.DeviceRowCommon(listView.rowSpace / 2);
- //娌℃湁鐘舵�佸姛鑳�
- cardContr.hadStatuFunction = false;
- }
-
- //鍒濆鍖栧崱鐗�
- listView.AddChidren(cardContr);
- cardContr.InitControl(device);
- //鎺т欢璁板綍鍒扮紦瀛樹腑
- this.dicDeviceRowControl[LocalDevice.Current.GetDeviceMainKeys(device)] = cardContr;
- //鍔犵紦瀛�,鐒跺悗鍙戝懡浠�
- listContr.Add(cardContr);
- }
- HdlThreadLogic.Current.RunThread(() =>
- {
- for (int i = 0; i < listContr.Count; i++)
- {
- if (listView.Parent == null)
- {
- return;
- }
- System.Threading.Thread.Sleep(20);
- //鍙戦�佽幏鍙栫姸鎬佺殑鍛戒护
- listContr[i].SendStatuComand();
- }
-
- }, ShowErrorMode.NO);
- });
- }
-
- #endregion
-
- #region 鈻� 鍦烘櫙鍒嗘敮___________________________
-
- /// <summary>
- /// 鍒锋柊鍦烘櫙鍒嗘敮鎺т欢
- /// </summary>
- /// <param name="room"></param>
- private void RefreshSceneView(Room room)
- {
- var listScene = new List<SceneUI>();
- foreach (var sceneId in room.ListSceneId)
- {
- var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId);
- if (scene != null)
- {
- listScene.Add(scene);
- }
- }
- if (listScene.Count == 0)
- {
- this.ShowNoSceneTip();
- return;
- }
-
- var dicSceneContr = new Dictionary<int, SceneCategoryView>();
- var listview = new VerticalListControl();
- functionSceneBodyView.AddChidren(listview);
- foreach (var scene in listScene)
- {
- //鍦烘櫙鍗$墖鎺т欢
- var sceneView = new SceneCategoryView();
- listview.AddChidren(sceneView);
- sceneView.InitControl(scene, room);
-
- dicSceneContr[scene.Id] = sceneView;
- }
- HdlThreadLogic.Current.RunThread(() =>
- {
- //鑾峰彇鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
- this.GetAllDelayScene(dicSceneContr, listview);
- }, ShowErrorMode.NO);
- }
-
- /// <summary>
- /// 鑾峰彇鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
- /// </summary>
- /// <param name="dicSceneContr"></param>
- private async void GetAllDelayScene(Dictionary<int, SceneCategoryView> dicSceneContr, VerticalListControl listview)
- {
- //璇诲彇鍏ㄩ儴鐨勫欢鏃舵椂闂�
- var result = await Scene.CatDelaySceneAsync();
- if (result == null || result.catDelaySceneResponseData == null ||
- result.catDelaySceneResponseData.DelayScenesList.Count == 0)
- {
- //鍑洪敊涓嶉笩瀹�
- return;
- }
-
- string hourText = Language.StringByID(R.MyInternationalizationString.Hour);
- string minuText = Language.StringByID(R.MyInternationalizationString.Minute);
- string secondText = Language.StringByID(R.MyInternationalizationString.Second);
-
- foreach (var data in result.catDelaySceneResponseData.DelayScenesList)
- {
- if (dicSceneContr.ContainsKey(data.ScenesId) == false)
- {
- //褰撳墠鐨勭晫闈㈡病鏈夋樉绀鸿繖涓満鏅�
- continue;
- }
- var seceneContr = dicSceneContr[data.ScenesId];
- //淇濆瓨缂撳瓨鏃堕棿
- seceneContr.scene.RemainTime = data.RemainTime;
- int remainTime = data.RemainTime;
- if (remainTime <= 0)
- {
- continue;
- }
- HdlThreadLogic.Current.RunThread(() =>
- {
- //寮�鍚唴閮ㄥ欢鏃舵椂闂寸嚎绋�(鏃ㄥ湪鍏ㄩ儴鍦版柟鐨勫悓涓�鍦烘櫙鏃堕棿鍚屾)
- HdlSceneLogic.Current.StartDelayTimeThread(seceneContr.scene);
- while (remainTime > 0 && this.Parent != null)
- {
- System.Threading.Thread.Sleep(1000);
- Application.RunOnMainThread(() =>
- {
- seceneContr.SetTimeText(this.GetTimeString(remainTime, hourText, minuText, secondText));
- });
- remainTime--;
- }
- Application.RunOnMainThread(() =>
- {
- if (listview.Parent != null)
- {
- seceneContr.SetTimeImage();
- //寮�鍚疞oading鐗规晥
- seceneContr.StartLoadingApreal();
- }
- });
- });
- }
- }
-
- /// <summary>
- /// 鏄剧ず娌℃湁鍦烘櫙
- /// </summary>
- private void ShowNoSceneTip()
- {
- var noFunction = new Button()
- {
- Y = Application.GetRealHeight(320),
- Width = Application.GetMinRealAverage(757),
- Height = Application.GetMinRealAverage(435),
- UnSelectedImagePath = "Item/NoFunction.png",
- Gravity = Gravity.CenterHorizontal
- };
- functionSceneBodyView.AddChidren(noFunction);
-
- var noScenceTip = new Button()
- {
- Y = noFunction.Bottom + Application.GetRealHeight(32),
- Height = Application.GetRealHeight(200),
- Width = Application.GetRealWidth(700),
- Gravity = Gravity.CenterHorizontal,
- Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}", "\r\n"),
- TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
- TextAlignment = TextAlignment.Center,
- IsMoreLines = true
- };
- functionSceneBodyView.AddChidren(noScenceTip);
- }
-
-
- #endregion
-
- #region 鈻� 涓�鑸澶囩姸鎬佷笂鎶__________________
-
- /// <summary>
- /// 娣诲姞涓�鑸澶囩姸鎬佷笂鎶ヤ簨浠�
- /// </summary>
- private void AddNormalDeviceReportEvent()
- {
- //璁惧灞炴�т笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceStatus", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
- {
- HdlThreadLogic.Current.RunMain(() =>
- {
- //澶勭悊涓�鑸澶囩殑涓婃姤鏁版嵁
- string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
- if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
- {
- //鍒锋柊鍗$墖淇℃伅
- var locadevice = LocalDevice.Current.GetDevice(mainKeys);
- this.dicDeviceRowControl[mainKeys].RefreshControlInfo(locadevice);
- }
- }, ShowErrorMode.NO);
- });
-
- //璁惧鍦ㄧ嚎涓婃姤(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceOnline", ReceiveComandDiv.A璁惧鍦ㄧ嚎涓婃姤, (report) =>
- {
- HdlThreadLogic.Current.RunMain(() =>
- {
- string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
- if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
- {
- //鍒锋柊鍗$墖鐘舵��
- this.dicDeviceRowControl[mainKeys].SetRowOnlineStatu(report.IsOnline == 1);
- return;
- }
-
- }, ShowErrorMode.NO);
- });
-
- //璁惧鎺у埗鍙嶉涓婃姤
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceRespone", ReceiveComandDiv.A鑺傜偣鎺у埗鍙嶉, (report) =>
- {
- HdlThreadLogic.Current.RunMain(() =>
- {
- string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
- if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
- {
- //璁惧鍗$墖
- var deviceCardContr = this.dicDeviceRowControl[mainKeys];
- //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
- deviceCardContr.SetHadGetResponeResultStatu();
- }
-
- }, ShowErrorMode.NO);
- });
- }
-
- #endregion
-
- #region 鈻� 浼犳劅鍣ㄧ姸鎬佷笂鎶____________________
-
- /// <summary>
- /// 娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠�
- /// </summary>
- private void AddSensorDeviceReportEvent()
- {
- //浼犳劅鍣ㄤ笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
- HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewSensor", ReceiveComandDiv.A浼犳劅鍣ㄤ笂鎶�, (report) =>
- {
- HdlThreadLogic.Current.RunMain(() =>
- {
- //澶勭悊浼犳劅鍣ㄤ笂鎶ユ暟鎹�
- string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
- if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
- {
- //鏈湴璁惧瀵硅薄
- var locadevice = LocalDevice.Current.GetDevice(mainKeys);
- //鍒锋柊鍗$墖淇℃伅
- this.dicDeviceRowControl[mainKeys].RefreshControlInfo(locadevice);
- }
-
- }, ShowErrorMode.NO);
- });
- }
-
- #endregion
-
- #region 鈻� 鏁村悎璁惧___________________________
-
- /// <summary>
- /// 鑾峰彇鍒嗙粍鍚庣殑璁惧
- /// </summary>
- /// <returns></returns>
- private Dictionary<int, DeviceRowInfo> GetAllGroupDevice(Common.Room room)
- {
- //鍏ㄩ儴鐨勮澶�
- var listDevice = HdlRoomLogic.Current.GetRoomListDevice(room);
- //鏍规嵁璁惧鎵�灞炵被鍨嬫帓搴�
- listDevice = LocalDevice.Current.SortDeviceByBelongType(listDevice);
- var dic = new Dictionary<int, DeviceRowInfo>();
- foreach (var device in listDevice)
- {
- var typeInfo = LocalDevice.Current.GetDeviceBelongEnumInfo(device);
- //鎸夋墍灞濱D鍒嗙粍
- if (dic.ContainsKey(typeInfo.BeloneTextId) == false)
- {
- dic[typeInfo.BeloneTextId] = new DeviceRowInfo();
- string path1 = string.Empty;
- string path2 = string.Empty;
- //鑾峰彇鍥剧墖
- LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
- dic[typeInfo.BeloneTextId].IconPath = path1;
- dic[typeInfo.BeloneTextId].IconPathSelected = path2;
- dic[typeInfo.BeloneTextId].TextId = typeInfo.BeloneTextId;
- }
- dic[typeInfo.BeloneTextId].listDeviceKeys.Add(LocalDevice.Current.GetDeviceMainKeys(device));
- }
- return dic;
- }
-
- #endregion
-
- #region 鈻� 鐣岄潰鍏抽棴___________________________
-
- /// <summary>
- /// 鐣岄潰鍏抽棴
- /// </summary>
- public override void CloseFormBefore()
- {
- //鎶婇潤鎬佸彉閲忕殑杩欎釜涓滆タ缃┖
- instance = null;
-
- base.CloseFormBefore();
- }
-
- #endregion
-
- #region 鈻� 涓�鑸柟娉昣__________________________
-
- /// <summary>
- /// 鑾峰彇鏃堕棿鐨勭炕璇戞枃鏈�
- /// </summary>
- /// <param name="second"></param>
- /// <param name="hourText">灏忔椂鐨勬枃鏈�</param>
- /// <param name="minuText">鍒嗙殑鏂囨湰</param>
- /// <param name="secondText">绉掔殑鏂囨湰</param>
- /// <returns></returns>
- private string GetTimeString(int second, string hourText, string minuText, string secondText)
- {
- string timeStr = string.Empty;
- int hour = second / 3600;
- int minu = second % 3600 / 60;
- int sec = second % 60;
- if (hour > 0)
- {
- timeStr += hour + hourText;
- }
- if (minu > 0)
- {
- timeStr += minu + minuText;
- }
- if (sec > 0)
- {
- timeStr += sec + secondText;
- }
- return timeStr;
- }
-
- /// <summary>
- /// 娣诲姞鍦烘櫙(閮洩鍩庣殑浠g爜)
- /// </summary>
- private void Add_Scene()
- {
- var scene = new Device.Category.CategoryAddScene();
- UserView.HomePage.Instance.AddChidren(scene);
- UserView.HomePage.Instance.PageIndex += 1;
- scene.Show();
- scene.AddAction = () =>
- {
- //鍒锋柊bodyView
- this.RefreshBodyView();
- };
- }
-
- /// <summary>
- /// 娣诲姞鑷姩鍖�(閮洩鍩庣殑浠g爜)
- /// </summary>
- private void Add_Automation()
- {
- //new涓�涓柊閫昏緫瀵硅薄锛�
- Common.Logic.CurrentLogic = new Common.Logic();
- Common.Logic.CurrentLogic.IsEnable = 1;//榛樿涓哄紑
- Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1);
- var addLogicPage = new Shared.Phone.Device.Logic.AddLogicPage();
- UserView.HomePage.Instance.AddChidren(addLogicPage);
- UserView.HomePage.Instance.PageIndex += 1;
- addLogicPage.Show();
- }
-
- #endregion
-
- #region 鈻� 缁撴瀯浣揰____________________________
-
- /// <summary>
- /// 璁惧琛屼俊鎭�
- /// </summary>
- private class DeviceRowInfo
- {
- /// <summary>
- /// 鏂囨湰ID,鐩墠鐢ㄦ潵鍋氫富閿�
- /// </summary>
- public int TextId = 0;
- /// <summary>
- /// 鍥炬爣
- /// </summary>
- public string IconPath = string.Empty;
- /// <summary>
- /// 鍥炬爣
- /// </summary>
- public string IconPathSelected = string.Empty;
- /// <summary>
- /// 璁惧鍥炶矾涓婚敭
- /// </summary>
- public List<string> listDeviceKeys = new List<string>();
- }
-
- #endregion
-
- #region 鈼� 鑷姩鍖朹_________________________
-
- /// <summary>
- /// 鑷姩鍖栧姛鑳戒唬鐮佸叆鍙�
- /// </summary>
- private void ShowAutotion()
- {
- // functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
- #region ---鎺ㄨ崘妯℃澘鐨勭粍浠�
- //鎺ㄨ崘妯℃澘鑳屾櫙鎺т欢
- var bjFrameLayout = new FrameLayout
- {
- Width = Application.GetRealWidth(1080 - 58),
- Height = Application.GetRealHeight(170),
- BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
- X = Application.GetRealWidth(58),
- //Radius = (uint)Application.GetRealHeight(50),
- Y = Application.GetRealHeight(30),
-
- };
- functionSceneAutoBodyView.AddChidren(bjFrameLayout);
- bjFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
- //鍥炬爣鎺т欢
- var sigBtn = new Button
- {
- Width = Application.GetMinRealAverage(84),
- Height = Application.GetMinRealAverage(84),
- UnSelectedImagePath = "ZigeeLogic/sign.png",
- X = Application.GetRealWidth(58),
- Gravity = Gravity.CenterVertical,
- };
- bjFrameLayout.AddChidren(sigBtn);
- //鎺ㄨ崘妯℃澘鏂囨湰鎺т欢
- var recommendtextBtn = new Button
- {
- Width = Application.GetMinRealAverage(300),
- Height = Application.GetMinRealAverage(84),
- X = sigBtn.Right + Application.GetRealWidth(35),
- TextAlignment = TextAlignment.CenterLeft,
- //Text = "鎺ㄨ崘妯℃澘",
- TextID = MyInternationalizationString.logictemplate,
- Gravity = Gravity.CenterVertical,
- TextColor = ZigbeeColor.Current.LogicBtnSelectedColor,
- TextSize = 15,
- };
- bjFrameLayout.AddChidren(recommendtextBtn);
- //鎺ㄨ崘妯℃澘寮�鍏虫帶浠�
- var recommendswitchBtn = new Button
- {
- Width = Application.GetRealWidth(104),
- Height = Application.GetRealHeight(63),
- UnSelectedImagePath = "ZigeeLogic/logicclose.png",
- SelectedImagePath = "ZigeeLogic/logicopen.png",
- X = bjFrameLayout.Width - Application.GetRealWidth(104 + 58),
- Gravity = Gravity.CenterVertical,
- };
- bjFrameLayout.AddChidren(recommendswitchBtn);
- #endregion
- //榛樿鎺ㄨ崘妯℃澘宸﹀彸鍙粦鎺т欢
- var scenehorizontalScrol = new HorizontalScrolViewLayout
- {
- Width = Application.GetRealWidth(1080 - 58),
- X = Application.GetRealWidth(58),
- Y = bjFrameLayout.Bottom + Application.GetRealHeight(30),
- Height = Application.GetRealHeight(0),
- };
- functionSceneAutoBodyView.AddChidren(scenehorizontalScrol);
- //鏄剧ず鑷姩鍖栧垪琛ㄤ笂涓嬪彲婊戞帶浠�
- var logicScrolView = new VerticalRefreshLayout//VerticalScrolViewLayout
- {
- Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
- //BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,/
- X = Application.GetRealWidth(58),
- Y = scenehorizontalScrol.Bottom,
- };
- functionSceneAutoBodyView.AddChidren(logicScrolView);
- logicScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
- bool no = false;
- //鏄剧ず榛樿妯℃澘鐨勭晫闈簨浠�
- recommendswitchBtn.MouseUpEventHandler += (sender, e) =>
- {
- int Yheight = 0;
- recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected;
- scenehorizontalScrol.RemoveAll();
- if (recommendswitchBtn.IsSelected)
- {
- no = true;
- scenehorizontalScrol.Height = Application.GetRealHeight(246);
- Yheight = 20;
- for (int i = 1; i < 4; i++)
- {
-
- var frameLayout = new FrameLayout
- {
- Width = Application.GetMinRealAverage(369 + 46),
- Height = Application.GetMinRealAverage(246),
- };
- scenehorizontalScrol.AddChidren(frameLayout);
- var logiciocnBtn = new Button
- {
- Width = Application.GetMinRealAverage(369),
- Height = Application.GetMinRealAverage(246),
- UnSelectedImagePath = "ZigeeLogic/" + i + ".png",
- Tag = i,
- };
- frameLayout.AddChidren(logiciocnBtn);
-
- var logicnameBtn = new Button
- {
- Width = Application.GetMinRealAverage(250),
- Height = Application.GetMinRealAverage(80),
- X = Application.GetRealWidth(23),
- Y = Application.GetRealHeight(246 - 23 - 80),
- TextAlignment = TextAlignment.CenterLeft,
- TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
- TextSize = 14,
- };
- frameLayout.AddChidren(logicnameBtn);
-
- if (i == 1)
- {
- logicnameBtn.Text = Language.StringByID(MyInternationalizationString.onlight);
- }
- else if (i == 2)
- {
- logicnameBtn.Text = Language.StringByID(MyInternationalizationString.offlight);
- }
- else if (i == 3)
- {
- logicnameBtn.Text = Language.StringByID(MyInternationalizationString.automation1);
- }
-
-
- EventHandler<MouseEventArgs> iconclick = (sender1, e1) =>
- {
- Common.Logic.CurrentLogic = new Common.Logic();
- Common.Logic.CurrentLogic.IsEnable = 1;//榛樿涓哄紑
- if (logiciocnBtn.Tag.ToString() == "3")
- {
- Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
- //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
- var addLogicPage = new Device.Logic.AddLogicPage();
- HomePage.Instance.AddChidren(addLogicPage);
- HomePage.Instance.PageIndex += 1;
- addLogicPage.Show();
- }
- else
- {
-
- Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
- //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
- Device.Logic.TemplatePage templatePage = new Device.Logic.TemplatePage();
- Device.Logic.TemplatePage.s = logiciocnBtn.Tag.ToString();
- HomePage.Instance.AddChidren(templatePage);
- HomePage.Instance.PageIndex += 1;
- templatePage.Show();
- }
- };
- logiciocnBtn.MouseUpEventHandler += iconclick;
- logicnameBtn.MouseUpEventHandler += iconclick;
- }
- }
- else
- {
- no = false;
- scenehorizontalScrol.Height = Application.GetRealHeight(0);
- Yheight = 0;
- }
- logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight;
- logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight;
- Automationview(logicScrolView, no);
- };
- //涓嬫媺鍒锋柊鑷姩鍖栧垪琛ㄧ殑浜嬩欢
- logicScrolView.BeginHeaderRefreshingAction += () =>
- {
- //閲嶆柊鍒锋柊logic鍒楄〃
- Common.Logic.LogicList.Clear();
- Read(logicScrolView, no);
- //鍏抽棴鍒锋柊View锛�
- logicScrolView.EndHeaderRefreshing();
- };
-
- Read(logicScrolView, no);
-
- }
- /// <summary>
- /// 璇诲彇鑷姩鍖栧垪琛ㄦ暟鎹紱
- /// </summary>
- /// <param name="logicScrolView"></param>
- private async void Read(VerticalRefreshLayout logicScrolView, bool no)
- {
- CommonPage.Loading.Start();
- if (Common.Logic.LogicList.Count == 0)
- {
- var Idlist = await Device.Logic.Send.GetLogicId(0);
- if (Idlist.Count != 0)
- {
- var listlogic = await Device.Logic.Send.ReadList(Idlist.Count, 0);
- //foreach鍙兘闆嗗悎宸茶淇敼,鏋氫妇鎿嶄綔鍙兘涓嶄細鎵ц,鍙兘鍑虹幇宕╂簝(寤鸿for)銆�
- for (int j = 0; j < listlogic.Count; j++)
- {
- var logic = listlogic[j];
- if (logic.LogicType != 0)
- {
- continue;
- }
- Common.Logic.LogicList.Add(logic);
- }
- }
- }
- //鑷姩鍖�
- Automationview(logicScrolView, no);
- CommonPage.Loading.Hide();
- }
- /// <summary>
- /// 鍔犺浇鑷姩鍖栧垪琛ㄧ晫闈�
- /// </summary>
- /// <param name="refresview">Refresview.</param>
- private async void Automationview(VerticalRefreshLayout refresview, bool no)
- {
- refresview.RemoveAll();
- if (Common.Logic.LogicList.Count == 0 && no == false)
- {
- //灏辨槸涓轰簡鏄剧ず寮曞娣诲姞鍥炬爣;
- refresview.BackgroundColor = 0x00000000;
- var noFrameLayout = new FrameLayout
- {
- Height = Application.GetRealHeight(434 + 200 + 32 + 160),
- //BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
- };
- refresview.AddChidren(noFrameLayout);
-
-
- var noIconBtn = new Button
- {
- Y = Application.GetRealHeight(160),
- Width = Application.GetMinRealAverage(756),
- Height = Application.GetMinRealAverage(434),
- UnSelectedImagePath = "Item/NoFunction.png",
- X = Application.GetRealWidth(104),
- };
- noFrameLayout.AddChidren(noIconBtn);
-
- var noTextBtn = new Button()
- {
- Y = noIconBtn.Bottom,
- Height = Application.GetRealHeight(200) + Application.GetRealHeight(32),
- Width = Application.GetRealWidth(700),
- //Gravity = Gravity.CenterHorizontal,
- Text = Language.StringByID(MyInternationalizationString.automationaddtext).Replace("{\\r\\n}", "\r\n"),
- TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
- TextAlignment = TextAlignment.Center,
- IsMoreLines = true,
- X = Application.GetRealWidth(190 - 58),
- };
- noFrameLayout.AddChidren(noTextBtn);
-
- }
- else
- {
-
- if (Common.Logic.LogicList.Count == 0 && no == true)
- {
- ///鏀瑰彉婊戝姩view鐨勯鑹诧紱
- refresview.BackgroundColor = 0x00000000;
- }
- else
- {
- refresview.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
- }
- }
- foreach (var logic in Common.Logic.LogicList)
- {
-
-
- var logicRowlayout = new RowLayout
- {
- Height = Application.GetRealHeight(190 + 30),
- Width = Application.GetRealWidth(1080 - 58),
- LineColor = ZigbeeColor.Current.LogicBackgroundColor,
- BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
- SubViewWidth = Application.GetRealWidth(184),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
-
- };
- refresview.AddChidren(logicRowlayout);
-
-
-
- var logicnameBtn = new Button
- {
- Height = Application.GetRealHeight(58),
- Width = Application.GetRealWidth(350),
- Text = logic.LogicName,
- X = Application.GetRealWidth(12 + 46),
- Y = Application.GetRealHeight(30),
- TextAlignment = TextAlignment.CenterLeft,
- TextColor = ZigbeeColor.Current.LogicTextBlackColor,
- TextSize = 14,
- };
- logicRowlayout.AddChidren(logicnameBtn);
-
-
- var logicswitchBtn = new Button
- {
- Width = Application.GetRealWidth(104),
- Height = Application.GetRealHeight(63),
- UnSelectedImagePath = "ZigeeLogic/logicclose.png",
- SelectedImagePath = "ZigeeLogic/logicopen.png",
- X = logicRowlayout.Width - Application.GetRealWidth(104 + 58),
- Y = Application.GetRealHeight(58 + 30 + 9 + 30),
-
- };
- logicRowlayout.AddChidren(logicswitchBtn);
-
-
-
- logicswitchBtn.MouseUpEventHandler += (sender1, e1) =>
- {
- logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected;
- if (logicswitchBtn.IsSelected)
- {
- //閫昏緫寮�
- logic.IsEnable = 1;
- StatusColor(logic, logicRowlayout, 1);
- }
- else
- {
- //閫昏緫鍏�
- logic.IsEnable = 0;
- StatusColor(logic, logicRowlayout, 0);
- }
- Device.Logic.Send.LogicControlSwitch(logic);
- //Logic.Send.AddModifyLogic(logic);
- };
- if (logic.IsEnable == 1)
- {
- logicswitchBtn.IsSelected = true;
- StatusColor(logic, logicRowlayout, 1);
- }
- else if (logic.IsEnable == 0)
- {
- logicswitchBtn.IsSelected = false;
- StatusColor(logic, logicRowlayout, 0);
- }
- ///缂栬緫
- var edit = new Button
- {
- BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1,
- Text = Language.StringByID(MyInternationalizationString.edit),
- TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
- };
- logicRowlayout.AddRightView(edit);
- edit.MouseUpEventHandler += (sender, e) =>
- {
- Common.Logic.CurrentLogic = logic;
- var logicCommunalPage = new Device.Logic.LogicCommunalPage();
- HomePage.Instance.AddChidren(logicCommunalPage);
- HomePage.Instance.PageIndex += 1;
- logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview, no); });
-
- };
-
-
- ///鍒犻櫎
- var del = new Button
- {
- BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1,
- Text = Language.StringByID(MyInternationalizationString.del),
- TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
- };
- logicRowlayout.AddRightView(del);
- del.MouseUpEventHandler += (sender, e) =>
- {
- var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete),
- Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim));
- alert.ResultEventHandler += (sender1, e1) =>
- {
- if (e1)
- {
- Common.Logic.LogicList.Remove(logic);
- Automationview(refresview, no);
- Device.Logic.Send.DelLogic(logic.LogicId);
- }
- };
- alert.Show();
-
- };
- var line = new Button
- {
- Y = Application.GetRealHeight(215),
- Height = Application.GetRealHeight(5),
- Width = Application.GetRealWidth(1080 - 58),
- BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
- X = Application.GetRealWidth(58),
- };
- logicRowlayout.AddChidren(line);
- }
-
- }
- /// <summary>
- /// 鏄剧ず鑷姩鍖栬緭鍑哄姛鑳芥ā鍧楀浘鏍囩殑棰滆壊
- /// </summary>
- /// <param name="logic"></param>
- /// <param name="logicRowlayout"></param>
- /// <param name="intvalue"></param>
- private void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue)
- {
-
- var logictimeBtn = new Button
- {
- Height = Application.GetRealHeight(58),
- Width = logicRowlayout.Width - Application.GetRealWidth(58 + 12 + 350),
- Y = Application.GetRealHeight(30),
- X = Application.GetRealWidth(365),
- TextAlignment = TextAlignment.CenterRight,
- TextColor = ZigbeeColor.Current.LogicListWeekTextColor,
- };
- logicRowlayout.AddChidren(logictimeBtn);
-
- ///鏄剧ず鎵ц鍛ㄦ湡
- Device.Logic.Method.UpdateWeek(logictimeBtn, logic);
-
-
- List<string> indexlist = new List<string>();
- List<string> iconIndexlist = new List<string>();
- for (int i = 0; i < logic.Actions.Count; i++)
- {
- var linkType = logic.Actions[i]["LinkType"].ToString();
- var d = indexlist.Find((value) => { return value == linkType; });
- if (d == null)
- {
- indexlist.Add(linkType);
- }
- }
- if (indexlist.Contains("0"))
- {
- iconIndexlist.Add("0");
- }
- if (indexlist.Contains("2"))
- {
- iconIndexlist.Add("2");
- }
- if (indexlist.Contains("6"))
- {
- iconIndexlist.Add("6");
- }
- if (indexlist.Contains("7"))
- {
- iconIndexlist.Add("7");
- }
- for (int i = 0; i < iconIndexlist.Count; i++)
- {
- var iconindex = iconIndexlist[i];
- var typebjBtn = new FrameLayout
- {
- Width = Application.GetMinRealAverage(82),
- Height = Application.GetMinRealAverage(82),
- X = Application.GetRealWidth(58) + Application.GetRealWidth(12 + (12 + 82 + 45 + 12) * i),
- Y = Application.GetRealHeight(58 + 30 + 30),
- Radius = (uint)Application.GetRealHeight(41),
- BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
- };
- logicRowlayout.AddChidren(typebjBtn);
-
- var typeIconBtn = new Button
- {
- Width = Application.GetMinRealAverage(58),
- Height = Application.GetMinRealAverage(58),
- Gravity = Gravity.Center,
-
- };
- typebjBtn.AddChidren(typeIconBtn);
-
- var connectIconBtn = new Button
- {
- Y = typebjBtn.Y + Application.GetRealHeight(35),
- X = Application.GetRealWidth(58) + Application.GetRealWidth((12 + 82 + 12) + (12 + 45 + 82 + 12) * i),
- Width = Application.GetRealWidth(48),
- Height = Application.GetRealHeight(15),
- UnSelectedImagePath = "ZigeeLogic/connect.png",
- };
- logicRowlayout.AddChidren(connectIconBtn);
- if (iconIndexlist.Count - 1 == i)
- {
- connectIconBtn.Visible = false;
- }
- switch (iconindex)
- {
- case "0":
- {
- if (intvalue == 1)
- {
- typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png";
- typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color;
- }
- else
- {
- typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png";
- typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
- }
- }
- break;
- case "2":
- {
-
- if (intvalue == 1)
- {
- typeIconBtn.UnSelectedImagePath = "ZigeeLogic/scene1.png";
- typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicScene1Color;
- }
- else
- {
- typeIconBtn.UnSelectedImagePath = "ZigeeLogic/noscene.png";
- typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
- }
-
- }
- break;
- case "6":
- {
- if (intvalue == 1)
- {
- typeIconBtn.UnSelectedImagePath = "ZigeeLogic/security1.png";
- typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicSecurity1Color;
-
- }
- else
- {
- typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nosecurity.png";
- typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
- }
-
- }
- break;
- case "7":
- {
- if (intvalue == 1)
- {
- typeIconBtn.UnSelectedImagePath = "ZigeeLogic/delay1.png";
- typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicDelay1Color;
- }
- else
- {
- typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nodelay.png";
- typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
- }
-
- }
- break;
-
- }
- }
- }
-
- #endregion
- }
-}
+锘縰sing System;
+using System.Collections.Generic;
+using Shared.Common;
+using Shared.Phone.UserView;
+using Shared.R;
+using Shared.Phone.Device.CommonForm;
+using Shared.Phone.UserCenter;
+using ZigBee.Device;
+
+namespace Shared.Phone.Category
+{
+ /// <summary>
+ /// 鍒嗙被鐨勪富鐣岄潰
+ /// </summary>
+ public class CategoryMainForm : EditorCommonForm
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
+
+ /// <summary>
+ /// The instance.
+ /// </summary>
+ public static CategoryMainForm instance;
+ /// <summary>
+ /// 鍦烘櫙鍔熻兘涓儴鑳屾櫙bodyView(楂樺害涓鸿澶囪彍鍗曠殑閭d釜鐧借壊鑳屾櫙鐨勪笂閮ㄥ埌灞忓箷搴曢儴)
+ /// </summary>
+ public FrameLayout functionSceneBodyView;
+ /// <summary>
+ /// 涓儴鑳屾櫙bodyView(楂樺害涓哄満鏅姛鑳藉垏鎹㈡帶浠剁殑搴曢儴鍒板睆骞曞簳閮�)
+ /// </summary>
+ public FrameLayout functionSceneAutoBodyView;
+ /// <summary>
+ /// 鍙充笂瑙掓坊鍔犳寜閽�
+ /// </summary>
+ private IconViewControl btnTopRightAdd = null;
+ /// <summary>
+ /// 妤煎眰鎺т欢
+ /// </summary>
+ private NormalViewControl btnFloorName = null;
+ /// <summary>
+ /// 妤煎眰鍥炬爣鎺т欢
+ /// </summary>
+ private IconViewControl btnFloorIcon = null;
+ /// <summary>
+ /// 璁惧琛屾帶浠�
+ /// </summary>
+ private Dictionary<string, Controls.DeviceRowCommon> dicDeviceRowControl = new Dictionary<string, Controls.DeviceRowCommon>();
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖朹____________________________
+
+ /// <summary>
+ /// 鏋勯�犳柟娉�
+ /// </summary>
+ public CategoryMainForm()
+ {
+ BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
+ instance = this;
+ }
+
+ /// <summary>
+ /// 鏄剧ず鐣岄潰--榛樿鍦烘櫙鐣岄潰
+ /// </summary>
+ public void ShowForm()
+ {
+ //鍏堟竻闄ゅ惂
+ this.RemoveAll();
+ //鍒濆鍖栧ご閮ㄦ帶浠�
+ this.InitTopControl();
+ //鍒濆鍖栦腑闂存帶浠�
+ this.InitMidControls();
+ //娣诲姞璁惧鐘舵�佷笂鎶ヤ簨浠�
+ this.AddNormalDeviceReportEvent();
+ //娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠�
+ this.AddSensorDeviceReportEvent();
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栧ご閮ㄦ帶浠�
+ /// </summary>
+ private void InitTopControl()
+ {
+ //澶撮儴FrameLayout
+ this.topFrameLayout = new FrameLayout();
+ topFrameLayout.Y = Application.GetRealHeight(104);
+ topFrameLayout.Height = Application.GetRealHeight(127);
+ topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
+ this.AddChidren(topFrameLayout);
+ //鏍囬鍒嗙被
+ var btnTitle = new NormalViewControl(300, 95, true);
+ btnTitle.X = ControlCommonResourse.XXLeft;
+ btnTitle.Gravity = Gravity.CenterVertical;
+ btnTitle.TextID = R.MyInternationalizationString.Category;
+ btnTitle.TextSize = 24;
+ btnTitle.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
+ btnTitle.IsBold = true;
+ topFrameLayout.AddChidren(btnTitle);
+
+ //鍙充笂瑙掓坊鍔犳寜閽�
+ this.btnTopRightAdd = new IconViewControl(104);
+ btnTopRightAdd.X = Application.GetRealWidth(953);
+ btnTopRightAdd.Gravity = Gravity.CenterVertical;
+ btnTopRightAdd.UnSelectedImagePath = "Item/Add_Category.png";
+ topFrameLayout.AddChidren(btnTopRightAdd);
+ btnTopRightAdd.ButtonClickEvent += (sender, e) =>
+ {
+ if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
+ {
+ //娣诲姞鍦烘櫙
+ Add_Scene();
+ }
+ else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 2)
+ {
+ //娣诲姞鑷姩鍖�
+ Add_Automation();
+ }
+ };
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栦腑闂存帶浠�
+ /// </summary>
+ private void InitMidControls()
+ {
+ //搴旇鏄痓ody鍚�
+ this.bodyFrameLayout = new FrameLayout();
+ bodyFrameLayout.Y = topFrameLayout.Bottom;
+ bodyFrameLayout.Height = Application.GetRealHeight(1549);
+ bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
+ this.AddChidren(bodyFrameLayout);
+
+ //鍦烘櫙,鍔熻兘,鑷姩鍖栫殑鍒囨崲鎺т欢鐨勫鍣�
+ var frameSwitchBack = new FrameLayout();
+ frameSwitchBack.Height = Application.GetRealHeight(127);
+ bodyFrameLayout.AddChidren(frameSwitchBack);
+
+ //鎷ユ湁妤煎眰鏃�
+ this.btnFloorName = null;
+ this.btnFloorIcon = null;
+ if (Config.Instance.Home.FloorDics.Count > 0)
+ {
+ //妤煎眰鍚�
+ this.btnFloorName = new NormalViewControl(200, 69, true);
+ btnFloorName.X = frameSwitchBack.Width - Application.GetRealWidth(200 + 120);
+ btnFloorName.Y = Application.GetRealHeight(17);
+ btnFloorName.TextAlignment = TextAlignment.CenterRight;
+ btnFloorName.IsBold = true;
+ btnFloorName.Text = HdlResidenceLogic.Current.GetFloorNameById(Config.Instance.Home.CurrentFloorId);
+ frameSwitchBack.AddChidren(btnFloorName);
+ btnFloorName.ButtonClickEvent += (sender, e) =>
+ {
+ var floors = new Device.Category.SelectFloor();
+ AddChidren(floors);
+ floors.Init(580, 330, Direction.Right);
+ floors.changeFloor = true;
+ floors.FloorAction += (floorId) =>
+ {
+ btnFloorName.Text = Config.Instance.Home.GetFloorNameById(floorId);
+ HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom();
+ //鍒锋柊bodyView
+ this.RefreshBodyView();
+ };
+ };
+ //妤煎眰鍥炬爣
+ this.btnFloorIcon = new IconViewControl(69);
+ btnFloorIcon.X = Application.GetRealWidth(950);
+ btnFloorIcon.Y = btnFloorName.Y;
+ btnFloorIcon.UnSelectedImagePath = "Item/Drop_Down.png";
+ frameSwitchBack.AddChidren(btnFloorIcon);
+ btnFloorIcon.ButtonClickEvent += (sender, e) =>
+ {
+ btnFloorName.ButtonClickEvent?.Invoke(sender, e);
+ };
+ }
+
+ //鐩墠涓嶇煡閬撻儹闆煄鐨勮繖涓叿浣撴斁鍦ㄥ摢涓殑浣嶇疆
+ this.functionSceneAutoBodyView = new FrameLayout();
+ functionSceneAutoBodyView.Y = frameSwitchBack.Bottom;
+ functionSceneAutoBodyView.Height = Application.GetRealHeight(1423);
+ bodyFrameLayout.AddChidren(functionSceneAutoBodyView);
+
+ //鍦烘櫙,鍔熻兘,鑷姩鍖栫殑鍒囨崲鎺т欢
+ var switchContr = new SceneFunctionSwitchControl();
+ switchContr.Width = Application.GetRealWidth(650);
+ switchContr.Gravity = Gravity.CenterVertical;
+ frameSwitchBack.AddChidren(switchContr);
+ var listTitle = new List<string>();
+ listTitle.Add(Language.StringByID(R.MyInternationalizationString.uScence));
+ listTitle.Add(Language.StringByID(R.MyInternationalizationString.uFunction));
+ if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
+ {
+ //鎴愬憳娌℃湁鑷姩鍖�
+ listTitle.Add(Language.StringByID(R.MyInternationalizationString.Automation));
+ }
+ //璁剧疆鍒濆鍊�
+ switchContr.SetDefultIndex(UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex);
+ //閫夋嫨浜嬩欢
+ switchContr.SelectTabEvent += (selectIndex) =>
+ {
+ UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex = selectIndex;
+ //鍒锋柊bodyView
+ this.RefreshBodyView();
+ };
+ //寮�濮嬪垵濮嬪寲
+ switchContr.InitControl(listTitle);
+ }
+
+ /// <summary>
+ /// 鍒锋柊bodyView
+ /// </summary>
+ public void RefreshBodyView()
+ {
+ this.functionSceneAutoBodyView.RemoveAll();
+
+ HdlThreadLogic.Current.RunMainInThread(() =>
+ {
+ bool floorVisible = true;
+ //鍦烘櫙
+ if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
+ {
+ //鍒濆鍖栨埧闂磋彍鍗�
+ this.InitRoomMenuControl();
+ //鏄剧ず鍙充笂瑙掔殑鍔犲彿
+ this.btnTopRightAdd.Visible = true;
+ }
+ //鍔熻兘
+ else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 1)
+ {
+ //鍒濆鍖栨埧闂磋彍鍗�
+ this.InitRoomMenuControl();
+ //闅愯棌鍙充笂瑙掔殑鍔犲彿
+ this.btnTopRightAdd.Visible = false;
+ }
+ //鑷姩鍖�
+ else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 2)
+ {
+ this.ShowAutotion();
+ //闅愯棌妤煎眰
+ floorVisible = false;
+ //鏄剧ず鍙充笂瑙掔殑鍔犲彿
+ this.btnTopRightAdd.Visible = true;
+ }
+
+ //淇敼妤煎眰鐨勬樉绀烘晥鏋�
+ if (this.btnFloorName != null)
+ {
+ this.btnFloorName.Visible = floorVisible;
+ this.btnFloorIcon.Visible = floorVisible;
+ }
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 鎴块棿鑿滃崟鎺т欢_______________________
+
+ /// <summary>
+ /// 鍒濆鍖栨埧闂磋彍鍗曟帶浠�
+ /// </summary>
+ private void InitRoomMenuControl()
+ {
+ //褰撳墠妤煎眰鐨勫叏閮ㄦ埧闂�
+ var lisrRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
+ //鎴块棿鑿滃崟鎺т欢
+ var roomSwitchContr = new RoomDeviceGroupMenuControl(lisrRoom);
+ roomSwitchContr.Y = Application.GetRealHeight(-55);
+ this.functionSceneAutoBodyView.AddChidren(roomSwitchContr);
+ //璁剧疆鍒濆鍊�
+ roomSwitchContr.SetDefultIndex(HdlRoomLogic.Current.CurrentRoom.Id);
+ //閫夋嫨浜嬩欢
+ roomSwitchContr.SelectRoomEvent += (selectRoom) =>
+ {
+ HdlRoomLogic.Current.CurrentRoom = selectRoom;
+ //鍦烘櫙
+ if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
+ {
+ //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
+ this.functionSceneBodyView.RemoveAll();
+ HdlThreadLogic.Current.RunMainInThread(() =>
+ {
+ //鍒锋柊鍦烘櫙鍒嗘敮鎺т欢
+ this.RefreshSceneView(selectRoom);
+ });
+ }
+ //鍔熻兘
+ else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 1)
+ {
+ //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
+ this.functionSceneBodyView.RemoveAll();
+ HdlThreadLogic.Current.RunMainInThread(() =>
+ {
+ //鍒锋柊璁惧鍒嗘敮鎺т欢
+ this.RefreshFunctionView(selectRoom);
+ });
+ }
+ };
+
+ //鍔熻兘鍜屽満鏅痓odyView
+ this.functionSceneBodyView = new FrameLayout();
+ functionSceneBodyView.Y = roomSwitchContr.Bottom;
+ functionSceneBodyView.Height = functionSceneAutoBodyView.Height - roomSwitchContr.Bottom;
+ functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
+
+ //鎵ц鍒濆鍖�
+ roomSwitchContr.InitControl();
+ }
+
+ #endregion
+
+ #region 鈻� 鍔熻兘鍒嗘敮___________________________
+
+ /// <summary>
+ /// 鍒锋柊鍔熻兘鍒嗘敮鎺т欢
+ /// </summary>
+ /// <param name="room"></param>
+ private void RefreshFunctionView(Common.Room room)
+ {
+ //鑾峰彇鍒嗙粍鍚庣殑璁惧
+ var dicGroupDevice = this.GetAllGroupDevice(room);
+ if (dicGroupDevice.Count == 0)
+ {
+ this.ShowNoFunctionTip();
+ return;
+ }
+
+ //璁惧鑿滃崟鐨勭櫧鑹茶儗鏅�
+ var functionBack1 = new FrameLayout();
+ functionBack1.X = ControlCommonResourse.XXLeft;
+ functionBack1.Height = Application.GetRealHeight(160);
+ functionBack1.Width = Application.GetRealWidth(1028);
+ functionBack1.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
+ functionSceneBodyView.AddChidren(functionBack1);
+ functionBack1.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft);
+ var functionBack2 = new FrameLayout();
+ functionBack2.X = ControlCommonResourse.XXLeft;
+ functionBack2.Y = functionBack1.Bottom - Application.GetRealHeight(50);
+ functionBack2.Height = Application.GetRealHeight(279 - 160 + 50);
+ functionBack2.Width = Application.GetRealWidth(1028);
+ functionBack2.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
+ functionSceneBodyView.AddChidren(functionBack2);
+ functionBack2.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
+
+ //璁惧鑿滃崟鐨勫乏鍙虫粦鍔ㄧ殑鎺т欢
+ var HorizontalView = new HorizontalScrolViewLayout();
+ HorizontalView.X = Application.GetRealWidth(CommonFormResouce.X_Left);
+ HorizontalView.Height = Application.GetRealHeight(279);
+ HorizontalView.Width = Application.GetRealWidth(1028);
+ functionSceneBodyView.AddChidren(HorizontalView);
+
+ //璁惧鐨勮儗鏅鍣�
+ var frameDeviceBack = new FrameLayout();
+ frameDeviceBack.X = ControlCommonResourse.XXLeft;
+ frameDeviceBack.Y = HorizontalView.Bottom + Application.GetRealHeight(35);
+ frameDeviceBack.BackgroundColor = UserCenterColor.Current.White;
+ frameDeviceBack.Width = bodyFrameLayout.Width;
+ frameDeviceBack.Height = functionSceneBodyView.Height - HorizontalView.Bottom - Application.GetRealHeight(35);
+ frameDeviceBack.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
+ functionSceneBodyView.AddChidren(frameDeviceBack);
+
+ //璁惧鍒楄〃鎺т欢
+ var listDeviceView = new VerticalListControl(35);
+ listDeviceView.Y = Application.GetRealHeight(11);
+ listDeviceView.Width = Application.GetRealWidth(1022);
+ listDeviceView.Height = frameDeviceBack.Height - Application.GetRealHeight(11);
+ listDeviceView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
+ frameDeviceBack.AddChidren(listDeviceView);
+
+ //涓婁竴娆¢�夋嫨鐨勮彍鍗�
+ MainPage.Controls.DeviceFunctionUnallocatedControl oldSelectContr = null;
+ DeviceRowInfo nowSelectDeviceInfo = null;
+ foreach (int Textid in dicGroupDevice.Keys)
+ {
+ var rowInfo = dicGroupDevice[Textid];
+
+ //璁惧绫诲瀷鐨勫鍣�
+ var devieFrame = new FrameLayout();
+ devieFrame.Width = Application.GetRealWidth(220);
+ HorizontalView.AddChidren(devieFrame);
+
+ //鑿滃崟鍥剧墖鎺т欢
+ var deviceObjContr = new MainPage.Controls.DeviceFunctionUnallocatedControl();
+ devieFrame.AddChidren(deviceObjContr);
+ deviceObjContr.InitControl(Language.StringByID(Textid), rowInfo.IconPath, rowInfo.IconPathSelected, rowInfo.listDeviceKeys);
+ deviceObjContr.ButtonClickEvent += (sender, e) =>
+ {
+ //閫夋嫨鐨勬槸鍚屼竴涓笢瑗跨殑璇�,涓嶅鐞�
+ if (nowSelectDeviceInfo.TextId != rowInfo.TextId)
+ {
+ //涓婁竴娆$殑鑿滃崟鍙栨秷,鏈鑿滃崟閫夋嫨
+ oldSelectContr.SetSelectStatu(false);
+ deviceObjContr.SetSelectStatu(true);
+ oldSelectContr = deviceObjContr;
+
+ nowSelectDeviceInfo = rowInfo;
+ HdlThreadLogic.Current.RunMainInThread(() =>
+ {
+ //鍒濆鍖栬澶囧垪琛ㄦ帶浠�
+ this.InitListDeviceControls(listDeviceView, rowInfo);
+ });
+ }
+ };
+
+ if (nowSelectDeviceInfo == null)
+ {
+ //璁剧疆鍒濆閫夋嫨
+ nowSelectDeviceInfo = rowInfo;
+ //璁板綍鍒濆閫夋嫨鐨勮彍鍗曟帶浠�
+ oldSelectContr = deviceObjContr;
+ deviceObjContr.SetSelectStatu(true);
+ }
+ }
+ if (nowSelectDeviceInfo != null)
+ {
+ //鍒濆鍖栭粯璁ょ殑璁惧鍒楄〃鎺т欢
+ this.InitListDeviceControls(listDeviceView, nowSelectDeviceInfo);
+ }
+ }
+
+ /// <summary>
+ /// 鎻愮ず娌℃湁鍔熻兘
+ /// </summary>
+ private void ShowNoFunctionTip()
+ {
+ var noFunction = new Button()
+ {
+ Y = Application.GetRealHeight(320),
+ Width = Application.GetMinRealAverage(757),
+ Height = Application.GetMinRealAverage(435),
+ UnSelectedImagePath = "Item/NoFunction.png",
+ Gravity = Gravity.CenterHorizontal
+ };
+ functionSceneBodyView.AddChidren(noFunction);
+
+ var noFunctionTip = new Button()
+ {
+ Y = noFunction.Bottom + Application.GetRealHeight(32),
+ Height = Application.GetRealHeight(200),
+ Width = Application.GetRealWidth(700),
+ Gravity = Gravity.CenterHorizontal,
+ Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}", "\r\n"),
+ TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+ TextAlignment = TextAlignment.Center,
+ IsMoreLines = true
+ };
+ functionSceneBodyView.AddChidren(noFunctionTip);
+ }
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖栬澶囧垪琛ㄦ帶浠禵________________
+
+ /// <summary>
+ /// 鍒濆鍖栬澶囧垪琛ㄦ帶浠�
+ /// </summary>
+ /// <param name="listView"></param>
+ /// <param name="rowInfo"></param>
+ private void InitListDeviceControls(VerticalListControl listView, DeviceRowInfo rowInfo)
+ {
+ //鍏堟竻绌�
+ listView.RemoveAll();
+
+ var listDevice = new List<CommonDevice>();
+ foreach (var mainkeys in rowInfo.listDeviceKeys)
+ {
+ var device = LocalDevice.Current.GetDevice(mainkeys);
+ if (device != null)
+ {
+ listDevice.Add(device);
+ }
+ }
+
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ var listContr = new List<Controls.DeviceRowCommon>();
+ foreach (var device in listDevice)
+ {
+ Controls.DeviceRowCommon cardContr = null;
+ //绐楀笜
+ if (device.Type == DeviceType.WindowCoveringDevice)
+ {
+ cardContr = new Controls.DeviceCurtainRowControl(listView.rowSpace / 2);
+ }
+ //缁х數鍣�
+ else if (device.Type == DeviceType.OnOffOutput)
+ {
+ cardContr = new Controls.DeviceRelayRowControl(listView.rowSpace / 2);
+ }
+ //绌烘皵寮�鍏�
+ else if (device.Type == DeviceType.AirSwitch)
+ {
+ cardContr = new Controls.DeviceAirSwitchRowControl(listView.rowSpace / 2);
+ }
+ //绌鸿皟
+ else if (device.Type == DeviceType.Thermostat)
+ {
+ cardContr = new Controls.DeviceAcRowControl(listView.rowSpace / 2);
+ }
+ //褰╃伅(璋冨厜鍣�)
+ else if (device.Type == DeviceType.DimmableLight)
+ {
+ cardContr = new Controls.DeviceColorLightRowControl(listView.rowSpace / 2);
+ }
+ //浼犳劅鍣�
+ else if (device.Type == DeviceType.IASZone)
+ {
+ cardContr = new Controls.DeviceSensorRowControl(listView.rowSpace / 2);
+ }
+ //娓╂箍搴�
+ else if (device.Type == DeviceType.TemperatureSensor)
+ {
+ cardContr = new Controls.DeviceTemperatureRowControl(listView.rowSpace / 2);
+ }
+ //闂ㄩ攣
+ else if (device.Type == DeviceType.DoorLock)
+ {
+ cardContr = new Controls.DeviceDoorLockRowControl(listView.rowSpace / 2);
+ }
+ //鏃犳硶璇嗗埆
+ else
+ {
+ cardContr = new Controls.DeviceRowCommon(listView.rowSpace / 2);
+ //娌℃湁鐘舵�佸姛鑳�
+ cardContr.hadStatuFunction = false;
+ }
+
+ //鍒濆鍖栧崱鐗�
+ listView.AddChidren(cardContr);
+ cardContr.InitControl(device);
+ //鎺т欢璁板綍鍒扮紦瀛樹腑
+ this.dicDeviceRowControl[LocalDevice.Current.GetDeviceMainKeys(device)] = cardContr;
+ //鍔犵紦瀛�,鐒跺悗鍙戝懡浠�
+ listContr.Add(cardContr);
+ }
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ for (int i = 0; i < listContr.Count; i++)
+ {
+ if (listView.Parent == null)
+ {
+ return;
+ }
+ System.Threading.Thread.Sleep(20);
+ //鍙戦�佽幏鍙栫姸鎬佺殑鍛戒护
+ listContr[i].SendStatuComand();
+ }
+
+ }, ShowErrorMode.NO);
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 鍦烘櫙鍒嗘敮___________________________
+
+ /// <summary>
+ /// 鍒锋柊鍦烘櫙鍒嗘敮鎺т欢
+ /// </summary>
+ /// <param name="room"></param>
+ private void RefreshSceneView(Room room)
+ {
+ var listScene = new List<SceneUI>();
+ foreach (var sceneId in room.ListSceneId)
+ {
+ var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId);
+ if (scene != null)
+ {
+ listScene.Add(scene);
+ }
+ }
+ if (listScene.Count == 0)
+ {
+ this.ShowNoSceneTip();
+ return;
+ }
+
+ var dicSceneContr = new Dictionary<int, SceneCategoryView>();
+ var listview = new VerticalListControl();
+ functionSceneBodyView.AddChidren(listview);
+ foreach (var scene in listScene)
+ {
+ //鍦烘櫙鍗$墖鎺т欢
+ var sceneView = new SceneCategoryView();
+ listview.AddChidren(sceneView);
+ sceneView.InitControl(scene, room);
+
+ dicSceneContr[scene.Id] = sceneView;
+ }
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ //鑾峰彇鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
+ this.GetAllDelayScene(dicSceneContr, listview);
+ }, ShowErrorMode.NO);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
+ /// </summary>
+ /// <param name="dicSceneContr"></param>
+ private async void GetAllDelayScene(Dictionary<int, SceneCategoryView> dicSceneContr, VerticalListControl listview)
+ {
+ //璇诲彇鍏ㄩ儴鐨勫欢鏃舵椂闂�
+ var result = await Scene.CatDelaySceneAsync();
+ if (result == null || result.catDelaySceneResponseData == null ||
+ result.catDelaySceneResponseData.DelayScenesList.Count == 0)
+ {
+ //鍑洪敊涓嶉笩瀹�
+ return;
+ }
+
+ string hourText = Language.StringByID(R.MyInternationalizationString.Hour);
+ string minuText = Language.StringByID(R.MyInternationalizationString.Minute);
+ string secondText = Language.StringByID(R.MyInternationalizationString.Second);
+
+ foreach (var data in result.catDelaySceneResponseData.DelayScenesList)
+ {
+ if (dicSceneContr.ContainsKey(data.ScenesId) == false)
+ {
+ //褰撳墠鐨勭晫闈㈡病鏈夋樉绀鸿繖涓満鏅�
+ continue;
+ }
+ var seceneContr = dicSceneContr[data.ScenesId];
+ //淇濆瓨缂撳瓨鏃堕棿
+ seceneContr.scene.RemainTime = data.RemainTime;
+ int remainTime = data.RemainTime;
+ if (remainTime <= 0)
+ {
+ continue;
+ }
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ //寮�鍚唴閮ㄥ欢鏃舵椂闂寸嚎绋�(鏃ㄥ湪鍏ㄩ儴鍦版柟鐨勫悓涓�鍦烘櫙鏃堕棿鍚屾)
+ HdlSceneLogic.Current.StartDelayTimeThread(seceneContr.scene);
+ while (remainTime > 0 && this.Parent != null)
+ {
+ System.Threading.Thread.Sleep(1000);
+ Application.RunOnMainThread(() =>
+ {
+ seceneContr.SetTimeText(this.GetTimeString(remainTime, hourText, minuText, secondText));
+ });
+ remainTime--;
+ }
+ Application.RunOnMainThread(() =>
+ {
+ if (listview.Parent != null)
+ {
+ seceneContr.SetTimeImage();
+ //寮�鍚疞oading鐗规晥
+ seceneContr.StartLoadingApreal();
+ }
+ });
+ });
+ }
+ }
+
+ /// <summary>
+ /// 鏄剧ず娌℃湁鍦烘櫙
+ /// </summary>
+ private void ShowNoSceneTip()
+ {
+ var noFunction = new Button()
+ {
+ Y = Application.GetRealHeight(320),
+ Width = Application.GetMinRealAverage(757),
+ Height = Application.GetMinRealAverage(435),
+ UnSelectedImagePath = "Item/NoFunction.png",
+ Gravity = Gravity.CenterHorizontal
+ };
+ functionSceneBodyView.AddChidren(noFunction);
+
+ var noScenceTip = new Button()
+ {
+ Y = noFunction.Bottom + Application.GetRealHeight(32),
+ Height = Application.GetRealHeight(200),
+ Width = Application.GetRealWidth(700),
+ Gravity = Gravity.CenterHorizontal,
+ Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}", "\r\n"),
+ TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+ TextAlignment = TextAlignment.Center,
+ IsMoreLines = true
+ };
+ functionSceneBodyView.AddChidren(noScenceTip);
+ }
+
+
+ #endregion
+
+ #region 鈻� 涓�鑸澶囩姸鎬佷笂鎶__________________
+
+ /// <summary>
+ /// 娣诲姞涓�鑸澶囩姸鎬佷笂鎶ヤ簨浠�
+ /// </summary>
+ private void AddNormalDeviceReportEvent()
+ {
+ //璁惧灞炴�т笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
+ HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceStatus", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //澶勭悊涓�鑸澶囩殑涓婃姤鏁版嵁
+ string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
+ if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
+ {
+ //鍒锋柊鍗$墖淇℃伅
+ var locadevice = LocalDevice.Current.GetDevice(mainKeys);
+ this.dicDeviceRowControl[mainKeys].RefreshControlInfo(locadevice);
+ }
+ }, ShowErrorMode.NO);
+ });
+
+ //璁惧鍦ㄧ嚎涓婃姤(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
+ HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceOnline", ReceiveComandDiv.A璁惧鍦ㄧ嚎涓婃姤, (report) =>
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
+ if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
+ {
+ //鍒锋柊鍗$墖鐘舵��
+ this.dicDeviceRowControl[mainKeys].SetRowOnlineStatu(report.IsOnline == 1);
+ return;
+ }
+
+ }, ShowErrorMode.NO);
+ });
+
+ //璁惧鎺у埗鍙嶉涓婃姤
+ HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceRespone", ReceiveComandDiv.A鑺傜偣鎺у埗鍙嶉, (report) =>
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
+ if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
+ {
+ //璁惧鍗$墖
+ var deviceCardContr = this.dicDeviceRowControl[mainKeys];
+ //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
+ deviceCardContr.SetHadGetResponeResultStatu();
+ }
+
+ }, ShowErrorMode.NO);
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 浼犳劅鍣ㄧ姸鎬佷笂鎶____________________
+
+ /// <summary>
+ /// 娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠�
+ /// </summary>
+ private void AddSensorDeviceReportEvent()
+ {
+ //浼犳劅鍣ㄤ笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
+ HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewSensor", ReceiveComandDiv.A浼犳劅鍣ㄤ笂鎶�, (report) =>
+ {
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //澶勭悊浼犳劅鍣ㄤ笂鎶ユ暟鎹�
+ string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
+ if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
+ {
+ //鏈湴璁惧瀵硅薄
+ var locadevice = LocalDevice.Current.GetDevice(mainKeys);
+ //鍒锋柊鍗$墖淇℃伅
+ this.dicDeviceRowControl[mainKeys].RefreshControlInfo(locadevice);
+ }
+
+ }, ShowErrorMode.NO);
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 鏁村悎璁惧___________________________
+
+ /// <summary>
+ /// 鑾峰彇鍒嗙粍鍚庣殑璁惧
+ /// </summary>
+ /// <returns></returns>
+ private Dictionary<int, DeviceRowInfo> GetAllGroupDevice(Common.Room room)
+ {
+ //鍏ㄩ儴鐨勮澶�
+ var listDevice = HdlRoomLogic.Current.GetRoomListDevice(room);
+ //鏍规嵁璁惧鎵�灞炵被鍨嬫帓搴�
+ listDevice = LocalDevice.Current.SortDeviceByBelongType(listDevice);
+ var dic = new Dictionary<int, DeviceRowInfo>();
+ foreach (var device in listDevice)
+ {
+ var typeInfo = LocalDevice.Current.GetDeviceBelongEnumInfo(device);
+ //鎸夋墍灞濱D鍒嗙粍
+ if (dic.ContainsKey(typeInfo.BeloneTextId) == false)
+ {
+ dic[typeInfo.BeloneTextId] = new DeviceRowInfo();
+ string path1 = string.Empty;
+ string path2 = string.Empty;
+ //鑾峰彇鍥剧墖
+ LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
+ dic[typeInfo.BeloneTextId].IconPath = path1;
+ dic[typeInfo.BeloneTextId].IconPathSelected = path2;
+ dic[typeInfo.BeloneTextId].TextId = typeInfo.BeloneTextId;
+ }
+ dic[typeInfo.BeloneTextId].listDeviceKeys.Add(LocalDevice.Current.GetDeviceMainKeys(device));
+ }
+ return dic;
+ }
+
+ #endregion
+
+ #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+ /// <summary>
+ /// 鐣岄潰鍏抽棴
+ /// </summary>
+ public override void CloseFormBefore()
+ {
+ //鎶婇潤鎬佸彉閲忕殑杩欎釜涓滆タ缃┖
+ instance = null;
+
+ base.CloseFormBefore();
+ }
+
+ #endregion
+
+ #region 鈻� 涓�鑸柟娉昣__________________________
+
+ /// <summary>
+ /// 鑾峰彇鏃堕棿鐨勭炕璇戞枃鏈�
+ /// </summary>
+ /// <param name="second"></param>
+ /// <param name="hourText">灏忔椂鐨勬枃鏈�</param>
+ /// <param name="minuText">鍒嗙殑鏂囨湰</param>
+ /// <param name="secondText">绉掔殑鏂囨湰</param>
+ /// <returns></returns>
+ private string GetTimeString(int second, string hourText, string minuText, string secondText)
+ {
+ string timeStr = string.Empty;
+ int hour = second / 3600;
+ int minu = second % 3600 / 60;
+ int sec = second % 60;
+ if (hour > 0)
+ {
+ timeStr += hour + hourText;
+ }
+ if (minu > 0)
+ {
+ timeStr += minu + minuText;
+ }
+ if (sec > 0)
+ {
+ timeStr += sec + secondText;
+ }
+ return timeStr;
+ }
+
+ /// <summary>
+ /// 娣诲姞鍦烘櫙(閮洩鍩庣殑浠g爜)
+ /// </summary>
+ private void Add_Scene()
+ {
+ var scene = new Device.Category.CategoryAddScene();
+ UserView.HomePage.Instance.AddChidren(scene);
+ UserView.HomePage.Instance.PageIndex += 1;
+ scene.Show();
+ scene.AddAction = () =>
+ {
+ //鍒锋柊bodyView
+ this.RefreshBodyView();
+ };
+ }
+
+ /// <summary>
+ /// 娣诲姞鑷姩鍖�(閮洩鍩庣殑浠g爜)
+ /// </summary>
+ private void Add_Automation()
+ {
+ //new涓�涓柊閫昏緫瀵硅薄锛�
+ Common.Logic.CurrentLogic = new Common.Logic();
+ Common.Logic.CurrentLogic.IsEnable = 1;//榛樿涓哄紑
+ Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1);
+ var addLogicPage = new Shared.Phone.Device.Logic.AddLogicPage();
+ UserView.HomePage.Instance.AddChidren(addLogicPage);
+ UserView.HomePage.Instance.PageIndex += 1;
+ addLogicPage.Show();
+ }
+
+ #endregion
+
+ #region 鈻� 缁撴瀯浣揰____________________________
+
+ /// <summary>
+ /// 璁惧琛屼俊鎭�
+ /// </summary>
+ private class DeviceRowInfo
+ {
+ /// <summary>
+ /// 鏂囨湰ID,鐩墠鐢ㄦ潵鍋氫富閿�
+ /// </summary>
+ public int TextId = 0;
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public string IconPath = string.Empty;
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public string IconPathSelected = string.Empty;
+ /// <summary>
+ /// 璁惧鍥炶矾涓婚敭
+ /// </summary>
+ public List<string> listDeviceKeys = new List<string>();
+ }
+
+ #endregion
+
+ #region 鈼� 鑷姩鍖朹_________________________
+
+ /// <summary>
+ /// 鑷姩鍖栧姛鑳戒唬鐮佸叆鍙�
+ /// </summary>
+ private void ShowAutotion()
+ {
+ // functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+ #region ---鎺ㄨ崘妯℃澘鐨勭粍浠�
+ //鎺ㄨ崘妯℃澘鑳屾櫙鎺т欢
+ var bjFrameLayout = new FrameLayout
+ {
+ Width = Application.GetRealWidth(1080 - 58),
+ Height = Application.GetRealHeight(170),
+ BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
+ X = Application.GetRealWidth(58),
+ //Radius = (uint)Application.GetRealHeight(50),
+ Y = Application.GetRealHeight(30),
+
+ };
+ functionSceneAutoBodyView.AddChidren(bjFrameLayout);
+ bjFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
+ //鍥炬爣鎺т欢
+ var sigBtn = new Button
+ {
+ Width = Application.GetMinRealAverage(84),
+ Height = Application.GetMinRealAverage(84),
+ UnSelectedImagePath = "ZigeeLogic/sign.png",
+ X = Application.GetRealWidth(58),
+ Gravity = Gravity.CenterVertical,
+ };
+ bjFrameLayout.AddChidren(sigBtn);
+ //鎺ㄨ崘妯℃澘鏂囨湰鎺т欢
+ var recommendtextBtn = new Button
+ {
+ Width = Application.GetMinRealAverage(300),
+ Height = Application.GetMinRealAverage(84),
+ X = sigBtn.Right + Application.GetRealWidth(35),
+ TextAlignment = TextAlignment.CenterLeft,
+ //Text = "鎺ㄨ崘妯℃澘",
+ TextID = MyInternationalizationString.logictemplate,
+ Gravity = Gravity.CenterVertical,
+ TextColor = ZigbeeColor.Current.LogicBtnSelectedColor,
+ TextSize = 15,
+ };
+ bjFrameLayout.AddChidren(recommendtextBtn);
+ //鎺ㄨ崘妯℃澘寮�鍏虫帶浠�
+ var recommendswitchBtn = new Button
+ {
+ Width = Application.GetRealWidth(104),
+ Height = Application.GetRealHeight(63),
+ UnSelectedImagePath = "ZigeeLogic/logicclose.png",
+ SelectedImagePath = "ZigeeLogic/logicopen.png",
+ X = bjFrameLayout.Width - Application.GetRealWidth(104 + 58),
+ Gravity = Gravity.CenterVertical,
+ };
+ bjFrameLayout.AddChidren(recommendswitchBtn);
+ #endregion
+ //榛樿鎺ㄨ崘妯℃澘宸﹀彸鍙粦鎺т欢
+ var scenehorizontalScrol = new HorizontalScrolViewLayout
+ {
+ Width = Application.GetRealWidth(1080 - 58),
+ X = Application.GetRealWidth(58),
+ Y = bjFrameLayout.Bottom + Application.GetRealHeight(30),
+ Height = Application.GetRealHeight(0),
+ };
+ functionSceneAutoBodyView.AddChidren(scenehorizontalScrol);
+ //鏄剧ず鑷姩鍖栧垪琛ㄤ笂涓嬪彲婊戞帶浠�
+ var logicScrolView = new VerticalRefreshLayout//VerticalScrolViewLayout
+ {
+ Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
+ //BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,/
+ X = Application.GetRealWidth(58),
+ Y = scenehorizontalScrol.Bottom,
+ };
+ functionSceneAutoBodyView.AddChidren(logicScrolView);
+ logicScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
+ bool no = false;
+ //鏄剧ず榛樿妯℃澘鐨勭晫闈簨浠�
+ recommendswitchBtn.MouseUpEventHandler += (sender, e) =>
+ {
+ int Yheight = 0;
+ recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected;
+ scenehorizontalScrol.RemoveAll();
+ if (recommendswitchBtn.IsSelected)
+ {
+ no = true;
+ scenehorizontalScrol.Height = Application.GetRealHeight(246);
+ Yheight = 20;
+ for (int i = 1; i < 4; i++)
+ {
+
+ var frameLayout = new FrameLayout
+ {
+ Width = Application.GetMinRealAverage(369 + 46),
+ Height = Application.GetMinRealAverage(246),
+ };
+ scenehorizontalScrol.AddChidren(frameLayout);
+ var logiciocnBtn = new Button
+ {
+ Width = Application.GetMinRealAverage(369),
+ Height = Application.GetMinRealAverage(246),
+ UnSelectedImagePath = "ZigeeLogic/" + i + ".png",
+ Tag = i,
+ };
+ frameLayout.AddChidren(logiciocnBtn);
+
+ var logicnameBtn = new Button
+ {
+ Width = Application.GetMinRealAverage(250),
+ Height = Application.GetMinRealAverage(80),
+ X = Application.GetRealWidth(23),
+ Y = Application.GetRealHeight(246 - 23 - 80),
+ TextAlignment = TextAlignment.CenterLeft,
+ TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
+ TextSize = 14,
+ };
+ frameLayout.AddChidren(logicnameBtn);
+
+ if (i == 1)
+ {
+ logicnameBtn.Text = Language.StringByID(MyInternationalizationString.onlight);
+ }
+ else if (i == 2)
+ {
+ logicnameBtn.Text = Language.StringByID(MyInternationalizationString.offlight);
+ }
+ else if (i == 3)
+ {
+ logicnameBtn.Text = Language.StringByID(MyInternationalizationString.automation1);
+ }
+
+
+ EventHandler<MouseEventArgs> iconclick = (sender1, e1) =>
+ {
+ Common.Logic.CurrentLogic = new Common.Logic();
+ Common.Logic.CurrentLogic.IsEnable = 1;//榛樿涓哄紑
+ if (logiciocnBtn.Tag.ToString() == "3")
+ {
+ Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
+ //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
+ var addLogicPage = new Device.Logic.AddLogicPage();
+ HomePage.Instance.AddChidren(addLogicPage);
+ HomePage.Instance.PageIndex += 1;
+ addLogicPage.Show();
+ }
+ else
+ {
+
+ Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
+ //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
+ Device.Logic.TemplatePage templatePage = new Device.Logic.TemplatePage();
+ Device.Logic.TemplatePage.s = logiciocnBtn.Tag.ToString();
+ HomePage.Instance.AddChidren(templatePage);
+ HomePage.Instance.PageIndex += 1;
+ templatePage.Show();
+ }
+ };
+ logiciocnBtn.MouseUpEventHandler += iconclick;
+ logicnameBtn.MouseUpEventHandler += iconclick;
+ }
+ }
+ else
+ {
+ no = false;
+ scenehorizontalScrol.Height = Application.GetRealHeight(0);
+ Yheight = 0;
+ }
+ logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight;
+ logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight;
+ Automationview(logicScrolView, no);
+ };
+ //涓嬫媺鍒锋柊鑷姩鍖栧垪琛ㄧ殑浜嬩欢
+ logicScrolView.BeginHeaderRefreshingAction += () =>
+ {
+ //閲嶆柊鍒锋柊logic鍒楄〃
+ Common.Logic.LogicList.Clear();
+ Read(logicScrolView, no);
+ //鍏抽棴鍒锋柊View锛�
+ logicScrolView.EndHeaderRefreshing();
+ };
+
+ Read(logicScrolView, no);
+
+ }
+ /// <summary>
+ /// 璇诲彇鑷姩鍖栧垪琛ㄦ暟鎹紱
+ /// </summary>
+ /// <param name="logicScrolView"></param>
+ private async void Read(VerticalRefreshLayout logicScrolView, bool no)
+ {
+ CommonPage.Loading.Start();
+ if (Common.Logic.LogicList.Count == 0)
+ {
+ var Idlist = await Device.Logic.Send.GetLogicId(0);
+ if (Idlist.Count != 0)
+ {
+ var listlogic = await Device.Logic.Send.ReadList(Idlist.Count, 0);
+ //foreach鍙兘闆嗗悎宸茶淇敼,鏋氫妇鎿嶄綔鍙兘涓嶄細鎵ц,鍙兘鍑虹幇宕╂簝(寤鸿for)銆�
+ for (int j = 0; j < listlogic.Count; j++)
+ {
+ var logic = listlogic[j];
+ if (logic.LogicType != 0)
+ {
+ continue;
+ }
+ Common.Logic.LogicList.Add(logic);
+ }
+ }
+ }
+ //鑷姩鍖�
+ Automationview(logicScrolView, no);
+ CommonPage.Loading.Hide();
+ }
+ /// <summary>
+ /// 鍔犺浇鑷姩鍖栧垪琛ㄧ晫闈�
+ /// </summary>
+ /// <param name="refresview">Refresview.</param>
+ private async void Automationview(VerticalRefreshLayout refresview, bool no)
+ {
+ refresview.RemoveAll();
+ if (Common.Logic.LogicList.Count == 0 && no == false)
+ {
+ //灏辨槸涓轰簡鏄剧ず寮曞娣诲姞鍥炬爣;
+ refresview.BackgroundColor = 0x00000000;
+ var noFrameLayout = new FrameLayout
+ {
+ Height = Application.GetRealHeight(434 + 200 + 32 + 160),
+ //BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
+ };
+ refresview.AddChidren(noFrameLayout);
+
+
+ var noIconBtn = new Button
+ {
+ Y = Application.GetRealHeight(160),
+ Width = Application.GetMinRealAverage(756),
+ Height = Application.GetMinRealAverage(434),
+ UnSelectedImagePath = "Item/NoFunction.png",
+ X = Application.GetRealWidth(104),
+ };
+ noFrameLayout.AddChidren(noIconBtn);
+
+ var noTextBtn = new Button()
+ {
+ Y = noIconBtn.Bottom,
+ Height = Application.GetRealHeight(200) + Application.GetRealHeight(32),
+ Width = Application.GetRealWidth(700),
+ //Gravity = Gravity.CenterHorizontal,
+ Text = Language.StringByID(MyInternationalizationString.automationaddtext).Replace("{\\r\\n}", "\r\n"),
+ TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+ TextAlignment = TextAlignment.Center,
+ IsMoreLines = true,
+ X = Application.GetRealWidth(190 - 58),
+ };
+ noFrameLayout.AddChidren(noTextBtn);
+
+ }
+ else
+ {
+
+ if (Common.Logic.LogicList.Count == 0 && no == true)
+ {
+ ///鏀瑰彉婊戝姩view鐨勯鑹诧紱
+ refresview.BackgroundColor = 0x00000000;
+ }
+ else
+ {
+ refresview.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
+ }
+ }
+
+ foreach (var logic in Common.Logic.LogicList)
+ {
+ var fLayout = new FrameLayout
+ {
+ Height = Application.GetRealHeight(190 + 30),
+ Width = Application.GetRealWidth(1080 - 58),
+ BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
+ };
+ refresview.AddChidren(fLayout);
+
+ var logicRowlayout = new RowLayout
+ {
+ Height = Application.GetRealHeight(190 + 30),
+ Width = Application.GetRealWidth(1080 - 58),
+ LineColor = ZigbeeColor.Current.LogicBackgroundColor,
+ BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
+ SubViewWidth = Application.GetRealWidth(184),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
+
+ };
+ fLayout.AddChidren(logicRowlayout);
+
+ var logicnameBtn = new Button
+ {
+ Height = Application.GetRealHeight(58),
+ Width = Application.GetRealWidth(350),
+ Text = logic.LogicName,
+ X = Application.GetRealWidth(12 + 46),
+ Y = Application.GetRealHeight(30),
+ TextAlignment = TextAlignment.CenterLeft,
+ TextColor = ZigbeeColor.Current.LogicTextBlackColor,
+ TextSize = 14,
+ };
+ logicRowlayout.AddChidren(logicnameBtn);
+
+ var logicswitchBtn = new Button
+ {
+ Width = Application.GetRealWidth(104),
+ Height = Application.GetRealHeight(63),
+ UnSelectedImagePath = "ZigeeLogic/logicclose.png",
+ SelectedImagePath = "ZigeeLogic/logicopen.png",
+ X = logicRowlayout.Width - Application.GetRealWidth(104 + 58),
+ Y = Application.GetRealHeight(58 + 30 + 9 + 30),
+
+ };
+ logicRowlayout.AddChidren(logicswitchBtn);
+
+ logicswitchBtn.MouseUpEventHandler += (sender1, e1) =>
+ {
+ logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected;
+ if (logicswitchBtn.IsSelected)
+ {
+ //閫昏緫寮�
+ logic.IsEnable = 1;
+ StatusColor(logic, logicRowlayout, 1);
+ }
+ else
+ {
+ //閫昏緫鍏�
+ logic.IsEnable = 0;
+ StatusColor(logic, logicRowlayout, 0);
+ }
+ Device.Logic.Send.LogicControlSwitch(logic);
+ //Logic.Send.AddModifyLogic(logic);
+ };
+ if (logic.IsEnable == 1)
+ {
+ logicswitchBtn.IsSelected = true;
+ StatusColor(logic, logicRowlayout, 1);
+ }
+ else if (logic.IsEnable == 0)
+ {
+ logicswitchBtn.IsSelected = false;
+ StatusColor(logic, logicRowlayout, 0);
+ }
+ ///缂栬緫
+ var edit = new Button
+ {
+ BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1,
+ Text = Language.StringByID(MyInternationalizationString.edit),
+ TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
+ };
+ logicRowlayout.AddRightView(edit);
+ edit.MouseUpEventHandler += (sender, e) =>
+ {
+ Common.Logic.CurrentLogic = logic;
+ var logicCommunalPage = new Device.Logic.LogicCommunalPage();
+ HomePage.Instance.AddChidren(logicCommunalPage);
+ HomePage.Instance.PageIndex += 1;
+ logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview, no); });
+
+ };
+
+ ///鍒犻櫎
+ var del = new Button
+ {
+ BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1,
+ Text = Language.StringByID(MyInternationalizationString.del),
+ TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
+ };
+ logicRowlayout.AddRightView(del);
+ del.MouseUpEventHandler += (sender, e) =>
+ {
+ var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete),
+ Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim));
+ alert.ResultEventHandler += (sender1, e1) =>
+ {
+ if (e1)
+ {
+ Common.Logic.LogicList.Remove(logic);
+ Automationview(refresview, no);
+ Device.Logic.Send.DelLogic(logic.LogicId);
+ }
+ };
+ alert.Show();
+
+ };
+ var line = new Button
+ {
+ Y = fLayout.Height - 1,
+ Height = 1,
+ X = Application.GetRealWidth(58),
+ Width = Application.GetRealWidth(1080 - 58),
+ BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
+ };
+ fLayout.AddChidren(line);
+ }
+
+ }
+ /// <summary>
+ /// 鏄剧ず鑷姩鍖栬緭鍑哄姛鑳芥ā鍧楀浘鏍囩殑棰滆壊
+ /// </summary>
+ /// <param name="logic"></param>
+ /// <param name="logicRowlayout"></param>
+ /// <param name="intvalue"></param>
+ private void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue)
+ {
+
+ var logictimeBtn = new Button
+ {
+ Height = Application.GetRealHeight(58),
+ Width = logicRowlayout.Width - Application.GetRealWidth(58 + 12 + 350),
+ Y = Application.GetRealHeight(30),
+ X = Application.GetRealWidth(365),
+ TextAlignment = TextAlignment.CenterRight,
+ TextColor = ZigbeeColor.Current.LogicListWeekTextColor,
+ };
+ logicRowlayout.AddChidren(logictimeBtn);
+
+ ///鏄剧ず鎵ц鍛ㄦ湡
+ Device.Logic.Method.UpdateWeek(logictimeBtn, logic);
+
+
+ List<string> indexlist = new List<string>();
+ List<string> iconIndexlist = new List<string>();
+ for (int i = 0; i < logic.Actions.Count; i++)
+ {
+ var linkType = logic.Actions[i]["LinkType"].ToString();
+ var d = indexlist.Find((value) => { return value == linkType; });
+ if (d == null)
+ {
+ indexlist.Add(linkType);
+ }
+ }
+ if (indexlist.Contains("0"))
+ {
+ iconIndexlist.Add("0");
+ }
+ if (indexlist.Contains("2"))
+ {
+ iconIndexlist.Add("2");
+ }
+ if (indexlist.Contains("6"))
+ {
+ iconIndexlist.Add("6");
+ }
+ if (indexlist.Contains("7"))
+ {
+ iconIndexlist.Add("7");
+ }
+ for (int i = 0; i < iconIndexlist.Count; i++)
+ {
+ var iconindex = iconIndexlist[i];
+ var typebjBtn = new FrameLayout
+ {
+ Width = Application.GetMinRealAverage(82),
+ Height = Application.GetMinRealAverage(82),
+ X = Application.GetRealWidth(58) + Application.GetRealWidth(12 + (12 + 82 + 45 + 12) * i),
+ Y = Application.GetRealHeight(58 + 30 + 30),
+ Radius = (uint)Application.GetRealHeight(41),
+ BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
+ };
+ logicRowlayout.AddChidren(typebjBtn);
+
+ var typeIconBtn = new Button
+ {
+ Width = Application.GetMinRealAverage(58),
+ Height = Application.GetMinRealAverage(58),
+ Gravity = Gravity.Center,
+
+ };
+ typebjBtn.AddChidren(typeIconBtn);
+
+ var connectIconBtn = new Button
+ {
+ Y = typebjBtn.Y + Application.GetRealHeight(35),
+ X = Application.GetRealWidth(58) + Application.GetRealWidth((12 + 82 + 12) + (12 + 45 + 82 + 12) * i),
+ Width = Application.GetRealWidth(48),
+ Height = Application.GetRealHeight(15),
+ UnSelectedImagePath = "ZigeeLogic/connect.png",
+ };
+ logicRowlayout.AddChidren(connectIconBtn);
+ if (iconIndexlist.Count - 1 == i)
+ {
+ connectIconBtn.Visible = false;
+ }
+ switch (iconindex)
+ {
+ case "0":
+ {
+ if (intvalue == 1)
+ {
+ typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png";
+ typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color;
+ }
+ else
+ {
+ typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png";
+ typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+ }
+ }
+ break;
+ case "2":
+ {
+
+ if (intvalue == 1)
+ {
+ typeIconBtn.UnSelectedImagePath = "ZigeeLogic/scene1.png";
+ typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicScene1Color;
+ }
+ else
+ {
+ typeIconBtn.UnSelectedImagePath = "ZigeeLogic/noscene.png";
+ typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+ }
+
+ }
+ break;
+ case "6":
+ {
+ if (intvalue == 1)
+ {
+ typeIconBtn.UnSelectedImagePath = "ZigeeLogic/security1.png";
+ typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicSecurity1Color;
+
+ }
+ else
+ {
+ typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nosecurity.png";
+ typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+ }
+
+ }
+ break;
+ case "7":
+ {
+ if (intvalue == 1)
+ {
+ typeIconBtn.UnSelectedImagePath = "ZigeeLogic/delay1.png";
+ typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicDelay1Color;
+ }
+ else
+ {
+ typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nodelay.png";
+ typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+ }
+
+ }
+ break;
+
+ }
+ }
+ }
+
+ #endregion
+ }
+}
--
Gitblit v1.8.0