CrabtreeOn,印度客户定制APP,迁移2.0平台版本
1
wxr
2023-03-31 d53e6af2c5f17838fa79659614b15a2a1f383399
Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Shared.SimpleControl.Phone.Music;
namespace Shared.SimpleControl.Phone
@@ -176,65 +177,69 @@
            timeView.AddChidren (btnTimelbl);
            btnTimelbl.MouseUpEventHandler += (timeSender, eee) => {
                var dialog = new Dialog ();
                var chooseTimeBodyView = new FrameLayout () {
                };
                dialog.AddChidren (chooseTimeBodyView);
                var chooseTime = new TimeView () {
                    Y = Application.GetRealHeight (1136 - 420 - 90),
                    Height = Application.GetRealHeight (420),
                    BackgroundColor = 0xFFD7D7D7,
                    //BackgroundColor = SkinStyle.Current.ViewColor,
                };
                chooseTimeBodyView.AddChidren (chooseTime);
                ShowTimePickerView (btnTimelbl);
                return;
                var bottomView = new FrameLayout () {
                    Y = chooseTime.Bottom,
                    Height = Application.GetRealHeight (90) + 1,
                    BackgroundColor = 0xFFD7D7D7,
                };
                chooseTimeBodyView.AddChidren (bottomView);
                //var dialog = new Dialog ();
                //var chooseTimeBodyView = new FrameLayout () {
                //};
                //dialog.AddChidren (chooseTimeBodyView);
                var btnCloseTime = new Button () {
                    Y = 1,
                    Width = Application.GetRealWidth (320),
                    BackgroundColor = SkinStyle.Current.ViewColor,
                    TextID = R.MyInternationalizationString.Close,
                    TextAlignment = TextAlignment.Center,
                    TextColor = SkinStyle.Current.TextColor1,
                };
                bottomView.AddChidren (btnCloseTime);
                btnCloseTime.MouseUpEventHandler += (ddf, dddf) => {
                    chooseTimeBodyView.RemoveAll ();
                    chooseTimeBodyView.RemoveFromParent ();
                    dialog.Close ();
                };
                //var chooseTime = new TimeView () {
                //    Y = Application.GetRealHeight (1136 - 420 - 90),
                //    Height = Application.GetRealHeight (420),
                //    BackgroundColor = 0xFFD7D7D7,
                //    //BackgroundColor = SkinStyle.Current.ViewColor,
                //};
                //chooseTimeBodyView.AddChidren (chooseTime);
                var btnSaveTime = new Button () {
                    X = btnCloseTime.Right + 1,
                    Y = 1,
                    Width = Application.GetRealWidth (320),
                    TextID = R.MyInternationalizationString.SAVE,
                    BackgroundColor = SkinStyle.Current.ViewColor,
                    TextAlignment = TextAlignment.Center,
                    TextColor = SkinStyle.Current.TextColor1,
                };
                bottomView.AddChidren (btnSaveTime);
                btnSaveTime.MouseUpEventHandler += (sender3, e3) => {
                   // 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";
                    //} else {
                    //    chooseTimeString = chooseTime.Hour + ":" + chooseTime.Minute + " AM";
                    //}
                    btnTimelbl.Text = chooseTimeString;
                    dialog.Close ();
                };
                //var bottomView = new FrameLayout () {
                //    Y = chooseTime.Bottom,
                //    Height = Application.GetRealHeight (90) + 1,
                //    BackgroundColor = 0xFFD7D7D7,
                //};
                //chooseTimeBodyView.AddChidren (bottomView);
                //var btnCloseTime = new Button () {
                //    Y = 1,
                //    Width = Application.GetRealWidth (320),
                //    BackgroundColor = SkinStyle.Current.ViewColor,
                //    TextID = R.MyInternationalizationString.Close,
                //    TextAlignment = TextAlignment.Center,
                //    TextColor = SkinStyle.Current.TextColor1,
                //};
                //bottomView.AddChidren (btnCloseTime);
                //btnCloseTime.MouseUpEventHandler += (ddf, dddf) => {
                //    chooseTimeBodyView.RemoveAll ();
                //    chooseTimeBodyView.RemoveFromParent ();
                //    dialog.Close ();
                //};
                //var btnSaveTime = new Button () {
                //    X = btnCloseTime.Right + 1,
                //    Y = 1,
                //    Width = Application.GetRealWidth (320),
                //    TextID = R.MyInternationalizationString.SAVE,
                //    BackgroundColor = SkinStyle.Current.ViewColor,
                //    TextAlignment = TextAlignment.Center,
                //    TextColor = SkinStyle.Current.TextColor1,
                //};
                //bottomView.AddChidren (btnSaveTime);
                //btnSaveTime.MouseUpEventHandler += (sender3, e3) => {
                //    // 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";
                //    //} else {
                //    //    chooseTimeString = chooseTime.Hour + ":" + chooseTime.Minute + " AM";
                //    //}
                //    btnTimelbl.Text = chooseTimeString;
                //    dialog.Close ();
                //};
                dialog.Show ();
                //dialog.Show ();
            };
            #endregion
@@ -446,12 +451,12 @@
                Height = Application.GetRealHeight (60),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = SkinStyle.Current.TextColor1,
                Text = "ALL",
                Text = timerTemp.RoomName,
            };
            roomContenView.AddChidren (btnRoomChoose);
            #endregion
            #region Devices
@@ -480,7 +485,7 @@
            MainPage.Loading.Start ("Please wait...");
            SmartHome.Method mMthod = new SmartHome.Method ();
            var devList = mMthod.GetRoomDeviceList ("ALL");
            var devList = mMthod.GetRoomDeviceList (timerTemp.RoomName);
            InitDeviceListView (devList);
            #region -----Room 点击事件
            btnRoomChoose.MouseUpEventHandler += (sender, e) => {
@@ -517,7 +522,7 @@
                };
                chooseRoomView.AddChidren (roomListView);
                //获取房间列表
                var  roomList= mMthod.GetRoomList ();
                var roomList = mMthod.GetRoomList ();
                for (int i = 0; i < roomList.Count; i++) {
                    var room = roomList [i];
                    var btnRoomNameChoose = new Button () {
@@ -535,6 +540,8 @@
                    roomListView.AddChidren (btnLine);
                    btnRoomNameChoose.MouseUpEventHandler += (sd, ds) => {
                        //切换房间清空之前选择数据;
                        selectedDeviceList.Clear ();
                        btnRoomChoose.Text = (sd as Button).Text;
                        //获取设备列表
                        var deviceList = mMthod.GetRoomDeviceList (btnRoomChoose.Text);
@@ -620,6 +627,8 @@
                        return;
                    }
                }
                // 2021-03-30 先清空,再重新统计
                timerTemp.whichDay = new List<int>();
                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;
@@ -636,7 +645,7 @@
                    }
                }
                if (btnSaturday.IsSelected) {
                     if (!timerTemp.whichDay.Contains (6)) {
                    if (!timerTemp.whichDay.Contains (6)) {
                        timerTemp.whichDay.Add (6);
                    }
                }
@@ -649,7 +658,7 @@
                    if (!timerTemp.whichDay.Contains (2)) {
                        timerTemp.whichDay.Add (2);
                    }
                }
                if (btnWednesday.IsSelected) {
                    if (!timerTemp.whichDay.Contains (3)) {
@@ -666,13 +675,15 @@
                        timerTemp.whichDay.Add (5);
                    }
                }
                if (string.IsNullOrEmpty (timerTemp.id)) {
                    timerTemp.id =Guid.NewGuid().ToString ();
                }
                //if (string.IsNullOrEmpty (timerTemp.id)) {
                //    timerTemp.id = Guid.NewGuid ().ToString ();
                //}
                DeviceDate deviceDate = new DeviceDate ();
                deviceDate.gatewayId = SmartHome.Send.GatewayId;
                deviceDate.homeId = SmartHome.Send.HomeId;
                deviceDate.actions.AddRange (selectedDeviceList);
                timerTemp.controlData = deviceDate;
@@ -687,6 +698,8 @@
                            revertObj = SmartHome.Send.UpdateTimer (timerTemp);
                        } else {
                            revertObj = SmartHome.Send.AddTimer (timerTemp);
                        }
@@ -694,12 +707,21 @@
                            if (revertObj == null) {
                                new Alert ("", "Unable to save data, please check the network.", "Close").Show ();
                            } else if (revertObj.Code == StateCode.SUCCESS) {
                                string id = "";
                                if (!isEdit) {
                                    var jObject = JObject.Parse (revertObj.Data.ToString ());
                                    id = jObject ["id"].ToString ();
                                    timerTemp.id = id;
                                }
                                this.RemoveFromParent ();
                                action (timerTemp);
                            } else if (revertObj.Code == "10107") {
                                new Alert ("", "Timer name already exists.", "Close").Show ();
                            } else {
                                //提示错误
                                SmartHome.Method method = new SmartHome.Method ();
                                method.ShowGetTimerListErrorInfo (revertObj.Data.ToString ());
                                IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code);
                            }
                        });
                    } catch (Exception ex) {
@@ -713,118 +735,235 @@
            };
        }
        /// <summary>
        /// 自定义TimePickerView
        /// 2021-03-24
        /// </summary>
        void ShowTimePickerView (Button btnTimelbl)
        {
            var chooseTimeString = "00:00";
            var dialog = new Dialog ();
            var chooseTimeBodyView = new FrameLayout () {
            };
            dialog.AddChidren (chooseTimeBodyView);
            var timeView = new FrameLayout () {
                Y = Application.GetRealHeight (1136 - 420 - 90),
                Height = Application.GetRealHeight (420),
                BackgroundColor = SkinStyle.Current.ViewColor,
            };
            chooseTimeBodyView.AddChidren (timeView);
            var chooseTime = new UIPickerView () {
                Height = Application.GetRealHeight (400),
                BackgroundColor = SkinStyle.Current.Transparent,
                Gravity = Gravity.CenterVertical
            };
            timeView.AddChidren (chooseTime);
            var bottomView = new FrameLayout () {
                Y = timeView.Bottom,
                Height = Application.GetRealHeight (90) + 1,
                BackgroundColor = 0xFFD7D7D7,
            };
            chooseTimeBodyView.AddChidren (bottomView);
            var btnCloseTime = new Button () {
                Y = 1,
                Width = Application.GetRealWidth (320),
                BackgroundColor = SkinStyle.Current.ViewColor,
                TextID = R.MyInternationalizationString.Close,
                TextAlignment = TextAlignment.Center,
                TextColor = SkinStyle.Current.TextColor1,
            };
            bottomView.AddChidren (btnCloseTime);
            btnCloseTime.MouseUpEventHandler += (ddf, dddf) => {
                chooseTimeBodyView.RemoveAll ();
                chooseTimeBodyView.RemoveFromParent ();
                dialog.Close ();
            };
            var btnSaveTime = new Button () {
                X = btnCloseTime.Right + 1,
                Y = 1,
                Width = Application.GetRealWidth (320),
                TextID = R.MyInternationalizationString.SAVE,
                BackgroundColor = SkinStyle.Current.ViewColor,
                TextAlignment = TextAlignment.Center,
                TextColor = SkinStyle.Current.TextColor1,
            };
            bottomView.AddChidren (btnSaveTime);
            btnSaveTime.MouseUpEventHandler += (sender3, e3) => {
                btnTimelbl.Text = chooseTimeString;
                dialog.Close ();
            };
            var nowDateTime = DateTime.Now;
            var hour = nowDateTime.Hour;
            //hourStr
            var hourStr = hour.ToString();
            if (hour < 10) {
                hourStr = "0" + hour;
            }
            var minute = nowDateTime.Minute;
            //minuteStr
            var minuteStr = minute.ToString ();
            if (minute < 10) {
                minuteStr = "0" + minute;
            }
            var hourList = new List<string> ();
            for (int i = 0; i < 24; i++) {
                if (i < 10) {
                    var a = "0" + i.ToString ();
                    hourList.Add (a);
                } else {
                    hourList.Add (i.ToString ());
                }
            }
            var minuteList = new List<string> ();
            for (int i = 0; i < 60; i++) {
                if (i < 10) {
                    var a = "0" + i.ToString ();
                    minuteList.Add (a);
                } else {
                    minuteList.Add (i.ToString ());
                }
            }
            chooseTime.setNPicker (hourList, minuteList, null);
            chooseTime.setCurrentItems (hour, minute, 0);
            chooseTimeString = hourStr + ":" + minuteStr;
            //string selectde = "";
            chooseTime.OnSelectChangeEvent += (s1, s2, s3) => {
                var hourV = hourList [s1];
                var minuteV = minuteList [s2];
                chooseTimeString = hourV + ":" + minuteV;
            };
            dialog.Show ();
        }
        /// <summary>
        /// 加载房间设备列表界面
        /// </summary>
        /// <param name="deviceList">房间设备列表</param>
        private  void InitDeviceListView (List<Function> deviceList)
        private void InitDeviceListView (List<Function> deviceList)
        {
            devicesListView.RemoveAll ();
            //房间设备列表
            devicesListView.Height = Application.GetRealHeight (130 * deviceList.Count);
            devicesListView.Height = Application.GetRealHeight (130 * deviceList.Count);
            System.Threading.Tasks.Task.Run (() => {
                try {
                        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 = device,
                                    };
                                    devicesListView.AddChidren (deviceRowView);
                    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 = device,
                                };
                                devicesListView.AddChidren (deviceRowView);
                                    var btnChoose = new Button () {
                                        Width = Application.GetRealWidth (60),
                                        Height = Application.GetRealWidth (60),
                                        X = Application.GetRealWidth (40),
                                        Gravity = Gravity.CenterVertical,
                                        UnSelectedImagePath = "CrabtreeAdd/Choose.png",
                                        SelectedImagePath = "CrabtreeAdd/ChooseOn.png",
                                        Tag = device,
                                    };
                                    deviceRowView.AddChidren (btnChoose);
                                var btnChoose = new Button () {
                                    Width = Application.GetRealWidth (60),
                                    Height = Application.GetRealWidth (60),
                                    X = Application.GetRealWidth (40),
                                    Gravity = Gravity.CenterVertical,
                                    UnSelectedImagePath = "CrabtreeAdd/Choose.png",
                                    SelectedImagePath = "CrabtreeAdd/ChooseOn.png",
                                    Tag = device,
                                };
                                deviceRowView.AddChidren (btnChoose);
                                    Button btnDeviceName = new Button () {
                                        Width = Application.GetRealWidth (342),
                                        Height = Application.GetRealHeight (70),
                                        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.GetRealWidth (90),
                                        Height = Application.GetRealWidth (53),
                                        X = Application.GetRealWidth (640 - 90 - 20),
                                        Gravity = Gravity.CenterVertical,
                                        UnSelectedImagePath = "Item/SwitchClose.png",
                                        SelectedImagePath = "Item/SwitchOpen.png",
                                        Tag = device,
                                    };
                                    deviceRowView.AddChidren (tempSwitch);
                                Button btnDeviceName = new Button () {
                                    Width = Application.GetRealWidth (342),
                                    Height = Application.GetRealHeight (70),
                                    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.GetRealWidth (90),
                                    Height = Application.GetRealWidth (53),
                                    X = Application.GetRealWidth (640 - 90 - 20),
                                    Gravity = Gravity.CenterVertical,
                                    UnSelectedImagePath = "Item/SwitchClose.png",
                                    SelectedImagePath = "Item/SwitchOpen.png",
                                    Tag = device,
                                };
                                deviceRowView.AddChidren (tempSwitch);
                                    switch (device.spk) {
                                    case "light.dimming": {
                                            #region 调光器A
                                            tempSwitch.RemoveFromParent ();
                                switch (device.spk) {
                                //DeviceType.LightDALI
                                case SPK.LightDimming: {
                                        #region 调光器A
                                        tempSwitch.RemoveFromParent ();
                                            deviceRowView.Height = Application.GetRealHeight (130);
                                            btnChoose.Y = Application.GetRealHeight (20);
                                            btnDeviceName.Y = Application.GetRealHeight (15);
                                        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 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);
                                        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;
                                                }
                                                if (e == 0) {
                                                    btnLevel.Text = "OFF";
                                                } else {
                                                    btnLevel.Text = e.ToString () + "%";
                                                }
                                                value = e.ToString ();
                                                DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
                                            };
                                        levelBar.ProgressChanged += (sender, e) => {
                                            if (!btnChoose.IsSelected) {
                                                btnChoose.IsSelected = true;
                                            }
                                            if (e == 0) {
                                                btnLevel.Text = "OFF";
                                            } else {
                                                btnLevel.Text = e.ToString () + "%";
                                            }
                                            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);
                                            };
                                        btnChoose.MouseUpEventHandler += (dds, ddss) => {
                                            btnChoose.IsSelected = !btnChoose.IsSelected;
                                            DeviceDateFun (btnChoose.Tag as Function, "0", btnChoose.IsSelected);
                                        };
                                            if (IsEdit) {
                                                try {
                                        if (IsEdit) {
                                            try {
                                                var dev = selectedDeviceList.Find ((c) => c.deviceId == Int64.Parse (device.deviceId));
                                                if (dev != null) {
                                                    if (!btnChoose.IsSelected) {
@@ -832,239 +971,259 @@
                                                    }
                                                    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);
                                                    }
                                                }
                                                } catch { }
                                            }
                                            #endregion
                                        }
                                        break;
                                    case "light.switch": {
                                            #region 继电器
                                            tempSwitch.MouseUpEventHandler += (sender3, e3) => {
                                                tempSwitch.IsSelected = !tempSwitch.IsSelected;
                                                if (tempSwitch.IsSelected) {
                                                    value = "on";
                                                } else {
                                                    value = "off";
                                                }
                                                if (!btnChoose.IsSelected) {
                                                    btnChoose.IsSelected = true;
                                                }
                                                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);
                                            };
                                            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 { }
                                            }
                                            #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);
                                            tempSwitch1.MouseUpEventHandler += (sender3, e3) => {
                                                tempSwitch1.IsSelected = !tempSwitch1.IsSelected;
                                                if (tempSwitch1.IsSelected) {
                                                    value = "on";
                                                    tempSwitch1.Text = "OPEN";
                                                    tempSwitch1.BackgroundColor = SkinStyle.Current.SelectedColor;
                                                } else {
                                                    value = "off";
                                                    tempSwitch1.Text = "CLOSE";
                                                    tempSwitch1.BackgroundColor = SkinStyle.Current.ButtonColor;
                                                }
                                                if (!btnChoose.IsSelected) {
                                                    btnChoose.IsSelected = true;
                                                }
                                                DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
                                            };
                                            btnChoose.MouseUpEventHandler += (dds, ddss) => {
                                                btnChoose.IsSelected = !btnChoose.IsSelected;
                                                if (tempSwitch1.IsSelected) {
                                                    value = "on";
                                                } else {
                                                    value = "off";
                                                }
                                                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
                                        }
                                        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.key == "brightness") {
                                                            if (fundev.value == "0") {
                                                                //btnLevel.Text = "OFF";
                                                                btnLevel.Text = "OFF";
                                                            } else {
                                                                fanLevel.Progress = int.Parse (fundev.value);
                                                                btnLevel.Text = fundev.value + "%";
                                                            }
                                                            levelBar.Progress = int.Parse (fundev.value);
                                                        }
                                                    }
                                                } catch { }
                                            }
                                            #endregion
                                                }
                                            } catch { }
                                        }
                                        break;
                                        #endregion
                                    }
                                    break;
                                //DeviceType.LightEnergySwitch
                                //DeviceType.LightEnergySocket
                                //DeviceType.LightSwitchSocket
                                case SPK.ElectricSocket:
                                case SPK.LightSwitch: {
                                        #region 继电器
                                        tempSwitch.MouseUpEventHandler += (sender3, e3) => {
                                            tempSwitch.IsSelected = !tempSwitch.IsSelected;
                                            if (tempSwitch.IsSelected) {
                                                value = "on";
                                            } else {
                                                value = "off";
                                            }
                                            if (!btnChoose.IsSelected) {
                                                btnChoose.IsSelected = true;
                                            }
                                            DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
                                        };
                                        btnChoose.MouseUpEventHandler += (dds, ddss) => {
                                            btnChoose.IsSelected = !btnChoose.IsSelected;
                                            if (tempSwitch.IsSelected) {
                                                value = "on";
                                            } else {
                                                value = "off";
                                            }
                                            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") {
                                                            tempSwitch.IsSelected = true;
                                                        } else {
                                                            tempSwitch.IsSelected = false;
                                                        }
                                                    }
                                                }
                                            } catch { }
                                        }
                                        #endregion
                                    }
                                    break;
                                case SPK.CurtainRoller:
                                case SPK.CurtainTrietex:
                                case SPK.CurtainSwitch: {
                                        #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);
                                        tempSwitch1.MouseUpEventHandler += (sender3, e3) => {
                                            tempSwitch1.IsSelected = !tempSwitch1.IsSelected;
                                            if (tempSwitch1.IsSelected) {
                                                value = "on";
                                                tempSwitch1.Text = "OPEN";
                                                tempSwitch1.BackgroundColor = SkinStyle.Current.SelectedColor;
                                            } else {
                                                value = "off";
                                                tempSwitch1.Text = "CLOSE";
                                                tempSwitch1.BackgroundColor = SkinStyle.Current.ButtonColor;
                                            }
                                            if (!btnChoose.IsSelected) {
                                                btnChoose.IsSelected = true;
                                            }
                                            DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
                                        };
                                        btnChoose.MouseUpEventHandler += (dds, ddss) => {
                                            btnChoose.IsSelected = !btnChoose.IsSelected;
                                            if (tempSwitch1.IsSelected) {
                                                value = "on";
                                            } else {
                                                value = "off";
                                            }
                                            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
                                    }
                                    break;
                                case SPK.ElectricFan: {
                                        #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",
                                            //Text = "",
                                            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);
                                        //刚开始默认显示1档
                                        value = "2";
                                        SetFanButtonState (btnFanLevel, value);
                                        fanLevel.ProgressChanged += (sender, e) => {
                                            if (!btnChoose.IsSelected) {
                                                btnChoose.IsSelected = true;
                                            }
                                            value = e.ToString ();
                                            //if (value == "0") {
                                            //    btnFanLevel.Text = "OFF";
                                            //} else {
                                            //    btnFanLevel.Text = value;
                                            //}
                                            SetFanButtonState (btnFanLevel, value);
                                            DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected);
                                        };
                                        btnChoose.MouseUpEventHandler += (dds, ddss) => {
                                            btnChoose.IsSelected = !btnChoose.IsSelected;
                                            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.key == "fan_speed_percent") {
                                                            fanLevel.Progress = int.Parse (fundev.value);
                                                            //if (fundev.value == "0") {
                                                            //    btnFanLevel.Text = "OFF";
                                                            //} else {
                                                            //    btnFanLevel.Text = fundev.value;
                                                            //}
                                                            SetFanButtonState (btnFanLevel, 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 {
@@ -1074,26 +1233,47 @@
                }
            });
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="btnFanLevel"></param>
        /// <param name="value"></param>
        void SetFanButtonState (Button btnFanLevel, string value)
        {
            if (btnFanLevel == null) return;
            if (value == "0") {
                btnFanLevel.Text = "OFF";
            } else {
                btnFanLevel.Text = value;
            }
        }
        /// <summary>
        /// 设备数据转换
        /// </summary>
        /// <param name="function"></param>
        /// <param name="value">开关状态值</param>
        /// <param name="isSelected">判断控件点击状态</param>
        public  void DeviceDateFun (Function function, string value, bool isSelected)
        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": {
            case SPK.CurtainTrietex:
            case SPK.CurtainRoller:
            case SPK.LightSwitch:
            case SPK.CurtainSwitch:
            case SPK.ElectricSocket: {
                    keyValue = "on_off";
                }
                break;
            case "light.dimming": {
            case SPK.LightDimming: {
                    keyValue = "brightness";
                }
                break;
            case SPK.ElectricFan: {
                    keyValue = "fan_speed_percent";
                }
                break;
@@ -1101,7 +1281,7 @@
            Fun fun = new Fun ();
            fun.deviceId = Int64.Parse (function.deviceId);
            fun.spk = function.spk;
            fun.attributes.Add (new Attributes { key= keyValue, value = value });
            fun.attributes.Add (new Attributes { key = keyValue, value = value });
            fun.bus.addresses = function.bus.addresses;
            fun.bus.loopId = function.bus.loopId;
            AddDeviceList (fun, isSelected);
@@ -1111,8 +1291,45 @@
        /// </summary>
        /// <param name="fun"></param>
        /// <param name="isSelected">判断控件点击状态</param>
        public  void AddDeviceList (Fun fun, bool isSelected)
        public void AddDeviceList (Fun fun, bool isSelected)
        {
            switch (fun.spk) {
            case SPK.LightDimming: {
                    //调光做了一个特殊处理;
                    if (fun.attributes.Count == 1) {
                        var dic = fun.attributes [0];
                        if (dic.key == "brightness") {
                            Attributes attributes = new Attributes ();
                            attributes.key = "on_off";
                            if (dic.value == "0") {
                                attributes.value = "off";
                            } else {
                                attributes.value = "on";
                            }
                            fun.attributes.Add (attributes);
                        }
                    }
                    break;
                }
            case SPK.ElectricFan: {
                    if (fun.attributes.Count == 1) {
                        var dic = fun.attributes [0];
                        if (dic.key == "fan_speed_percent") {
                            Attributes attributes = new Attributes ();
                            attributes.key = "on_off";
                            if (dic.value == "0") {
                                attributes.value = "off";
                            } else {
                                attributes.value = "on";
                            }
                            fun.attributes.Add (attributes);
                        }
                    }
                }
                break;
            }
            var device = selectedDeviceList.Find ((dev) => dev.deviceId == fun.deviceId);
            if (device != null) {
                selectedDeviceList.Remove (device);
@@ -1122,6 +1339,6 @@
            }
        }
    }
}