From d53e6af2c5f17838fa79659614b15a2a1f383399 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期五, 31 三月 2023 10:04:58 +0800 Subject: [PATCH] 1 --- Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs | 1213 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 681 insertions(+), 532 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs index a411967..0ef1cff 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs @@ -1,32 +1,69 @@ 锘縰sing System; using System.Collections.Generic; +using Newtonsoft.Json.Linq; using Shared.SimpleControl.Phone.Music; namespace Shared.SimpleControl.Phone { 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 +135,7 @@ BorderWidth = 1, TextAlignment = TextAlignment.Center, TextColor = SkinStyle.Current.TextColor1, - Text = timerTemp.TimerName + Text = timerTemp.timerName }; nameView.AddChidren (etName); etName.EditorEnterAction += (obj) => { @@ -133,72 +170,76 @@ var btnTimelbl = new Button () { X = btnTimeIcon.Right, Width = Application.GetRealWidth (110), - Text = timerTemp.ExecutionTime, + Text = timerTemp.executeUtcTime, TextAlignment = TextAlignment.Center, TextColor = SkinStyle.Current.TextColor1, }; 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 @@ -230,7 +271,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 +290,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 +309,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 +327,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 +345,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 +364,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 +383,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 +436,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 +451,15 @@ Height = Application.GetRealHeight (60), TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor1, + Text = timerTemp.RoomName, }; 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 +476,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 (timerTemp.RoomName); + InitDeviceListView (devList); + #region -----Room 鐐瑰嚮浜嬩欢 btnRoomChoose.MouseUpEventHandler += (sender, e) => { Application.HideSoftInput (); var roomDialog = new Dialog (); @@ -504,11 +521,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, }; @@ -521,22 +540,12 @@ roomListView.AddChidren (btnLine); btnRoomNameChoose.MouseUpEventHandler += (sd, ds) => { + //鍒囨崲鎴块棿娓呯┖涔嬪墠閫夋嫨鏁版嵁; + selectedDeviceList.Clear (); 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 +571,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 (); @@ -588,15 +593,15 @@ // 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 +615,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; } @@ -622,73 +627,101 @@ return; } } + // 2021-03-30 鍏堟竻绌猴紝鍐嶉噸鏂扮粺璁� + timerTemp.whichDay = new List<int>(); - 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 (timerTemp.Periodicity [timerTemp.Periodicity.Length - 1] == ',') { - timerTemp.Periodicity = timerTemp.Periodicity.Remove (timerTemp.Periodicity.Length - 1, 1); + if (btnThursday.IsSelected) { + if (!timerTemp.whichDay.Contains (4)) { + timerTemp.whichDay.Add (4); + } } - - - - timerTemp.IsStart = true; - if (string.IsNullOrEmpty (timerTemp.Id)) { - timerTemp.Id = Guid.NewGuid ().ToString (); + if (btnFriday.IsSelected) { + if (!timerTemp.whichDay.Contains (5)) { + timerTemp.whichDay.Add (5); + } } - timerTemp.ControlDeviceData = Newtonsoft.Json.JsonConvert.SerializeObject (timerControlDeviceList); + //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; + 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) { + 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 { - ShowErrorInfo (revertObj.StateCode); + //鎻愮ず閿欒 + IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); + } }); } catch (Exception ex) { @@ -703,250 +736,187 @@ } - - /// <summary> - //(1)Success 鍒欒皟鐢ㄦ鎺ュ彛鎴愬姛 - //(2)NoRecord 浣忓畢鏈粦瀹氱綉鍏筹紒 - //(3)NoExist 浣忓畢涓嶅瓨鍦紒 - //(4)Exist 鐢熸垚鐨凣uid宸插瓨鍦紒 + /// 鑷畾涔塗imePickerView + /// 2021-03-24 /// </summary> - void ShowErrorInfo (string stateCodeStr) + void ShowTimePickerView (Button btnTimelbl) { - 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; + 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 ()); + } } - if (!string.IsNullOrEmpty (mes)) { - //Application.RunOnMainThread (() => { - new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show (); - //}); + + 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 (); } - private static void InitDeviceListView (List<Common> roomDeviceList, List<DeviceInfo> timerControlDeviceList, FrameLayout devicesListView) + /// <summary> + /// 鍔犺浇鎴块棿璁惧鍒楄〃鐣岄潰 + /// </summary> + /// <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++; - } - } + 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); -#if __IOS__ + 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); -#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), - Radius = 1, - BorderColor = SkinStyle.Current.Transparent, - BorderWidth = (uint)Application.GetMinRealAverage (5), - Height = Application.GetRealHeight (110), - Tag = deviceCommon.Type + "_" + deviceCommon.CommonLoopID - }; - devicesListView.AddChidren (DeviceRowView); - iniIndex++; - - var btnChoose = new Button () { - Width = Application.GetRealHeight (60), - Height = Application.GetRealHeight (60), - X = Application.GetRealWidth (40), - Gravity = Gravity.CenterVertical, - UnSelectedImagePath = "CrabtreeAdd/Choose.png", - SelectedImagePath = "CrabtreeAdd/ChooseOn.png", - IsSelected = timerControlDevice != null, - //Tag = deviceFilePath - }; - DeviceRowView.AddChidren (btnChoose); - - Button btnDeviceName = new Button () { - Width = Application.GetRealWidth (342), - Height = Application.GetRealHeight (70), - Text = deviceCommon.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), - X = Application.GetRealWidth (640 - 90 - 20), - Gravity = Gravity.CenterVertical, - UnSelectedImagePath = "Item/SwitchClose.png", - SelectedImagePath = "Item/SwitchOpen.png", - Tag = deviceCommon.CommonLoopID, - }; - DeviceRowView.AddChidren (tempSwitch); - - - if (deviceCommon.Type == DeviceType.FanModule) { - #region 椋庢墖 - tempSwitch.RemoveFromParent (); - //FanModule fanModule = deviceCommon as FanModule; - - 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 (), - TextColor = SkinStyle.Current.TextColor1, - TextSize = 12, - }; - DeviceRowView.AddChidren (btnFanLevelTip); - if (i == 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,// (int)(deviceCommon.SendBytes[1]), - - }; - DeviceRowView.AddChidren (fanLevel); - fanLevel.ProgressChanged += (sender, e) => { - try { - 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"; - } else { - btnFanLevel.Text = "S" + e.ToString (); - } - } catch (Exception ex) { - Utlis.WriteLine ("ss1: " + ex.Message); - } - }; - - if (timerControlDevice != null) { - if (timerControlDevice.SendBytes [1] == 0) { - btnFanLevel.Text = "OFF"; - } else { - btnFanLevel.Text = "S" + timerControlDevice.SendBytes [1].ToString (); - } - fanLevel.Progress = timerControlDevice.SendBytes [1]; - } - - 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 }; - } - } - 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)); - } - }; - - #endregion - } else if (deviceCommon.Type == DeviceType.LightDimming || deviceCommon.Type == DeviceType.LightDALI) { + switch (device.spk) { + //DeviceType.LightDALI + case SPK.LightDimming: { #region 璋冨厜鍣ˋ tempSwitch.RemoveFromParent (); - DeviceRowView.Height = Application.GetRealHeight (130); + deviceRowView.Height = Application.GetRealHeight (130); btnChoose.Y = Application.GetRealHeight (20); btnDeviceName.Y = Application.GetRealHeight (15); @@ -960,7 +930,7 @@ Text = "OFF", TextAlignment = TextAlignment.CenterLeft, }; - DeviceRowView.AddChidren (btnLevel); + deviceRowView.AddChidren (btnLevel); var levelBar = new HorizontalSeekBar () { X = btnLevel.Right, @@ -972,123 +942,111 @@ ThumbRadius = 6, Max = 100, }; - DeviceRowView.AddChidren (levelBar); + 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 () + "%"; } + 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 (timerControlDevice != null) { - if (timerControlDevice.SendBytes [1] == 0) { - btnLevel.Text = "OFF"; - } else { - btnLevel.Text = timerControlDevice.SendBytes [1].ToString () + "%"; - } - levelBar.Progress = timerControlDevice.SendBytes [1]; - } - - levelBar.MouseDownEventHandler += (sss, ff) => { + if (IsEdit) { 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 }; + 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"; + } else { + btnLevel.Text = fundev.value + "%"; + } + levelBar.Progress = int.Parse (fundev.value); + } } } } 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) { + } + break; + //DeviceType.LightEnergySwitch + //DeviceType.LightEnergySocket + //DeviceType.LightSwitchSocket + case SPK.ElectricSocket: + case SPK.LightSwitch: { #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; + value = "on"; } else { - CurrentBrightness = 0; + value = "off"; } 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 }; - } + DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected); + }; - 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; - } else { - CurrentBrightness = 0; - } - 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 (tempSwitch.IsSelected) { + value = "on"; } else { - timerControlDeviceList.Remove (timerControlDeviceList.Find ((obj) => obj.DeviceType == (int)deviceCommon.Type && - obj.SubnetID == deviceCommon.SubnetID && obj.DeviceID == deviceCommon.DeviceID && obj.LoopID == deviceCommon.LoopID)); + 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 - } else if (deviceCommon.Type == DeviceType.CurtainModel || deviceCommon.Type == DeviceType.CurtainTrietex || deviceCommon.Type == DeviceType.CurtainRoller) { + } + break; + case SPK.CurtainRoller: + case SPK.CurtainTrietex: + case SPK.CurtainSwitch: { #region 绐楀笜 - //2020-07-09 鍒锋柊鎺у埗鎿嶄綔鐮� - deviceCommon.Command = (int)Command.UpdataCurtainModelStutas; tempSwitch.RemoveFromParent (); var tempSwitch1 = new Button () { - Width = Application.GetMinRealAverage (90), - Height = Application.GetMinRealAverage (53), + Width = Application.GetRealWidth (90), + Height = Application.GetRealWidth (53), X = Application.GetRealWidth (640 - 90 - 20), Radius = 5, BorderColor = SkinStyle.Current.Transparent, @@ -1098,90 +1056,174 @@ BackgroundColor = SkinStyle.Current.ButtonColor, SelectedBackgroundColor = SkinStyle.Current.SelectedColor, Text = "CLOSE", - Tag = deviceCommon.CommonLoopID, + Tag = device, }; - DeviceRowView.AddChidren (tempSwitch1); - + deviceRowView.AddChidren (tempSwitch1); tempSwitch1.MouseUpEventHandler += (sender3, e3) => { tempSwitch1.IsSelected = !tempSwitch1.IsSelected; - - var CurrentBrightness = 0; if (tempSwitch1.IsSelected) { - CurrentBrightness = 1; + value = "on"; tempSwitch1.Text = "OPEN"; tempSwitch1.BackgroundColor = SkinStyle.Current.SelectedColor; } else { - CurrentBrightness = 2; + value = "off"; tempSwitch1.Text = "CLOSE"; tempSwitch1.BackgroundColor = SkinStyle.Current.ButtonColor; } 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 }; - } - }; + DeviceDateFun (btnChoose.Tag as Function, value, btnChoose.IsSelected); - if (timerControlDevice != null) { - try { - if (timerControlDevice.SendBytes [1] == 1) { - tempSwitch1.Text = "OPEN"; - tempSwitch1.IsSelected = true; - tempSwitch1.BackgroundColor = SkinStyle.Current.SelectedColor; - } else { - 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; - } - 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 }; - //} - - //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 }; - } + if (tempSwitch1.IsSelected) { + value = "on"; } else { - timerControlDeviceList.Remove (timerControlDeviceList.Find ((obj) => obj.DeviceType == (int)deviceCommon.Type && - obj.SubnetID == deviceCommon.SubnetID && obj.DeviceID == deviceCommon.DeviceID && obj.LoopID == deviceCommon.LoopID)); + 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 } - }catch(Exception ex) { - Utlis.WriteLine ("AddSchedule error : "+ ex.Message); + 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 (ex.Message); } finally { @@ -1191,5 +1233,112 @@ } }); } + + /// <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) + { + string keyValue = ""; + switch (function.spk) { + case SPK.CurtainTrietex: + case SPK.CurtainRoller: + case SPK.LightSwitch: + case SPK.CurtainSwitch: + case SPK.ElectricSocket: { + keyValue = "on_off"; + } + break; + case SPK.LightDimming: { + keyValue = "brightness"; + } + break; + case SPK.ElectricFan: { + keyValue = "fan_speed_percent"; + } + 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) + { + + 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); + } + if (isSelected) { + selectedDeviceList.Add (fun); + } + } + + } } -- Gitblit v1.8.0