From 4e343aa2d3bba9e1dc5519afa2564a230c556496 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 05 二月 2021 15:13:14 +0800
Subject: [PATCH] 2021-2-5-1

---
 Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs |  970 ++++++++++++++++++++++++++------------------------------
 1 files changed, 451 insertions(+), 519 deletions(-)

diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs
index 55f8122..cbafc6e 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs
@@ -6,27 +6,63 @@
 {
     public class AddSchedule : FrameLayout
     {
+        /// <summary>
+        /// 涓婁笅婊戝姩VerticalScrolViewLayout
+        /// </summary>
         VerticalScrolViewLayout bodyView;
+        /// <summary>
+        /// 璁惧瀵硅薄鐖舵帶浠�
+        /// </summary>
         FrameLayout devicesListView;
+        /// <summary>
+        /// 瀹氫箟涓�涓洖璋冨嚱鏁�
+        /// </summary>
         Action<Timer> action;
-        List<Common> roomDeviceList = new List<Common>();
-        List<string> roomNameList = new List<string> ();
-        List<DeviceInfo> timerControlDeviceList = new List<DeviceInfo> ();
-
+        /// <summary>
+        /// 閫変腑璁惧鍒楄〃
+        /// </summary>
+        List<Fun> selectedDeviceList = new List<Fun> ();
+        /// <summary>
+        /// 鏄惁缂栬緫锛坱rue=缂栬緫锛�
+        /// </summary>
+        bool IsEdit = false;
+        /// <summary>
+        /// 瀵硅薄鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="act">杩斿洖鍑芥暟</param>
         public AddSchedule (Action<Timer> act)
         {
             action = act;
         }
+        /// <summary>
+        /// 閲嶅啓鏂规硶
+        /// </summary>
         public override void RemoveFromParent ()
         {
             UserMiddle.SettingPageView.ScrollEnabled = true;
             base.RemoveFromParent ();
         }
-
+        /// <summary>
+        /// 瀵硅薄涓诲叆鍙�
+        /// </summary>
+        /// <param name="timerTemp">褰撳墠瀵硅薄</param>
+        /// <param name="listTimer">璁℃椂鍣ㄥ垪琛�</param>
+        /// <param name="isEdit">缂栬緫鐘舵��</param>
         public void ShowPage (Timer timerTemp, List<Timer> listTimer, bool isEdit = false)
         {
+            IsEdit = isEdit;
+            selectedDeviceList.Clear ();
+            if (isEdit) {
+                for (int j = 0; j < timerTemp.controlData.actions.Count; j++) {
+                    var fun = timerTemp.controlData.actions [j];
+                    var dev = selectedDeviceList.Find ((c) => c.deviceId == fun.deviceId);
+                    if (dev == null) {
+                        selectedDeviceList.Add (fun);
+                    }
+                }
+
+            }
             UserMiddle.SettingPageView.ScrollEnabled = false;
-            timerTemp.RegionID = UserConfig.Instance.CurrentRegion.Id;
             #region topview
             var topView = new RowLayout () {
                 Y = Application.GetRealHeight (36),
@@ -98,7 +134,7 @@
                 BorderWidth = 1,
                 TextAlignment = TextAlignment.Center,
                 TextColor = SkinStyle.Current.TextColor1,
-                Text = timerTemp.TimerName
+                Text = timerTemp.timerName
             };
             nameView.AddChidren (etName);
             etName.EditorEnterAction += (obj) => {
@@ -133,7 +169,7 @@
             var btnTimelbl = new Button () {
                 X = btnTimeIcon.Right,
                 Width = Application.GetRealWidth (110),
-                Text = timerTemp.ExecutionTime,
+                Text = timerTemp.executeUtcTime,
                 TextAlignment = TextAlignment.Center,
                 TextColor = SkinStyle.Current.TextColor1,
             };
@@ -186,7 +222,7 @@
                 };
                 bottomView.AddChidren (btnSaveTime);
                 btnSaveTime.MouseUpEventHandler += (sender3, e3) => {
-                    var chooseHour = chooseTime.Hour - timerTemp.TimeZone;
+                   // var chooseHour = chooseTime.Hour - timerTemp.TimeZone;
                     var chooseTimeString = chooseTime.Hour.ToString ().PadLeft (2, '0') + ":" + chooseTime.Minute.ToString ().PadLeft (2, '0');
                     //if (chooseTime.Hour > 12) {
                     //    chooseTimeString = (chooseTime.Hour -12) + ":" + chooseTime.Minute + " PM";
@@ -230,7 +266,7 @@
                 Radius = (uint)Application.GetMinRealAverage (22),
                 BorderWidth = 1,
                 BorderColor = SkinStyle.Current.Transparent,
-                IsSelected = timerTemp.Periodicity.Contains ("0"),
+                IsSelected = timerTemp.whichDay.Contains (0),
                 Tag = 0,
             };
             repeatView.AddChidren (btnSunday);
@@ -249,7 +285,7 @@
                 Radius = (uint)Application.GetMinRealAverage (22),
                 BorderWidth = 1,
                 BorderColor = SkinStyle.Current.Transparent,
-                IsSelected = timerTemp.Periodicity.Contains ("1"),
+                IsSelected = timerTemp.whichDay.Contains (1),
                 Tag = 1,
             };
             repeatView.AddChidren (btnMonday);
@@ -268,7 +304,7 @@
                 Radius = (uint)Application.GetMinRealAverage (22),
                 BorderWidth = 1,
                 BorderColor = SkinStyle.Current.Transparent,
-                IsSelected = timerTemp.Periodicity.Contains ("2"),
+                IsSelected = timerTemp.whichDay.Contains (2),
                 Tag = 2,
             };
             repeatView.AddChidren (btnTuesday);
@@ -286,7 +322,7 @@
                 Radius = (uint)Application.GetMinRealAverage (22),
                 BorderWidth = 1,
                 BorderColor = SkinStyle.Current.Transparent,
-                IsSelected = timerTemp.Periodicity.Contains ("3"),
+                IsSelected = timerTemp.whichDay.Contains (3),
                 Tag = 3,
             };
             repeatView.AddChidren (btnWednesday);
@@ -304,7 +340,7 @@
                 Radius = (uint)Application.GetMinRealAverage (22),
                 BorderWidth = 1,
                 BorderColor = SkinStyle.Current.Transparent,
-                IsSelected = timerTemp.Periodicity.Contains ("4"),
+                IsSelected = timerTemp.whichDay.Contains (4),
                 Tag = 4,
             };
             repeatView.AddChidren (btnThursday);
@@ -323,7 +359,7 @@
                 Radius = (uint)Application.GetMinRealAverage (22),
                 BorderWidth = 1,
                 BorderColor = SkinStyle.Current.Transparent,
-                IsSelected = timerTemp.Periodicity.Contains ("5"),
+                IsSelected = timerTemp.whichDay.Contains (5),
                 Tag = 5,
             };
             repeatView.AddChidren (btnFriday);
@@ -342,7 +378,7 @@
                 Radius = (uint)Application.GetMinRealAverage (22),
                 BorderWidth = 1,
                 BorderColor = SkinStyle.Current.Transparent,
-                IsSelected = timerTemp.Periodicity.Contains ("6"),
+                IsSelected = timerTemp.whichDay.Contains (6),
                 Tag = 6,
             };
             repeatView.AddChidren (btnSaturday);
@@ -395,7 +431,7 @@
 
             var downSelectedButton = new Button () {
                 X = Application.GetRealWidth (310),
-                Height = Application.GetRealHeight (50),
+                Height = Application.GetRealWidth (50),
                 Width = Application.GetRealWidth (55),
                 UnSelectedImagePath = "Item/Down.png",
                 SelectedImagePath = "Item/DownSelected.png",
@@ -410,40 +446,15 @@
                 Height = Application.GetRealHeight (60),
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = SkinStyle.Current.TextColor1,
+                Text = "ALL",
             };
             roomContenView.AddChidren (btnRoomChoose);
 
-            roomNameList.Add ("ALL");
-            foreach (var room in Room.Lists) {
-                if (string.IsNullOrEmpty (room.Name)) {
-                    continue;
-                }
-                roomNameList.Add (room.Name);
-                if (timerTemp.RoomName == "ALL") {
-                    roomDeviceList.AddRange (room.DeviceList);
-                } else {
-                    if(timerTemp.RoomName == room.Name) {
-                        roomDeviceList.Clear ();
-                        roomDeviceList.AddRange (room.DeviceList);
-                    }
-                }
-            }
-            if (roomNameList.Count > 0 && !isEdit) {
-                timerTemp.RoomName = roomNameList [0];
-            }
-            btnRoomChoose.Text = timerTemp.RoomName;
 
+           
             #endregion
 
             #region Devices
-            try { 
-                timerControlDeviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<DeviceInfo>> (timerTemp.ControlDeviceData);//devicesControlDataList
-            } catch {
-                timerControlDeviceList = null;
-            }
-
-            if (timerControlDeviceList == null)
-                timerControlDeviceList = new List<DeviceInfo> ();
 
             var devicesView = new RowLayout () {
                 Height = Application.GetRealHeight (110),
@@ -460,17 +471,18 @@
             };
             devicesView.AddChidren (btnDeviceTitle);
 
-           devicesListView = new FrameLayout () {
-                Height = Application.GetRealHeight (130 * roomDeviceList.Count),
+            devicesListView = new FrameLayout () {
+                Height = Application.GetRealHeight (130),
             };
             bodyView.AddChidren (devicesListView);
 
-            MainPage.Loading.Start ("Please wait...");
-            InitDeviceListView (roomDeviceList, timerControlDeviceList, devicesListView);
             #endregion
 
-
-            #region -----Room
+            MainPage.Loading.Start ("Please wait...");
+            SmartHome.Method mMthod = new SmartHome.Method ();
+            var devList = mMthod.GetRoomDeviceList ("ALL");
+            InitDeviceListView (devList);
+            #region -----Room 鐐瑰嚮浜嬩欢
             btnRoomChoose.MouseUpEventHandler += (sender, e) => {
                 Application.HideSoftInput ();
                 var roomDialog = new Dialog ();
@@ -504,11 +516,13 @@
                     BackgroundColor = SkinStyle.Current.ViewColor,
                 };
                 chooseRoomView.AddChidren (roomListView);
-
-                foreach (var roomName in roomNameList) {
+                //鑾峰彇鎴块棿鍒楄〃
+                var  roomList= mMthod.GetRoomList ();
+                for (int i = 0; i < roomList.Count; i++) {
+                    var room = roomList [i];
                     var btnRoomNameChoose = new Button () {
                         Height = Application.GetRealHeight (90),
-                        Text = roomName,
+                        Text = room.Name,
                         TextColor = SkinStyle.Current.TextColor1,
                         TextAlignment = TextAlignment.Center,
                     };
@@ -522,21 +536,9 @@
 
                     btnRoomNameChoose.MouseUpEventHandler += (sd, ds) => {
                         btnRoomChoose.Text = (sd as Button).Text;
-                        foreach (var room in Room.Lists) {
-                            if (string.IsNullOrEmpty (room.Name)) {
-                                continue;
-                            }
-                            if (btnRoomChoose.Text == "ALL") {
-                                roomDeviceList.AddRange (room.DeviceList);
-                            } else {
-                                if (btnRoomChoose.Text == room.Name) {
-                                    roomDeviceList.Clear ();
-                                    roomDeviceList.AddRange (room.DeviceList);
-                                }
-                            }
-                        }
-                        timerControlDeviceList = new List<DeviceInfo> ();
-                        InitDeviceListView (roomDeviceList, timerControlDeviceList, devicesListView);
+                        //鑾峰彇璁惧鍒楄〃
+                        var deviceList = mMthod.GetRoomDeviceList (btnRoomChoose.Text);
+                        InitDeviceListView (deviceList);
                         roomDialog.Close ();
                     };
                 }
@@ -562,11 +564,7 @@
             saveTimeBottomView.AddChidren (btnSaveTimerBottom);
 
             btnSaveTimerBottom.MouseUpEventHandler += (ll, kk) => {
-                //WorkingDay, //宸ヤ綔鏃�
-                //Weekend,    //鍛ㄦ湯
-                //Week,       //鎸囧畾鏄熸湡鍑�
-                //Period,     //鎸囧畾鏃堕棿娈�
-                //AppointDay,  //鎸囧畾鏃�  Periodicity
+
 
                 if (btnMonday.IsSelected == false && btnFriday.IsSelected == false && btnThursday.IsSelected == false && btnSunday.IsSelected == false && btnTuesday.IsSelected == false && btnSaturday.IsSelected == false && btnWednesday.IsSelected == false) {
                     //new Alert ("", "璇烽�夋嫨鏃ユ湡!", "Close").Show ();
@@ -587,16 +585,16 @@
                 //    new Alert ("", "The timer name already exists. Please change it before saving it.", "Close").Show ();
                 //    return;
                 //}
-            
-                if (timerControlDeviceList.Count == 0) {
+
+                if (selectedDeviceList.Count == 0) {
                     new Alert ("", "Please choose at least one device!", "Close").Show ();
                     return;
                 }
 
                 //鍚嶅瓧閲嶅鍒ゆ柇闄愬埗
-                var mTimer = listTimer.Find ((obj) => obj.TimerName == mTimerName);
+                var mTimer = listTimer.Find ((obj) => obj.timerName == mTimerName);
                 if (isEdit) {
-                    if (mTimer != null && mTimer.Id != timerTemp.Id) {
+                    if (mTimer != null && mTimer.id != timerTemp.id) {
                         new Alert ("", "The timer name already exists. Please change it before saving it.", "Close").Show ();
                         return;
                     }
@@ -610,9 +608,9 @@
                 //2020-02-10 鏃堕棿閲嶅鍒ゆ柇闄愬埗
                 string mExecutionTime = btnTimelbl.Text;
                 //timerTemp.ExecutionTime = btnTimelbl.Text;
-                var mTimerExecutionTime = listTimer.Find ((obj) => (obj.ExecutionTime == mExecutionTime));
+                var mTimerExecutionTime = listTimer.Find ((obj) => (obj.executeUtcTime == mExecutionTime));
                 if (isEdit) {
-                    if (mTimerExecutionTime != null && mTimerExecutionTime.Id != timerTemp.Id) {
+                    if (mTimerExecutionTime != null && mTimerExecutionTime.id != timerTemp.id) {
                         new Alert ("", "The timer time already exists. Please change it before saving it.", "Close").Show ();
                         return;
                     }
@@ -623,72 +621,85 @@
                     }
                 }
 
-                timerTemp.Periodicity = "";
                 if (btnMonday.IsSelected == true && btnFriday.IsSelected == true && btnThursday.IsSelected == true && btnSunday.IsSelected == true && btnTuesday.IsSelected == true && btnSaturday.IsSelected == true && btnWednesday.IsSelected == true) {
-                    timerTemp.TimerType = TimerType.EveryDay;
+                    timerTemp.timerType = TimerType.EveryDay;
                 } else if (btnSunday.IsSelected == true && btnSaturday.IsSelected == true && btnMonday.IsSelected == false && btnFriday.IsSelected == false && btnThursday.IsSelected == false && btnTuesday.IsSelected == false && btnWednesday.IsSelected == false) {
-                    timerTemp.TimerType = TimerType.Weekend;
+                    timerTemp.timerType = TimerType.Weekend;
                 } else if (btnSunday.IsSelected == false && btnSaturday.IsSelected == false && btnMonday.IsSelected == true && btnFriday.IsSelected == true && btnThursday.IsSelected == true && btnTuesday.IsSelected == true && btnWednesday.IsSelected) {
-                    timerTemp.TimerType = TimerType.WorkingDay;
+                    timerTemp.timerType = TimerType.WorkingDay;
                 } else {
-                    timerTemp.TimerType = TimerType.Week;
-                    timerTemp.Periodicity = "";
+                    timerTemp.timerType = TimerType.Week;
                 }
                 if (btnSunday.IsSelected) {
-                    timerTemp.Periodicity += "0,";
+                    if (!timerTemp.whichDay.Contains (0)) {
+                        timerTemp.whichDay.Add (0);
+                    }
                 }
                 if (btnSaturday.IsSelected) {
-                    timerTemp.Periodicity += "6,";
+                     if (!timerTemp.whichDay.Contains (6)) {
+                        timerTemp.whichDay.Add (6);
+                    }
                 }
                 if (btnMonday.IsSelected) {
-                    timerTemp.Periodicity += "1,";
-                }
-                if (btnFriday.IsSelected) {
-                    timerTemp.Periodicity += "5,";
-                }
-                if (btnThursday.IsSelected) {
-                    timerTemp.Periodicity += "4,";
+                    if (!timerTemp.whichDay.Contains (1)) {
+                        timerTemp.whichDay.Add (1);
+                    }
                 }
                 if (btnTuesday.IsSelected) {
-                    timerTemp.Periodicity += "2,";
+                    if (!timerTemp.whichDay.Contains (2)) {
+                        timerTemp.whichDay.Add (2);
+                    }
+                   
                 }
                 if (btnWednesday.IsSelected) {
-                    timerTemp.Periodicity += "3,";
+                    if (!timerTemp.whichDay.Contains (3)) {
+                        timerTemp.whichDay.Add (3);
+                    }
+                }
+                if (btnThursday.IsSelected) {
+                    if (!timerTemp.whichDay.Contains (4)) {
+                        timerTemp.whichDay.Add (4);
+                    }
+                }
+                if (btnFriday.IsSelected) {
+                    if (!timerTemp.whichDay.Contains (5)) {
+                        timerTemp.whichDay.Add (5);
+                    }
+                }
+                if (string.IsNullOrEmpty (timerTemp.id)) {
+                    timerTemp.id =Guid.NewGuid().ToString ();
                 }
 
-                if (timerTemp.Periodicity [timerTemp.Periodicity.Length - 1] == ',') {
-                    timerTemp.Periodicity = timerTemp.Periodicity.Remove (timerTemp.Periodicity.Length - 1, 1);
-                }
+                DeviceDate deviceDate = new DeviceDate ();
+                deviceDate.gatewayId = SmartHome.Send.GatewayId;
+                deviceDate.homeId = SmartHome.Send.HomeId;
+                deviceDate.actions.AddRange (selectedDeviceList);
+                timerTemp.controlData = deviceDate;
 
-            
-
-                timerTemp.IsStart = true;
-                if (string.IsNullOrEmpty (timerTemp.Id)) {
-                    timerTemp.Id = Guid.NewGuid ().ToString ();
-                }
-                timerTemp.ControlDeviceData = Newtonsoft.Json.JsonConvert.SerializeObject (timerControlDeviceList);
                 MainPage.Loading.Start ("Saving...");
                 timerTemp.RoomName = btnRoomChoose.Text;
-                timerTemp.ExecutionTime = btnTimelbl.Text;
-                timerTemp.TimerName = etName.Text.Trim ();
+                timerTemp.executeUtcTime = btnTimelbl.Text;
+                timerTemp.timerName = etName.Text.Trim ();
                 System.Threading.Tasks.Task.Run (() => {
                     try {
-                        var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (timerTemp);
-                        ResponsePack revertObj = null;
+                        ResponsePackNew revertObj = null;
                         if (isEdit) {
-                            revertObj = MainPage.RequestHttps (API.EditTimer, requestJson);
-                        } else {   
-                            revertObj = MainPage.RequestHttps (API.AddTimer, requestJson);
+                            revertObj = SmartHome.Send.UpdateTimer (timerTemp);
+
+                        } else {
+                            revertObj = SmartHome.Send.AddTimer (timerTemp);
                         }
 
                         Application.RunOnMainThread (() => {
                             if (revertObj == null) {
                                 new Alert ("", "Unable to save data, please check the network.", "Close").Show ();
-                            } else if (revertObj.StateCode.ToUpper() == StateCode.SUCCESS) {
+                            } else if (revertObj.Code == StateCode.SUCCESS) {
                                 this.RemoveFromParent ();
                                 action (timerTemp);
                             } else {
-                                ShowErrorInfo (revertObj.StateCode);
+                                //鎻愮ず閿欒
+                                SmartHome.Method method = new SmartHome.Method ();
+                                method.ShowGetTimerListErrorInfo (revertObj.Data.ToString ());
                             }
                         });
                     } catch (Exception ex) {
@@ -702,486 +713,358 @@
             };
 
         }
-
-        
-
         /// <summary>
-        //(1)Success 鍒欒皟鐢ㄦ鎺ュ彛鎴愬姛
-        //(2)NoRecord 浣忓畢鏈粦瀹氱綉鍏筹紒
-        //(3)NoExist 浣忓畢涓嶅瓨鍦紒
-        //(4)Exist 鐢熸垚鐨凣uid宸插瓨鍦紒
+        /// 鍔犺浇鎴块棿璁惧鍒楄〃鐣岄潰
         /// </summary>
-        void ShowErrorInfo (string stateCodeStr)
-        {
-            string mes = "";
-            if (stateCodeStr == "NoRecord") {
-                // 浣忓畢鏈粦瀹氱綉鍏筹紒
-                mes = ErrorCode.HomeNoRecord;
-            } else if (stateCodeStr == "NoExist") {
-                //浣忓畢涓嶅瓨鍦紒
-                mes = ErrorCode.HomeNoExist;
-            } else if (stateCodeStr == "Exist") {
-                //鐢熸垚鐨凣uid宸插瓨鍦紒
-                mes = ErrorCode.GuidExist;
-            }  else if (stateCodeStr == ErrorCode.NetworkError) {
-                mes = ErrorCode.NetworkError;
-            } else {
-                mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr;
-
-            }
-            if (!string.IsNullOrEmpty (mes)) {
-                //Application.RunOnMainThread (() => {
-                new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
-                //});
-            }
-
-        }
-
-        private static void InitDeviceListView (List<Common> roomDeviceList, List<DeviceInfo> timerControlDeviceList, FrameLayout devicesListView)
+        /// <param name="deviceList">鎴块棿璁惧鍒楄〃</param>
+        private  void InitDeviceListView (List<Function> deviceList) 
         {
             devicesListView.RemoveAll ();
-            
+            //鎴块棿璁惧鍒楄〃
+            devicesListView.Height = Application.GetRealHeight (130 * deviceList.Count); 
             System.Threading.Tasks.Task.Run (() => {
                 try {
-                    int iniIndex = 0;
-                    for (int i = 0; i < timerControlDeviceList.Count;) {
-                        if (timerControlDeviceList [i] == null) {
-                            timerControlDeviceList.RemoveAt (i);
-                        } else {
-                            i++;
-                        }
-                    }
-
-#if __IOS__
-
-
-#else
-                  //鍒锋柊devicesListView 楂樺害
-                    devicesListView.Height = Application.GetRealHeight (130 * roomDeviceList.Count);
-#endif
-
-                    foreach (var deviceCommon2 in roomDeviceList) {
-                        if (deviceCommon2 == null)
-                            continue;
-                        var deviceCommon = new DeviceInfo () {
-                            DevicePath = deviceCommon2.SavePath, DeviceType = (int)deviceCommon2.Type, SubnetID = deviceCommon2.SubnetID,
-                            DeviceID = deviceCommon2.DeviceID, LoopID = deviceCommon2.LoopID, Command = (int)Command.SetSingleLight,
-                            Type = deviceCommon2.Type,Name = deviceCommon2.Name,SavePath = deviceCommon2.SavePath,
-                        };
-                        if (deviceCommon.Type == DeviceType.LightDimming || deviceCommon.Type == DeviceType.FanModule ||
-                            deviceCommon.Type == DeviceType.LightSwitch || deviceCommon.Type == DeviceType.LightEnergySwitch || deviceCommon.Type == DeviceType.LightEnergySocket || deviceCommon.Type == DeviceType.LightSwitchSocket ||
-                            deviceCommon.Type == DeviceType.CurtainModel || deviceCommon.Type == DeviceType.CurtainRoller || deviceCommon.Type == DeviceType.CurtainTrietex) { 
-                            Application.RunOnMainThread (() => {
-                                try {
-                                    DeviceInfo timerControlDevice = null;
-                                    try {
-                                        timerControlDevice = timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath);
-                                    } catch { }
-                                    if (timerControlDevice != null)
-                                        deviceCommon.SendBytes = timerControlDevice.SendBytes;
-                                    var DeviceRowView = new RowLayout () {
-                                        Y = Application.GetRealHeight (130 * iniIndex),
+                        Application.RunOnMainThread (() => {
+                            try {
+                                string value = "";
+                                for (int i = 0; i < deviceList.Count; i++) {
+                                    var device = deviceList [i];
+                                    var deviceRowView = new RowLayout () {
+                                        Y = Application.GetRealHeight (130 * i),
                                         Radius = 1,
                                         BorderColor = SkinStyle.Current.Transparent,
                                         BorderWidth = (uint)Application.GetMinRealAverage (5),
                                         Height = Application.GetRealHeight (110),
-                                        Tag = deviceCommon.Type + "_" + deviceCommon.CommonLoopID
+                                        Tag = device,
                                     };
-                                    devicesListView.AddChidren (DeviceRowView);
-                                    iniIndex++;
+                                    devicesListView.AddChidren (deviceRowView);
 
                                     var btnChoose = new Button () {
-                                        Width = Application.GetRealHeight (60),
-                                        Height = Application.GetRealHeight (60),
+                                        Width = Application.GetRealWidth (60),
+                                        Height = Application.GetRealWidth (60),
                                         X = Application.GetRealWidth (40),
                                         Gravity = Gravity.CenterVertical,
                                         UnSelectedImagePath = "CrabtreeAdd/Choose.png",
                                         SelectedImagePath = "CrabtreeAdd/ChooseOn.png",
-                                        IsSelected = timerControlDevice != null,
-                                        //Tag = deviceFilePath
+                                        Tag = device,
                                     };
-                                    DeviceRowView.AddChidren (btnChoose);
+                                    deviceRowView.AddChidren (btnChoose);
 
                                     Button btnDeviceName = new Button () {
                                         Width = Application.GetRealWidth (342),
                                         Height = Application.GetRealHeight (70),
-                                        Text = deviceCommon.Name,
+                                        Text = device.name,
                                         TextAlignment = TextAlignment.CenterLeft,
                                         X = btnChoose.Right + Application.GetRealWidth (10),
                                         Y = Application.GetRealHeight (20),
                                         SelectedTextColor = SkinStyle.Current.TextColor1,
                                         TextColor = SkinStyle.Current.TextColor1,
                                     };
-                                    DeviceRowView.AddChidren (btnDeviceName);
-                                    Button tempSwitch = new Button () {
-                                        Width = Application.GetMinRealAverage (90),
-                                        Height = Application.GetMinRealAverage (53),
+                                    deviceRowView.AddChidren (btnDeviceName);
+                                    Button tempSwitch = new Button {
+                                        Width = Application.GetRealWidth (90),
+                                        Height = Application.GetRealWidth (53),
                                         X = Application.GetRealWidth (640 - 90 - 20),
                                         Gravity = Gravity.CenterVertical,
                                         UnSelectedImagePath = "Item/SwitchClose.png",
                                         SelectedImagePath = "Item/SwitchOpen.png",
-                                        Tag = deviceCommon.CommonLoopID,
+                                        Tag = device,
                                     };
-                                    DeviceRowView.AddChidren (tempSwitch);
+                                    deviceRowView.AddChidren (tempSwitch);
 
+                                    switch (device.spk) {
+                                    case "light.dimming": {
+                                            #region 璋冨厜鍣ˋ
+                                            tempSwitch.RemoveFromParent ();
 
-                                    if (deviceCommon.Type == DeviceType.FanModule) {
-                                        #region 椋庢墖
-                                        tempSwitch.RemoveFromParent ();
-                                        //FanModule fanModule = deviceCommon as FanModule;
+                                            deviceRowView.Height = Application.GetRealHeight (130);
+                                            btnChoose.Y = Application.GetRealHeight (20);
+                                            btnDeviceName.Y = Application.GetRealHeight (15);
 
-                                        DeviceRowView.Height = Application.GetRealHeight (130);
-                                        btnChoose.Y = Application.GetRealHeight (5);
-                                        btnDeviceName.Y = Application.GetRealHeight (0);
-
-                                        var btnFanLevel = new Button () {
-                                            X = btnChoose.X + Application.GetRealWidth (10),
-                                            Y = btnChoose.Bottom,
-                                            Width = Application.GetRealWidth (75),
-                                            Height = Application.GetRealHeight (45),
-                                            TextColor = SkinStyle.Current.TextColor1,
-                                            SelectedTextColor = SkinStyle.Current.TextColor1,
-                                            Text = "OFF",
-                                            TextAlignment = TextAlignment.CenterLeft,
-                                        };
-                                        DeviceRowView.AddChidren (btnFanLevel);
-
-                                        var wi = Application.GetRealWidth (480 / 8);
-                                        for (int i = 0; i < 9; i++) {
-                                            var btnFanLevelTip = new Button () {
-                                                X = btnFanLevel.Right + wi * i - Application.GetRealWidth (0),
-                                                Y = btnFanLevel.Y - Application.GetRealHeight (5),
-                                                Width = wi,
-                                                Height = Application.GetRealHeight (27),
-                                                TextAlignment = TextAlignment.TopLeft,
-                                                Text = i.ToString (),
+                                            var btnLevel = new Button () {
+                                                X = btnChoose.X + Application.GetRealWidth (10),
+                                                Y = btnChoose.Bottom,
+                                                Width = Application.GetRealWidth (75),
+                                                Height = Application.GetRealHeight (45),
                                                 TextColor = SkinStyle.Current.TextColor1,
-                                                TextSize = 12,
+                                                SelectedTextColor = SkinStyle.Current.TextColor1,
+                                                Text = "OFF",
+                                                TextAlignment = TextAlignment.CenterLeft,
                                             };
-                                            DeviceRowView.AddChidren (btnFanLevelTip);
-                                            if (i == 0) {
-                                                btnFanLevelTip.Text = "OFF";
-                                                btnFanLevelTip.TextSize = 11;
-                                            }
-                                        }
+                                            deviceRowView.AddChidren (btnLevel);
 
-                                        var fanLevel = new HorizontalSeekBar () {
-                                            X = btnFanLevel.Right,
-                                            Y = btnFanLevel.Y + Application.GetRealHeight (10),
-                                            Width = Application.GetRealWidth (492),
-                                            Height = Application.GetRealHeight (45),
-                                            ThumbColor = SkinStyle.Current.ThumbColor,
-                                            ProgressColor = SkinStyle.Current.SelectedColor,
-                                            ThumbRadius = Application.GetRealWidth (3),
-                                            Max = 8,
-                                            Progress = 2,// (int)(deviceCommon.SendBytes[1]),
+                                            var levelBar = new HorizontalSeekBar () {
+                                                X = btnLevel.Right,
+                                                Y = btnLevel.Y,
+                                                Width = Application.GetRealWidth (460),
+                                                Height = Application.GetRealHeight (45),
+                                                ThumbColor = SkinStyle.Current.ThumbColor,
+                                                ProgressColor = SkinStyle.Current.SelectedColor,
+                                                ThumbRadius = 6,
+                                                Max = 100,
+                                            };
+                                            deviceRowView.AddChidren (levelBar);
 
-                                        };
-                                        DeviceRowView.AddChidren (fanLevel);
-                                        fanLevel.ProgressChanged += (sender, e) => {
-                                            try {
+                                            levelBar.ProgressChanged += (sender, e) => {
                                                 if (!btnChoose.IsSelected) {
                                                     btnChoose.IsSelected = true;
-                                                }
-                                                deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)(fanLevel.Progress) };
-                                                if (timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath) == null) {
-                                                    timerControlDeviceList.Add (deviceCommon);
-                                                } else {
-                                                    timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath).SendBytes = new byte [] { deviceCommon.LoopID, (byte)fanLevel.Progress };
                                                 }
                                                 if (e == 0) {
-                                                    btnFanLevel.Text = "OFF";
+                                                    btnLevel.Text = "OFF";
                                                 } else {
-                                                    btnFanLevel.Text = "S" + e.ToString ();
+                                                    btnLevel.Text = e.ToString () + "%";
                                                 }
-                                            } catch (Exception ex) {
-                                                Utlis.WriteLine ("ss1: " + ex.Message);
-                                            }
-                                        };
+                                                value = e.ToString ();
+                                                DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
+                                            };
 
-                                        if (timerControlDevice != null) {
-                                            if (timerControlDevice.SendBytes [1] == 0) {
-                                                btnFanLevel.Text = "OFF";
-                                            } else {
-                                                btnFanLevel.Text = "S" + timerControlDevice.SendBytes [1].ToString ();
-                                            }
-                                            fanLevel.Progress = timerControlDevice.SendBytes [1];
-                                        }
+                                            btnChoose.MouseUpEventHandler += (dds, ddss) => {
+                                                btnChoose.IsSelected = !btnChoose.IsSelected;
+                                                DeviceDateFun (btnChoose.Tag as Function, "0", btnChoose.IsSelected);
+                                            };
 
-                                        fanLevel.MouseDownEventHandler += (sss, ff) => {
-                                            try {
-                                                timerControlDevice = timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath);
-                                                if (!btnChoose.IsSelected) {
-                                                    btnChoose.IsSelected = true;
-                                                }
-                                                if (timerControlDevice == null) {
-                                                    deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)(fanLevel.Progress) };
-                                                    if (timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath) == null) {
-                                                        timerControlDeviceList.Add (deviceCommon);
-                                                    } else {
-                                                        timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath).SendBytes = new byte [] { deviceCommon.LoopID, (byte)fanLevel.Progress };
+                                            if (IsEdit) {
+                                                try { 
+                                                var dev = selectedDeviceList.Find ((c) => c.deviceId == Int64.Parse (device.deviceId));
+                                                if (dev != null) {
+                                                    if (!btnChoose.IsSelected) {
+                                                        btnChoose.IsSelected = true;
+                                                    }
+                                                    for (int a = 0; a < dev.attributes.Count; a++) {
+                                                        var fundev = dev.attributes [a];
+                                                        if (fundev.value == "0") {
+                                                            btnLevel.Text = "OFF";
+                                                        } else {
+                                                            btnLevel.Text = fundev.value + "%";
+                                                        }
+                                                        levelBar.Progress = int.Parse (fundev.value);
                                                     }
                                                 }
-                                                timerControlDevice.SendBytes [1] = (byte)fanLevel.Progress;
-                                            } catch { }
-                                        };
-
-                                        btnChoose.MouseUpEventHandler += (dds, ddss) => {
-                                            btnChoose.IsSelected = !btnChoose.IsSelected;
-                                            if (btnChoose.IsSelected) {
-                                                deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)(fanLevel.Progress) };
-                                                if (timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath) == null) {
-                                                    timerControlDeviceList.Add (deviceCommon);
-                                                } else {
-                                                    timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath).SendBytes = new byte [] { deviceCommon.LoopID, (byte)fanLevel.Progress };
-                                                }
-                                            } else {
-                                                timerControlDeviceList.Remove (timerControlDeviceList.Find ((obj) => obj.DeviceType == (int)deviceCommon.Type &&
-                                                                                                            obj.SubnetID == deviceCommon.SubnetID && obj.DeviceID == deviceCommon.DeviceID && obj.LoopID == deviceCommon.LoopID));
+                                                } catch { }
                                             }
-                                        };
-
-                                        #endregion
-                                    } else if (deviceCommon.Type == DeviceType.LightDimming || deviceCommon.Type == DeviceType.LightDALI) {
-                                        #region 璋冨厜鍣ˋ
-                                        tempSwitch.RemoveFromParent ();
-
-                                        DeviceRowView.Height = Application.GetRealHeight (130);
-                                        btnChoose.Y = Application.GetRealHeight (20);
-                                        btnDeviceName.Y = Application.GetRealHeight (15);
-
-                                        var btnLevel = new Button () {
-                                            X = btnChoose.X + Application.GetRealWidth (10),
-                                            Y = btnChoose.Bottom,
-                                            Width = Application.GetRealWidth (75),
-                                            Height = Application.GetRealHeight (45),
-                                            TextColor = SkinStyle.Current.TextColor1,
-                                            SelectedTextColor = SkinStyle.Current.TextColor1,
-                                            Text = "OFF",
-                                            TextAlignment = TextAlignment.CenterLeft,
-                                        };
-                                        DeviceRowView.AddChidren (btnLevel);
-
-                                        var levelBar = new HorizontalSeekBar () {
-                                            X = btnLevel.Right,
-                                            Y = btnLevel.Y,
-                                            Width = Application.GetRealWidth (460),
-                                            Height = Application.GetRealHeight (45),
-                                            ThumbColor = SkinStyle.Current.ThumbColor,
-                                            ProgressColor = SkinStyle.Current.SelectedColor,
-                                            ThumbRadius = 6,
-                                            Max = 100,
-                                        };
-                                        DeviceRowView.AddChidren (levelBar);
-                                        levelBar.ProgressChanged += (sender, e) => {
-                                            if (!btnChoose.IsSelected) {
-                                                btnChoose.IsSelected = true;
-                                            }
-                                            deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)levelBar.Progress };
-                                            //timerControlDevice = deviceCommon;
-                                            if (timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath) == null) {
-                                                timerControlDeviceList.Add (deviceCommon);
-                                            } else {
-                                                timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath).SendBytes = new byte [] { deviceCommon.LoopID, (byte)levelBar.Progress };
-                                            }
-                                            if (e == 0) {
-                                                btnLevel.Text = "OFF";
-                                            } else {
-                                                btnLevel.Text = e.ToString () + "%";
-                                            }
-                                        };
-
-
-                                        if (timerControlDevice != null) {
-                                            if (timerControlDevice.SendBytes [1] == 0) {
-                                                btnLevel.Text = "OFF";
-                                            } else {
-                                                btnLevel.Text = timerControlDevice.SendBytes [1].ToString () + "%";
-                                            }
-                                            levelBar.Progress = timerControlDevice.SendBytes [1];
+                                            #endregion
                                         }
+                                        break;
+                                    case "light.switch": {
+                                            #region 缁х數鍣�
+                                            tempSwitch.MouseUpEventHandler += (sender3, e3) => {
+                                                tempSwitch.IsSelected = !tempSwitch.IsSelected;
 
-                                        levelBar.MouseDownEventHandler += (sss, ff) => {
-                                            try {
-                                                timerControlDevice = timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath);
-                                                if (!btnChoose.IsSelected) {
-                                                    btnChoose.IsSelected = true;
-                                                }
-                                                if (timerControlDevice == null) {
-                                                    deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)(levelBar.Progress) };
-                                                    if (timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath) == null) {
-                                                        timerControlDeviceList.Add (deviceCommon);
-                                                    } else {
-                                                        timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath).SendBytes = new byte [] { deviceCommon.LoopID, (byte)levelBar.Progress };
-                                                    }
-                                                }
-                                            } catch { }
-                                        };
-                                        btnChoose.MouseUpEventHandler += (dds, ddss) => {
-                                            btnChoose.IsSelected = !btnChoose.IsSelected;
-                                            if (btnChoose.IsSelected) {
-                                                deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)(levelBar.Progress) };
-                                                if (timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath) == null) {
-                                                    timerControlDeviceList.Add (deviceCommon);
-                                                } else {
-                                                    timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath).SendBytes = new byte [] { deviceCommon.LoopID, (byte)levelBar.Progress };
-                                                }
-                                            } else {
-                                                timerControlDeviceList.Remove (timerControlDeviceList.Find ((obj) => obj.DeviceType == (int)deviceCommon.Type &&
-                                                                                                            obj.SubnetID == deviceCommon.SubnetID && obj.DeviceID == deviceCommon.DeviceID && obj.LoopID == deviceCommon.LoopID));
-                                            }
-                                        };
-                                        #endregion
-                                    } else if (deviceCommon.Type == DeviceType.LightSwitch || deviceCommon.Type == DeviceType.LightEnergySwitch || deviceCommon.Type == DeviceType.LightEnergySocket || deviceCommon.Type == DeviceType.LightSwitchSocket) {
-                                        #region 缁х數鍣�
-                                        //LightSwitch switchLight = deviceCommon as LightSwitch;
-                                        //tempSwitch.IsSelected = switchLight.CurrentBrightness == 100 ? true : false;
-
-                                        tempSwitch.MouseUpEventHandler += (sender3, e3) => {
-                                            tempSwitch.IsSelected = !tempSwitch.IsSelected;
-                                            var CurrentBrightness = 0;
-                                            if (tempSwitch.IsSelected) {
-                                                CurrentBrightness = 100;
-                                            } else {
-                                                CurrentBrightness = 0;
-                                            }
-                                            if (!btnChoose.IsSelected) {
-                                                btnChoose.IsSelected = true;
-                                            }
-                                            deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)CurrentBrightness };
-                                            if (timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath) == null) {
-                                                timerControlDeviceList.Add (deviceCommon);
-                                            } else {
-                                                timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath).SendBytes = new byte [] { deviceCommon.LoopID, (byte)CurrentBrightness };
-                                            }
-                                        };
-                                        if (timerControlDevice != null) {
-                                            try {
-                                                tempSwitch.IsSelected = timerControlDevice.SendBytes [1] == 100;
-                                            } catch { }
-                                        }
-                                        btnChoose.MouseUpEventHandler += (dds, ddss) => {
-                                            btnChoose.IsSelected = !btnChoose.IsSelected;
-                                            if (btnChoose.IsSelected) {
-                                                var CurrentBrightness = 0;
                                                 if (tempSwitch.IsSelected) {
-                                                    CurrentBrightness = 100;
+                                                    value = "on";
                                                 } else {
-                                                    CurrentBrightness = 0;
+                                                    value = "off";
                                                 }
-                                                deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)CurrentBrightness };
-                                                if (timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath) == null)
-                                                    timerControlDeviceList.Add (deviceCommon);
-                                                else {
-                                                    timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath).SendBytes = new byte [] { deviceCommon.LoopID, (byte)CurrentBrightness };
+                                                if (!btnChoose.IsSelected) {
+                                                    btnChoose.IsSelected = true;
                                                 }
-                                            } else {
-                                                timerControlDeviceList.Remove (timerControlDeviceList.Find ((obj) => obj.DeviceType == (int)deviceCommon.Type &&
-                                                                                                            obj.SubnetID == deviceCommon.SubnetID && obj.DeviceID == deviceCommon.DeviceID && obj.LoopID == deviceCommon.LoopID));
-                                            }
-                                        };
-                                        #endregion
-                                    } else if (deviceCommon.Type == DeviceType.CurtainModel || deviceCommon.Type == DeviceType.CurtainTrietex || deviceCommon.Type == DeviceType.CurtainRoller) {
-                                        #region 绐楀笜
-                                        //2020-07-09 鍒锋柊鎺у埗鎿嶄綔鐮�
-                                        deviceCommon.Command = (int)Command.UpdataCurtainModelStutas;
-                                        tempSwitch.RemoveFromParent ();
-                                        var tempSwitch1 = new Button () {
-                                            Width = Application.GetMinRealAverage (90),
-                                            Height = Application.GetMinRealAverage (53),
-                                            X = Application.GetRealWidth (640 - 90 - 20),
-                                            Radius = 5,
-                                            BorderColor = SkinStyle.Current.Transparent,
-                                            BorderWidth = 1,
-                                            Gravity = Gravity.CenterVertical,
-                                            TextAlignment = TextAlignment.Center,
-                                            BackgroundColor = SkinStyle.Current.ButtonColor,
-                                            SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
-                                            Text = "CLOSE",
-                                            Tag = deviceCommon.CommonLoopID,
-                                        };
-                                        DeviceRowView.AddChidren (tempSwitch1);
+                                                DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
 
+                                            };
+                                        
+                                            btnChoose.MouseUpEventHandler += (dds, ddss) => {
+                                                btnChoose.IsSelected = !btnChoose.IsSelected;
+                                                if (btnChoose.IsSelected) {
+                                                    value = "on";
+                                                } else {
+                                                    value = "off";
+                                                }
+                                                DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
 
-                                        tempSwitch1.MouseUpEventHandler += (sender3, e3) => {
-                                            tempSwitch1.IsSelected = !tempSwitch1.IsSelected;
+                                            };
 
-                                            var CurrentBrightness = 0;
-                                            if (tempSwitch1.IsSelected) {
-                                                CurrentBrightness = 1;
-                                                tempSwitch1.Text = "OPEN";
-                                                tempSwitch1.BackgroundColor = SkinStyle.Current.SelectedColor;
-                                            } else {
-                                                CurrentBrightness = 2;
-                                                tempSwitch1.Text = "CLOSE";
-                                                tempSwitch1.BackgroundColor = SkinStyle.Current.ButtonColor;
+                                            if (IsEdit) {
+                                                try {
+                                                    var dev = selectedDeviceList.Find ((c) => c.deviceId == Int64.Parse (device.deviceId));
+                                                    if (dev != null) {
+                                                        if (!btnChoose.IsSelected) {
+                                                            btnChoose.IsSelected = true;
+                                                        }
+                                                        for (int a = 0; a < dev.attributes.Count; a++) {
+                                                            var fundev = dev.attributes [a];
+                                                            if (fundev.value == "on") {
+                                                                tempSwitch.IsSelected = true;
+                                                            } else {
+                                                                tempSwitch.IsSelected = false;
+                                                            }
+                                                        }
+                                                    }
+                                                } catch { }
                                             }
-                                            if (!btnChoose.IsSelected) {
-                                                btnChoose.IsSelected = true;
-                                            }
-                                            deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)CurrentBrightness };
-                                            //2020-07-09
-                                            DeviceInfo mDeviceInfo = timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath);
-                                            if (mDeviceInfo == null) {
-                                                timerControlDeviceList.Add (deviceCommon);
-                                            } else {
-                                                mDeviceInfo.Command = (int)Command.UpdataCurtainModelStutas;
-                                                mDeviceInfo.SendBytes = new byte [] { deviceCommon.LoopID, (byte)CurrentBrightness };
-                                            }
-                                        };
+                                            #endregion
+                                        }
+                                        break;
+                                    case "curtain.roller":
+                                    case "curtain.trietex":
+                                    case "curtain.switch": {
+                                            #region 绐楀笜
+                                            tempSwitch.RemoveFromParent ();
+                                            var tempSwitch1 = new Button () {
+                                                Width = Application.GetRealWidth (90),
+                                                Height = Application.GetRealWidth (53),
+                                                X = Application.GetRealWidth (640 - 90 - 20),
+                                                Radius = 5,
+                                                BorderColor = SkinStyle.Current.Transparent,
+                                                BorderWidth = 1,
+                                                Gravity = Gravity.CenterVertical,
+                                                TextAlignment = TextAlignment.Center,
+                                                BackgroundColor = SkinStyle.Current.ButtonColor,
+                                                SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
+                                                Text = "CLOSE",
+                                                Tag = device,
+                                            };
+                                            deviceRowView.AddChidren (tempSwitch1);
 
-                                        if (timerControlDevice != null) {
-                                            try {
-                                                if (timerControlDevice.SendBytes [1] == 1) {
+                                            tempSwitch1.MouseUpEventHandler += (sender3, e3) => {
+                                                tempSwitch1.IsSelected = !tempSwitch1.IsSelected;
+                                                if (tempSwitch1.IsSelected) {
+                                                    value = "on";
                                                     tempSwitch1.Text = "OPEN";
-                                                    tempSwitch1.IsSelected = true;
                                                     tempSwitch1.BackgroundColor = SkinStyle.Current.SelectedColor;
                                                 } else {
+                                                    value = "off";
                                                     tempSwitch1.Text = "CLOSE";
-                                                    tempSwitch1.IsSelected = false;
                                                     tempSwitch1.BackgroundColor = SkinStyle.Current.ButtonColor;
                                                 }
-                                            } catch { }
-                                        }
-
-                                        btnChoose.MouseUpEventHandler += (dds, ddss) => {
-                                            btnChoose.IsSelected = !btnChoose.IsSelected;
-                                            if (btnChoose.IsSelected) {
-                                                var CurrentBrightness = 0;
-                                                if (tempSwitch.IsSelected) {
-                                                    CurrentBrightness = 1;
-                                                } else {
-                                                    CurrentBrightness = 2;
+                                                if (!btnChoose.IsSelected) {
+                                                    btnChoose.IsSelected = true;
                                                 }
-                                                deviceCommon.SendBytes = new byte [] { deviceCommon.LoopID, (byte)CurrentBrightness };
+                                                DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
 
-                                                //if (timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath) == null) {
-                                                //    timerControlDeviceList.Add (deviceCommon);
-                                                //} else {
-                                                //    timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath).SendBytes = new byte [] { deviceCommon.LoopID, (byte)CurrentBrightness };
-                                                //}
 
-                                                //2020-07-09
-                                                DeviceInfo mDeviceInfo = timerControlDeviceList.Find ((obj) => obj.DevicePath == deviceCommon.SavePath);
-                                                if (mDeviceInfo == null) {
-                                                    timerControlDeviceList.Add (deviceCommon);
+                                            };
+
+                                            btnChoose.MouseUpEventHandler += (dds, ddss) => {
+                                                btnChoose.IsSelected = !btnChoose.IsSelected;
+                                                if (tempSwitch1.IsSelected) {
+                                                    value = "on";
                                                 } else {
-                                                    mDeviceInfo.Command = (int)Command.UpdataCurtainModelStutas;
-                                                    mDeviceInfo.SendBytes = new byte [] { deviceCommon.LoopID, (byte)CurrentBrightness };
+                                                    value = "off";
                                                 }
-                                            } else {
-                                                timerControlDeviceList.Remove (timerControlDeviceList.Find ((obj) => obj.DeviceType == (int)deviceCommon.Type &&
-                                                                                                            obj.SubnetID == deviceCommon.SubnetID && obj.DeviceID == deviceCommon.DeviceID && obj.LoopID == deviceCommon.LoopID));
+                                                DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
+                                            };
+
+                                            if (IsEdit) {
+                                                try {
+                                                    var dev = selectedDeviceList.Find ((c) => c.deviceId == Int64.Parse (device.deviceId));
+                                                    if (dev != null) {
+                                                        if (!btnChoose.IsSelected) {
+                                                            btnChoose.IsSelected = true;
+                                                        }
+                                                        for (int a = 0; a < dev.attributes.Count; a++) {
+                                                            var fundev = dev.attributes [a];
+                                                            if (fundev.value == "on") {
+                                                                tempSwitch1.IsSelected = true;
+                                                                tempSwitch1.Text = "OPEN";
+                                                            } else {
+                                                                tempSwitch1.IsSelected = false;
+                                                                tempSwitch1.Text = "CLOSE";
+                                                            }
+                                                        }
+                                                    }
+                                                } catch { }
                                             }
-                                        };
-                                        #endregion
+                                            #endregion
+                                        }
+                                        break;
+                                    case "electrical.socket": {
+
+                                        }
+                                        break;
+                                    case "fan": {
+                                            #region 椋庢墖
+                                            tempSwitch.RemoveFromParent ();
+                                            deviceRowView.Height = Application.GetRealHeight (130);
+                                            btnChoose.Y = Application.GetRealHeight (5);
+                                            btnDeviceName.Y = Application.GetRealHeight (0);
+
+                                            var btnFanLevel = new Button () {
+                                                X = btnChoose.X + Application.GetRealWidth (10),
+                                                Y = btnChoose.Bottom,
+                                                Width = Application.GetRealWidth (75),
+                                                Height = Application.GetRealHeight (45),
+                                                TextColor = SkinStyle.Current.TextColor1,
+                                                SelectedTextColor = SkinStyle.Current.TextColor1,
+                                                Text = "OFF",
+                                                TextAlignment = TextAlignment.CenterLeft,
+                                            };
+                                            deviceRowView.AddChidren (btnFanLevel);
+
+                                            var wi = Application.GetRealWidth (480 / 8);
+                                            for (int a = 0; a < 9; a++) {
+                                                var btnFanLevelTip = new Button () {
+                                                    X = btnFanLevel.Right + wi * a - Application.GetRealWidth (0),
+                                                    Y = btnFanLevel.Y - Application.GetRealHeight (5),
+                                                    Width = wi,
+                                                    Height = Application.GetRealHeight (27),
+                                                    TextAlignment = TextAlignment.TopLeft,
+                                                    Text = a.ToString (),
+                                                    TextColor = SkinStyle.Current.TextColor1,
+                                                    TextSize = 12,
+                                                };
+                                                deviceRowView.AddChidren (btnFanLevelTip);
+                                                if (a == 0) {
+                                                    btnFanLevelTip.Text = "OFF";
+                                                    btnFanLevelTip.TextSize = 11;
+                                                }
+                                            }
+
+                                            var fanLevel = new HorizontalSeekBar () {
+                                                X = btnFanLevel.Right,
+                                                Y = btnFanLevel.Y + Application.GetRealHeight (10),
+                                                Width = Application.GetRealWidth (492),
+                                                Height = Application.GetRealHeight (45),
+                                                ThumbColor = SkinStyle.Current.ThumbColor,
+                                                ProgressColor = SkinStyle.Current.SelectedColor,
+                                                ThumbRadius = Application.GetRealWidth (3),
+                                                Max = 8,
+                                                Progress = 2,
+
+                                            };
+                                            deviceRowView.AddChidren (fanLevel);
+                                            fanLevel.ProgressChanged += (sender, e) => {
+                                                value = e.ToString ();
+                                                DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
+                                            };
+
+                                            btnChoose.MouseUpEventHandler += (dds, ddss) => {
+                                                btnChoose.IsSelected = !btnChoose.IsSelected;
+                                                DeviceDateFun (btnChoose.Tag as Function, "0", btnChoose.IsSelected);
+                                            };
+                                            if (IsEdit) {
+                                                try {
+                                                    var dev = selectedDeviceList.Find ((c) => c.deviceId == Int64.Parse (device.deviceId));
+                                                    if (dev != null) {
+                                                        if (!btnChoose.IsSelected) {
+                                                            btnChoose.IsSelected = true;
+                                                        }
+                                                        for (int a = 0; a < dev.attributes.Count; a++) {
+                                                            var fundev = dev.attributes [a];
+                                                            if (fundev.value == "0") {
+                                                                //btnLevel.Text = "OFF";
+                                                            } else {
+                                                                fanLevel.Progress = int.Parse (fundev.value);
+                                                            }
+                                                           
+                                                        }
+                                                    }
+                                                } catch { }
+                                            }
+                                            #endregion
+                                        }
+                                        break;
                                     }
-                                }catch(Exception ex) {
-                                    Utlis.WriteLine ("AddSchedule error : "+ ex.Message);
+
+                                
+                                       
+                                    
                                 }
-                            });
-                        }
-                    }
+                            } catch (Exception ex) {
+                                Utlis.WriteLine ("AddSchedule error : " + ex.Message);
+                            }
+                        });
+
+                    
                 } catch (Exception ex) {
                     Utlis.WriteLine (ex.Message);
                 } finally {
@@ -1191,5 +1074,54 @@
                 }
             });
         }
+        /// <summary>
+        /// 璁惧鏁版嵁杞崲
+        /// </summary>
+        /// <param name="function"></param>
+        /// <param name="value">寮�鍏崇姸鎬佸��</param>
+        /// <param name="isSelected">鍒ゆ柇鎺т欢鐐瑰嚮鐘舵��</param>
+        public  void DeviceDateFun (Function function, string value, bool isSelected)
+        {
+            string keyValue = "";
+            switch (function.spk) {
+            case "curtain.trietex":
+            case "curtain.roller":
+            case "light.switch":
+            case "curtain.switch":
+            case "electrical.socket": {
+                    keyValue = "on_off";
+                }
+                break;
+            case "light.dimming": {
+                    keyValue = "brightness";
+                }
+                break;
+
+            }
+            Fun fun = new Fun ();
+            fun.deviceId = Int64.Parse (function.deviceId);
+            fun.spk = function.spk;
+            fun.attributes.Add (new Attributes { key= keyValue, value = value });
+            fun.bus.addresses = function.bus.addresses;
+            fun.bus.loopId = function.bus.loopId;
+            AddDeviceList (fun, isSelected);
+        }
+        /// <summary>
+        /// 娣诲姞璁惧鏁版嵁鍒板垪琛ㄩ噷
+        /// </summary>
+        /// <param name="fun"></param>
+        /// <param name="isSelected">鍒ゆ柇鎺т欢鐐瑰嚮鐘舵��</param>
+        public  void AddDeviceList (Fun fun, bool isSelected)
+        {
+            var device = selectedDeviceList.Find ((dev) => dev.deviceId == fun.deviceId);
+            if (device != null) {
+                selectedDeviceList.Remove (device);
+            }
+            if (isSelected) {
+                selectedDeviceList.Add (fun);
+            }
+        }
+
+      
     }
 }

--
Gitblit v1.8.0