| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Shared.Common; |
| | | using Shared.Phone.UserCenter; |
| | | |
| | | namespace Shared.Phone.Device.CommonForm |
| | | { |
| | | public class SceneCategoryView : RowLayout |
| | | using System;
|
| | | using System.Collections.Generic;
|
| | | using Shared.Common;
|
| | | using Shared.Phone.UserCenter;
|
| | |
|
| | | namespace Shared.Phone.Device.CommonForm
|
| | | {
|
| | | public class SceneCategoryView : RowLayoutBase
|
| | | {
|
| | | #region ■ 变量声明___________________________ |
| | | |
| | | /// <summary> |
| | | /// scene |
| | | /// </summary> |
| | | public SceneUI scene; |
| | | /// <summary> |
| | | /// room |
| | | /// </summary> |
| | | private Common.Room room; |
| | | /// <summary> |
| | | /// 延时时间 |
| | | /// </summary> |
| | | private NormalViewControl btnDelayTime; |
| | | /// <summary> |
| | | /// 延时图标 |
| | | /// </summary> |
| | | #region ■ 变量声明___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// scene
|
| | | /// </summary>
|
| | | public SceneUI scene;
|
| | | /// <summary>
|
| | | /// room
|
| | | /// </summary>
|
| | | private Common.Room room;
|
| | | /// <summary>
|
| | | /// 延时时间
|
| | | /// </summary>
|
| | | private NormalViewControl btnDelayTime;
|
| | | /// <summary>
|
| | | /// 延时图标
|
| | | /// </summary>
|
| | | private IconViewControl btnDelayIcon;
|
| | | /// <summary>
|
| | | /// 场景图片控件
|
| | |
| | | /// </summary>
|
| | | private bool isInitControlFinish = false;
|
| | |
|
| | | #endregion |
| | | #endregion
|
| | |
|
| | | #region ■ 初始化_____________________________
|
| | |
|
| | | /// <summary> |
| | | /// SceneCategoryView |
| | | /// </summary> |
| | | public SceneCategoryView() |
| | | { |
| | | this.Width = Application.GetRealWidth(1080); |
| | | this.Height = Application.GetRealHeight(397 + 46); |
| | | this.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; |
| | | this.IsUseSameSubViewWidth = false; |
| | | /// <summary>
|
| | | /// SceneCategoryView
|
| | | /// </summary>
|
| | | public SceneCategoryView()
|
| | | {
|
| | | this.Width = Application.GetRealWidth(1080);
|
| | | this.Height = Application.GetRealHeight(397 + 46);
|
| | | this.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
|
| | | this.IsUseSameSubViewWidth = false;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | |
|
| | | this.LineColor = UserCenterColor.Current.Transparent;
|
| | |
|
| | | this.scene = i_scene; |
| | | this.scene = i_scene;
|
| | | this.room = i_room;
|
| | |
|
| | | //自定义的场景图片控件 |
| | | //自定义的场景图片控件
|
| | | this.sceneContr = new ScenePictrueControl();
|
| | | this.AddChidren(sceneContr); |
| | | sceneContr.InitControl(this.scene); |
| | | this.AddChidren(sceneContr);
|
| | | sceneContr.InitControl(this.scene);
|
| | |
|
| | | //场景点击
|
| | | sceneContr.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | this.SceneUpHandler();
|
| | | }; |
| | | |
| | | //收藏 |
| | | sceneContr.AddCollectionControl(); |
| | | //不能反复点击
|
| | | sceneContr.CanClick = false;
|
| | | this.SceneUpHandler(sceneContr);
|
| | | };
|
| | |
|
| | | //收藏
|
| | | sceneContr.AddCollectionControl();
|
| | | sceneContr.CollectEvent += (collect) =>
|
| | | {
|
| | | if (room.IsLove) |
| | | { |
| | | this.RemoveFromParent(); |
| | | if (room.IsLove)
|
| | | {
|
| | | this.RemoveFromParent();
|
| | | }
|
| | | }; |
| | | |
| | | //延时时间 |
| | | this.btnDelayTime = new NormalViewControl(200, 58, true); |
| | | btnDelayTime.X = Application.GetRealWidth(780); |
| | | btnDelayTime.Y = Application.GetRealHeight(317); |
| | | btnDelayTime.Text = CommonFormResouce.GetTimeString(scene.SceneDelayTime); |
| | | };
|
| | | |
| | | //延时时间
|
| | | this.btnDelayTime = new NormalViewControl(400, 58, true);
|
| | | btnDelayTime.X = Application.GetRealWidth(580);
|
| | | btnDelayTime.Y = Application.GetRealHeight(317);
|
| | | btnDelayTime.Text = this.GetTimeString(scene.SceneDelayTime);
|
| | | btnDelayTime.TextAlignment = TextAlignment.CenterRight;
|
| | | btnDelayTime.TextColor = ZigbeeColor.Current.GXCTextSelectedColor3; |
| | | btnDelayTime.IsBold = true; |
| | | this.AddChidren(btnDelayTime); |
| | | |
| | | //延时图标 |
| | | btnDelayTime.TextColor = ZigbeeColor.Current.GXCTextSelectedColor3;
|
| | | btnDelayTime.IsBold = true;
|
| | | this.AddChidren(btnDelayTime);
|
| | |
|
| | | //延时图标
|
| | | this.btnDelayIcon = new IconViewControl(52);
|
| | | btnDelayIcon.X = Application.GetRealWidth(900);
|
| | | btnDelayIcon.Y = Application.GetRealHeight(30); |
| | | btnDelayIcon.Width = Application.GetMinRealAverage(52); |
| | | btnDelayIcon.Height = Application.GetMinRealAverage(52);
|
| | | btnDelayIcon.UnSelectedImagePath = "Scene/Delaying.png"; |
| | | btnDelayIcon.Y = Application.GetRealHeight(30);
|
| | | btnDelayIcon.Width = this.GetPictrueRealSize(52);
|
| | | btnDelayIcon.Height = this.GetPictrueRealSize(52);
|
| | | btnDelayIcon.UnSelectedImagePath = "Scene/Delaying.png";
|
| | | this.AddChidren(btnDelayIcon);
|
| | | btnDelayIcon.Visible = false;
|
| | |
|
| | |
| | | this.AddLeftView(btnTemp1);
|
| | | //定时
|
| | | var btnDelay = new NormalViewControl(Application.GetRealWidth(199), sceneContr.btnScenePic.Height, false);
|
| | | btnDelay.BackgroundColor = ZigbeeColor.Current.GXCTextSelectedColor; |
| | | btnDelay.TextID = R.MyInternationalizationString.Delay; |
| | | btnDelay.TextColor = ZigbeeColor.Current.GXCTextWhiteColor; |
| | | btnDelay.TextAlignment = TextAlignment.Center; |
| | | btnDelay.Tag = scene.SceneDelayTime; |
| | | btnDelay.Radius = (uint)Application.GetRealHeight(17); |
| | | btnDelay.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight | |
| | | HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight); |
| | | btnDelay.BackgroundColor = ZigbeeColor.Current.GXCTextSelectedColor;
|
| | | btnDelay.TextID = R.MyInternationalizationString.Delay;
|
| | | btnDelay.TextColor = ZigbeeColor.Current.GXCTextWhiteColor;
|
| | | btnDelay.TextAlignment = TextAlignment.Center;
|
| | | btnDelay.Tag = scene.SceneDelayTime;
|
| | | btnDelay.Radius = (uint)Application.GetRealHeight(17);
|
| | | btnDelay.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight |
|
| | | HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
|
| | | this.AddLeftView(btnDelay);
|
| | | //变更按钮的高度
|
| | | btnDelay.Height = sceneContr.btnScenePic.Height;
|
| | |
| | |
|
| | | //编辑
|
| | | var btnEditor = new NormalViewControl(Application.GetRealWidth(199), sceneContr.btnScenePic.Height, false);
|
| | | btnEditor.BackgroundColor = ZigbeeColor.Current.GXCEditBackGroundColor; |
| | | btnEditor.TextID = R.MyInternationalizationString.Edit; |
| | | btnEditor.TextColor = ZigbeeColor.Current.GXCTextWhiteColor; |
| | | btnEditor.TextAlignment = TextAlignment.Center; |
| | | btnEditor.BackgroundColor = ZigbeeColor.Current.GXCEditBackGroundColor;
|
| | | btnEditor.TextID = R.MyInternationalizationString.Edit;
|
| | | btnEditor.TextColor = ZigbeeColor.Current.GXCTextWhiteColor;
|
| | | btnEditor.TextAlignment = TextAlignment.Center;
|
| | | btnEditor.Tag = scene.SceneDelayTime;
|
| | | btnEditor.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerTopLeft);
|
| | |
|
| | | //删除
|
| | | var btnDelete = new NormalViewControl(Application.GetRealWidth(199), sceneContr.btnScenePic.Height, false); |
| | | btnDelete.Tag = scene; |
| | | btnDelete.BackgroundColor = ZigbeeColor.Current.GXCRedColor; |
| | | btnDelete.TextID = R.MyInternationalizationString.Delete; |
| | | btnDelete.TextColor = ZigbeeColor.Current.GXCTextWhiteColor; |
| | | btnDelete.TextAlignment = TextAlignment.Center; |
| | | var btnDelete = new NormalViewControl(Application.GetRealWidth(199), sceneContr.btnScenePic.Height, false);
|
| | | btnDelete.Tag = scene;
|
| | | btnDelete.BackgroundColor = ZigbeeColor.Current.GXCRedColor;
|
| | | btnDelete.TextID = R.MyInternationalizationString.Delete;
|
| | | btnDelete.TextColor = ZigbeeColor.Current.GXCTextWhiteColor;
|
| | | btnDelete.TextAlignment = TextAlignment.Center;
|
| | | btnDelete.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight);
|
| | |
|
| | | if (room.IsSharedRoom == false && room.IsLove == false) |
| | | if (room.IsSharedRoom == false && room.IsLove == false)
|
| | | {
|
| | | //不是分享,并且不是收藏
|
| | | this.AddRightView(btnEditor);
|
| | |
| | | //变更按钮的高度
|
| | | btnEditor.Height = sceneContr.btnScenePic.Height;
|
| | | btnEditor.Y = 0;
|
| | | btnDelete.Height = sceneContr.btnScenePic.Height; |
| | | btnDelete.Y = 0; |
| | | //添加右边空白区域 |
| | | btnDelete.Height = sceneContr.btnScenePic.Height;
|
| | | btnDelete.Y = 0;
|
| | | //添加右边空白区域
|
| | | var btnTemp2 = new NormalViewControl(Application.GetRealWidth(58), sceneContr.btnScenePic.Height, false);
|
| | | this.AddRightView(btnTemp2); |
| | | } |
| | | |
| | | //删除场景 |
| | | this.AddRightView(btnTemp2);
|
| | | }
|
| | |
|
| | | //删除场景
|
| | | btnDelete.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | var alert = new ShowMsgControl(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
|
| | | alert.Show();
|
| | | alert.ConfirmClickEvent += async () =>
|
| | | {
|
| | | //如果当前住宅是虚拟住宅
|
| | | if (Common.Config.Instance.Home.IsVirtually == true)
|
| | | {
|
| | | //移除缓存
|
| | | HdlSceneLogic.Current.DeleteLocalScene(scene);
|
| | | RemoveFromParent();
|
| | | return;
|
| | | }
|
| | | //0 移除失败 1 移除成功 2 没有该场景
|
| | | var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
|
| | | if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
|
| | | {
|
| | | CommonPage.Instance.FailureToServer();
|
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.RequestServerFailed));
|
| | | return;
|
| | | }
|
| | | //1成功
|
| | | if (removeSceneAllData.removeSceneData.Result == 1)
|
| | | {
|
| | | HdlSceneLogic.Current.RemoveScene(scene);
|
| | | HdlSceneLogic.Current.DeleteLocalScene(scene);
|
| | | RemoveFromParent();
|
| | | }
|
| | | //0 移除失败
|
| | | else if (removeSceneAllData.removeSceneData.Result == 0)
|
| | | {
|
| | | CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
|
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
|
| | | return;
|
| | | }
|
| | | //2 没有该场景
|
| | | else if (removeSceneAllData.removeSceneData.Result == 2)
|
| | | {
|
| | | HdlSceneLogic.Current.RemoveScene(scene);
|
| | | HdlSceneLogic.Current.DeleteLocalScene(scene);
|
| | | RemoveFromParent();
|
| | | return;
|
| | | }
|
| | | };
|
| | | }; |
| | | |
| | | //编辑场景 |
| | | btnEditor.ButtonClickEvent += (sender, e) => |
| | | { |
| | | //关闭左滑菜单 |
| | | this.HideMenu(); |
| | | //编辑场景 |
| | | var form = new Phone.Category.AddOrEditorSceneForm(); |
| | | form.AddForm(i_scene); |
| | | form.SceneChangedEvent = (myScene, roomId) => |
| | | { |
| | | if (roomId != room.Id) |
| | | { |
| | | //它变更了房间 |
| | | this.RemoveFromParent(); |
| | | } |
| | | else |
| | | { |
| | | this.InitControl(myScene, room); |
| | | } |
| | | }; |
| | | }; |
| | | //编辑延时 |
| | | btnDelay.ButtonClickEvent += (sender, e) => |
| | | { |
| | | if (scene.RemainTime > 0) |
| | | { |
| | | CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying)); |
| | | return; |
| | | } |
| | | var timeSelect = new SelectTime(); |
| | | CommonPage.Instance.AddChidren(timeSelect); |
| | | timeSelect.TempTime = scene.SceneDelayTime; |
| | | timeSelect.Init(); |
| | | timeSelect.TimeAction = (t) => |
| | | { |
| | | //隐藏右划菜单 |
| | | this.HideMenu(); |
| | | scene.SceneDelayTime = t; |
| | | btnDelayTime.Text = CommonFormResouce.GetTimeString(t); |
| | | }; |
| | | };
|
| | |
|
| | | //编辑场景
|
| | | btnEditor.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | //关闭左滑菜单
|
| | | this.HideMenu();
|
| | | //编辑场景
|
| | | var form = new Phone.Category.AddOrEditorSceneForm();
|
| | | form.AddForm(i_scene);
|
| | | form.SceneChangedEvent = (myScene, roomId) =>
|
| | | {
|
| | | if (roomId != room.Id)
|
| | | {
|
| | | //它变更了房间
|
| | | this.RemoveFromParent();
|
| | | }
|
| | | else
|
| | | {
|
| | | this.InitControl(myScene, room);
|
| | | }
|
| | | };
|
| | | };
|
| | | //编辑延时
|
| | | btnDelay.ButtonClickEvent += (sender, e) =>
|
| | | {
|
| | | if (scene.RemainTime > 0)
|
| | | {
|
| | | HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying));
|
| | | return;
|
| | | }
|
| | | var timeSelect = new SelectTime();
|
| | | CommonPage.Instance.AddChidren(timeSelect);
|
| | | timeSelect.TempTime = scene.SceneDelayTime;
|
| | | timeSelect.Init();
|
| | | timeSelect.TimeAction = (t) =>
|
| | | {
|
| | | //隐藏右划菜单
|
| | | this.HideMenu();
|
| | | if (t != 0)
|
| | | {
|
| | | scene.SceneDelayTime = t;
|
| | | btnDelayTime.Text = this.GetTimeString(t);
|
| | | //编辑延时时,需要刷新主页
|
| | | UserView.UserPage.Instance.RefreshAllForm = true;
|
| | | }
|
| | | };
|
| | | };
|
| | | }
|
| | |
|
| | | #endregion |
| | | |
| | | #endregion
|
| | |
|
| | | /// <summary>
|
| | | ///
|
| | | /// </summary>
|
| | | /// <param name="btnScenePic"></param>
|
| | | /// <param name="btnSceneName"></param> |
| | | private async void SceneUpHandler() |
| | | { |
| | | /// <param name="sceneContr"></param>
|
| | | private async void SceneUpHandler(ScenePictrueControl sceneContr)
|
| | | {
|
| | | if (scene.SceneDelayTime <= 0 && scene.RemainTime <= 0)
|
| | | {
|
| | | //如果没有延迟的话,直接开启Loading特效
|
| | | this.StartLoadingApreal();
|
| | | } |
| | | //调用场景 |
| | | var result = await HdlSceneLogic.Current.ControlScene(scene); |
| | | if (result == false) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | scene.RemainTime = scene.SceneDelayTime; |
| | | scene.SceneDelayTime = 0; |
| | | }
|
| | | //调用场景
|
| | | var result = await HdlSceneLogic.Current.ControlScene(scene);
|
| | | if (result == false)
|
| | | {
|
| | | sceneContr.CanClick = true;
|
| | | return;
|
| | | }
|
| | | |
| | | scene.RemainTime = scene.SceneDelayTime;
|
| | | scene.SceneDelayTime = 0;
|
| | | if (scene.RemainTime <= 0)
|
| | | {
|
| | | sceneContr.CanClick = true;
|
| | | return;
|
| | | } |
| | | }
|
| | | //调用有延时的场景,需要刷新主页
|
| | | UserView.UserPage.Instance.RefreshAllForm = true;
|
| | |
|
| | | int myRemainTime = scene.RemainTime;
|
| | | //开启内部延时时间线程(旨在全部地方的同一场景时间同步)
|
| | | HdlSceneLogic.Current.StartDelayTimeThread(scene); |
| | | |
| | | new System.Threading.Thread(() => |
| | | { |
| | | while (myRemainTime > 0 && this.Parent != null) |
| | | { |
| | | System.Threading.Thread.Sleep(1000); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | SetTimeText(CommonFormResouce.GetTimeString(scene.RemainTime)); |
| | | }); |
| | | myRemainTime--; |
| | | } |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | HdlSceneLogic.Current.StartDelayTimeThread(scene);
|
| | |
|
| | | new System.Threading.Thread(() =>
|
| | | {
|
| | | while (myRemainTime > 0 && this.Parent != null)
|
| | | {
|
| | | System.Threading.Thread.Sleep(1000);
|
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | SetTimeText(this.GetTimeString(scene.RemainTime));
|
| | | }, ShowErrorMode.NO);
|
| | | myRemainTime--;
|
| | | }
|
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | if (this.Parent != null)
|
| | | {
|
| | | SetTimeImage();
|
| | | //直接开启Loading特效
|
| | | this.StartLoadingApreal();
|
| | | } |
| | | }); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// SetTimeText |
| | | /// </summary> |
| | | /// <param name="name"></param> |
| | | public void SetTimeText(string name) |
| | | { |
| | | btnDelayIcon.Visible = true; |
| | | btnDelayTime.Text = name; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// SetTimeImage |
| | | /// </summary> |
| | | public void SetTimeImage() |
| | | { |
| | | btnDelayIcon.Visible = false; |
| | | btnDelayTime.Text = string.Empty; |
| | | sceneContr.CanClick = true;
|
| | | }
|
| | | }, ShowErrorMode.NO);
|
| | | })
|
| | | { IsBackground = true }.Start();
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// SetTimeText
|
| | | /// </summary>
|
| | | /// <param name="name"></param>
|
| | | public void SetTimeText(string name)
|
| | | {
|
| | | btnDelayIcon.Visible = true;
|
| | | btnDelayTime.Text = name;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// SetTimeImage
|
| | | /// </summary>
|
| | | public void SetTimeImage()
|
| | | {
|
| | | btnDelayIcon.Visible = false;
|
| | | btnDelayTime.Text = string.Empty;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | frameBack1.RemoveFromParent();
|
| | | frameBack2.RemoveFromParent();
|
| | | };
|
| | | } |
| | | |
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获取场景延时字符串
|
| | | /// </summary>
|
| | | /// <param name="second"></param>
|
| | | /// <returns></returns>
|
| | | private string GetTimeString(int second)
|
| | | {
|
| | | if (second == 0)
|
| | | {
|
| | | return null;
|
| | | }
|
| | | string timeStr = string.Empty;
|
| | | int hour = second / 3600;
|
| | | int minu = second % 3600 / 60;
|
| | | int sec = second % 60;
|
| | | if (hour > 0)
|
| | | {
|
| | | timeStr += $"{hour}{Language.StringByID(R.MyInternationalizationString.Hour)}";
|
| | | if (minu > 0)
|
| | | {
|
| | | timeStr += $"{minu}{Language.StringByID(R.MyInternationalizationString.Minute)}";
|
| | | }
|
| | | if (sec > 0)
|
| | | {
|
| | | timeStr += $"{sec}{Language.StringByID(R.MyInternationalizationString.Second)}";
|
| | | }
|
| | | return timeStr;
|
| | | }
|
| | | else if (minu > 0)
|
| | | {
|
| | | timeStr += $"{minu}{Language.StringByID(R.MyInternationalizationString.Minute)}";
|
| | | if (sec > 0)
|
| | | {
|
| | | timeStr += $"{sec}{Language.StringByID(R.MyInternationalizationString.Second)}";
|
| | | }
|
| | | return timeStr;
|
| | | }
|
| | | else
|
| | | {
|
| | | return $"{sec}{Language.StringByID(R.MyInternationalizationString.Second)}";
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 自定义控件(需要的它移除事件)
|
| | | /// </summary>
|
| | |
| | | this.DisponeEvent?.Invoke();
|
| | | this.DisponeEvent = null;
|
| | | }
|
| | | } |
| | | } |
| | | } |
| | | }
|
| | | }
|
| | | }
|