using System; using System.Collections.Generic; using Shared.Common; namespace Shared.Phone.Device.Category { public class CategorySceneSelectedDelayTime : FrameLayout { public CategorySceneSelectedDelayTime() { BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor; Tag = "categoryAddScene"; } public Button customBtn; public SceneTargetDeviceUI SceneTargetDevice = new SceneTargetDeviceUI { Type = 1 }; public List TimeList = new List { "1_秒_1", "5_秒_5", "10_秒_10", "1_分钟_60" }; /// /// 添加时间间隔为执行目标 state = -1 不选择,代表新增。state=1 时,targetDeviceID代表传进来的目标id /// /// State. /// Target device identifier. /// Delay time. /// If set to true is from room. public void Show(int state = -1, string targetDeviceID = "", int delayTime = -1, bool isFromRoom = false) { #region topview var topBGView = new FrameLayout() { Height = Application.GetRealHeight(CommonPage.Navigation_Height), BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor }; AddChidren(topBGView); var topView = new FrameLayout() { Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y), Height = Application.GetRealHeight(CommonPage.Navigation_Height - CommonPage.NavigationTitle_Y), BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor, }; AddChidren(topView); var title = new Button() { TextAlignment = TextAlignment.Center, TextID = R.MyInternationalizationString.TimeSpan, TextSize = 20, TextColor = ZigbeeColor.Current.GXCTextBlackColor, Width = Application.GetRealWidth(CommonPage.AppRealWidth - 500), Gravity = Gravity.CenterHorizontal }; topView.AddChidren(title); var back = new Button() { X = Application.GetRealWidth(CommonPage.Navigation_X), Height = Application.GetMinRealAverage(110), Width = Application.GetMinRealAverage(110), UnSelectedImagePath = "Item/Back.png", SelectedImagePath = "Item/BackSelected.png", Gravity = Gravity.CenterVertical }; topView.AddChidren(back); back.MouseUpEventHandler += (sender, e) => { this.RemoveFromParent(); }; #endregion #region midFL var midFL = new VerticalScrolViewLayout() { Y = topView.Bottom, Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.Navigation_Height), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, ScrollEnabled = false }; AddChidren(midFL); foreach (var timeStr in TimeList) { var timeRowView = new RowLayout() { Height = Application.GetRealHeight(170), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, LineColor = ZigbeeColor.Current.GXCLineColor }; midFL.AddChidren(timeRowView); var timeFL = new FrameLayout() { }; timeRowView.AddChidren(timeFL); var timeUnitStr = string.Empty; if (timeStr.Split('_')[1] == "秒") { timeUnitStr = Language.StringByID(R.MyInternationalizationString.Second); } else { timeUnitStr = Language.StringByID(R.MyInternationalizationString.Minute); } var timeBtn = new Button() { X = Application.GetRealWidth(50), Width = Application.GetRealWidth(500), Text = $"{timeStr.Split('_')[0]} {timeUnitStr}", TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.GXCTextBlackColor, SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor, BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, Gravity = Gravity.CenterVertical }; timeRowView.AddChidren(timeBtn); var timeBtnSelected = new Button() { X = timeRowView.Width - Application.GetRealWidth(150), Width = Application.GetMinRealAverage(110), Height = Application.GetMinRealAverage(110), UnSelectedImagePath = "Item/YesSelected.png", Visible = false, Gravity = Gravity.CenterVertical }; timeRowView.AddChidren(timeBtnSelected); void selectTimeMouseDownEvent(object sender, MouseEventArgs e) { timeBtn.IsSelected = true; timeBtnSelected.Visible = true; new System.Threading.Thread(() => { System.Threading.Thread.Sleep(200); Application.RunOnMainThread(() => { timeBtn.IsSelected = false; timeBtnSelected.Visible = false; }); }) { IsBackground = true }.Start(); } timeBtn.MouseDownEventHandler += selectTimeMouseDownEvent; timeRowView.MouseDownEventHandler += selectTimeMouseDownEvent; timeFL.MouseDownEventHandler += selectTimeMouseDownEvent; void selectTimeMouseUpEvent(object sender, MouseEventArgs e) { //timeBtn.IsSelected = false; //timeBtnSelected.Visible = false; //timeBtn.IsSelected = true; //timeBtnSelected.Visible = true; SceneTargetDevice.DelayTime = int.Parse(timeStr.Split('_')[2]); if(state==-1) { if(isFromRoom) { Room.AddRoomScene.sceneTargetDevicesList.Add(SceneTargetDevice); UserView.HomePage.Instance.RemoveViewByTag("categoryAddScene"); var roomAddScene = new Room.AddRoomScene(); UserView.HomePage.Instance.AddChidren(roomAddScene); UserView.HomePage.Instance.PageIndex += 1; roomAddScene.Show(Room.AddRoomScene.CurrentRoom); } else { CategoryAddScene.sceneTargetDevicesList.Add(SceneTargetDevice); UserView.HomePage.Instance.RemoveViewByTag("categoryAddScene"); var categoryAddScene = new CategoryAddScene(); UserView.HomePage.Instance.AddChidren(categoryAddScene); UserView.HomePage.Instance.PageIndex += 1; categoryAddScene.Show(); } } else { if(isFromRoom) { if (!string.IsNullOrEmpty(targetDeviceID)) { var targetDeviceUI = Room.AddRoomScene.sceneTargetDevicesList.Find((obj) => obj.SceneTargetDeviceUIID == targetDeviceID); if (targetDeviceUI != null) { targetDeviceUI.DelayTime = SceneTargetDevice.DelayTime; targetDeviceUI.Type = SceneTargetDevice.Type; } } UserView.HomePage.Instance.RemoveViewByTag("categoryAddScene"); var roomAddScene = new Room.AddRoomScene(); UserView.HomePage.Instance.AddChidren(roomAddScene); UserView.HomePage.Instance.PageIndex += 1; roomAddScene.Show(Room.AddRoomScene.CurrentRoom); } else { if (!string.IsNullOrEmpty(targetDeviceID)) { var targetDeviceUI = CategoryAddScene.sceneTargetDevicesList.Find((obj) => obj.SceneTargetDeviceUIID == targetDeviceID); if (targetDeviceUI != null) { targetDeviceUI.DelayTime= SceneTargetDevice.DelayTime; targetDeviceUI.Type = SceneTargetDevice.Type; } } UserView.HomePage.Instance.RemoveViewByTag("categoryAddScene"); var categoryAddScene = new CategoryAddScene(); UserView.HomePage.Instance.AddChidren(categoryAddScene); UserView.HomePage.Instance.PageIndex += 1; categoryAddScene.Show(); } } } timeBtn.MouseUpEventHandler += selectTimeMouseUpEvent; timeRowView.MouseUpEventHandler += selectTimeMouseUpEvent; timeFL.MouseUpEventHandler += selectTimeMouseUpEvent; } //自定义 var customRowView = new RowLayout() { Height = Application.GetRealHeight(170), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, LineColor = ZigbeeColor.Current.GXCLineColor }; midFL.AddChidren(customRowView); customBtn = new Button() { X = Application.GetRealWidth(50), Width = Application.GetRealWidth(500), TextID=R.MyInternationalizationString.Custom, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.GXCTextBlackColor, SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor, BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, Gravity = Gravity.CenterVertical }; customRowView.AddChidren(customBtn); var customBtnSelected = new Button() { X = customRowView.Width - Application.GetRealWidth(150), Width = Application.GetMinRealAverage(110), Height = Application.GetMinRealAverage(110), UnSelectedImagePath = "Item/YesSelected.png", Visible = false, Gravity = Gravity.CenterVertical }; customRowView.AddChidren(customBtnSelected); void customMouseDownEvent(object sender, MouseEventArgs e) { customBtn.IsSelected = true; customBtnSelected.Visible = true; } customBtn.MouseDownEventHandler += customMouseDownEvent; customRowView.MouseDownEventHandler += customMouseDownEvent; void customMouseUpEvent(object sender,MouseEventArgs e) { customBtn.IsSelected = false; customBtnSelected.Visible = false; var tList = new List { }; for (int i = 1; i <= 60; i++) { tList.Add($"{i} {Language.StringByID(R.MyInternationalizationString.Second)}"); } //1-60秒 PickerView.Show(tList, (obj) => { SceneTargetDevice.DelayTime = int.Parse(obj.Split(' ')[0]); if (state == -1) { if (isFromRoom) { Room.AddRoomScene.sceneTargetDevicesList.Add(SceneTargetDevice); UserView.HomePage.Instance.RemoveViewByTag("categoryAddScene"); var roomAddScene = new Room.AddRoomScene(); UserView.HomePage.Instance.AddChidren(roomAddScene); UserView.HomePage.Instance.PageIndex += 1; roomAddScene.Show(Room.AddRoomScene.CurrentRoom); } else { CategoryAddScene.sceneTargetDevicesList.Add(SceneTargetDevice); UserView.HomePage.Instance.RemoveViewByTag("categoryAddScene"); var categoryAddScene = new CategoryAddScene(); UserView.HomePage.Instance.AddChidren(categoryAddScene); UserView.HomePage.Instance.PageIndex += 1; categoryAddScene.Show(); } } else { if (isFromRoom) { if (!string.IsNullOrEmpty(targetDeviceID)) { var targetDeviceUI = Room.AddRoomScene.sceneTargetDevicesList.Find((obj1) => obj1.SceneTargetDeviceUIID == targetDeviceID); if (targetDeviceUI != null) { targetDeviceUI.DelayTime = SceneTargetDevice.DelayTime; targetDeviceUI.Type = SceneTargetDevice.Type; } } UserView.HomePage.Instance.RemoveViewByTag("categoryAddScene"); var roomAddScene = new Room.AddRoomScene(); UserView.HomePage.Instance.AddChidren(roomAddScene); UserView.HomePage.Instance.PageIndex += 1; roomAddScene.Show(Room.AddRoomScene.CurrentRoom); } else { if (!string.IsNullOrEmpty(targetDeviceID)) { var targetDeviceUI = CategoryAddScene.sceneTargetDevicesList.Find((obj1) => obj1.SceneTargetDeviceUIID == targetDeviceID); if (targetDeviceUI != null) { targetDeviceUI.DelayTime = SceneTargetDevice.DelayTime; targetDeviceUI.Type = SceneTargetDevice.Type; } } UserView.HomePage.Instance.RemoveViewByTag("categoryAddScene"); var categoryAddScene = new CategoryAddScene(); UserView.HomePage.Instance.AddChidren(categoryAddScene); UserView.HomePage.Instance.PageIndex += 1; categoryAddScene.Show(); } } }, Language.StringByID(R.MyInternationalizationString.Confrim)); } customBtn.MouseDownEventHandler += customMouseUpEvent; customRowView.MouseDownEventHandler += customMouseUpEvent; #endregion #region event #endregion } } }