From bba578c2f0acf2eca747edcb69426771e0cadd32 Mon Sep 17 00:00:00 2001 From: WJC <wjc@hdlchina.com.cn> Date: 星期一, 23 三月 2020 18:20:50 +0800 Subject: [PATCH] 2020-03-23-3 --- ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs | 1472 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,472 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs new file mode 100644 index 0000000..f582b6d --- /dev/null +++ b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs @@ -0,0 +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 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