From bba578c2f0acf2eca747edcb69426771e0cadd32 Mon Sep 17 00:00:00 2001 From: WJC <wjc@hdlchina.com.cn> Date: 星期一, 23 三月 2020 18:20:50 +0800 Subject: [PATCH] 2020-03-23-3 --- ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs | 424 ++++++++++++++++++++++++++++------------------------ 1 files changed, 231 insertions(+), 193 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs index d8341ed..f94a50e 100755 --- a/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs +++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs @@ -6,8 +6,10 @@ namespace Shared.Phone.Device.CommonForm { - public class SceneCategoryView : FrameLayout - { + public class SceneCategoryView : RowLayout + { + #region 鈻� 鍙橀噺澹版槑___________________________ + /// <summary> /// scene /// </summary> @@ -15,174 +17,121 @@ /// <summary> /// room /// </summary> - public Shared.Common.Room room; + private Common.Room room; /// <summary> - /// delayTimeBtn + /// 寤舵椂鏃堕棿 /// </summary> - private Button delayTimeBtn; + private NormalViewControl btnDelayTime; /// <summary> - /// delayImgBtn + /// 寤舵椂鍥炬爣 /// </summary> - private Button delayImgBtn; - /// <summary> - /// sceneImg - /// </summary> - private ImageView sceneImg; - + private IconViewControl btnDelayIcon; + /// <summary> + /// 鍦烘櫙鍥剧墖鎺т欢 + /// </summary> + private ScenePictrueControl sceneContr = null; + /// <summary> + /// 鏄惁宸茬粡瀹屾垚鎺т欢鍒濆鍖栫粨鏉� + /// </summary> + private bool isInitControlFinish = false; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + /// <summary> /// SceneCategoryView /// </summary> - /// <param name="x"></param> - /// <param name="y"></param> - public SceneCategoryView(int x, int y) + public SceneCategoryView() { - X = Application.GetRealWidth(x); - Y = Application.GetRealHeight(y); - Width = Application.GetRealWidth(1080); - Height = Application.GetRealHeight(397 + 46); - BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; - } - - /// <summary> - /// init - /// </summary> - public void Init(SceneUI sceneUI,Common.Room curRoom) - { - this.scene = sceneUI; - this.room = curRoom; - - InitFrame(); - } - - /// <summary> - /// InitFrame - /// </summary> - private void InitFrame() - { - RemoveAll(); - var sceneRowLayout = new RowLayout - { - Height = Application.GetRealHeight(440), - LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor, - Tag = scene + 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(); }; - AddChidren(sceneRowLayout); - sceneImg = new ImageView() - { - X = Application.GetRealWidth(179), - Width = Application.GetRealWidth(844), - Height = Application.GetRealHeight(397), - ImagePath = scene.IconPathType == 0 ? scene.IconPath : System.IO.Path.Combine(Config.Instance.FullPath, scene.IconPath), - Radius = (uint)Application.GetRealHeight(17) - }; - sceneRowLayout.AddChidren(sceneImg); - //闃村奖 - var btnShadow = new PicViewControl(sceneImg.Width + Application.GetRealWidth(14 * 2), sceneImg.Height + Application.GetRealHeight(43), false); - btnShadow.X = sceneImg.X - Application.GetRealWidth(14); - btnShadow.UnSelectedImagePath = "Scene/SceneShadow.png"; - sceneRowLayout.AddChidren(btnShadow); - btnShadow.ButtonClickEvent += this.SceneUpHandler; - - var leftFL = new FrameLayout - { - X = Application.GetRealWidth(CommonFormResouce.X_Left), - Y = Application.GetRealHeight(58), - Width = Application.GetRealWidth(251), - Height = Application.GetRealHeight(282), - BackgroundColor = 0xd6333333, - Radius = (uint)Application.GetRealHeight(17) - }; - sceneRowLayout.AddChidren(leftFL); - - var collectionBtn = new Button - { - X = Application.GetRealWidth(23), - Y = Application.GetRealHeight(23), - Width = Application.GetMinRealAverage(65), - Height = Application.GetMinRealAverage(65), - UnSelectedImagePath = "Item/Collection.png", - SelectedImagePath = "Item/CollectionSelected.png", - IsSelected = HdlRoomLogic.Current.IsCollectInRoom(scene), - Tag = scene - }; - leftFL.AddChidren(collectionBtn); - - var sceneNameBtn = new Button() - { - Width = Application.GetRealWidth(176), - Height = Application.GetRealHeight(150), - TextColor = ZigbeeColor.Current.GXCTextWhiteColor, - Text = scene.Name, - Gravity = Gravity.Center, - IsMoreLines = true - }; - leftFL.AddChidren(sceneNameBtn); - - var collection = new Button - { - Tag = scene - }; - leftFL.AddChidren(collection); - collection.MouseUpEventHandler += (sender, e) => - { + //鏀惰棌 + sceneContr.AddCollectionControl(); + sceneContr.CollectEvent += (collect) => + { if (room.IsLove) { - HdlSceneLogic.Current.DeleteScene(HdlRoomLogic.Current.GetLoveRoom(), scene); - RemoveViewByTag(collectionBtn.Tag); - } - else - { - collectionBtn.IsSelected = !collectionBtn.IsSelected; - if (collectionBtn.IsSelected) - { - HdlSceneLogic.Current.AddScene(HdlRoomLogic.Current.GetLoveRoom(), scene); - } - else - { - HdlSceneLogic.Current.DeleteScene(HdlRoomLogic.Current.GetLoveRoom(), scene); - } - } + this.RemoveFromParent(); + } }; - delayTimeBtn = new Button - { - X = Application.GetRealWidth(780), - Y = Application.GetRealHeight(317), - Width = Application.GetRealWidth(200), - Height = Application.GetRealHeight(58), - Text = CommonFormResouce.GetTimeString(scene.SceneDelayTime), - TextAlignment = TextAlignment.CenterRight, - TextColor = ZigbeeColor.Current.GXCTextSelectedColor3 - }; - sceneRowLayout.AddChidren(delayTimeBtn); + //寤舵椂鏃堕棿 + this.btnDelayTime = new NormalViewControl(200, 58, true); + btnDelayTime.X = Application.GetRealWidth(780); + 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); - delayImgBtn = new Button - { - X = Application.GetRealWidth(900), - Y = Application.GetRealHeight(30), - Width = Application.GetMinRealAverage(52), - Height = Application.GetMinRealAverage(52), - UnSelectedImagePath = "Scene/Delaying.png", - Visible=false - }; - sceneRowLayout.AddChidren(delayImgBtn); + //寤舵椂鍥炬爣 + 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"; + this.AddChidren(btnDelayIcon); + btnDelayIcon.Visible = false; - sceneRowLayout.SubViewWidth = Application.GetRealWidth(199); + 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), sceneRowLayout.Height, false); + 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); - sceneRowLayout.AddLeftView(btnDelay); + btnDelay.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight | + HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight); + this.AddLeftView(btnDelay); //鍙樻洿鎸夐挳鐨勯珮搴� - btnDelay.Height = sceneImg.Height; + btnDelay.Height = sceneContr.btnScenePic.Height; + btnDelay.Y = 0; - //缂栬緫 - var btnEditor = new NormalViewControl(Application.GetRealWidth(199), sceneImg.Height, false); + //缂栬緫 + 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; @@ -191,22 +140,27 @@ btnEditor.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerTopLeft); //鍒犻櫎 - var btnDelete = new NormalViewControl(Application.GetRealWidth(199), sceneImg.Height, false); + 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); - + btnDelete.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight); + if (room.IsSharedRoom == false && room.IsLove == false) { //涓嶆槸鍒嗕韩,骞朵笖涓嶆槸鏀惰棌 - sceneRowLayout.AddRightView(btnEditor); - sceneRowLayout.AddRightView(btnDelete); + this.AddRightView(btnEditor); + this.AddRightView(btnDelete); //鍙樻洿鎸夐挳鐨勯珮搴� - btnEditor.Height = sceneImg.Height; - btnDelete.Height = sceneImg.Height; + 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); } //鍒犻櫎鍦烘櫙 @@ -253,6 +207,8 @@ { try { + //鍏抽棴宸︽粦鑿滃崟 + this.HideMenu(); var targetList = new List<SceneTargetDeviceUI> { }; CommonPage.Loading.Start(); //浠庣綉鍏充腑鍙嶅簭鍒楀寲鍑哄搴旂殑鎴块棿璁惧 @@ -261,8 +217,8 @@ { CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheMainGatewayIsNotOnLine)); return; - } - + } + if (sceneDeviceList.getSceneDeviceListInfo != null) { var deviceList = sceneDeviceList.getSceneDeviceListInfo.DeviceList; @@ -339,6 +295,30 @@ } else { + this.InitControl(s, r); + } + } + else + { + CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.FailedPleaseTryAgain)); + } + + var sceneView = new CategoryAddScene(); + Phone.UserView.HomePage.Instance.AddChidren(sceneView); + Phone.UserView.HomePage.Instance.PageIndex += 1; + sceneView.isModify = true; + sceneView.modifyRoom = room; + sceneView.modifySceneUI = scene; + sceneView.modifySceneTargetDevicesList = targetList; + sceneView.Show(); + sceneView.EditorAction = (s, r) => + { + if (r.Id != room.Id) + { + RemoveFromParent(); + } + else + { Init(s, r); } }; @@ -366,63 +346,64 @@ timeSelect.Init(); timeSelect.TimeAction = (t) => { + //闅愯棌鍙冲垝鑿滃崟 + this.HideMenu(); scene.SceneDelayTime = t; - delayTimeBtn.Text = CommonFormResouce.GetTimeString(t); + btnDelayTime.Text = CommonFormResouce.GetTimeString(t); }; - }; - } + }; + } + + #endregion - /// <summary> - /// SceneUpHandler - /// </summary> - /// <param name="sender"></param> - /// <param name="args"></param> - private async void SceneUpHandler(object sender, MouseEventArgs args) + /// <summary> + /// + /// </summary> + /// <param name="btnScenePic"></param> + /// <param name="btnSceneName"></param> + private async void SceneUpHandler() { - if (scene.RemainTime > 0 && scene.SceneDelayTime == 0) - { - CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying)); - return; + if (scene.SceneDelayTime <= 0 && scene.RemainTime <= 0) + { + //濡傛灉娌℃湁寤惰繜鐨勮瘽,鐩存帴寮�鍚疞oading鐗规晥 + this.StartLoadingApreal(); } - //1鎴愬姛 0澶辫触 - //鍚庨潰琛ヤ笂鐩稿叧鎻愮ず - // Error鍙傛暟鍚箟 - //<para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para> - //<para>2锛氬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁 - //<para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para> - //<para>4锛氬叾浠栭敊璇�</para> - //<para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para> - var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime); - - if (sceneOpenAllData == null || sceneOpenAllData.sceneOpenData == null) + //璋冪敤鍦烘櫙 + var result = await HdlSceneLogic.Current.ControlScene(scene); + if (result == false) { return; - } - if (sceneOpenAllData.sceneOpenData.Result == 0) - { - if (sceneOpenAllData.errorResponData == null) - { - return; - } - CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.ControlSceneFail)); } 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 (scene.RemainTime > 0) + while (myRemainTime > 0 && this.Parent != null) { System.Threading.Thread.Sleep(1000); Application.RunOnMainThread(() => { SetTimeText(CommonFormResouce.GetTimeString(scene.RemainTime)); }); - scene.RemainTime -= 1; + myRemainTime--; } Application.RunOnMainThread(() => { - SetTimeImage(); + if (this.Parent != null) + { + SetTimeImage(); + //鐩存帴寮�鍚疞oading鐗规晥 + this.StartLoadingApreal(); + } }); }) { IsBackground = true }.Start(); @@ -434,8 +415,8 @@ /// <param name="name"></param> public void SetTimeText(string name) { - delayImgBtn.Visible = true; - delayTimeBtn.Text = name; + btnDelayIcon.Visible = true; + btnDelayTime.Text = name; } /// <summary> @@ -443,8 +424,65 @@ /// </summary> public void SetTimeImage() { - delayImgBtn.Visible = false; - delayTimeBtn.Text = string.Empty; + 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