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