From 944b87b6bcccb095cd73f13f4410fb20faf48f74 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期三, 25 十二月 2019 11:21:06 +0800 Subject: [PATCH] 2019.12.25 --- ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs | 2081 +++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 1,518 insertions(+), 563 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs b/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs index 3a10ff5..4b8facc 100644 --- a/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs +++ b/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs @@ -15,62 +15,97 @@ /// bodyFrameLayout /// </summary> private FrameLayout bodyFrameLayout; - - List<string> floorIds = new List<string> { }; - List<string> floorNames = new List<string> { }; - List<List<string>> roomNames = new List<List<string>> { }; - List<List<Common.Room>> rooms = new List<List<Common.Room>> { }; - - - #endregion - - public static string ImagePath; - public static string SceneText; - - public Common.Room curRoom; - - public static List<SceneTargetDeviceUI> sceneTargetDevicesList = new List<SceneTargetDeviceUI> { }; + ///// <summary> + ///// floorIds + ///// </summary> + //List<string> floorIds = new List<string> { }; + ///// <summary> + ///// floorNames + ///// </summary> + //List<string> floorNames = new List<string> { }; + ///// <summary> + ///// roomNames + ///// </summary> + //List<List<string>> roomNames = new List<List<string>> { }; + ///// <summary> + ///// roomNames + ///// </summary> + //List<List<Common.Room>> rooms = new List<List<Common.Room>> { }; /// <summary> - /// 璁板綍缂栬緫鍓嶇殑璁惧鍒楄〃 + /// ImagePath /// </summary> - public static List<SceneTargetDeviceUI> beforeSceneTargetDevicesList = new List<SceneTargetDeviceUI> { }; - public static bool Modify = false; - public static SceneUI ModifySceneUI = null; + private string ImagePath="SceneIcon/1.png"; /// <summary> /// 鍥剧墖鏉ユ簮 0--鏈湴鍥惧簱 1--鎷嶇収 2--绯荤粺鍥惧簱 /// </summary> - public static int IconType = 0; - + public int IconPathType = 0; + /// <summary> + /// curRoom + /// </summary> + private Common.Room curRoom; + /// <summary> + /// sceneTargetDevicesList + /// </summary> + private List<SceneTargetDeviceUI> sceneTargetDevicesList = new List<SceneTargetDeviceUI> { }; /// <summary> /// 娣诲姞鐩爣鍚庣殑灞曠ず鍒楄〃 /// </summary> public VerticalScrolViewLayout TargetListScrolView; /// <summary> - /// 娣诲姞鐨勬墽琛岀洰鏍囩殑琛岄珮 - /// </summary> - private readonly int TargetListScrolView_RowHeight = 170; - /// <summary> /// The confirm button. /// </summary> private CommonForm.CompleteButton confirmBtn; - /// <summary> - /// 纭畾鎸夐挳鏈�寮�濮嬬殑鍧愭爣 - /// </summary> - private readonly int ConfirmButton_Y = CommonPage.AppRealHeight - 300; - /// <summary> - /// 纭畾鎸夐挳涓嬬Щ鍚庣殑鍧愭爣 - /// </summary> - private readonly int ConfirmButton_Change_Y = CommonPage.AppRealHeight - 130; - /// <summary> - /// 璁板綍鏇存敼鍓嶇殑鎴块棿 - /// </summary> - private Shared.Common.Room oldRoom; + /// <summary> + /// backGround + /// </summary> + private ImageView backGround; + + /// <summary> + /// 鏄惁淇敼 + /// </summary> + public bool isModify; + /// <summary> + /// 淇敼鐨勫満鏅� + /// </summary> + public SceneUI modifySceneUI; + /// <summary> + /// 璁板綍缂栬緫鍓嶇殑璁惧鍒楄〃 + /// </summary> + public List<SceneTargetDeviceUI> modifySceneTargetDevicesList; + /// <summary> + /// modifyRoom + /// </summary> + public Common.Room modifyRoom; + + /// <summary> + /// OldBackgroundImagePath + /// </summary> + private string OldBackgroundImagePath; + /// <summary> + /// OldIconPathType + /// </summary> + public int OldIconPathType; + + /// <summary> + /// selectedTimeAction + /// </summary> + public Action<SceneTargetDeviceUI> selectedAction; + + + + #endregion + + /// <summary> + /// CategoryAddScene + /// </summary> public CategoryAddScene() { BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; - Tag = "categoryAddScene"; } + /// <summary> + /// RemoveFromParent + /// </summary> public override void RemoveFromParent() { Category.instance?.RefreshBodyView(); @@ -82,21 +117,18 @@ public void RefreshTargetListView() { TargetListScrolView.RemoveAll(); - if (sceneTargetDevicesList.Count >= 2) - { - TargetListScrolView.Height = Application.GetRealHeight(TargetListScrolView_RowHeight * 3); - confirmBtn.Y = Application.GetRealHeight(ConfirmButton_Change_Y); - } - else - { - TargetListScrolView.Height = Application.GetRealHeight(TargetListScrolView_RowHeight * 2); - confirmBtn.Y = Application.GetRealHeight(ConfirmButton_Y); - } if (sceneTargetDevicesList.Count > 0) { foreach (var targetDevice in sceneTargetDevicesList) { + var targetRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(160), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + TargetListScrolView.AddChidren(targetRowLayout); string devImgPath = string.Empty; string devNameText = string.Empty; if (targetDevice.Type == 0) @@ -104,84 +136,55 @@ if (targetDevice.DeviceUI == null || targetDevice.DeviceUI.CommonDevice == null) continue; devImgPath = targetDevice.DeviceUI.IconPath; devNameText = targetDevice.DeviceUI.CommonDevice.DeviceEpointName; - } - else if (targetDevice.Type == 1) - { - devImgPath = "Item/Timer.png"; - devNameText = $"{targetDevice.DelayTime} {Language.StringByID(R.MyInternationalizationString.Second)}"; + + var targetRow = new SceneTargetFunctionRow(23); + targetRowLayout.AddChidren(targetRow); + targetRow.Init(); + targetRow.SetIcon(devImgPath); + targetRow.SetNameText(devNameText); + targetRow.SetZoneText(targetDevice.DeviceUI.GetZone()); + targetRow.SetStatuText(targetDevice.GetDeviceStatu()); } else if (targetDevice.Type == 2) { - devImgPath = "Item/Scene.png"; - devNameText = targetDevice.SceneName; + devNameText = CommonFormResouce.GetTimeString(targetDevice.DelayTime); + devNameText += Language.StringByID(R.MyInternationalizationString.Later); + var targetRow = new SceneTargetTimeRow(23); + targetRowLayout.AddChidren(targetRow); + targetRow.Init(); + targetRow.SetTitle(devNameText); } - var targetRowLayout = new RowLayout() + else if (targetDevice.Type == 1) { - LineColor = ZigbeeColor.Current.GXCLineColor, - Height = Application.GetRealHeight(170) - }; - TargetListScrolView.AddChidren(targetRowLayout); + devImgPath = "Scene/SceneIcon.png"; + devNameText = targetDevice.SceneName; - var targetFL = new FrameLayout() - { + var targetRow = new SceneTargetFunctionRow(23); + targetRowLayout.AddChidren(targetRow); + targetRow.Init(); + targetRow.SetIcon(devImgPath); + targetRow.SetNameText(devNameText); + targetRow.SetZoneText(targetDevice.SceneUI.GetZone()); + } - }; - targetRowLayout.AddChidren(targetFL); - - var devIMG = new Button() + var editBtn = new Button() { - X = Application.GetRealWidth(CommonPage.XLeft), - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - UnSelectedImagePath = devImgPath, - Gravity = Gravity.CenterVertical + BackgroundColor = ZigbeeColor.Current.GXCEditBackGroundColor, + TextID = R.MyInternationalizationString.Edit, + TextColor = ZigbeeColor.Current.GXCTextWhiteColor }; - targetRowLayout.AddChidren(devIMG); - var devName = new Button() - { - X = devIMG.Right, - Width = Application.GetRealWidth(500), - Height = Application.GetRealHeight(100), - Gravity = Gravity.CenterVertical, - Text = devNameText, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextAlignment = TextAlignment.CenterLeft - }; - targetRowLayout.AddChidren(devName); - var devTimer = new Button() - { - X = targetRowLayout.Width - Application.GetRealWidth(150), - Width = Application.GetMinRealAverage(110), - Height = Application.GetMinRealAverage(110), - UnSelectedImagePath = "Item/Timer.png", - Gravity = Gravity.CenterVertical - }; - /////******鏆傛椂鍏堜笉鍔犲欢鏃讹紝瀹夊崜鎺т欢鏈夐棶棰�*******//// - //targetRowLayout.AddChidren(devTimer); - var devRight = new Button() + targetRowLayout.AddRightView(editBtn); + //缂栬緫璁惧 + editBtn.MouseUpEventHandler += detailMouseUpEventHandler; + var delBtn = new Button() { BackgroundColor = ZigbeeColor.Current.GXCRedColor, TextID = R.MyInternationalizationString.Delete, TextColor = ZigbeeColor.Current.GXCTextWhiteColor }; - targetRowLayout.AddRightView(devRight); - //寤舵椂 - devTimer.MouseUpEventHandler += (sender, e) => - { - /////******鏆傛椂鍏堜笉鍔犲欢鏃讹紝瀹夊崜鎺т欢鏈夐棶棰�*******//// - var tList = new List<string> { }; - for (int i = 1; i <= 60; i++) - { - tList.Add($"{i} {Language.StringByID(R.MyInternationalizationString.Second)}"); - } - //1-60绉� - //PickerView.Show(tList, (obj) => - //{ - //targetDevice.DelayTime = int.Parse(obj.Split(' ')[0]); - //}, Language.StringByID(R.MyInternationalizationString.Confrim)); - }; + targetRowLayout.AddRightView(delBtn); //鍒犻櫎璁惧 - devRight.MouseUpEventHandler += (sender, e) => + delBtn.MouseUpEventHandler += (sender, e) => { sceneTargetDevicesList.Remove(targetDevice); RefreshTargetListView(); @@ -190,111 +193,86 @@ //璁惧璇︾粏璁剧疆鐣岄潰 void detailMouseUpEventHandler(object sender, MouseEventArgs e) { - //璁惧 if (targetDevice.Type == 0) { if (targetDevice.DeviceUI == null || targetDevice.DeviceUI.CommonDevice == null) { return; } - if (targetDevice.DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput) - { - //寮�鍏崇伅 - var taskList = targetDevice.TaskList; - if (taskList.Count == 0) - { - return; - } - var detail = new CategorySceneSelectLightSetting(); - UserView.HomePage.Instance.AddChidren(detail); - UserView.HomePage.Instance.PageIndex += 1; - detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].Data1); - } - else if (targetDevice.DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch) - { - //绌烘皵寮�鍏� - var taskList = targetDevice.TaskList; - if (taskList.Count == 0) - { - return; - } - var detail = new CategorySceneSelectAirSwitchSetting(); - UserView.HomePage.Instance.AddChidren(detail); - UserView.HomePage.Instance.PageIndex += 1; - detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].Data1); - } - else if (targetDevice.DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice) - { - //鍗峰笜 - var taskList = targetDevice.TaskList; - if (taskList.Count == 0) - { - return; - } - var detail = new CategorySceneSelectCurtainSetting(); - UserView.HomePage.Instance.AddChidren(detail); - UserView.HomePage.Instance.PageIndex += 1; - UserView.HomePage.Instance.ScrollEnabled = false; - detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].Data1, taskList[0].Data2); - } - else if (targetDevice.DeviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight) - { - //璋冨厜鐏� - var taskList = targetDevice.TaskList; - if (taskList.Count == 0) - { - return; - } - var detail = new CategorySceneSelectedDimmableLightSetting(); - UserView.HomePage.Instance.AddChidren(detail); - UserView.HomePage.Instance.PageIndex += 1; - UserView.HomePage.Instance.ScrollEnabled = false; - if (taskList[0].TaskType == 1) - { - detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].Data1, taskList[0].Data2); - } - else if (taskList[0].TaskType == 3) - { - detail.Show(targetDevice.DeviceUI, targetDevice.SceneTargetDeviceUIID, taskList[0].TaskType, taskList[0].Data1); + ShowSelectAction(targetDevice.DeviceUI, targetDevice); + selectedAction = (selectedDevice) => + { + var targetDeviceUI = sceneTargetDevicesList.Find((obj) => obj.SceneTargetDeviceUIID == selectedDevice.SceneTargetDeviceUIID); + if (targetDeviceUI != null) + { + targetDeviceUI.DeviceUI = selectedDevice.DeviceUI; + targetDeviceUI.TaskList = selectedDevice.TaskList; } - - - } + RefreshTargetListView(); + }; } - //鏃堕棿闂撮殧 - else if (targetDevice.Type == 1) - { - var delayTimeView = new CategorySceneSelectedDelayTime(); - UserView.HomePage.Instance.AddChidren(delayTimeView); - UserView.HomePage.Instance.PageIndex += 1; - delayTimeView.Show(1, targetDevice.SceneTargetDeviceUIID); - } - //鍦烘櫙 else if (targetDevice.Type == 2) { - var sceneView = new CategorySceneSelectedScene(); + var delayTimeView = new SelectDelayTime(); + UserView.HomePage.Instance.AddChidren(delayTimeView); + UserView.HomePage.Instance.PageIndex += 1; + delayTimeView.sceneTargetDevice = targetDevice; + delayTimeView.totalSecond = targetDevice.DelayTime; + delayTimeView.Show(); + delayTimeView.selectedTimeAction = (second) => + { + var targetDeviceUI = sceneTargetDevicesList.Find((obj) => obj.SceneTargetDeviceUIID == second.SceneTargetDeviceUIID); + if (targetDeviceUI != null) + { + targetDeviceUI.DelayTime = second.DelayTime; + } + RefreshTargetListView(); + }; + } + else if (targetDevice.Type == 1) + { + var sceneView = new SelectScene(); UserView.HomePage.Instance.AddChidren(sceneView); UserView.HomePage.Instance.PageIndex += 1; - sceneView.Show(sceneTargetDevicesList, 1, targetDevice.SceneTargetDeviceUIID); + sceneView.sceneTargetDevice = targetDevice; + sceneView.sceneUI = targetDevice.SceneUI; + sceneView.currentSceneUI = modifySceneUI; + sceneView.Show(); + sceneView.selectedAction = (selectedScene) => + { + var targetDeviceUI = sceneTargetDevicesList.Find((obj) => obj.SceneTargetDeviceUIID == selectedScene.SceneTargetDeviceUIID); + if (targetDeviceUI != null) + { + targetDeviceUI.SceneName = selectedScene.SceneName; + targetDevice.SceneUI = selectedScene.SceneUI; + targetDevice.ElseScenesId = selectedScene.ElseScenesId; + } + RefreshTargetListView(); + }; } } - devIMG.MouseUpEventHandler += detailMouseUpEventHandler; - devName.MouseUpEventHandler += detailMouseUpEventHandler; - targetRowLayout.MouseUpEventHandler += detailMouseUpEventHandler; - targetFL.MouseUpEventHandler += detailMouseUpEventHandler; + } + + if (sceneTargetDevicesList.Count > 2) + { + var targetRowLayout = new RowLayout() + { + Height = Application.GetRealHeight(300), + LineColor = ZigbeeColor.Current.GXCBackgroundColor, + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + TargetListScrolView.AddChidren(targetRowLayout); } } } /// <summary> /// Show this instance. /// </summary> - public void Show(Common.Room room=null) + public void Show() { Init(); - - curRoom = room; AddTop(); @@ -304,16 +282,12 @@ #region Add____________________________________ + /// <summary> + /// Init + /// </summary> private void Init() { - - foreach (var floor in Config.Instance.Home.FloorDics) - { - floorIds.Add(floor.Key); - floorNames.Add(floor.Value); - roomNames.Add(Common.Room.CurrentRoom.GetRoomNamesByFloorId(floor.Key)); - rooms.Add(Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key)); - } + } /// <summary> @@ -324,12 +298,18 @@ var top = new TopFrameLayout(); AddChidren(top); top.InitTopview(); - top.SetTopTitle(R.MyInternationalizationString.AddScence); + if(isModify) + { + top.SetTopTitle(R.MyInternationalizationString.EditorScene); + } + else + { + top.SetTopTitle(R.MyInternationalizationString.AddScence); + } top.backButton.MouseUpEventHandler += (sender, e) => { RemoveFromParent(); }; - } /// <summary> @@ -352,16 +332,16 @@ }; bodyFrameLayout.AddChidren(imgFL); - var backGround = new Button() + backGround = new ImageView() { - Width = Application.GetRealWidth(930), - Height = Application.GetRealHeight(464), + Width = Application.GetMinRealAverage(930), + Height = Application.GetMinRealAverage(464), Gravity = Gravity.Center, - Radius = (uint)Application.GetRealHeight(CommonFormResouce.BigFormRadius), - //UnSelectedImagePath = ImagePath - UnSelectedImagePath = "SceneIcon/3.png" + Radius = (uint)Application.GetMinRealAverage(CommonFormResouce.BigFormRadius), + ImagePath = "SceneIcon/3.jpg" }; imgFL.AddChidren(backGround); + backGround.SetViewShadow(true); var infoFL = new FrameLayout { @@ -373,164 +353,136 @@ var infoEdit = new Button { - X=Application.GetRealWidth(CommonFormResouce.X_Left), + X = Application.GetRealWidth(CommonFormResouce.X_Left), Height = Application.GetRealHeight(130), - Width=Application.GetRealWidth(700), + Width = Application.GetRealWidth(700), TextID = R.MyInternationalizationString.EditInfo, TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor, - TextAlignment=TextAlignment.CenterLeft, - TextSize=14 + TextAlignment = TextAlignment.CenterLeft, + TextSize = 15, + IsBold=true }; infoFL.AddChidren(infoEdit); var nameRow = new DeviceInfoEditRow(130); nameRow.Init(); - nameRow.SetTipTitle(R.MyInternationalizationString.SceneName); + nameRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.SceneName)}:"); nameRow.SetPlaceHoldText(R.MyInternationalizationString.PleaseInputSceneName); infoFL.AddChidren(nameRow); var zoneRow = new DeviceInfoRow(257); zoneRow.Init(); - zoneRow.SetTipTitle(R.MyInternationalizationString.BelongZone); + zoneRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongZone)}:"); //zoneRow.SetTitle(curRoom.Name); infoFL.AddChidren(zoneRow); - + zoneRow.HideLine(true); var targetFL = new FrameLayout() { Y = infoFL.Bottom + Application.GetRealHeight(23), + Height = Application.GetRealHeight(730) + }; + bodyFrameLayout.AddChidren(targetFL); + + var targetBG = new FrameLayout + { Height = Application.GetRealHeight(334), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; - bodyFrameLayout.AddChidren(targetFL); + targetFL.AddChidren(targetBG); + + var addTargetFL = new FrameLayout + { + Y=Application.GetRealHeight(46), + Height = Application.GetRealHeight(127), + }; + targetFL.AddChidren(addTargetFL); var target = new Button() { X = Application.GetRealWidth(CommonFormResouce.X_Left), - Y = Application.GetRealHeight(46), Height = Application.GetRealHeight(127) - 1, Width = Application.GetRealWidth(600), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextID = R.MyInternationalizationString.AddScentTargetAction, + Gravity = Gravity.CenterVertical, + TextSize=15 }; - targetFL.AddChidren(target); + addTargetFL.AddChidren(target); - var targetAdd = new SelectedStatuButton() + var targetAdd = new Button { X = Application.GetRealWidth(950), Y = Application.GetRealHeight(46), Width = Application.GetMinRealAverage(72), Height = Application.GetMinRealAverage(72), + Gravity=Gravity.CenterVertical, UnSelectedImagePath = "Item/Add.png", - SelectedImagePath = "Item/AddSelected.png", }; - targetFL.AddChidren(targetAdd); + addTargetFL.AddChidren(targetAdd); var targetLine = new Button() { Y = target.Bottom, Height = 1, BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2 }; - targetFL.AddChidren(targetLine); + addTargetFL.AddChidren(targetLine); - //娣诲姞鐩爣鍚庣殑灞曠ず鍒楄〃 TargetListScrolView = new VerticalScrolViewLayout() { - Y = targetLine.Bottom, - Height = Application.GetRealHeight(173), - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + Y = Application.GetRealHeight(49+127), + Height = Application.GetRealHeight(730-127-49), }; targetFL.AddChidren(TargetListScrolView); confirmBtn = new CommonForm.CompleteButton(1656, 907, 127); AddChidren(confirmBtn); + if (isModify) + { + IconPathType = modifySceneUI.IconPathType; + OldIconPathType = modifySceneUI.IconPathType; + if (IconPathType != 0) + { + OldBackgroundImagePath = modifySceneUI.IconPath; + } + if (modifySceneUI.IconPathType == 0) + { + backGround.ImagePath = modifySceneUI.IconPath; + } + else + { + backGround.ImagePath = System.IO.Path.Combine(Config.Instance.FullPath, modifySceneUI.IconPath); + } + nameRow.SetTitle(modifySceneUI.Name); + if (Config.Instance.Home.FloorDics.Count == 0) + { + zoneRow.SetTitle($"{modifyRoom.Name}"); + } + else + { + zoneRow.SetTitle($"{Config.Instance.Home.GetFloorNameById(modifyRoom.FloorId)},{modifyRoom.Name}"); + } + curRoom = modifyRoom; + sceneTargetDevicesList.AddRange(modifySceneTargetDevicesList); + } + RefreshTargetListView(); - #region 鑳屾櫙鍥� 鍚嶇О 鍖哄煙 鎵ц鐩爣 - - - - if (!string.IsNullOrEmpty(SceneText)) - { - nameRow.NameText.Text = SceneText; - } - if (curRoom != null) - { - - } - if (Modify) - { - //title.TextID = R.MyInternationalizationString.ModifyScene; - oldRoom = curRoom; - if (ModifySceneUI != null && ModifySceneUI.IsSharedScene) - { - nameRow.NameText.Enable = false; - } - } - #endregion - #region event - //璁板綍杈撳叆鍦烘櫙鍚� - nameRow.NameText.TextChangeEventHandler += (sender, e) => - { - SceneText = nameRow.NameText.Text.Trim(); - }; - - //閫夋嫨鑳屾櫙鍥� + EventHandler<MouseEventArgs> backGroundIMGHander = (sender, e) => { - if (curRoom.IsSharedRoom) - { - RoomCommon.ShowTipRoomIsShared(); - return; - } - - var localPic = new CategorySceneSelectImgByLocal(); - Shared.Phone.UserView.HomePage.Instance.AddChidren(localPic); - Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; - localPic.Show(); - localPic.action = () => - { - backGround.UnSelectedImagePath = ImagePath; - IconType = 0; - }; - - - }; - backGround.MouseUpEventHandler += backGroundIMGHander; - //鍖哄煙 - EventHandler<MouseEventArgs> zoneHander = (sender, e) => - { - if (curRoom.IsSharedRoom) - { - RoomCommon.ShowTipRoomIsShared(); - return; - } - - PickerView.ShowSecondary(floorNames, roomNames, (index1,index2) => - { - curRoom = rooms[index1][index2]; - zoneRow.NameText.Text = $"{Config.Instance.Home.GetFloorNameById(floorIds[index1])} , {rooms[index1][index2].Name}"; - }, 0,0, Language.StringByID(R.MyInternationalizationString.BelongFloor), Language.StringByID(R.MyInternationalizationString.Confrim), Language.StringByID(R.MyInternationalizationString.Cancel)); - }; - zoneRow.NextBtn.MouseUpEventHandler += zoneHander; - zoneRow.TipBtn.MouseUpEventHandler += zoneHander; - zoneRow.NameText.MouseUpEventHandler += zoneHander; - zoneRow.MouseUpEventHandler += zoneHander; - - //鎵ц鐩爣-娣诲姞鎵ц璁惧 - EventHandler<MouseEventArgs> targetAddHander = (sender, e) => - { - if (curRoom.IsSharedRoom) + if (curRoom != null && curRoom.IsSharedRoom) { RoomCommon.ShowTipRoomIsShared(); return; } - int selectRow_Height = 130; + int selectRow_Height = 150; + int selectRow_Width = 1034; var selectFL = new FrameLayout() { BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor @@ -539,104 +491,342 @@ var itemFL = new FrameLayout() { - Y = Application.GetRealHeight(CommonPage.AppRealHeight - selectRow_Height * 4 - 20), - Height = Application.GetRealHeight(selectRow_Height * 4 + 20) + Y = Application.GetRealHeight(1276), + Height = Application.GetRealHeight(450), + Width = Application.GetRealWidth(selectRow_Width), + Gravity = Gravity.CenterHorizontal, + Radius = (uint)Application.GetRealHeight(35), + BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor }; selectFL.AddChidren(itemFL); + //itemFL.Animate = Animate.DownToUp; - var selectedFunctionBtn = new Device.CommonForm.SelectedStatuButton() + var selectLocalPicture = new Button() + { + Height = Application.GetRealHeight(selectRow_Height) - 1, + TextID = R.MyInternationalizationString.LocalPicture, + TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, + TextSize=17 + }; + itemFL.AddChidren(selectLocalPicture); + var selectLocalLine = new Button() + { + Y = selectLocalPicture.Bottom, + Height = 1, + BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2 + }; + itemFL.AddChidren(selectLocalLine); + + var selectPhotographBtn = new Button() + { + Y = selectLocalLine.Bottom, + Height = Application.GetRealHeight(selectRow_Height) - 1, + TextID = R.MyInternationalizationString.Photograph, + TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, + TextSize=17 + }; + itemFL.AddChidren(selectPhotographBtn); + var selectPhotographLine = new Button() + { + Y = selectPhotographBtn.Bottom, + Height = 1, + BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2, + }; + itemFL.AddChidren(selectPhotographLine); + + var selectAblumsBtn = new Button() + { + Y = selectPhotographLine.Bottom, + Height = Application.GetRealHeight(selectRow_Height) - 1, + TextID = R.MyInternationalizationString.MyAblums, + TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, + TextSize=17 + }; + itemFL.AddChidren(selectAblumsBtn); + + var cancelBtn = new Button() + { + Y = Application.GetRealHeight(1742), + Height = Application.GetRealHeight(selectRow_Height), + Width = Application.GetRealWidth(selectRow_Width), + Gravity = Gravity.CenterHorizontal, + TextID = R.MyInternationalizationString.Cancel, + TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, + BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, + Radius = (uint)Application.GetRealHeight(35), + TextSize=17 + }; + selectFL.AddChidren(cancelBtn); + + selectLocalPicture.MouseUpEventHandler += (send, ee) => + { + selectFL.RemoveFromParent(); + var localPic = new CategorySceneSelectImgByLocal(); + Shared.Phone.UserView.HomePage.Instance.AddChidren(localPic); + Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; + localPic.Show(); + localPic.action = (imgPath) => + { + IconPathType = 0; + backGround.ImageBytes = null; + backGround.ImagePath = imgPath; + }; + }; + selectPhotographBtn.MouseUpEventHandler += (send, ee) => + { + selectFL.RemoveFromParent(); + var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); + var fileName = $"SceneIcon_{tradeTime}"; + //閫氳繃鐩告満鎷嶇収瑁佸壀 + CropImage.TakePicture((imagePath) => + { + if (isModify) + { + if (IconPathType != 0) + { + Global.DeleteFilebyHomeId(backGround.ImagePath); + } + } + + IconPathType = 1; + backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath); + backGround.ImagePath = imagePath; + System.IO.File.Delete(imagePath); + + }, fileName, 2, 1); + }; + + selectAblumsBtn.MouseUpEventHandler += (send, ee) => + { + selectFL.RemoveFromParent(); + var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); + var fileName = $"SceneIcon_{tradeTime}"; + //浠庣浉鍐岄�夋嫨鍥剧墖瑁佸壀 + CropImage.SelectPicture((imagePath) => + { + if (isModify) + { + if (IconPathType != 0) + { + Global.DeleteFilebyHomeId(backGround.ImagePath); + } + } + + IconPathType = 2; + backGround.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath); + backGround.ImagePath = imagePath; + System.IO.File.Delete(imagePath); + + }, fileName, 2,1); + }; + + cancelBtn.MouseUpEventHandler += (send, ee) => + { + selectFL.RemoveFromParent(); + }; + selectFL.MouseUpEventHandler += (send, ee) => + { + selectFL.RemoveFromParent(); + }; + }; + backGround.MouseUpEventHandler += backGroundIMGHander; + + //鍖哄煙 + EventHandler<MouseEventArgs> zoneHander = (sender, e) => + { + List<string> floorIds = new List<string> { }; + List<string> floorNames = new List<string> { }; + List<List<string>> roomNames = new List<List<string>> { }; + List<List<Common.Room>> rooms = new List<List<Common.Room>> { }; + List<Common.Room> rs = new List<Common.Room> { }; + List<string> rNames = new List<string> { }; + if (Config.Instance.Home.FloorDics.Count > 0) + { + foreach (var floor in Config.Instance.Home.FloorDics) + { + if (Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key).Count > 0) + { + floorIds.Add(floor.Key); + floorNames.Add(floor.Value); + + roomNames.Add(Common.Room.CurrentRoom.GetRoomNamesByFloorId(floor.Key)); + rooms.Add(Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key)); + } + } + PickerView.ShowSecondary(floorNames, roomNames, (index1, index2) => + { + curRoom = rooms[index1][index2]; + zoneRow.SetTitle($"{Config.Instance.Home.GetFloorNameById(floorIds[index1])} , {rooms[index1][index2].Name}"); + }, 0, 0, Language.StringByID(R.MyInternationalizationString.BelongZone), + Language.StringByID(R.MyInternationalizationString.Confrim), + Language.StringByID(R.MyInternationalizationString.Cancel)); + } + else + { + for (int i = 0; i < Common.Room.Lists.Count; i++) + { + var r = Common.Room.Lists[i]; + if (r.IsLove) + { + continue; + } + rs.Add(r); + rNames.Add(r.Name); + } + PickerView.Show(rNames, (index1) => + { + curRoom = rs[index1]; + zoneRow.SetTitle(rs[index1].Name); + }, 0, Language.StringByID(R.MyInternationalizationString.BelongZone), + Language.StringByID(R.MyInternationalizationString.Confrim), + Language.StringByID(R.MyInternationalizationString.Cancel)); + } + }; + zoneRow.ClickBtn.MouseUpEventHandler += zoneHander; + + //鎵ц鐩爣-娣诲姞鎵ц璁惧 + EventHandler<MouseEventArgs> targetAddHander = (sender, e) => + { + + //if (curRoom == null) + //{ + // RoomCommon.ShowTipNoRoom(); + // return; + //} + if(curRoom != null) + { + if (curRoom.IsSharedRoom) + { + RoomCommon.ShowTipRoomIsShared(); + return; + } + } + + int selectRow_Height = 150; + int selectRow_Width = 1034; + var selectFL = new FrameLayout() + { + BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor + }; + AddChidren(selectFL); + + var itemFL = new FrameLayout() + { + Y = Application.GetRealHeight(1276), + Height = Application.GetRealHeight(450), + Width = Application.GetRealWidth(selectRow_Width), + Gravity=Gravity.CenterHorizontal, + Radius = (uint)Application.GetRealHeight(35), + BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor + }; + selectFL.AddChidren(itemFL); + //itemFL.Animate = Animate.DownToUp; + + var selectedFunctionBtn = new Button() { Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.Function, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - TextAlignment = TextAlignment.Center, - BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, - SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor + TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, + TextSize=17 }; itemFL.AddChidren(selectedFunctionBtn); var selectedFunctionLine = new Button() { Y = selectedFunctionBtn.Bottom, Height = 1, - BackgroundColor = ZigbeeColor.Current.GXCLineColor, + BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2 }; itemFL.AddChidren(selectedFunctionLine); - var selectedSceneBtn = new Device.CommonForm.SelectedStatuButton() + var selectedSceneBtn = new Button() { Y = selectedFunctionLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, TextID = R.MyInternationalizationString.Scence, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, - SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor + TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, + TextSize=17 }; itemFL.AddChidren(selectedSceneBtn); var selectedSceneLine = new Button() { Y = selectedSceneBtn.Bottom, Height = 1, - BackgroundColor = ZigbeeColor.Current.GXCLineColor, + BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2, }; itemFL.AddChidren(selectedSceneLine); - var selectedTimerBtn = new Device.CommonForm.SelectedStatuButton() + var selectedTimerBtn = new Button() { Y = selectedSceneLine.Bottom, Height = Application.GetRealHeight(selectRow_Height) - 1, - TextID = R.MyInternationalizationString.TimeSpan, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, - SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor + TextID = R.MyInternationalizationString.Delay, + TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, + TextSize=17 }; itemFL.AddChidren(selectedTimerBtn); - var cancelBtn = new Device.CommonForm.SelectedStatuButton() - { - Y = selectedTimerBtn.Bottom + Application.GetRealHeight(20), - Height = Application.GetRealHeight(selectRow_Height), - TextID = R.MyInternationalizationString.Cancel, - TextColor = ZigbeeColor.Current.GXCTextBlackColor, - BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, - SelectedBackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor - }; - itemFL.AddChidren(cancelBtn); - itemFL.Animate = Animate.DownToUp; + var cancelBtn = new Button() + { + Y = Application.GetRealHeight(1742), + Height = Application.GetRealHeight(selectRow_Height), + Width = Application.GetRealWidth(selectRow_Width), + Gravity=Gravity.CenterHorizontal, + TextID = R.MyInternationalizationString.Cancel, + TextColor = ZigbeeColor.Current.GXCTextSelectedColor4, + BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor, + Radius = (uint)Application.GetRealHeight(35), + TextSize=17 + }; + selectFL.AddChidren(cancelBtn); + //娣诲姞鍔熻兘 selectedFunctionBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); - var deviceTypeList = new CategorySceneSelectDevice(); - UserView.HomePage.Instance.AddChidren(deviceTypeList); + var deviceView = new SelectDevice(); + UserView.HomePage.Instance.AddChidren(deviceView); UserView.HomePage.Instance.PageIndex += 1; - deviceTypeList.Show(sceneTargetDevicesList); + deviceView.beforeSceneTargetDeviceUIs = sceneTargetDevicesList; + deviceView.Show(); + deviceView.selectedAction = (selectedDevice) => + { + sceneTargetDevicesList.Add(selectedDevice); + RefreshTargetListView(); + }; }; //娣诲姞鍦烘櫙 selectedSceneBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); - var sceneView = new CategorySceneSelectedScene(); + var sceneView = new SelectScene(); UserView.HomePage.Instance.AddChidren(sceneView); UserView.HomePage.Instance.PageIndex += 1; - if (Modify) + sceneView.beforeSceneTargetDeviceUIs = sceneTargetDevicesList; + sceneView.currentSceneUI = modifySceneUI; + sceneView.Show(); + sceneView.selectedAction = (selectedScene) => { - sceneView.Show(sceneTargetDevicesList, -1, "", false, ModifySceneUI.Id); - } - else - { - sceneView.Show(sceneTargetDevicesList); - } + sceneTargetDevicesList.Add(selectedScene); + RefreshTargetListView(); + }; + }; //娣诲姞鏃堕棿闂撮殧 selectedTimerBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); - var delayTimeView = new CategorySceneSelectedDelayTime(); + var delayTimeView = new SelectDelayTime(); UserView.HomePage.Instance.AddChidren(delayTimeView); UserView.HomePage.Instance.PageIndex += 1; delayTimeView.Show(); + delayTimeView.selectedTimeAction = (second) => + { + sceneTargetDevicesList.Add(second); + RefreshTargetListView(); + }; }; + cancelBtn.MouseUpEventHandler += (send, ee) => { selectFL.RemoveFromParent(); @@ -649,186 +839,22 @@ targetAdd.MouseUpEventHandler += targetAddHander; targetFL.MouseUpEventHandler += targetAddHander; target.MouseUpEventHandler += targetAddHander; + addTargetFL.MouseUpEventHandler += targetAddHander; //纭畾娣诲姞鐩爣 confirmBtn.MouseUpEventHandler += async (sender, e) => { + if (curRoom == null) + { + RoomCommon.ShowTipNoRoom(); + return; + } if (curRoom.IsSharedRoom) { RemoveFromParent(); return; } - if (Modify) - { - try - { - CommonPage.Loading.Start(); - //淇敼--鍏堝垽鏂満鏅悕鏄惁鏀瑰彉锛屽啀绉婚櫎璁惧锛屽啀娣诲姞璁惧 - ModifySceneUI.IconPath = ImagePath; - if (ModifySceneUI.Name != nameRow.NameText.Text.Trim()) - { - if (Shared.Common.Room.AllRoomSceneUIList.Find(s => s.Name == nameRow.NameText.Text.Trim()) != null) - { - Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); - return; - } - //淇敼鍚嶅瓧 - var r = await ZigBee.Device.Scene.RenameSceneAsync(ModifySceneUI.Id, nameRow.NameText.Text.Trim()); - var reName = r.sceneRenameResponseData.Result; - if (reName == 0) - { - //澶辫触 - return; - } - else if (reName == 1) - { - //鎴愬姛 - ModifySceneUI.Name = nameRow.NameText.Text.Trim(); - } - else if (reName == 2) - { - //娌℃湁璇ュ満鏅� - return; - } - } - //淇敼璁惧 - var memberDataList = new List<AddSceneMemberData>(); - int AddedDelayTime = 0; - for (int i = 0; i < sceneTargetDevicesList.Count; i++) - { - //鍚堝苟寤舵椂 - var sceneTarget = sceneTargetDevicesList[i]; - SceneTargetDeviceUI beforeSceneTarget = null; - if (i - 1 >= 0) - { - beforeSceneTarget = sceneTargetDevicesList[i - 1]; - } - if (sceneTarget.Type == 0) - { - if (beforeSceneTarget != null && beforeSceneTarget.Type == 1) - { - if (i - 1 >= 0) - { - for (int k = i - 1; k >= 0; k--) - { - if (sceneTargetDevicesList[k] == null || sceneTargetDevicesList[k].Type != 1) - { - break; - } - AddedDelayTime += sceneTargetDevicesList[k].DelayTime; - } - } - } - if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) - { - continue; - } - var memberData = new ZigBee.Device.Scene.AddSceneMemberData - { - DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, - Type = 0, - ScenesId = 0, - Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, - TaskList = sceneTarget.TaskList, - DelayTime = AddedDelayTime - }; - memberDataList.Add(memberData); - } - else if (sceneTarget.Type == 2) - { - if (beforeSceneTarget != null && beforeSceneTarget.Type == 1) - { - if (i - 1 >= 0) - { - for (int k = i - 1; k >= 0; k--) - { - if (sceneTargetDevicesList[k] == null || sceneTargetDevicesList[k].Type != 1) - { - break; - } - AddedDelayTime += sceneTargetDevicesList[k].DelayTime; - } - } - } - var memberData = new ZigBee.Device.Scene.AddSceneMemberData - { - Type = 1, - ScenesId = 0, - ElseScenesId = sceneTarget.ElseScenesId, - DelayTime = AddedDelayTime - }; - memberDataList.Add(memberData); - } - } - var sceneRemoveMemberData = new SceneRemoveMemberData { }; - var removeSceneDeviceListInfoList = new List<RemoveSceneDeviceListInfo> { }; - for (int i = 0; i < beforeSceneTargetDevicesList.Count; i++) - { - //鍚堝苟寤舵椂 - var sceneTarget = beforeSceneTargetDevicesList[i]; - if (sceneTarget.Type == 0) - { - if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) - { - continue; - } - var removeDevice = new RemoveSceneDeviceListInfo - { - Type = 0, - DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, - Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, - }; - removeSceneDeviceListInfoList.Add(removeDevice); - } - else if (sceneTarget.Type == 2) - { - var removeDevice = new ZigBee.Device.Scene.RemoveSceneDeviceListInfo - { - Type = 1, - ElseScenesId = sceneTarget.ElseScenesId - }; - removeSceneDeviceListInfoList.Add(removeDevice); - } - } - sceneRemoveMemberData.DeviceList = removeSceneDeviceListInfoList; - sceneRemoveMemberData.ScenesId = ModifySceneUI.Id; - var result = await curRoom.ModifyScene(ModifySceneUI, sceneRemoveMemberData, memberDataList); - if (result == 1) - { - if (oldRoom != curRoom) - { - oldRoom.SceneUIList.Remove(ModifySceneUI); - oldRoom.SceneUIFilePathList.Remove(ModifySceneUI.FileName); - curRoom.SceneUIList.Add(ModifySceneUI); - curRoom.SceneUIFilePathList.Add(ModifySceneUI.FileName); - oldRoom.Save(); - curRoom.Save(); - } - - RemoveFromParent(); - } - else if (result == 0) - { - //澶辫触 - Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); - } - else if (result == -1) - { - //宸插瓨鍦� - Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); - } - } - catch (Exception ex) - { - System.Console.WriteLine($"鍒嗙被娣诲姞鍦烘櫙鍑洪敊{ex.Message}"); - } - finally - { - CommonPage.Loading.Hide(); - } - } - //鏂板 - else + if(isModify) { if (string.IsNullOrEmpty(nameRow.NameText.Text)) { @@ -843,96 +869,264 @@ { try { - if (Shared.Common.Room.AllRoomSceneUIList.Find(s => s.Name == nameRow.NameText.Text.Trim()) != null) + var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); + var fileName = $"SceneIcon_{tradeTime}"; + if (modifySceneUI.Name != nameRow.NameText.Text.Trim()) { - Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); - return; + if (Common.Room.CurrentRoom.GetSameFloorScenes(curRoom.FloorId).Find(s => s.Name == nameRow.NameText.Text.Trim()) != null) + { + CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneHadExist)); + return; + } + var r = await ZigBee.Device.Scene.RenameSceneAsync(modifySceneUI.Id, nameRow.NameText.Text.Trim()); + var reName = r.sceneRenameResponseData.Result; + if (reName == 0) + { + return; + } + else if (reName == 1) + { + modifySceneUI.Name = nameRow.NameText.Text.Trim(); + + } + else if (reName == 2) + { + return; + } } + if (OldIconPathType != 0) + { + Shared.IO.FileUtils.DeleteFile(System.IO.Path.Combine(Config.Instance.FullPath, OldBackgroundImagePath)); + } + if (IconPathType == 1 || IconPathType == 2) + { + Shared.IO.FileUtils.WriteFileByBytes(System.IO.Path.Combine(Config.Instance.FullPath, fileName), backGround.ImageBytes); + modifySceneUI.IconPath = fileName; + } + else + { + modifySceneUI.IconPath = backGround.ImagePath; + } + modifySceneUI.IconPathType = IconPathType; + CommonPage.Loading.Start(); var memberDataList = new List<ZigBee.Device.Scene.AddSceneMemberData>(); - //绱姞寤舵椂 - int AddedDelayTime = 0; for (int i = 0; i < sceneTargetDevicesList.Count; i++) { var sceneTarget = sceneTargetDevicesList[i]; - SceneTargetDeviceUI beforeSceneTarget = null; - if (i - 1 >= 0) - { - beforeSceneTarget = sceneTargetDevicesList[i - 1]; - } + if (sceneTarget.Type == 0) { if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) { continue; } - - if (beforeSceneTarget != null && beforeSceneTarget.Type == 1) + var memberData = new AddSceneMemberData { - if (i - 1 >= 0) - { - for (int k = i - 1; k >= 0; k--) - { - if (sceneTargetDevicesList[k] == null || sceneTargetDevicesList[k].Type != 1) - { - break; - } - AddedDelayTime += sceneTargetDevicesList[k].DelayTime; - } - } - } - - var memberData = new ZigBee.Device.Scene.AddSceneMemberData - { - DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, Type = 0, ScenesId = 0, + DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, TaskList = sceneTarget.TaskList, - DelayTime = AddedDelayTime + DelayTime = 0, + MemberNumber = i+1 + }; + memberDataList.Add(memberData); + } + else if (sceneTarget.Type == 1) + { + var memberData = new AddSceneMemberData + { + Type = 1, + ScenesId = 0, + ElseScenesId = sceneTarget.ElseScenesId, + DelayTime = 0, + MemberNumber = i+1 }; memberDataList.Add(memberData); } else if (sceneTarget.Type == 2) { - if (beforeSceneTarget != null && beforeSceneTarget.Type == 1) + var memberData = new AddSceneMemberData { - if (i - 1 >= 0) - { - for (int k = i - 1; k >= 0; k--) - { - if (sceneTargetDevicesList[k] == null || sceneTargetDevicesList[k].Type != 1) - { - break; - } - AddedDelayTime += sceneTargetDevicesList[k].DelayTime; - } - } - } - var memberData = new ZigBee.Device.Scene.AddSceneMemberData - { - Type = 1, + Type = 2, ScenesId = 0, - ElseScenesId = sceneTarget.ElseScenesId, - DelayTime = AddedDelayTime + DelayTime = sceneTarget.DelayTime, + MemberNumber = i+1 }; memberDataList.Add(memberData); } } - var result = await curRoom.AddScene(nameRow.NameText.Text, backGround.UnSelectedImagePath, memberDataList); + var sceneRemoveMemberData = new SceneRemoveMemberData { }; + var removeSceneDeviceListInfoList = new List<RemoveSceneDeviceListInfo> { }; + for (int i = 0; i < modifySceneTargetDevicesList.Count; i++) + { + var sceneTarget = modifySceneTargetDevicesList[i]; + if (sceneTarget.Type == 0) + { + if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) + { + continue; + } + var removeDevice = new RemoveSceneDeviceListInfo + { + Type = 0, + DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, + Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, + MemberNumber = sceneTarget.DelayTimeSerialNumber + }; + removeSceneDeviceListInfoList.Add(removeDevice); + } + else if (sceneTarget.Type == 1) + { + var removeDevice = new ZigBee.Device.Scene.RemoveSceneDeviceListInfo + { + Type = 1, + ElseScenesId = sceneTarget.ElseScenesId, + MemberNumber = sceneTarget.DelayTimeSerialNumber + }; + removeSceneDeviceListInfoList.Add(removeDevice); + } + else + { + var removeDevice = new ZigBee.Device.Scene.RemoveSceneDeviceListInfo + { + Type = 2, + DelayTime=sceneTarget.DelayTime, + MemberNumber=sceneTarget.DelayTimeSerialNumber + }; + removeSceneDeviceListInfoList.Add(removeDevice); + } + } + sceneRemoveMemberData.DeviceList = removeSceneDeviceListInfoList; + sceneRemoveMemberData.ScenesId = modifySceneUI.Id; + var result = await curRoom.ModifyScene(modifySceneUI, sceneRemoveMemberData, memberDataList); + if (result == 1) + { + if (modifyRoom != curRoom) + { + modifyRoom.SceneUIList.Remove(modifySceneUI); + modifyRoom.SceneUIFilePathList.Remove(modifySceneUI.FileName); + curRoom.SceneUIList.Add(modifySceneUI); + curRoom.SceneUIFilePathList.Add(modifySceneUI.FileName); + modifyRoom.Save(); + curRoom.Save(); + } + RemoveFromParent(); + } + else if (result == 0) + { + Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); + } + else if (result == -1) + { + Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); + } + } + catch (Exception ex) + { + System.Console.WriteLine($"鍒嗙被娣诲姞鍦烘櫙鍑洪敊{ex.Message}"); + } + finally + { + CommonPage.Loading.Hide(); + } + } + } + else + { + //鏂板 + if (string.IsNullOrEmpty(nameRow.NameText.Text)) + { + var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.SceneNameCannotBeNull), Language.StringByID(R.MyInternationalizationString.Close)); + alert.Show(); + alert.ResultEventHandler += (sendAlert, eAlert) => + { + return; + }; + } + else + { + try + { + var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo); + var fileName = $"SceneIcon_{tradeTime}.png"; + string imgPath; + if (IconPathType == 1 || IconPathType == 2) + { + Shared.IO.FileUtils.WriteFileByBytes(System.IO.Path.Combine(Config.Instance.FullPath, fileName), backGround.ImageBytes); + imgPath = fileName; + } + else + { + imgPath = backGround.ImagePath; + } + if (Common.Room.CurrentRoom.GetSameFloorScenes(curRoom.FloorId).Find(s => s.Name == nameRow.NameText.Text.Trim()) != null) + { + Common.CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); + return; + } + CommonPage.Loading.Start(); + var memberDataList = new List<ZigBee.Device.Scene.AddSceneMemberData>(); + for (int i = 0; i < sceneTargetDevicesList.Count; i++) + { + var sceneTarget = sceneTargetDevicesList[i]; + + if (sceneTarget.Type == 0) + { + if (sceneTarget.DeviceUI == null || sceneTarget.DeviceUI.CommonDevice == null) + { + continue; + } + var memberData = new AddSceneMemberData + { + Type = 0, + ScenesId = 0, + DeviceAddr = sceneTarget.DeviceUI.CommonDevice.DeviceAddr, + Epoint = sceneTarget.DeviceUI.CommonDevice.DeviceEpoint, + TaskList = sceneTarget.TaskList, + DelayTime = 0, + MemberNumber = i+1 + }; + memberDataList.Add(memberData); + } + else if (sceneTarget.Type == 1) + { + var memberData = new AddSceneMemberData + { + Type = 1, + ScenesId = 0, + ElseScenesId = sceneTarget.ElseScenesId, + DelayTime = 0, + MemberNumber = i+1 + }; + memberDataList.Add(memberData); + } + else if (sceneTarget.Type == 2) + { + var memberData = new AddSceneMemberData + { + Type = 2, + ScenesId = 0, + DelayTime = sceneTarget.DelayTime, + MemberNumber = i+1 + }; + memberDataList.Add(memberData); + } + } + + var result = await curRoom.AddScene(nameRow.NameText.Text, imgPath, memberDataList); if (result == 1) { RemoveFromParent(); } else if (result == 0) { - //澶辫触 CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.AddSceneFail); } else if (result == -1) { - //宸插瓨鍦� CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneHadExist); } } @@ -947,11 +1141,772 @@ } } + }; #endregion - } #endregion + + #region 缂栬緫璁惧____________________________________ + + /// <summary> + /// ShowSelectAction + /// </summary> + /// <param name="device"></param> + private void ShowSelectAction(DeviceUI device, SceneTargetDeviceUI sceneTarget) + { + var dialog = new FrameLayout() + { + BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor + }; + AddChidren(dialog); + + dialog.MouseUpEventHandler += (sender, e) => + { + dialog.RemoveFromParent(); + }; + + if (device.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput) + { + SelectOnoffOutput(dialog, device, sceneTarget); + } + else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch) + { + SelectOnoffOutput(dialog, device, sceneTarget); + } + else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight) + { + SelectDimmableLight(dialog, device, sceneTarget); + } + else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice) + { + SelectWindowCoveringDevice(dialog, device, sceneTarget); + } + else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat) + { + SelectThermostat(dialog, device, sceneTarget); + } + } + + /// <summary> + /// 鐏厜 + /// </summary> + /// <param name="dialog"></param> + /// <param name="device"></param> + /// <param name="sceneTarget"></param> + private void SelectOnoffOutput(FrameLayout dialog, DeviceUI device, SceneTargetDeviceUI sceneTarget) + { + var selectFL = new FrameLayout + { + Y = Application.GetRealHeight(1391), + Height = Application.GetRealHeight(530), + }; + dialog.AddChidren(selectFL); + //selectFL.Animate = Animate.DownToUp; + + var titleBG = new FrameLayout + { + Height = Application.GetRealHeight(138 * 2), + Radius = (uint)Application.GetRealHeight(58), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + selectFL.AddChidren(titleBG); + + var titleFL = new FrameLayout + { + Height = Application.GetRealHeight(138), + }; + selectFL.AddChidren(titleFL); + + var line = new Button + { + Y = titleFL.Height - 1, + Height = 1, + BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2 + }; + titleFL.AddChidren(line); + + var cancleBtn = new Button + { + X = Application.GetRealWidth(80), + Width = Application.GetRealWidth(200), + TextColor = ZigbeeColor.Current.GXCTextGrayColor, + TextSize = 14, + TextAlignment = TextAlignment.CenterLeft, + TextID = R.MyInternationalizationString.Cancel + }; + titleFL.AddChidren(cancleBtn); + + var deviceName = new Button + { + Width = Application.GetRealWidth(400), + Gravity = Gravity.CenterHorizontal, + TextColor = ZigbeeColor.Current.GXCTextBlackColor, + TextSize = 16, + Text = device.CommonDevice.DeviceEpointName + }; + titleFL.AddChidren(deviceName); + + var comfrimBtn = new Button + { + X = Application.GetRealWidth(800), + Width = Application.GetRealWidth(200), + TextColor = ZigbeeColor.Current.GXCTextSelectedColor2, + TextSize = 14, + TextAlignment = TextAlignment.CenterRight, + TextID = R.MyInternationalizationString.Complete + }; + titleFL.AddChidren(comfrimBtn); + + var itemFL = new FrameLayout + { + Y = titleFL.Bottom, + Height = Application.GetRealHeight(392), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + selectFL.AddChidren(itemFL); + + var open = new SelectSceneStatuRow(0, 60); + itemFL.AddChidren(open); + open.Init(); + open.SetTitle(R.MyInternationalizationString.Open); + open.IsSelected = true; + + + var shut = new SelectSceneStatuRow(0, 60 + 127 + 30); + itemFL.AddChidren(shut); + shut.Init(); + shut.hideLine(true); + shut.SetTitle(R.MyInternationalizationString.Shut); + + open.ClickButton.MouseUpEventHandler += (sender, e) => + { + open.IsSelected = true; + shut.IsSelected = false; + }; + + shut.ClickButton.MouseUpEventHandler += (sender, e) => + { + open.IsSelected = false; + shut.IsSelected = true; + }; + + cancleBtn.MouseUpEventHandler = (sender, e) => + { + dialog.RemoveAll(); + dialog.RemoveFromParent(); + }; + + if (sceneTarget.TaskList.Count > 0) + { + if (sceneTarget.TaskList[0].Data1 == 1) + { + open.IsSelected = true; + shut.IsSelected = false; + } + else + { + open.IsSelected = false; + shut.IsSelected = true; + } + } + + comfrimBtn.MouseUpEventHandler = (sender, e) => + { + var taskList = new List<ZigBee.Device.Scene.TaskListInfo> { }; + int taskType = 1; + int data1 = 0; + int data2 = 0; + + if (open.IsSelected) + { + //寮� + data1 = 1; + data2 = 0; + } + else + { + //鍏� + data1 = 0; + data2 = 0; + } + var taskInfo = new ZigBee.Device.Scene.TaskListInfo + { + TaskType = taskType, + Data1 = data1, + Data2 = data2 + }; + taskList.Add(taskInfo); + + sceneTarget.TaskList = taskList; + sceneTarget.DeviceUI = device; + selectedAction?.Invoke(sceneTarget); + dialog.RemoveFromParent(); + }; + } + /// <summary> + /// 绐楀笜 + /// </summary> + /// <param name="dialog"></param> + /// <param name="device"></param> + /// <param name="sceneTarget"></param> + private void SelectWindowCoveringDevice(FrameLayout dialog, DeviceUI device, SceneTargetDeviceUI sceneTarget) + { + var selectFL = new FrameLayout + { + Y = Application.GetRealHeight(1169), + Height = Application.GetRealHeight(752), + }; + dialog.AddChidren(selectFL); + //selectFL.Animate = Animate.DownToUp; + + var titleBG = new FrameLayout + { + Height = Application.GetRealHeight(138 * 2), + Radius = (uint)Application.GetRealHeight(58), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + selectFL.AddChidren(titleBG); + + var titleFL = new FrameLayout + { + Height = Application.GetRealHeight(138), + }; + selectFL.AddChidren(titleFL); + + var line = new Button + { + Y = titleFL.Height - 1, + Height = 1, + BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2 + }; + titleFL.AddChidren(line); + + var cancleBtn = new Button + { + X = Application.GetRealWidth(80), + Width = Application.GetRealWidth(200), + TextColor = ZigbeeColor.Current.GXCTextGrayColor, + TextSize = 14, + TextAlignment = TextAlignment.CenterLeft, + TextID = R.MyInternationalizationString.Cancel + }; + titleFL.AddChidren(cancleBtn); + + var deviceName = new Button + { + Width = Application.GetRealWidth(400), + Gravity = Gravity.CenterHorizontal, + TextColor = ZigbeeColor.Current.GXCTextBlackColor, + TextSize = 16, + Text = device.CommonDevice.DeviceEpointName + }; + titleFL.AddChidren(deviceName); + + var comfrimBtn = new Button + { + X = Application.GetRealWidth(800), + Width = Application.GetRealWidth(200), + TextColor = ZigbeeColor.Current.GXCTextSelectedColor2, + TextSize = 14, + TextAlignment = TextAlignment.CenterRight, + TextID = R.MyInternationalizationString.Complete + }; + titleFL.AddChidren(comfrimBtn); + + var itemFL = new FrameLayout + { + Y = titleFL.Bottom, + Height = Application.GetRealHeight(613), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + selectFL.AddChidren(itemFL); + + var open = new SelectDeviceWithSeekBarRow(0, 60); + itemFL.AddChidren(open); + open.Init(); + open.SetTitle(R.MyInternationalizationString.Open); + open.IsSelected = true; + + var shut = new SelectSceneStatuRow(0, 60 + 348 + 30); + itemFL.AddChidren(shut); + shut.Init(); + shut.hideLine(true); + shut.SetTitle(R.MyInternationalizationString.Shut); + + open.ClickButton.MouseUpEventHandler += (sender, e) => + { + open.IsSelected = true; + shut.IsSelected = false; + }; + + shut.ClickButton.MouseUpEventHandler += (sender, e) => + { + open.IsSelected = false; + shut.IsSelected = true; + }; + + cancleBtn.MouseUpEventHandler = (sender, e) => + { + dialog.RemoveAll(); + dialog.RemoveFromParent(); + }; + + open.SeekBar.ProgressChanged += (sender, e) => + { + open.IsSelected = true; + shut.IsSelected = false; + open.SetSeekBarTitle(); + }; + + if (sceneTarget.TaskList.Count > 0) + { + if (sceneTarget.TaskList[0].Data1 == 1) + { + open.IsSelected = false; + shut.IsSelected = true; + } + else + { + open.IsSelected = true; + shut.IsSelected = false; + open.SetProgress(sceneTarget.TaskList[0].Data2); + } + } + + comfrimBtn.MouseUpEventHandler = (sender, e) => + { + var taskList = new List<ZigBee.Device.Scene.TaskListInfo> { }; + + int taskType = 6; + int data1 = 0; + int data2 = 0; + + if (shut.IsSelected) + { + //鍏� + data1 = 1; + data2 = 0; + } + else + { + //鐧惧垎姣� + data1 = 5; + data2 = open.SeekBar.Progress; + } + + var taskInfo = new ZigBee.Device.Scene.TaskListInfo + { + TaskType = taskType, + Data1 = data1, + Data2 = data2 + }; + taskList.Add(taskInfo); + + sceneTarget.TaskList = taskList; + sceneTarget.DeviceUI = device; + selectedAction?.Invoke(sceneTarget); + dialog.RemoveFromParent(); + }; + } + /// <summary> + /// 璋冨厜鐏� + /// </summary> + /// <param name="dialog"></param> + /// <param name="device"></param> + /// <param name="sceneTarget"></param> + private void SelectDimmableLight(FrameLayout dialog, DeviceUI device, SceneTargetDeviceUI sceneTarget) + { + var selectFL = new FrameLayout + { + Y = Application.GetRealHeight(1169), + Height = Application.GetRealHeight(752), + }; + dialog.AddChidren(selectFL); + //selectFL.Animate = Animate.DownToUp; + + var titleBG = new FrameLayout + { + Height = Application.GetRealHeight(138 * 2), + Radius = (uint)Application.GetRealHeight(58), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + selectFL.AddChidren(titleBG); + + var titleFL = new FrameLayout + { + Height = Application.GetRealHeight(138), + }; + selectFL.AddChidren(titleFL); + + var line = new Button + { + Y = titleFL.Height - 1, + Height = 1, + BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2 + }; + titleFL.AddChidren(line); + + var cancleBtn = new Button + { + X = Application.GetRealWidth(80), + Width = Application.GetRealWidth(200), + TextColor = ZigbeeColor.Current.GXCTextGrayColor, + TextSize = 14, + TextAlignment = TextAlignment.CenterLeft, + TextID = R.MyInternationalizationString.Cancel + }; + titleFL.AddChidren(cancleBtn); + + var deviceName = new Button + { + Width = Application.GetRealWidth(400), + Gravity = Gravity.CenterHorizontal, + TextColor = ZigbeeColor.Current.GXCTextBlackColor, + TextSize = 16, + TextAlignment = TextAlignment.CenterLeft, + Text = device.CommonDevice.DeviceEpointName + }; + titleFL.AddChidren(deviceName); + + var comfrimBtn = new Button + { + X = Application.GetRealWidth(800), + Width = Application.GetRealWidth(200), + TextColor = ZigbeeColor.Current.GXCTextSelectedColor2, + TextSize = 14, + TextAlignment = TextAlignment.CenterRight, + TextID = R.MyInternationalizationString.Complete + }; + titleFL.AddChidren(comfrimBtn); + + var itemFL = new FrameLayout + { + Y = titleFL.Bottom, + Height = Application.GetRealHeight(613), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + selectFL.AddChidren(itemFL); + + var open = new SelectDeviceWithSeekBarRow(0, 60); + itemFL.AddChidren(open); + open.Init(254); + open.SetTitle(R.MyInternationalizationString.Open); + open.IsSelected = true; + + var shut = new SelectSceneStatuRow(0, 60 + 348 + 30); + itemFL.AddChidren(shut); + shut.Init(); + shut.hideLine(true); + shut.SetTitle(R.MyInternationalizationString.Shut); + + open.ClickButton.MouseUpEventHandler += (sender, e) => + { + open.IsSelected = true; + shut.IsSelected = false; + }; + + shut.ClickButton.MouseUpEventHandler += (sender, e) => + { + open.IsSelected = false; + shut.IsSelected = true; + }; + + cancleBtn.MouseUpEventHandler = (sender, e) => + { + dialog.RemoveAll(); + dialog.RemoveFromParent(); + }; + + open.SeekBar.ProgressChanged += (sender, e) => + { + open.IsSelected = true; + shut.IsSelected = false; + open.SetSeekBarTitle(); + }; + + if (sceneTarget.TaskList.Count > 0) + { + if (sceneTarget.TaskList[0].Data1 == 0) + { + open.IsSelected = false; + shut.IsSelected = true; + } + else + { + open.IsSelected = true; + shut.IsSelected = false; + open.SetProgress(sceneTarget.TaskList[0].Data1); + } + } + + comfrimBtn.MouseUpEventHandler = (sender, e) => + { + var taskList = new List<ZigBee.Device.Scene.TaskListInfo> { }; + + int taskType = 3; + int data1 = 0; + int data2 = 0; + + if (shut.IsSelected) + { + //鍏� + data1 = 0; + data2 = 0; + } + else + { + //鐧惧垎姣� + data1 = open.SeekBar.Progress; + data2 = 0; + } + + var taskInfo = new ZigBee.Device.Scene.TaskListInfo + { + TaskType = taskType, + Data1 = data1, + Data2 = data2 + }; + taskList.Add(taskInfo); + + sceneTarget.TaskList = taskList; + sceneTarget.DeviceUI = device; + selectedAction?.Invoke(sceneTarget); + dialog.RemoveFromParent(); + }; + } + /// <summary> + /// 绌鸿皟 + /// </summary> + /// <param name="dialog"></param> + /// <param name="device"></param> + /// <param name="sceneTarget"></param> + private void SelectThermostat(FrameLayout dialog, DeviceUI device, SceneTargetDeviceUI sceneTarget) + { + /// 娓╁害 + int tempId=0; + /// 妯″紡 + int modelId=0; + /// 椋庨�� + int fanid=0; + + var selectFL = new FrameLayout + { + Y = Application.GetRealHeight(815), + Height = Application.GetRealHeight(1106), + }; + dialog.AddChidren(selectFL); + //selectFL.Animate = Animate.DownToUp; + + var titleBG = new FrameLayout + { + Height = Application.GetRealHeight(138 * 2), + Radius = (uint)Application.GetRealHeight(58), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + selectFL.AddChidren(titleBG); + + var titleFL = new FrameLayout + { + Height = Application.GetRealHeight(138), + }; + selectFL.AddChidren(titleFL); + + var line = new Button + { + Y = titleFL.Height - 1, + Height = 1, + BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2 + }; + titleFL.AddChidren(line); + + var cancleBtn = new Button + { + X = Application.GetRealWidth(80), + Width = Application.GetRealWidth(200), + TextColor = ZigbeeColor.Current.GXCTextGrayColor, + TextSize = 14, + TextAlignment = TextAlignment.CenterLeft, + TextID = R.MyInternationalizationString.Cancel + }; + titleFL.AddChidren(cancleBtn); + + var deviceName = new Button + { + Width = Application.GetRealWidth(400), + Gravity = Gravity.CenterHorizontal, + TextColor = ZigbeeColor.Current.GXCTextBlackColor, + TextSize = 16, + TextAlignment = TextAlignment.CenterLeft, + Text = device.CommonDevice.DeviceEpointName + }; + titleFL.AddChidren(deviceName); + + var comfrimBtn = new Button + { + X = Application.GetRealWidth(800), + Width = Application.GetRealWidth(200), + TextColor = ZigbeeColor.Current.GXCTextSelectedColor2, + TextSize = 14, + TextAlignment = TextAlignment.CenterRight, + TextID = R.MyInternationalizationString.Complete + }; + titleFL.AddChidren(comfrimBtn); + + var itemFL = new FrameLayout + { + Y = titleFL.Bottom, + Height = Application.GetRealHeight(968), + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor + }; + selectFL.AddChidren(itemFL); + + var open = new SelectDeviceWithPickViewRow(0, 60); + itemFL.AddChidren(open); + open.Init(); + open.SetTitle(R.MyInternationalizationString.Open); + open.IsSelected = true; + + open.pickerView.OnSelectChangeEvent = (l1, l2, l3) => + { + tempId = l1; + modelId = l2; + fanid = l3; + }; + + var shut = new SelectSceneStatuRow(0, 60 + 703 + 30); + itemFL.AddChidren(shut); + shut.Init(); + shut.hideLine(true); + shut.SetTitle(R.MyInternationalizationString.Shut); + + open.ClickButton.MouseUpEventHandler += (sender, e) => + { + open.IsSelected = true; + shut.IsSelected = false; + }; + + shut.ClickButton.MouseUpEventHandler += (sender, e) => + { + open.IsSelected = false; + shut.IsSelected = true; + }; + + cancleBtn.MouseUpEventHandler = (sender, e) => + { + dialog.RemoveAll(); + dialog.RemoveFromParent(); + }; + + if (sceneTarget.TaskList.Count > 0) + { + if (sceneTarget.TaskList.Count == 1) + { + open.IsSelected = false; + shut.IsSelected = true; + } + else + { + open.IsSelected = true; + shut.IsSelected = false; + + for (int i = 0; i < sceneTarget.TaskList.Count; i++) + { + var tasklist = sceneTarget.TaskList[i]; + if (tasklist.Data1 == 6) + { + fanid = open.fanList.IndexOf(tasklist.Data2); + } + if (tasklist.Data1 == 3) + { + modelId = open.modeList.IndexOf(tasklist.Data2); + } + if (tasklist.Data1 == 4 || tasklist.Data1 == 5) + { + tempId = open.temperatureList.IndexOf(tasklist.Data2 / 100); + } + } + open.pickerView.setCurrentItems(tempId, modelId, fanid); + } + } + + comfrimBtn.MouseUpEventHandler = (sender, e) => + { + + var taskList = new List<ZigBee.Device.Scene.TaskListInfo> { }; + + int taskType = 5; + int data1 = 0; + int data2 = 0; + + if (shut.IsSelected) + { + //鍏� + data1 = 3; + data2 = 0; + var taskInfo = new ZigBee.Device.Scene.TaskListInfo + { + TaskType = taskType, + Data1 = data1, + Data2 = data2 + }; + taskList.Add(taskInfo); + } + else + { + //fan + var taskInfo = new ZigBee.Device.Scene.TaskListInfo + { + TaskType = taskType, + Data1 = 6, + Data2 = open.fanList[fanid] + }; + taskList.Add(taskInfo); + + //mode + var taskInfo2 = new ZigBee.Device.Scene.TaskListInfo + { + TaskType = taskType, + Data1 = 3, + Data2 = open.modeList[modelId] + }; + taskList.Add(taskInfo2); + + //tem + if (open.modeList[modelId] == 4) + { + //heat + var taskInfo3 = new ZigBee.Device.Scene.TaskListInfo + { + TaskType = taskType, + Data1 = 4, + Data2 = open.temperatureList[tempId] * 100 + }; + taskList.Add(taskInfo3); + + } + else + { + //heat + var taskInfo3 = new ZigBee.Device.Scene.TaskListInfo + { + TaskType = taskType, + Data1 = 5, + Data2 = open.temperatureList[tempId] * 100 + }; + taskList.Add(taskInfo3); + } + } + + sceneTarget.TaskList = taskList; + sceneTarget.DeviceUI = device; + selectedAction?.Invoke(sceneTarget); + dialog.RemoveFromParent(); + }; + } + + #endregion + } } -- Gitblit v1.8.0