gxc
2020-02-28 66a9965c44ecc32a6696abca876ab9d1cd091584
ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs
old mode 100755 new mode 100644
@@ -16,7 +16,7 @@
        /// <summary>
        /// SceneIcon
        /// </summary>
        public Button SceneIcon;
        public ImageView SceneIcon;
        /// <summary>
        /// statu
        /// </summary>
@@ -26,9 +26,21 @@
        /// </summary>
        private Button CardBG;
        /// <summary>
        /// sceneBG
        /// </summary>
        public Button sceneBG;
        /// <summary>
        /// v_Selected
        /// </summary>
        private bool v_Selected;
        /// <summary>
        /// scene
        /// </summary>
        public SceneUI scene;
        /// <summary>
        /// CollectionAction
        /// </summary>
        public Action CollectionAction;
        /// <summary>
        /// IsSelected
@@ -50,63 +62,81 @@
            }
        }
        /// <summary>
        /// SceneMainView
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public SceneMainView(int x, int y)
        {
            X = Application.GetRealWidth(x);
            Y = Application.GetRealHeight(y);
            Width = Application.GetMinRealAverage(487);
            Height = Application.GetMinRealAverage(348);
            Width = Application.GetRealWidth(487);
            Height = Application.GetRealHeight(358);
        }
        /// <summary>
        /// init
        /// </summary>
        public void Init()
        public void Init(SceneUI sceneUI)
        {
            CardBG = new Button
            {
                Width = Application.GetMinRealAverage(487),
                Height = Application.GetMinRealAverage(348),
                UnSelectedImagePath = "Item/FunctionCardView.png",
                Gravity = Gravity.CenterHorizontal
            };
            AddChidren(CardBG);
            this.scene = sceneUI;
            SceneIcon = new Button
            InitFrame();
            InitStatu();
        }
        /// <summary>
        /// InitFrame
        /// </summary>
        private void InitFrame()
        {
            //CardBG = new Button
            //{
            //    Width = Application.GetMinRealAverage(487),
            //    Height = Application.GetMinRealAverage(348),
            //    UnSelectedImagePath = "Item/FunctionCardView.png",
            //    Gravity = Gravity.CenterHorizontal
            //};
            //AddChidren(CardBG);
            SceneIcon = new ImageView
            {
                X = Application.GetMinRealAverage(14),
                X=Application.GetRealWidth(14),
                Width = Application.GetMinRealAverage(458),
                Height = Application.GetRealHeight(305),
                Gravity = Gravity.CenterHorizontal
                Height = Application.GetMinRealAverage(305),
                Gravity = Gravity.CenterHorizontal,
                Radius= (uint)Application.GetRealHeight(17)
            };
            AddChidren(SceneIcon);
            //SceneIcon.SetViewShadow(true);
            //SceneIcon.SetCornerWithSameRadius(Application.GetRealHeight(100), HDLUtils.RectCornerBottomRight);
            var sceneBG = new Button
            sceneBG = new Button
            {
                Width = Application.GetMinRealAverage(487),
                Height = Application.GetMinRealAverage(348),
                UnSelectedImagePath = "Item/SceneCard.png",
                UnSelectedImagePath = "Scene/Background.png",
                Gravity = Gravity.CenterHorizontal
            };
            AddChidren(sceneBG);
            TimeButton = new Button()
            {
                X = Application.GetMinRealAverage(40),
                Y = Application.GetMinRealAverage(17),
                Width = Application.GetMinRealAverage(320),
                X = Application.GetMinRealAverage(30),
                Y = Application.GetMinRealAverage(20),
                Width = Application.GetMinRealAverage(63),
                Height = Application.GetMinRealAverage(63),
                TextColor = ZigbeeColor.Current.GXCTextSelectedColor3,
                TextAlignment = TextAlignment.CenterLeft,
                Text="58s"
            };
            AddChidren(TimeButton);
            CollectButton = new Button
            {
                X = Application.GetMinRealAverage(366),
                Y = Application.GetMinRealAverage(14),
                X = Application.GetMinRealAverage(350),
                Y = Application.GetMinRealAverage(1),
                Width = Application.GetMinRealAverage(107),
                Height = Application.GetMinRealAverage(107),
                UnSelectedImagePath = "Item/Collection1.png",
@@ -120,15 +150,31 @@
                Y = Application.GetMinRealAverage(239),
                Width = Application.GetMinRealAverage(279),
                Height = Application.GetMinRealAverage(60),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                SelectedTextColor = ZigbeeColor.Current.GXCTextSelectedColor,
                TextAlignment = TextAlignment.CenterLeft,
                Text="起床"
                TextSize = 14,
                IsBold = true
            };
            AddChidren(SceneNameButton);
        }
        /// <summary>
        /// InitStatu
        /// </summary>
        private void InitStatu()
        {
            SetTimeByDelayTime(scene.SceneDelayTime);
            SetSceneNameText(scene.Name);
            SetIcon(scene.IconPath);
            SetCollect(Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName));
            TimeButton.MouseUpEventHandler += SetTimeEvents;
            CollectButton.MouseUpEventHandler += CollectionEvent;
            SceneIcon.MouseUpEventHandler += SceneUpHandler;
            SceneNameButton.MouseUpEventHandler += SceneUpHandler;
            sceneBG.MouseUpEventHandler += SceneUpHandler;
        }
        /// <summary>
        /// SetTimeText
@@ -136,10 +182,12 @@
        /// <param name="name"></param>
        public void SetTimeText(string name)
        {
            TimeButton.Width = Application.GetMinRealAverage(320);
            TimeButton.Width = Application.GetMinRealAverage(280);
            TimeButton.Height = Application.GetMinRealAverage(63);
            TimeButton.UnSelectedImagePath = string.Empty;
            TimeButton.Text = name;
            TimeButton.TextSize = 14;
            TimeButton.IsBold = true;
        }
        /// <summary>
@@ -151,6 +199,22 @@
            TimeButton.Height = Application.GetMinRealAverage(63);
            TimeButton.UnSelectedImagePath = "Item/Time.png";
            TimeButton.Text = string.Empty;
        }
        /// <summary>
        /// SetIimeByDelayTime
        /// </summary>
        /// <param name="time"></param>
        public void SetTimeByDelayTime(int time)
        {
            if (time > 0)
            {
                SetTimeText(CommonFormResouce.GetTimeString(time));
            }
            else
            {
                SetTimeImage();
            }
        }
        /// <summary>
@@ -168,7 +232,14 @@
        /// <param name="iconPath"></param>
        public void SetIcon(string iconPath)
        {
            SceneIcon.UnSelectedImagePath = iconPath;
            if (scene.IconPathType == 0)
            {
                SceneIcon.ImagePath = iconPath;
            }
            else
            {
                SceneIcon.ImagePath = System.IO.Path.Combine(Config.Instance.FullPath, iconPath);
            }
        }
        /// <summary>
@@ -179,5 +250,114 @@
        {
            CollectButton.IsSelected = collect;
        }
        /// <summary>
        /// 调用场景
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private async void SceneUpHandler(object sender, MouseEventArgs args)
        {
            if (scene.RemainTime > 0 && scene.SceneDelayTime == 0)
            {
                CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying));
                return;
            }
            //1成功 0失败
            //后面补上相关提示
            // Error参数含义
            //<para>1:网关无法解析命令数据。</para>
            //<para>2:协调器正在升级或备份/恢复数据
            //<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)
            {
                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;
            Common.Room.CurrentRoom.ModifySceneDelayTime(scene);
            new System.Threading.Thread(() =>
            {
                while (scene.RemainTime > 0)
                {
                    System.Threading.Thread.Sleep(1000);
                    Application.RunOnMainThread(() =>
                    {
                        SetTimeText(CommonFormResouce.GetTimeString(scene.RemainTime));
                    });
                    scene.RemainTime -= 1;
                }
                Application.RunOnMainThread(() =>
                {
                    SetTimeImage();
                });
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 收藏
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="mouseEventArgs"></param>
        private void  CollectionEvent(object sender,MouseEventArgs mouseEventArgs)
        {
            if (Common.Room.CurrentRoom.IsLove)
            {
                Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
                CollectionAction?.Invoke();
            }
            else
            {
                (sender as Button).IsSelected = !(sender as Button).IsSelected;
                if ((sender as Button).IsSelected)
                {
                    Common.Room.CurrentRoom.GetLoveRoom().AddScene(scene);
                }
                else
                {
                    Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
                }
            }
        }
        /// <summary>
        /// setTimeEvent
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="mouseEventArgs"></param>
        private void SetTimeEvents(object sender, MouseEventArgs mouseEventArgs)
        {
            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) =>
            {
                scene.SceneDelayTime = t;
                SetTimeByDelayTime(t);
                Common.Room.CurrentRoom.ModifySceneDelayTime(scene);
            };
        }
    }
}