From 66a9965c44ecc32a6696abca876ab9d1cd091584 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期五, 28 二月 2020 15:25:13 +0800
Subject: [PATCH] 2020.2.28

---
 ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs |  610 ++++++++++++++++++++++++++----------------------------
 1 files changed, 292 insertions(+), 318 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs b/ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs
index a54a1bf..36efb69 100644
--- a/ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs
@@ -13,7 +13,7 @@
         /// <summary>
         /// The action.
         /// </summary>
-        public Action action;
+        public Action<DeviceUI, Common.Room> action;
 
         /// <summary>
         /// 鏀惰棌鎸夐挳
@@ -170,120 +170,102 @@
                                 return;
                             }
                             deviceUI.CommonDevice.DeviceStatusReport = common.DeviceStatusReport;
-                            var curTemp = (attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
-                            switch (attriButeList[0].AttributeId)
+                            foreach(var attList in attriButeList)
                             {
-                                case 0:
-                                    ac.currentLocalTemperature = curTemp;
-                                    ac.LastDateTime = DateTime.Now;
-                                    indoorTemperatureBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {ac.currentLocalTemperature} 鈩�";
-                                    //currentTemperatureBtn.Text = $"{ac.currentLocalTemperature} 鈩�";
-                                    break;
-
-                                case 17:
-                                    ac.currentCoolingSetpoint = curTemp;
-                                    if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8)
-                                    {
-                                        mArcScaleSeekBar.Progress = ac.currentCoolingSetpoint;
-                                    }
-
-                                    ac.LastDateTime = DateTime.Now;
-                                    break;
-
-                                case 18:
-                                    ac.currentHeatingSetpoint = curTemp;
-                                    if (ac.currentSystemMode == 4)
-                                    {
-                                        mArcScaleSeekBar.Progress = ac.currentHeatingSetpoint;
-                                    }
-                                    ac.LastDateTime = DateTime.Now;
-                                    break;
-
-                                case 4096:
-                                    ac.currentAutoSetpoint = curTemp;
-                                    if (ac.currentSystemMode == 1)
-                                    {
-                                        mArcScaleSeekBar.Progress = ac.currentAutoSetpoint;
-                                    }
-                                    ac.LastDateTime = DateTime.Now;
-                                    break;
-
-                                case 28:
-                                    //姝ゅ睘鎬ф弿杩版亽娓╄澶囨澶勪簬鍝妯″紡
-                                    //Off = 0  Auto = 1 Cool = 3 Heat = 4 FanOnly = 7  Dry = 8
-                                    ac.currentSystemMode = attriButeList[0].AttriButeData;
-                                    ac.LastDateTime = DateTime.Now;
-                                    if (ac.currentSystemMode == 0)
-                                    {
-                                        switchBtn.IsSelected = false;
-                                        modeBtn.IsSelected = false;
+                                var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
+                                switch (attList.AttributeId)
+                                {
+                                    case 0:
+                                        ac.currentLocalTemperature = curTemp;
+                                        ac.LastDateTime = DateTime.Now;
+                                        indoorTemperatureBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {ac.currentLocalTemperature} 鈩�";
+                                        //currentTemperatureBtn.Text = $"{ac.currentLocalTemperature} 鈩�";
+                                        break;
+                                    case 17:
+                                        ac.currentCoolingSetpoint = curTemp;
+                                        if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8)
+                                        {
+                                            mArcScaleSeekBar.Progress = ac.currentCoolingSetpoint;
+                                        }
+                                        ac.LastDateTime = DateTime.Now;
+                                        break;
+                                    case 18:
+                                        ac.currentHeatingSetpoint = curTemp;
+                                        if (ac.currentSystemMode == 4)
+                                        {
+                                            mArcScaleSeekBar.Progress = ac.currentHeatingSetpoint;
+                                        }
+                                        ac.LastDateTime = DateTime.Now;
+                                        break;
+                                    case 4096:
+                                        ac.currentAutoSetpoint = curTemp;
+                                        if (ac.currentSystemMode == 1)
+                                        {
+                                            mArcScaleSeekBar.Progress = ac.currentAutoSetpoint;
+                                        }
+                                        ac.LastDateTime = DateTime.Now;
+                                        break;
+                                    case 28:
+                                        //姝ゅ睘鎬ф弿杩版亽娓╄澶囨澶勪簬鍝妯″紡
+                                        //Off = 0  Auto = 1 Cool = 3 Heat = 4 FanOnly = 7  Dry = 8
+                                        ac.currentSystemMode = attList.AttriButeData;
+                                        ac.LastDateTime = DateTime.Now;
+                                        if (ac.currentSystemMode == 0)
+                                        {
+                                            switchBtn.IsSelected = false;
+                                            modeBtn.IsSelected = false;
+                                            fanModeBtn.IsSelected = false;
+                                            FanSwingModeBtn.IsSelected = false;
+                                            mArcScaleSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor);
+                                        }
+                                        else if (ac.currentSystemMode == 1 || ac.currentSystemMode == 3 || ac.currentSystemMode == 4 || ac.currentSystemMode == 7 || ac.currentSystemMode == 8)
+                                        {
+                                            switchBtn.IsSelected = true;
+                                            modeBtn.IsSelected = true;
+                                            fanModeBtn.IsSelected = true;
+                                            FanSwingModeBtn.IsSelected = true;
+                                            mArcScaleSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCArcScaleSeekBarStartColor, ZigbeeColor.Current.GXCArcScaleSeekBarEndColor);
+                                        }
                                         modeBtn.SelectedImagePath = ACControlBase.GetModeSelectedImagePathByModeId(ac.currentSystemMode);
                                         modeBtn.UnSelectedImagePath = ACControlBase.GetModeUnSelectedImagePathByModeId(ac.currentSystemMode);
                                         currentModeBtn.Text = ACControlBase.GetModeNameByModeId(ac.currentSystemMode);
-
                                         mArcScaleSeekBar.Progress = ACControlBase.GetCurrentModeTemperature(ac);
-
-                                        fanModeBtn.IsSelected = false;
-                                        FanSwingModeBtn.IsSelected = false;
-                                    }
-                                    else if (ac.currentSystemMode == 1 || ac.currentSystemMode == 3 || ac.currentSystemMode == 4 || ac.currentSystemMode == 7 || ac.currentSystemMode == 8)
-                                    {
-                                        switchBtn.IsSelected = true;
-                                        modeBtn.IsSelected = true;
-                                        modeBtn.SelectedImagePath = ACControlBase.GetModeSelectedImagePathByModeId(ac.currentSystemMode);
-                                        modeBtn.UnSelectedImagePath = ACControlBase.GetModeUnSelectedImagePathByModeId(ac.currentSystemMode);
-                                        currentModeBtn.Text = ACControlBase.GetModeNameByModeId(ac.currentSystemMode);
-
-                                        mArcScaleSeekBar.Progress = ACControlBase.GetCurrentModeTemperature(ac);
-                                        fanModeBtn.IsSelected = true;
-                                        FanSwingModeBtn.IsSelected = true;
-                                    }
-                                    break;
-
-                                case 4097:
-                                    //杩囪檻缃戞竻娲楁爣蹇�:42
-                                    ac.CleanStatu = attriButeList[0].AttriButeData == 42;
-                                    cleanStatu.Visible = ac.CleanStatu;
-                                    break;
-
-                                case 4099:
-                                    var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
-                                    var modeStr = value.Substring(value.Length - 5, 5);
-                                    for (int j = 0; j < modeStr.Length; j++)
-                                    {
-                                        ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
-                                    }
-                                    break;
-
+                                        mArcScaleSeekBar.IsClickable = ACControlBase.IsOpen(ac);
+                                        break;
+                                    case 4097:
+                                        //杩囪檻缃戞竻娲楁爣蹇�:42
+                                        ac.CleanStatu = attList.AttriButeData == 42;
+                                        cleanStatu.Visible = ac.CleanStatu;
+                                        break;
+                                }
                             }
                         }
 
                         if (common.DeviceStatusReport.CluterID == 514)
                         {
                             var attriButeList = common.DeviceStatusReport.AttriBute;
-                            if (attriButeList == null || attriButeList.Count == 0)
-                            {
-                                return;
-                            }
                             ac.DeviceStatusReport = common.DeviceStatusReport;
-                            switch (attriButeList[0].AttributeId)
+                            foreach(var attList in attriButeList)
                             {
-                                case 0:
-                                    //椋庢墖褰撳墠鐨勫伐浣滄ā寮� 1=Low 2=Medium 3=High
-                                    ac.currentFanMode = attriButeList[0].AttriButeData;
-                                    ac.LastDateTime = DateTime.Now;
-                                    fanModeBtn.IsSelected = true;
-                                    fanModeBtn.SelectedImagePath = ACControlBase.GetFanModeSelectedImagePathByFanModeId(ac.currentFanMode);
-                                    fanModeBtn.UnSelectedImagePath = ACControlBase.GetFanModeUnSelectedImagePathByFanModeId(ac.currentFanMode);
-                                    break;
-                                case 4096:
-                                    //椋庢墖褰撳墠鐨勬壂椋庢ā寮�
-                                    ac.currentFanSwingMode = attriButeList[0].AttriButeData;
-                                    ac.LastDateTime = DateTime.Now;
-                                    FanSwingModeBtn.IsSelected = true;
-                                    FanSwingModeBtn.SelectedImagePath = ACControlBase.GetFanSwingModeSelectedImagePathByFanSwingModeId(ac.currentFanSwingMode);
-                                    FanSwingModeBtn.UnSelectedImagePath = ACControlBase.GetFanSwingModeUnSelectedImagePathByFanSwingModeId(ac.currentFanSwingMode);
-                                    break;
+                                switch (attList.AttributeId)
+                                {
+                                    case 0:
+                                        //椋庢墖褰撳墠鐨勫伐浣滄ā寮� 1=Low 2=Medium 3=High
+                                        ac.currentFanMode = attList.AttriButeData;
+                                        ac.LastDateTime = DateTime.Now;
+                                        fanModeBtn.IsSelected = true;
+                                        fanModeBtn.SelectedImagePath = ACControlBase.GetFanModeSelectedImagePathByFanModeId(ac.currentFanMode);
+                                        fanModeBtn.UnSelectedImagePath = ACControlBase.GetFanModeUnSelectedImagePathByFanModeId(ac.currentFanMode);
+                                        break;
+                                    case 4096:
+                                        //椋庢墖褰撳墠鐨勬壂椋庢ā寮�
+                                        ac.currentFanSwingMode = attList.AttriButeData;
+                                        ac.LastDateTime = DateTime.Now;
+                                        FanSwingModeBtn.IsSelected = true;
+                                        FanSwingModeBtn.SelectedImagePath = ACControlBase.GetFanSwingModeSelectedImagePathByFanSwingModeId(ac.currentFanSwingMode);
+                                        FanSwingModeBtn.UnSelectedImagePath = ACControlBase.GetFanSwingModeUnSelectedImagePathByFanSwingModeId(ac.currentFanSwingMode);
+                                        break;
+                                }
                             }
                         }
                         //***鏂版敼 * **璁惧鐘舵�佷笂鎶ヤ腑锛屽綋CluterID = 3,璇佹槑璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
@@ -372,8 +354,8 @@
         public override void RemoveFromParent()
         {
             ZigBee.Device.ZbGateway.StatusList.Remove(this);
-            //action();
-            //action = null;
+            action(device, room);
+            action = null;
             RemoveUpdateControlDeviceStatuAction();
             HomePage.Instance.ScrollEnabled = true;
             if (IsDrawerLockMode)
@@ -417,14 +399,13 @@
             else
             {
                 //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵��
-                //if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
-                //{
+                if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
+                {
                     ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
-                //}
+                }
             }
 
-            var de = Shared.Common.Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
-            if (de == null)
+            if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName)==false)
             {
                 collectionBtn.IsSelected = false;
             }
@@ -508,12 +489,13 @@
             var deviceNameBtn = new Button()
             {
                 Y = Application.GetRealHeight(184),
-                Width = Application.GetRealWidth(500),
+                Width = Application.GetRealWidth(600),
                 Height = Application.GetRealHeight(60),
                 Gravity = Gravity.CenterHorizontal,
-                Text = device.CommonDevice.DeviceEpointName,
+                Text = Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15
+                TextSize = 15,
+                IsBold=true
             };
             itemView.AddChidren(deviceNameBtn);
 
@@ -524,21 +506,40 @@
                 Height = Application.GetRealHeight(60),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {ac.currentLocalTemperature} 鈩�"
+                Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {ac.currentLocalTemperature} 鈩�",
+                TextSize=10
             };
             itemView.AddChidren(indoorTemperatureBtn);
 
-            mArcScaleSeekBar = new ArcScaleSeekBar
+            var mArcScaleSeekBarFL = new FrameLayout
             {
                 Y = Application.GetRealHeight(412),
-                Width = Application.GetRealWidth(671),
-                Height = Application.GetRealHeight(671),
-                Gravity = Gravity.CenterHorizontal,
-                MinValue=ACControlBase.Temperature_Low,
-                MaxValue=ACControlBase.Temperature_High,
-                Progress=ACControlBase.GetCurrentModeTemperature(ac)
+                Width = Application.GetMinRealAverage(671),
+                Height = Application.GetMinRealAverage(671),
+                Gravity = Gravity.CenterHorizontal
             };
-            itemView.AddChidren(mArcScaleSeekBar);
+            itemView.AddChidren(mArcScaleSeekBarFL);
+
+            mArcScaleSeekBar = new ArcScaleSeekBar
+            {
+                Width = Application.GetMinRealAverage(671),
+                Height = Application.GetMinRealAverage(671),
+                Gravity = Gravity.CenterHorizontal,
+                MinValue = ACControlBase.Temperature_Low,
+                MaxValue = ACControlBase.Temperature_High,
+                Progress = ACControlBase.GetCurrentModeTemperature(ac),
+                IsClickable = ACControlBase.IsOpen(ac),
+                ProgressBarUnitSring = string.Empty
+            };
+            mArcScaleSeekBarFL.AddChidren(mArcScaleSeekBar);
+            if(ACControlBase.IsOpen(ac))
+            {
+                mArcScaleSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCArcScaleSeekBarStartColor, ZigbeeColor.Current.GXCArcScaleSeekBarEndColor);
+            }
+            else
+            {
+                mArcScaleSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor);
+            }
             mArcScaleSeekBar.OnStopTrackingTouchEvent += (sender, e) =>
             {
                 if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8)
@@ -560,34 +561,47 @@
 
             currentModeBtn = new Button()
             {
-                Y = Application.GetRealHeight(599),
-                Height = Application.GetRealHeight(80),
+                Y = Application.GetMinRealAverage(187),
+                Height = Application.GetRealHeight(50),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 Gravity = Gravity.CenterHorizontal,
-                Text = ACControlBase.GetModeNameByModeId(ac.currentSystemMode)
+                Text = ACControlBase.GetModeNameByModeId(ac.currentSystemMode),
+                TextSize = 12
             };
-            itemView.AddChidren(currentModeBtn);
+            mArcScaleSeekBarFL.AddChidren(currentModeBtn);
 
             reduceTemperatureBtn = new Button()
             {
-                X = Application.GetRealWidth(268),
-                Y = Application.GetRealHeight(680),
+                X = Application.GetMinRealAverage(132),
+                Y = Application.GetMinRealAverage(268),
                 Width = Application.GetMinRealAverage(80),
                 Height = Application.GetMinRealAverage(80),
                 UnSelectedImagePath = "AC/Reduce.png"
             };
-            itemView.AddChidren(reduceTemperatureBtn);
+            mArcScaleSeekBarFL.AddChidren(reduceTemperatureBtn);
 
             addTemperatureBtn = new Button()
             {
-                X = Application.GetRealWidth(628),
-                Y = Application.GetRealHeight(680),
+                X = Application.GetMinRealAverage(452),
+                Y = Application.GetMinRealAverage(268),
                 Width = Application.GetMinRealAverage(80),
                 Height = Application.GetMinRealAverage(80),
                 UnSelectedImagePath = "AC/Add.png"
             };
-            itemView.AddChidren(addTemperatureBtn);
+            mArcScaleSeekBarFL.AddChidren(addTemperatureBtn);
+
+            var uintBtn = new Button
+            {
+                Y = Application.GetMinRealAverage(369),
+                Height = Application.GetRealHeight(60),
+                Width = Application.GetRealWidth(100),
+                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                Gravity = Gravity.CenterHorizontal,
+                Text = "鈩�",
+                TextSize = 18
+            };
+            mArcScaleSeekBarFL.AddChidren(uintBtn);
 
             FanSwingModeBtn = new Button()
             {
@@ -599,7 +613,6 @@
                 SelectedImagePath = ACControlBase.GetFanSwingModeSelectedImagePathByFanSwingModeId(ac.currentFanSwingMode),
                 IsSelected = ACControlBase.IsOpen(ac)
             };
-            itemView.AddChidren(FanSwingModeBtn);
 
             modeBtn = new Button()
             {
@@ -637,6 +650,18 @@
             };
             itemView.AddChidren(fanModeBtn);
 
+            if (ac.UseSwingFunction)
+            {
+                itemView.AddChidren(FanSwingModeBtn);
+            }
+            else
+            {
+                modeBtn.X = Application.GetRealWidth(207);
+                switchBtn.X = Application.GetRealWidth(444);
+                fanModeBtn.X = Application.GetRealWidth(677);
+            }
+
+
             var roomBG = new Button
             {
                 Y = Application.GetRealHeight(1322 - 50),
@@ -672,7 +697,8 @@
                 Height = Application.GetRealHeight(50),
                 Text = room.Name,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCTextWhiteColor
+                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize=12
             };
             itemView.AddChidren(roomName);
         }
@@ -707,12 +733,14 @@
         private void Switch_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs)
         {
             switchBtn.IsSelected = !switchBtn.IsSelected;
+            mArcScaleSeekBar.IsClickable = switchBtn.IsSelected;
             if (switchBtn.IsSelected == true)
             {
                 ac.Open();
                 modeBtn.IsSelected = true;
                 fanModeBtn.IsSelected = true;
                 FanSwingModeBtn.IsSelected = true;
+                mArcScaleSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCArcScaleSeekBarStartColor, ZigbeeColor.Current.GXCArcScaleSeekBarEndColor);
             }
             else
             {
@@ -720,6 +748,7 @@
                 modeBtn.IsSelected = false;
                 fanModeBtn.IsSelected = false;
                 FanSwingModeBtn.IsSelected = false;
+                mArcScaleSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor);
             }
         }
 
@@ -757,14 +786,14 @@
             };
             closeBGview.AddChidren(changeFanModeBG);
 
-            var changeFanModeFL = new FrameLayout()
+            var changeFanModeFL = new VerticalScrolViewLayout()
             {
                 X = Application.GetRealWidth(600),
                 Y = Application.GetRealHeight(750),
                 Height = Application.GetRealHeight(600),
                 Width = Application.GetRealWidth(fanItem_Width),
-                Radius = CommonPage.BigFormRadius,
-                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
+                ScrollEnabled=false,
+                VerticalScrollBarEnabled=false
             };
             closeBGview.AddChidren(changeFanModeFL);
 
@@ -775,62 +804,47 @@
                 Height = Application.GetRealHeight(fanItem_Height),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 TextID = R.MyInternationalizationString.SelectFanMode,
-                TextAlignment = TextAlignment.CenterLeft
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize=14,
+                IsBold=true
             };
             changeFanModeFL.AddChidren(changeFanBtn);
 
-            var fan_Low = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = changeFanBtn.Bottom,
-                Width = Application.GetRealWidth(fanItem_Width),
-                Height = Application.GetRealHeight(fanItem_Height),
-                Tag = ZigBee.Device.AC.FanMode.Low
-            };
-            changeFanModeFL.AddChidren(fan_Low);
+            var fan_Low = new LeftIconButtonRow();
+            fan_Low.Tag = ZigBee.Device.AC.FanMode.Low;
             fan_Low.Init("AC/Fan_Low.png", "AC/Fan_LowSelected.png", Language.StringByID(R.MyInternationalizationString.Fan_Low));
+            fan_Low.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor_FanModel);
+            changeFanModeFL.AddChidren(fan_Low);
 
-            var fan_Middle = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = fan_Low.Bottom,
-                Width = Application.GetRealWidth(fanItem_Width),
-                Height = Application.GetRealHeight(fanItem_Height),
-                Tag = ZigBee.Device.AC.FanMode.Medium
-            };
-            changeFanModeFL.AddChidren(fan_Middle);
+            var fan_Middle = new LeftIconButtonRow();
+            fan_Middle.Tag = ZigBee.Device.AC.FanMode.Medium;
             fan_Middle.Init("AC/Fan_Middle.png", "AC/Fan_MiddleSelected.png", Language.StringByID(R.MyInternationalizationString.Fan_Middle));
+            fan_Middle.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor_FanModel);
+            changeFanModeFL.AddChidren(fan_Middle);
 
-            var fan_Height = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = fan_Middle.Bottom,
-                Width = Application.GetRealWidth(fanItem_Width),
-                Height = Application.GetRealHeight(fanItem_Height),
-                Tag = ZigBee.Device.AC.FanMode.High
-            };
-            changeFanModeFL.AddChidren(fan_Height);
+            var fan_Height = new LeftIconButtonRow();
+            fan_Height.Tag = ZigBee.Device.AC.FanMode.High;
             fan_Height.Init("AC/Fan_Height.png", "AC/Fan_HeightSelected.png", Language.StringByID(R.MyInternationalizationString.Fan_Height), false);
+            fan_Height.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor_FanModel);
+            changeFanModeFL.AddChidren(fan_Height);
 
-            fan_Low.TitleButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
-            fan_Low.IconButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
-
-            fan_Middle.TitleButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
-            fan_Middle.IconButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
-
-            fan_Height.TitleButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
-            fan_Height.IconButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
+            fan_Low.ButtonClickEvent += ChangeFan_MouseUpEvent;
+            fan_Middle.ButtonClickEvent += ChangeFan_MouseUpEvent;
+            fan_Height.ButtonClickEvent += ChangeFan_MouseUpEvent;
 
             if (ACControlBase.IsOpen(ac))
             {
                 if (ac.currentFanMode == 1)
                 {
-                    fan_Low.SetSelectedStatu();
+                    fan_Low.IsSelected=true;
                 }
                 else if (ac.currentFanMode == 2)
                 {
-                    fan_Middle.SetSelectedStatu();
+                    fan_Middle.IsSelected=true;
                 }
                 else
                 {
-                    fan_Height.SetSelectedStatu();
+                    fan_Height.IsSelected=true;
                 }
             }
         }
@@ -842,7 +856,7 @@
         /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
         private void ChangeFan_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs)
         {
-            var tag = (sender as Button).Tag.ToString();
+            var tag = (sender as LeftIconButtonRow).Tag.ToString();
             ZigBee.Device.AC.FanMode mode = ZigBee.Device.AC.FanMode.Low;
             if (tag == "Low")
             {
@@ -890,6 +904,12 @@
         /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
         private void ShowChangeMode_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs)
         {
+            if (HadSupportModel() == false)
+            {
+                CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.AC_Model_None));
+                return;
+            }
+
             int modeItem_X = 80;
             int modeItem_Height = 150;
             int modeItem_Width = 449;
@@ -919,9 +939,8 @@
                 Y = Application.GetRealHeight(450),
                 Height = Application.GetRealHeight(900),
                 Width = Application.GetRealWidth(modeItem_Width),
-                Radius = CommonFormResouce.BigFormRadius,
-                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
-                //BackgroundIagePath="AC/SelectedModeBG.png"
+                ScrollEnabled = false,
+                VerticalScrollBarEnabled = false
             };
             closeBGview.AddChidren(changeModeFL);
 
@@ -932,112 +951,85 @@
                 Height = Application.GetRealHeight(modeItem_Height),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 TextID = R.MyInternationalizationString.SelectMode,
-                TextAlignment = TextAlignment.CenterLeft
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 14,
+                IsBold = true
             };
             changeModeFL.AddChidren(changeModeBtn);
 
-            var mode_Auto = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = changeModeBtn.Bottom,
-                Width = Application.GetRealWidth(modeItem_Width),
-                Height = Application.GetRealHeight(modeItem_Height),
-                Tag = ZigBee.Device.AC.AcMode.Auto
-            };
+            var mode_Auto = new LeftIconButtonRow();
+            mode_Auto.Tag = ZigBee.Device.AC.AcMode.Auto;
+            mode_Auto.Init("AC/Mode_Auto.png", "AC/Mode_AutoSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Auto));
+            mode_Auto.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCTextBlackColor);
             if (ac.listSupportMode[4] == 1)
             {
                 changeModeFL.AddChidren(mode_Auto);
             }
-            mode_Auto.Init("AC/Mode_Auto.png", "AC/Mode_AutoSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Auto));
 
-            var mode_Cool = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = mode_Auto.Bottom,
-                Width = Application.GetRealWidth(modeItem_Width),
-                Height = Application.GetRealHeight(modeItem_Height),
-                Tag = ZigBee.Device.AC.AcMode.Cool
-            };
+            var mode_Cool = new LeftIconButtonRow();
+            mode_Cool.Tag = ZigBee.Device.AC.AcMode.Cool;
+            mode_Cool.Init("AC/Mode_Cool.png", "AC/Mode_CoolSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Cool));
+            mode_Cool.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor_Cool);
             if (ac.listSupportMode[0] == 1)
             {
                 changeModeFL.AddChidren(mode_Cool);
             }
-            mode_Cool.Init("AC/Mode_Cool.png", "AC/Mode_CoolSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Cool));
 
-            var mode_Heat = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = mode_Cool.Bottom,
-                Width = Application.GetRealWidth(modeItem_Width),
-                Height = Application.GetRealHeight(modeItem_Height),
-                Tag = ZigBee.Device.AC.AcMode.Heat
-            };
+            var mode_Heat = new LeftIconButtonRow();
+            mode_Heat.Tag = ZigBee.Device.AC.AcMode.Heat;
+            mode_Heat.Init("AC/Mode_Heat.png", "AC/Mode_HeatSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Heat));
+            mode_Heat.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor_Heat);
             if (ac.listSupportMode[1] == 1)
             {
                 changeModeFL.AddChidren(mode_Heat);
             }
-            mode_Heat.Init("AC/Mode_Heat.png", "AC/Mode_HeatSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Heat));
 
-            var mode_Dry = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = mode_Heat.Bottom,
-                Width = Application.GetRealWidth(modeItem_Width),
-                Height = Application.GetRealHeight(modeItem_Height),
-                Tag = ZigBee.Device.AC.AcMode.Dry
-            };
+            var mode_Dry = new LeftIconButtonRow();
+            mode_Dry.Tag = ZigBee.Device.AC.AcMode.Dry;
+            mode_Dry.Init("AC/Mode_Dry.png", "AC/Mode_DrySelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Dry));
+            mode_Dry.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor_Dry);
             if (ac.listSupportMode[3] == 1)
             {
                 changeModeFL.AddChidren(mode_Dry);
             }
-            mode_Dry.Init("AC/Mode_Dry.png", "AC/Mode_DrySelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Dry));
 
-            var mode_Fan = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = mode_Dry.Bottom,
-                Width = Application.GetRealWidth(modeItem_Width),
-                Height = Application.GetRealHeight(modeItem_Height),
-                Tag = ZigBee.Device.AC.AcMode.FanOnly
-            };
+            var mode_Fan = new LeftIconButtonRow();
+            mode_Fan.Tag = ZigBee.Device.AC.AcMode.FanOnly;
+            mode_Fan.Init("AC/Mode_Fan.png", "AC/Mode_FanSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_FanOnly), false);
+            mode_Fan.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor_Fan);
             if (ac.listSupportMode[2] == 1)
             {
                 changeModeFL.AddChidren(mode_Fan);
             }
-            mode_Fan.Init("AC/Mode_Fan.png", "AC/Mode_FanSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_FanOnly), false);
 
 
-            mode_Auto.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
-            mode_Auto.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
-
-            mode_Cool.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
-            mode_Cool.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
-
-            mode_Heat.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
-            mode_Heat.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
-
-            mode_Dry.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
-            mode_Dry.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
-
-            mode_Fan.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
-            mode_Fan.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
+            mode_Auto.ButtonClickEvent += ChangeMode_MouseUpEvent;
+            mode_Cool.ButtonClickEvent += ChangeMode_MouseUpEvent;
+            mode_Heat.ButtonClickEvent += ChangeMode_MouseUpEvent;
+            mode_Dry.ButtonClickEvent += ChangeMode_MouseUpEvent;
+            mode_Fan.ButtonClickEvent += ChangeMode_MouseUpEvent;
 
             if (ACControlBase.IsOpen(ac))
             {
                 if (ac.currentSystemMode == 1)
                 {
-                    mode_Auto.SetSelectedStatu();
+                    mode_Auto.IsSelected = true;
                 }
                 else if (ac.currentSystemMode == 3)
                 {
-                    mode_Cool.SetSelectedStatu();
+                    mode_Cool.IsSelected = true;
                 }
                 else if (ac.currentSystemMode == 4)
                 {
-                    mode_Heat.SetSelectedStatu();
+                    mode_Heat.IsSelected = true;
                 }
                 else if (ac.currentSystemMode == 8)
                 {
-                    mode_Dry.SetSelectedStatu();
+                    mode_Dry.IsSelected = true;
                 }
                 else if (ac.currentSystemMode == 7)
                 {
-                    mode_Fan.SetSelectedStatu();
+                    mode_Fan.IsSelected = true;
                 }
             }
         }
@@ -1049,7 +1041,7 @@
         /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
         private void ChangeMode_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs)
         {
-            var tag = (sender as Button).Tag.ToString();
+            var tag = (sender as LeftIconButtonRow).Tag.ToString();
             ZigBee.Device.AC.AcMode mode = ZigBee.Device.AC.AcMode.Cool;
 
             if (tag == "Auto")
@@ -1097,6 +1089,24 @@
             ac.SetSystemModeAsync(acMode);
         }
 
+        /// <summary>
+        /// 鏄惁閰嶇疆浜嗘ā寮�
+        /// </summary>
+        /// <returns></returns>
+        private bool HadSupportModel()
+        {
+            bool hadMode = false;
+            foreach (var m in ac.listSupportMode)
+            {
+                if (m == 1)
+                {
+                    hadMode = true;
+                    break;
+                }
+            }
+            return hadMode;
+        }
+
         #endregion
 
         #region 鈼� 鍒囨崲鎵______________________
@@ -1132,14 +1142,14 @@
             };
             closeBGview.AddChidren(changeFanModeBG);
 
-            var changeFanModeFL = new FrameLayout()
+            var changeFanModeFL = new VerticalScrolViewLayout()
             {
                 X = Application.GetRealWidth(35),
                 Y = Application.GetRealHeight(297),
                 Height = Application.GetRealHeight(1050),
                 Width = Application.GetRealWidth(fanItem_Width),
-                Radius = CommonPage.BigFormRadius,
-                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
+                VerticalScrollBarEnabled = false,
+                ScrollEnabled = false
             };
             closeBGview.AddChidren(changeFanModeFL);
 
@@ -1150,114 +1160,80 @@
                 Height = Application.GetRealHeight(fanItem_Height),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 TextID = R.MyInternationalizationString.SelectSwing,
-                TextAlignment = TextAlignment.CenterLeft
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 14,
+                IsBold = true
             };
             changeFanModeFL.AddChidren(changeFanBtn);
 
-            var swing_First = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = changeFanBtn.Bottom,
-                Width = Application.GetRealWidth(fanItem_Width),
-                Height = Application.GetRealHeight(fanItem_Height),
-                Tag = ZigBee.Device.AC.FanSwingMode.First
-            };
-            changeFanModeFL.AddChidren(swing_First);
+            var swing_First = new LeftIconButtonRow { };
+            swing_First.Tag = ZigBee.Device.AC.FanSwingMode.First;
             swing_First.Init("AC/Swing_1.png", "AC/Swing_1Selected.png", Language.StringByID(R.MyInternationalizationString.Swing_First));
+            swing_First.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor2);
+            changeFanModeFL.AddChidren(swing_First);
 
-            var swing_Second = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = swing_First.Bottom,
-                Width = Application.GetRealWidth(fanItem_Width),
-                Height = Application.GetRealHeight(fanItem_Height),
-                Tag = ZigBee.Device.AC.FanSwingMode.Second
-            };
-            changeFanModeFL.AddChidren(swing_Second);
+            var swing_Second = new LeftIconButtonRow();
+            swing_Second.Tag = ZigBee.Device.AC.FanSwingMode.Second;
             swing_Second.Init("AC/Swing_2.png", "AC/Swing_2Selected.png", Language.StringByID(R.MyInternationalizationString.Swing_Second));
+            swing_Second.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor2);
+            changeFanModeFL.AddChidren(swing_Second);
 
-            var swing_Thrid = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = swing_Second.Bottom,
-                Width = Application.GetRealWidth(fanItem_Width),
-                Height = Application.GetRealHeight(fanItem_Height),
-                Tag = ZigBee.Device.AC.FanSwingMode.Thrid
-            };
-            changeFanModeFL.AddChidren(swing_Thrid);
+            var swing_Thrid = new LeftIconButtonRow();
+            swing_Thrid.Tag = ZigBee.Device.AC.FanSwingMode.Thrid;
             swing_Thrid.Init("AC/Swing_3.png", "AC/Swing_3Selected.png", Language.StringByID(R.MyInternationalizationString.Swing_Thrid));
+            swing_Thrid.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor2);
+            changeFanModeFL.AddChidren(swing_Thrid);
 
-            var swing_Fourth = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = swing_Thrid.Bottom,
-                Width = Application.GetRealWidth(fanItem_Width),
-                Height = Application.GetRealHeight(fanItem_Height),
-                Tag = ZigBee.Device.AC.FanSwingMode.Fourth
-            };
-            changeFanModeFL.AddChidren(swing_Fourth);
+            var swing_Fourth = new LeftIconButtonRow();
+            swing_Fourth.Tag = ZigBee.Device.AC.FanSwingMode.Fourth;
             swing_Fourth.Init("AC/Swing_4.png", "AC/Swing_4Selected.png", Language.StringByID(R.MyInternationalizationString.Swing_Fourth));
+            swing_Fourth.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor2);
+            changeFanModeFL.AddChidren(swing_Fourth);
 
-            var swing_Fifth = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = swing_Fourth.Bottom,
-                Width = Application.GetRealWidth(fanItem_Width),
-                Height = Application.GetRealHeight(fanItem_Height),
-                Tag = ZigBee.Device.AC.FanSwingMode.Fifth
-            };
-            changeFanModeFL.AddChidren(swing_Fifth);
+            var swing_Fifth = new LeftIconButtonRow();
+            swing_Fifth.Tag = ZigBee.Device.AC.FanSwingMode.Fifth;
             swing_Fifth.Init("AC/Swing_5.png", "AC/Swing_5Selected.png", Language.StringByID(R.MyInternationalizationString.Swing_Fifth));
+            swing_Fifth.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor2);
+            changeFanModeFL.AddChidren(swing_Fifth);
 
-            var swing_Auto = new CommonForm.ACLeftIconButtonRowLayout()
-            {
-                Y = swing_Fifth.Bottom,
-                Width = Application.GetRealWidth(fanItem_Width),
-                Height = Application.GetRealHeight(fanItem_Height),
-                Tag = ZigBee.Device.AC.FanSwingMode.Auto
-            };
+            var swing_Auto = new LeftIconButtonRow();
+            swing_Auto.Tag = ZigBee.Device.AC.FanSwingMode.Auto;
+            swing_Auto.Init("AC/Swing_Auto.png", "AC/Swing_AutoSelected.png", Language.StringByID(R.MyInternationalizationString.Swing_Auto), false);
+            swing_Auto.SetTitleColor(ZigbeeColor.Current.GXCTextGrayColor, ZigbeeColor.Current.GXCACSelectedTextColor2);
             changeFanModeFL.AddChidren(swing_Auto);
-            swing_Auto.Init("AC/Swing_Auto.png", "AC/Swing_AutoSelected.png", Language.StringByID(R.MyInternationalizationString.Swing_Auto),false);
 
-
-            swing_First.TitleButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-            swing_First.IconButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-
-            swing_Second.TitleButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-            swing_Second.IconButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-
-            swing_Thrid.TitleButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-            swing_Thrid.IconButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-
-            swing_Fourth.TitleButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-            swing_Fourth.IconButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-
-            swing_Fifth.TitleButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-            swing_Fifth.IconButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-
-            swing_Auto.TitleButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
-            swing_Auto.IconButton.MouseUpEventHandler += ChangeFanSwing_MouseUpEvent;
+            swing_First.ButtonClickEvent += ChangeFanSwing_MouseUpEvent;
+            swing_Second.ButtonClickEvent += ChangeFanSwing_MouseUpEvent;
+            swing_Thrid.ButtonClickEvent += ChangeFanSwing_MouseUpEvent;
+            swing_Fourth.ButtonClickEvent += ChangeFanSwing_MouseUpEvent;
+            swing_Fifth.ButtonClickEvent += ChangeFanSwing_MouseUpEvent;
+            swing_Auto.ButtonClickEvent += ChangeFanSwing_MouseUpEvent;
 
             if (ACControlBase.IsOpen(ac))
             {
                 if (ac.currentFanSwingMode == 0)
                 {
-                    swing_First.SetSelectedStatu();
+                    swing_First.IsSelected = true;
                 }
                 else if (ac.currentFanSwingMode == 1)
                 {
-                    swing_Second.SetSelectedStatu();
+                    swing_Second.IsSelected = true;
                 }
                 else if (ac.currentFanSwingMode == 2)
                 {
-                    swing_Thrid.SetSelectedStatu();
+                    swing_Thrid.IsSelected = true;
                 }
                 else if (ac.currentFanSwingMode == 3)
                 {
-                    swing_Fourth.SetSelectedStatu();
+                    swing_Fourth.IsSelected = true;
                 }
                 else if (ac.currentFanSwingMode == 4)
                 {
-                    swing_Fifth.SetSelectedStatu();
+                    swing_Fifth.IsSelected = true;
                 }
                 else if (ac.currentFanSwingMode == 7)
                 {
-                    swing_Auto.SetSelectedStatu();
+                    swing_Auto.IsSelected = true;
                 }
             }
         }
@@ -1269,7 +1245,7 @@
         /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
         private void ChangeFanSwing_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs)
         {
-            var tag = (sender as Button).Tag.ToString();
+            var tag = (sender as LeftIconButtonRow).Tag.ToString();
             ZigBee.Device.AC.FanSwingMode mode = ZigBee.Device.AC.FanSwingMode.Auto;
             if (tag == "First")
             {
@@ -1413,8 +1389,6 @@
 
         #endregion
 
-
-
         #region 鈼� 鎺у埗鍙嶉_________________________
 
         /// <summary>
@@ -1466,9 +1440,9 @@
             UserView.HomePage.Instance.AddChidren(detailInfo);
             UserView.HomePage.Instance.PageIndex += 1;
             detailInfo.Show(device, room);
-            detailInfo.action = () =>
+            detailInfo.EditAction += (curDev, curRoom) =>
             {
-                Show(device, room);
+                Show(curDev, curRoom);
             };
         }
 

--
Gitblit v1.8.0