From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/MainPage/Controls/SceneCardControl.cs |  158 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 94 insertions(+), 64 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/MainPage/Controls/SceneCardControl.cs b/ZigbeeApp/Shared/Phone/MainPage/Controls/SceneCardControl.cs
index def39fb..c674940 100755
--- a/ZigbeeApp/Shared/Phone/MainPage/Controls/SceneCardControl.cs
+++ b/ZigbeeApp/Shared/Phone/MainPage/Controls/SceneCardControl.cs
@@ -8,7 +8,7 @@
     /// <summary>
     /// 鍦烘櫙鍗$墖鎺т欢
     /// </summary>
-    public class SceneCardControl : FrameLayoutControl
+    public class SceneCardControl : FrameLayoutStatuControl
     {
         #region 鈻� 鍙橀噺澹版槑___________________________
 
@@ -51,17 +51,16 @@
         public SceneCardControl()
         {
             //鍥剧墖鐪熷疄瀹藉害+鍥剧墖鑷韩宸﹀彸绌虹櫧
-            this.Width = Application.GetMinRealAverage(458 + 14 * 2);
+            this.Width = HdlControlLogic.Current.GetPictrueRealSize(458 + 14 * 2);
             //鍥剧墖楂樺害+闃村奖
-            this.Height = Application.GetMinRealAverage(305 + 43);
+            this.Height = HdlControlLogic.Current.GetPictrueRealSize(305 + 43);
             //鍙栨秷鐐瑰嚮鐗规晥
             this.UseClickStatu = false;
 
             this.ButtonClickEvent += (sender, e) =>
             {
-                //寮�鍚疞oading鐗规晥
-                this.StartLoadingApreal();
                 //璋冪敤鍦烘櫙
+                this.CanClick = false;
                 this.SetSceneAction();
             };
         }
@@ -73,39 +72,78 @@
         public void InitControl(Common.SceneUI i_scene)
         {
             this.SceneId = i_scene.Id;
+            string hourText = Language.StringByID(R.MyInternationalizationString.Hour);
+            string minuText = Language.StringByID(R.MyInternationalizationString.Minute);
+            string secondText = Language.StringByID(R.MyInternationalizationString.Second);
 
             //鍦烘櫙鍥剧墖鎺т欢
             this.btnScenePic = new ImageView();
-            btnScenePic.X = Application.GetMinRealAverage(14);
-            btnScenePic.Width = Application.GetMinRealAverage(458);
-            btnScenePic.Height = Application.GetMinRealAverage(305);
-            btnScenePic.Radius = (uint)Application.GetMinRealAverage(17);
+            btnScenePic.X = HdlControlLogic.Current.GetPictrueRealSize(14);
+            btnScenePic.Width = HdlControlLogic.Current.GetPictrueRealSize(458);
+            btnScenePic.Height = HdlControlLogic.Current.GetPictrueRealSize(305);
+            btnScenePic.Radius = (uint)Application.GetRealHeight(17);
             this.AddChidren(btnScenePic, ChidrenBindMode.NotBind);
 
             //鍦烘櫙鑳屾櫙鍥炬帶浠�
             this.btnSceneBackGroud = new PicViewControl(this.Width, this.Height, false);
             btnSceneBackGroud.UnSelectedImagePath = "Scene/Background.png";
-            this.AddChidren(btnSceneBackGroud, ChidrenBindMode.BindEventOnly);
+            this.AddChidren(btnSceneBackGroud, ChidrenBindMode.BindEvent);
 
             //寤舵椂鏃堕棿鏄剧ず鎺т欢
-            this.btnTimeView = new NormalViewControl(Application.GetMinRealAverage(280), Application.GetMinRealAverage(63), false);
-            btnTimeView.X = Application.GetMinRealAverage(37);
-            btnTimeView.Y = Application.GetMinRealAverage(10);
+            this.btnTimeView = new NormalViewControl(HdlControlLogic.Current.GetPictrueRealSize(280), HdlControlLogic.Current.GetPictrueRealSize(63), false);
+            btnTimeView.X = HdlControlLogic.Current.GetPictrueRealSize(37);
+            btnTimeView.Y = HdlControlLogic.Current.GetPictrueRealSize(10);
             btnTimeView.TextColor = 0xffffb400;
             btnTimeView.IsBold = true;
-            this.AddChidren(btnTimeView, ChidrenBindMode.BindEventOnly);
+            if (i_scene.SceneDelayTime > 0)
+            {
+                btnTimeView.Text= this.GetTimeString(i_scene.SceneDelayTime, hourText, minuText, secondText);
+            }
+            this.AddChidren(btnTimeView, ChidrenBindMode.BindEvent);
 
             //鏃堕棿鍥炬爣鎺т欢
             this.btnTimeIcon = new IconViewControl(63);
-            btnTimeIcon.X = Application.GetMinRealAverage(37);
-            btnTimeIcon.Y = Application.GetMinRealAverage(20);
+            btnTimeIcon.X = HdlControlLogic.Current.GetPictrueRealSize(37);
+            btnTimeIcon.Y = HdlControlLogic.Current.GetPictrueRealSize(20);
             btnTimeIcon.UnSelectedImagePath = "Item/Time.png";
-            this.AddChidren(btnTimeIcon, ChidrenBindMode.BindEventOnly);
+            this.AddChidren(btnTimeIcon, ChidrenBindMode.NotBind);
+            if (i_scene.SceneDelayTime > 0)
+            {
+                btnTimeIcon.Visible = false;
+            }
+            btnTimeIcon.ButtonClickEvent += (sender, e) =>
+            {
+                if (i_scene.RemainTime > 0)
+                {
+                    //璇ュ満鏅鍦ㄥ欢鏃讹紝璇风◢鍚�
+                    var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying));
+                    msgContr.Show();
+                    return;
+                }
+                var timeSelect = new Device.CommonForm.SelectTime();
+                Common.CommonPage.Instance.AddChidren(timeSelect);
+                timeSelect.TempTime = i_scene.SceneDelayTime;
+                timeSelect.Init();
+                timeSelect.TimeAction = (time) =>
+                {
+                    //閫夋嫨鐨勬槸涓嶅紑鍚�
+                    if (time == 0) { return; }
+
+                    i_scene.SceneDelayTime = time;
+
+                   //鏃堕棿鍥炬爣涓嶆樉绀�
+                   this.btnTimeIcon.Visible = false;
+                   //鏄剧ず鍓╀綑鐨勬椂闂�
+                   this.btnTimeView.Text = this.GetTimeString(time, hourText, minuText, secondText);
+                    //閫夋嫨寤舵椂鏃�,闇�瑕佸埛鏂颁富椤�
+                    UserView.UserPage.Instance.RefreshAllForm = true;
+                };
+            };
 
             //鏀惰棌鎺т欢
             var btnCollect = new IconViewControl(107);
-            btnCollect.X = Application.GetMinRealAverage(350);
-            btnCollect.Y = Application.GetMinRealAverage(12);
+            btnCollect.X = HdlControlLogic.Current.GetPictrueRealSize(350);
+            btnCollect.Y = HdlControlLogic.Current.GetPictrueRealSize(12);
             btnCollect.UnSelectedImagePath = "Item/Collection1.png";
             btnCollect.SelectedImagePath = "Item/CollectionSelected1.png";
             this.AddChidren(btnCollect, ChidrenBindMode.NotBind);
@@ -118,7 +156,7 @@
                 {
                     //鍙栨秷鏀惰棌
                     HdlSceneLogic.Current.DeleteLoveScene(i_scene);
-                    if (HdlRoomLogic.Current.CurrentRoom.IsLove == true)
+                    if (HdlRoomLogic.Current.NowMainPageRoom.IsLove == true)
                     {
                         //濡傛灉褰撳墠鎴块棿鏄垜鐨勫枩鐖辩殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑浜嬩欢
                         this.CardNeedRemoveEvent?.Invoke();
@@ -132,12 +170,12 @@
             };
 
             //鍦烘櫙鍚嶇О鎺т欢
-            this.btnSceneName = new NormalViewControl(Application.GetMinRealAverage(280), Application.GetMinRealAverage(63), false);
-            btnSceneName.X = Application.GetMinRealAverage(37);
-            btnSceneName.Y = Application.GetMinRealAverage(236);
+            this.btnSceneName = new NormalViewControl(HdlControlLogic.Current.GetPictrueRealSize(280), HdlControlLogic.Current.GetPictrueRealSize(63), false);
+            btnSceneName.X = HdlControlLogic.Current.GetPictrueRealSize(37);
+            btnSceneName.Y = HdlControlLogic.Current.GetPictrueRealSize(236);
             btnSceneName.IsBold = true;
             btnSceneName.TextColor = UserCenterColor.Current.White;
-            this.AddChidren(btnSceneName, ChidrenBindMode.BindEventOnly);
+            this.AddChidren(btnSceneName, ChidrenBindMode.BindEvent);
 
             //鍒锋柊鎺т欢鐘舵��
             this.RefreshControlInfo(i_scene);
@@ -154,38 +192,28 @@
         {
             //杩欎釜鍦烘櫙涓嶈鐨勬儏鍐靛簲璇ヤ笉鍙兘
             var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(this.SceneId);
-            if (scene.RemainTime > 0 )
+            if (scene.SceneDelayTime <= 0 && scene.RemainTime <= 0)
             {
-                //璇ュ満鏅鍦ㄥ欢鏃讹紝璇风◢鍚�
-                var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying));
-                msgContr.Show();
-                return;
+                //濡傛灉娌℃湁寤惰繜鐨勮瘽,鐩存帴寮�鍚疞oading鐗规晥
+                this.StartLoadingApreal();
             }
             //鎵ц璋冪敤鍦烘櫙
-            var result = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
-            if (result == null || result.sceneOpenData == null)
+            var result = await HdlSceneLogic.Current.ControlScene(scene);
+            if (result == false)
             {
-                //鎺у埗鍦烘櫙澶辫触
-                string msg = Language.StringByID(R.MyInternationalizationString.ControlSceneFail);
-                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
-                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-                var msgContr = new ShowMsgControl(ShowMsgType.Tip, msg);
-                msgContr.Show();
+                this.CanClick = true;
                 return;
             }
-            if (result.sceneOpenData.Result == 0)
+            if (scene.SceneDelayTime > 0)
             {
-                //鎺у埗鍦烘櫙澶辫触
-                string msg = Language.StringByID(R.MyInternationalizationString.ControlSceneFail);
-                var msgContr = new ShowMsgControl(ShowMsgType.Tip, msg);
-                msgContr.Show();
-                return;
+                //璋冪敤鏈夊欢鏃剁殑鍦烘櫙,闇�瑕佸埛鏂颁富椤�
+                UserView.UserPage.Instance.RefreshAllForm = true;
             }
             //淇敼鏃堕棿
             scene.RemainTime = scene.SceneDelayTime;
             scene.SceneDelayTime = 0;
             //寮�鍚欢鏃跺�掕鏃剁壒鏁�
-            this.StartRemainTimeApreal(scene, true);
+            this.StartRemainTimeApreal(scene);
         }
 
         #endregion
@@ -203,9 +231,11 @@
             //鍒锋柊鍥剧墖
             if (i_scene.IconPathType == 0)
             {
-                if (this.btnScenePic.ImagePath != i_scene.IconPath)
+                //涓婚〉鐨勫満鏅崱鐗囩敤鐨勬槸鍙﹀鐨勫浘
+                string newPath = i_scene.IconPath.Replace("SceneIcon", "SceneCardIcon");
+                if (this.btnScenePic.ImagePath != newPath)
                 {
-                    this.btnScenePic.ImagePath = i_scene.IconPath;
+                    this.btnScenePic.ImagePath = newPath;
                 }
             }
             else
@@ -218,7 +248,8 @@
             }
 
             //寮�鍚欢鏃跺�掕鏃剁壒鏁�
-            this.StartRemainTimeApreal(i_scene, false);
+            this.CanClick = false;
+            this.StartRemainTimeApreal(i_scene);
         }
 
         #endregion
@@ -229,11 +260,11 @@
         /// 寮�鍚欢鏃跺�掕鏃剁壒鏁�
         /// </summary>
         /// <param name="i_scene"></param>
-        /// <param name="setTime">鏄惁鏇存敼鍦烘櫙瀵硅薄閲岄潰鐨勯偅涓椂闂�,鏃ㄥ湪瀵瑰簲鍚屼竴涓満鏅湪澶氫釜鍦版柟鏄剧ず鐨勫悓姝ラ棶棰�</param>
-        private void StartRemainTimeApreal(Common.SceneUI i_scene, bool setTime)
+        private void StartRemainTimeApreal(Common.SceneUI i_scene)
         {
             if (i_scene.RemainTime <= 0)
             {
+                this.CanClick = true;
                 return;
             }
             int remainTine = i_scene.RemainTime;
@@ -246,30 +277,29 @@
             //鏄剧ず鍓╀綑鐨勬椂闂�
             this.btnTimeView.Text = this.GetTimeString(i_scene.RemainTime, hourText, minuText, secondText);
 
+            //寮�鍚唴閮ㄥ欢鏃舵椂闂寸嚎绋�(鏃ㄥ湪鍏ㄩ儴鍦版柟鐨勫悓涓�鍦烘櫙鏃堕棿鍚屾)
+            HdlSceneLogic.Current.StartDelayTimeThread(i_scene);
+
             new System.Threading.Thread(() =>
             {
-                while (remainTine > 0)
+                while (remainTine > 0 && this.Parent != null)
                 {
                     System.Threading.Thread.Sleep(1000);
-                    Application.RunOnMainThread(() =>
+                    HdlThreadLogic.Current.RunMain(() =>
                     {
                         this.btnTimeView.Text = this.GetTimeString(remainTine, hourText, minuText, secondText);
-                    });
-                    if (setTime == true)
-                    {
-                        //瑕嗙洊鍓╀綑鏃堕棿
-                        i_scene.RemainTime = remainTine;
-                    }
+                    }, ShowErrorMode.NO);
+                    remainTine--;
                 }
-                Application.RunOnMainThread(() =>
+                HdlThreadLogic.Current.RunMain(() =>
                 {
-                    //鏃犳潯浠惰鐩栧墿浣欐椂闂�
-                    i_scene.RemainTime = 0;
-
                     //鍊掕鏃剁粨鏉熸椂锛屾椂闂村浘鏍囨樉绀�
                     this.btnTimeIcon.Visible = true;
                     this.btnTimeView.Text = string.Empty;
-                });
+                    //鐩存帴寮�鍚疞oading鐗规晥
+                    this.StartLoadingApreal();
+                    this.CanClick = true;
+                }, ShowErrorMode.NO);
             })
             { IsBackground = true }.Start();
         }
@@ -291,7 +321,7 @@
             var loadContr = new MyProgressLoading();
             loadContr.LoadingBackgroundColor = UserCenterColor.Current.Transparent;
             frameBack.AddChidren(loadContr);
-            loadContr.StartLoading();
+            loadContr.StartLoading(1000);
             loadContr.DisponeEvent += () =>
             {
                 frameBack.RemoveFromParent();
@@ -330,7 +360,7 @@
             int hour = second / 3600;
             int minu = second % 3600 / 60;
             int sec = second % 60;
-            if (hour >= 0)
+            if (hour > 0)
             {
                 timeStr += hour + hourText;
             }

--
Gitblit v1.8.0