From c1de48884fa145a16a0f8bcee93274dcfaa0ff82 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 07 五月 2020 10:40:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into dev-2020xm
---
ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs | 383 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 383 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs
new file mode 100755
index 0000000..045ed5d
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs
@@ -0,0 +1,383 @@
+锘縰sing 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>
+ private IconViewControl btnDelayIcon;
+ /// <summary>
+ /// 鍦烘櫙鍥剧墖鎺т欢
+ /// </summary>
+ private ScenePictrueControl sceneContr = null;
+ /// <summary>
+ /// 鏄惁宸茬粡瀹屾垚鎺т欢鍒濆鍖栫粨鏉�
+ /// </summary>
+ private bool isInitControlFinish = false;
+
+ #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>
+ /// 鍒濆鍖�
+ /// </summary>
+ /// <param name="i_scene"></param>
+ public void InitControl(SceneUI i_scene, Common.Room i_room)
+ {
+ this.RemoveAll();
+
+ this.LineColor = UserCenterColor.Current.Transparent;
+
+ this.scene = i_scene;
+ this.room = i_room;
+
+ //鑷畾涔夌殑鍦烘櫙鍥剧墖鎺т欢
+ this.sceneContr = new ScenePictrueControl();
+ this.AddChidren(sceneContr);
+ sceneContr.InitControl(this.scene);
+
+ //鍦烘櫙鐐瑰嚮
+ sceneContr.ButtonClickEvent += (sender, e) =>
+ {
+ this.SceneUpHandler();
+ };
+
+ //鏀惰棌
+ sceneContr.AddCollectionControl();
+ sceneContr.CollectEvent += (collect) =>
+ {
+ if (room.IsLove)
+ {
+ this.RemoveFromParent();
+ }
+ };
+
+ //寤舵椂鏃堕棿
+ this.btnDelayTime = new NormalViewControl(400, 58, true);
+ btnDelayTime.X = Application.GetRealWidth(580);
+ btnDelayTime.Y = Application.GetRealHeight(317);
+ btnDelayTime.Text = CommonFormResouce.GetTimeString(scene.SceneDelayTime);
+ btnDelayTime.TextAlignment = TextAlignment.CenterRight;
+ 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 = this.GetPictrueRealSize(52);
+ btnDelayIcon.Height = this.GetPictrueRealSize(52);
+ btnDelayIcon.UnSelectedImagePath = "Scene/Delaying.png";
+ this.AddChidren(btnDelayIcon);
+ btnDelayIcon.Visible = false;
+
+ if (isInitControlFinish == true)
+ {
+ //缂栬緫鍦烘櫙鐨勫洖璋冨嚱鏁颁細閲嶆柊鍒锋柊鎺т欢
+ //鎵�浠ヨ繖閲屼笉鍐嶅垵濮嬪寲
+ return;
+ }
+ this.isInitControlFinish = true;
+
+ //娣诲姞宸﹁竟鐨勭┖鐧藉尯鍩�
+ var btnTemp1 = new NormalViewControl(Application.GetRealWidth(58), sceneContr.btnScenePic.Height, 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);
+ this.AddLeftView(btnDelay);
+ //鍙樻洿鎸夐挳鐨勯珮搴�
+ btnDelay.Height = sceneContr.btnScenePic.Height;
+ btnDelay.Y = 0;
+
+ //缂栬緫
+ 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.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;
+ btnDelete.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight);
+
+ if (room.IsSharedRoom == false && room.IsLove == false)
+ {
+ //涓嶆槸鍒嗕韩,骞朵笖涓嶆槸鏀惰棌
+ this.AddRightView(btnEditor);
+ this.AddRightView(btnDelete);
+ //鍙樻洿鎸夐挳鐨勯珮搴�
+ btnEditor.Height = sceneContr.btnScenePic.Height;
+ btnEditor.Y = 0;
+ btnDelete.Height = sceneContr.btnScenePic.Height;
+ btnDelete.Y = 0;
+ //娣诲姞鍙宠竟绌虹櫧鍖哄煙
+ var btnTemp2 = new NormalViewControl(Application.GetRealWidth(58), sceneContr.btnScenePic.Height, false);
+ 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();
+ return;
+ }
+ //1鎴愬姛
+ if (removeSceneAllData.removeSceneData.Result == 1)
+ {
+ HdlSceneLogic.Current.DeleteLocalScene(scene);
+ RemoveFromParent();
+ }
+ //0 绉婚櫎澶辫触
+ else if (removeSceneAllData.removeSceneData.Result == 0)
+ {
+ CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain));
+ return;
+ }
+ //2 娌℃湁璇ュ満鏅�
+ else if (removeSceneAllData.removeSceneData.Result == 2)
+ {
+ 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);
+ };
+ };
+ }
+
+ #endregion
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="btnScenePic"></param>
+ /// <param name="btnSceneName"></param>
+ private async void SceneUpHandler()
+ {
+ if (scene.SceneDelayTime <= 0 && scene.RemainTime <= 0)
+ {
+ //濡傛灉娌℃湁寤惰繜鐨勮瘽,鐩存帴寮�鍚疞oading鐗规晥
+ this.StartLoadingApreal();
+ }
+ //璋冪敤鍦烘櫙
+ var result = await HdlSceneLogic.Current.ControlScene(scene);
+ if (result == false)
+ {
+ return;
+ }
+
+ scene.RemainTime = scene.SceneDelayTime;
+ scene.SceneDelayTime = 0;
+ if (scene.RemainTime <= 0)
+ {
+ return;
+ }
+ 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(() =>
+ {
+ if (this.Parent != null)
+ {
+ SetTimeImage();
+ //鐩存帴寮�鍚疞oading鐗规晥
+ 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;
+ }
+
+ /// <summary>
+ /// 寮�鍚疞oading鐗规晥
+ /// </summary>
+ public void StartLoadingApreal()
+ {
+ //寮勪釜閬僵閬綇
+ var frameBack1 = new FrameLayout();
+ frameBack1.Y = sceneContr.btnScenePic.Y;
+ frameBack1.X = sceneContr.btnScenePic.X;
+ frameBack1.Width = sceneContr.btnScenePic.Width;
+ frameBack1.Height = sceneContr.btnScenePic.Height;
+ frameBack1.Radius = (uint)Application.GetRealHeight(17);
+ frameBack1.BackgroundColor = 0xb3000000;
+ this.AddChidren(frameBack1);
+
+ var frameBack2 = new FrameLayout();
+ frameBack2.Y = sceneContr.btnSceneName.Y;
+ frameBack2.X = sceneContr.btnSceneName.X;
+ frameBack2.Width = sceneContr.btnSceneName.Width;
+ frameBack2.Height = sceneContr.btnSceneName.Height;
+ frameBack2.Radius = (uint)Application.GetRealHeight(17);
+ frameBack2.BackgroundColor = 0xb3000000;
+ this.AddChidren(frameBack2);
+
+ //鍐嶅姞涓浆鍦堢殑
+ var loadContr = new MyProgressLoading();
+ loadContr.LoadingBackgroundColor = UserCenterColor.Current.Transparent;
+ frameBack1.AddChidren(loadContr);
+ loadContr.StartLoading(1000);
+ loadContr.DisponeEvent += () =>
+ {
+ frameBack1.RemoveFromParent();
+ frameBack2.RemoveFromParent();
+ };
+ }
+
+ /// <summary>
+ /// 鑷畾涔夋帶浠�(闇�瑕佺殑瀹冪Щ闄や簨浠�)
+ /// </summary>
+ private class MyProgressLoading : ProgressLoading
+ {
+ /// <summary>
+ /// 鎺т欢閿�姣佺殑浜嬩欢
+ /// </summary>
+ public Action DisponeEvent = null;
+ /// <summary>
+ /// 鎺т欢閿�姣�
+ /// </summary>
+ public override void RemoveFromParent()
+ {
+ base.RemoveFromParent();
+
+ this.DisponeEvent?.Invoke();
+ this.DisponeEvent = null;
+ }
+ }
+ }
+}
--
Gitblit v1.8.0