using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Shared.SimpleControl.Phone.Music;
namespace Shared.SimpleControl.Phone
{
public class AddSchedule : FrameLayout
{
///
/// 上下滑动VerticalScrolViewLayout
///
VerticalScrolViewLayout bodyView;
///
/// 设备对象父控件
///
FrameLayout devicesListView;
///
/// 定义一个回调函数
///
Action action;
///
/// 选中设备列表
///
List selectedDeviceList = new List ();
///
/// 是否编辑(true=编辑)
///
bool IsEdit = false;
///
/// 对象构造函数
///
/// 返回函数
public AddSchedule (Action act)
{
action = act;
}
///
/// 重写方法
///
public override void RemoveFromParent ()
{
UserMiddle.SettingPageView.ScrollEnabled = true;
base.RemoveFromParent ();
}
///
/// 对象主入口
///
/// 当前对象
/// 计时器列表
/// 编辑状态
public void ShowPage (Timer timerTemp, List 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;
#region topview
var topView = new RowLayout () {
Y = Application.GetRealHeight (36),
Height = Application.GetRealHeight (90),
Width = Application.GetRealWidth (640),
BackgroundColor = SkinStyle.Current.MainColor
};
AddChidren (topView);
var title = new Button () {
TextAlignment = TextAlignment.Center,
TextID = R.MyInternationalizationString.Schedule,
TextColor = SkinStyle.Current.TextColor1,
TextSize = 19,
};
topView.AddChidren (title);
var back = new Button () {
Height = Application.GetRealHeight (100),
Width = Application.GetRealWidth (85),
UnSelectedImagePath = "Item/Back.png",
SelectedImagePath = "Item/BackSelected.png",
};
topView.AddChidren (back);
back.MouseUpEventHandler += (sender, e) => {
(Parent as PageLayout).PageIndex -= 1;
};
var logo = new Button () {
Width = Application.GetRealWidth (154),
Height = Application.GetRealHeight (90),
X = Application.GetRealWidth (486),
UnSelectedImagePath = MainPage.LogoString,
};
topView.AddChidren (logo);
#endregion
bodyView = new VerticalScrolViewLayout () {
Y = topView.Bottom,
Height = Application.GetRealHeight (1136 - 126 - 90),
BackgroundColor = SkinStyle.Current.ViewColor
};
AddChidren (bodyView);
#region ---------nameView
var nameView = new RowLayout () {
Height = Application.GetRealHeight (110),
};
bodyView.AddChidren (nameView);
var btnName = new Button () {
X = Application.GetRealWidth (50),
Y = Application.GetRealHeight (20),
Width = Application.GetRealWidth (160),
Height = Application.GetRealHeight (70),
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.LableName,
};
nameView.AddChidren (btnName);
var etName = new EditText () {
X = btnName.Right,
Gravity = Gravity.CenterVertical,
Width = Application.GetRealWidth (380),
Height = Application.GetRealHeight (60),
Radius = 1,
BorderColor = SkinStyle.Current.BorderColor,
BorderWidth = 1,
TextAlignment = TextAlignment.Center,
TextColor = SkinStyle.Current.TextColor1,
Text = timerTemp.timerName
};
nameView.AddChidren (etName);
etName.EditorEnterAction += (obj) => {
Application.HideSoftInput ();
};
#endregion
#region --------time
var timeView = new RowLayout () {
Height = Application.GetRealHeight (110),
};
bodyView.AddChidren (timeView);
var btnTime = new Button () {
X = Application.GetRealWidth (50),
Width = Application.GetRealWidth (160),
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Time,
};
timeView.AddChidren (btnTime);
var btnTimeIcon = new Button () {
X = btnTime.Right + Application.GetRealWidth (190),
Gravity = Gravity.CenterVertical,
Width = Application.GetRealWidth (75),
Height = Application.GetRealWidth (75),
UnSelectedImagePath = "CrabtreeAdd/Timer.png",
};
timeView.AddChidren (btnTimeIcon);
var btnTimelbl = new Button () {
X = btnTimeIcon.Right,
Width = Application.GetRealWidth (110),
Text = timerTemp.executeUtcTime,
TextAlignment = TextAlignment.Center,
TextColor = SkinStyle.Current.TextColor1,
};
timeView.AddChidren (btnTimelbl);
btnTimelbl.MouseUpEventHandler += (timeSender, eee) => {
ShowTimePickerView (btnTimelbl);
return;
//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);
//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 ();
};
#endregion
#region --------Reapeat
var repeatView = new RowLayout () {
Height = Application.GetRealHeight (110),
};
bodyView.AddChidren (repeatView);
var btnRepeat = new Button () {
X = Application.GetRealWidth (50),
Width = Application.GetRealWidth (160),
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Repeat,
};
repeatView.AddChidren (btnRepeat);
var btnSunday = new Button () {
X = btnRepeat.Right,
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage (45),
Height = Application.GetMinRealAverage (45),
BackgroundColor = SkinStyle.Current.MainColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor,
Text = "S",
TextSize = 16,
Radius = (uint)Application.GetMinRealAverage (22),
BorderWidth = 1,
BorderColor = SkinStyle.Current.Transparent,
IsSelected = timerTemp.whichDay.Contains (0),
Tag = 0,
};
repeatView.AddChidren (btnSunday);
var btnMonday = new Button () {
X = btnSunday.Right + Application.GetRealWidth (15),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage (45),
Height = Application.GetMinRealAverage (45),
BackgroundColor = SkinStyle.Current.MainColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor,
Text = "M",
TextSize = 16,
Radius = (uint)Application.GetMinRealAverage (22),
BorderWidth = 1,
BorderColor = SkinStyle.Current.Transparent,
IsSelected = timerTemp.whichDay.Contains (1),
Tag = 1,
};
repeatView.AddChidren (btnMonday);
var btnTuesday = new Button () {
X = btnMonday.Right + Application.GetRealWidth (15),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage (45),
Height = Application.GetMinRealAverage (45),
BackgroundColor = SkinStyle.Current.MainColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor,
Text = "T",
TextSize = 16,
Radius = (uint)Application.GetMinRealAverage (22),
BorderWidth = 1,
BorderColor = SkinStyle.Current.Transparent,
IsSelected = timerTemp.whichDay.Contains (2),
Tag = 2,
};
repeatView.AddChidren (btnTuesday);
var btnWednesday = new Button () {
X = btnTuesday.Right + Application.GetRealWidth (15),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage (45),
Height = Application.GetMinRealAverage (45),
BackgroundColor = SkinStyle.Current.MainColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor,
Text = "W",
TextSize = 16,
Radius = (uint)Application.GetMinRealAverage (22),
BorderWidth = 1,
BorderColor = SkinStyle.Current.Transparent,
IsSelected = timerTemp.whichDay.Contains (3),
Tag = 3,
};
repeatView.AddChidren (btnWednesday);
var btnThursday = new Button () {
X = btnWednesday.Right + Application.GetRealWidth (15),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage (45),
Height = Application.GetMinRealAverage (45),
BackgroundColor = SkinStyle.Current.MainColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor,
Text = "T",
TextSize = 16,
Radius = (uint)Application.GetMinRealAverage (22),
BorderWidth = 1,
BorderColor = SkinStyle.Current.Transparent,
IsSelected = timerTemp.whichDay.Contains (4),
Tag = 4,
};
repeatView.AddChidren (btnThursday);
var btnFriday = new Button () {
X = btnThursday.Right + Application.GetRealWidth (15),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage (45),
Height = Application.GetMinRealAverage (45),
BackgroundColor = SkinStyle.Current.MainColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor,
Text = "F",
TextSize = 16,
Radius = (uint)Application.GetMinRealAverage (22),
BorderWidth = 1,
BorderColor = SkinStyle.Current.Transparent,
IsSelected = timerTemp.whichDay.Contains (5),
Tag = 5,
};
repeatView.AddChidren (btnFriday);
var btnSaturday = new Button () {
X = btnFriday.Right + Application.GetRealWidth (15),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage (45),
Height = Application.GetMinRealAverage (45),
BackgroundColor = SkinStyle.Current.MainColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor,
Text = "S",
TextSize = 16,
Radius = (uint)Application.GetMinRealAverage (22),
BorderWidth = 1,
BorderColor = SkinStyle.Current.Transparent,
IsSelected = timerTemp.whichDay.Contains (6),
Tag = 6,
};
repeatView.AddChidren (btnSaturday);
EventHandler repeatHandler = (sdd, s) => {
//EveryDay = 0, //每天
//WorkingDay, //工作日
//Weekend, //周末
//Week, //指定星期几
//Period, //指定时间段
//AppointDay, //指定日 Periodicity
(sdd as Button).IsSelected = !(sdd as Button).IsSelected;
};
btnMonday.MouseUpEventHandler += repeatHandler;
btnFriday.MouseUpEventHandler += repeatHandler;
btnThursday.MouseUpEventHandler += repeatHandler;
btnSunday.MouseUpEventHandler += repeatHandler;
btnTuesday.MouseUpEventHandler += repeatHandler;
btnSaturday.MouseUpEventHandler += repeatHandler;
btnWednesday.MouseUpEventHandler += repeatHandler;
#endregion
#region -----Room
var roomView = new RowLayout () {
Height = Application.GetRealHeight (110),
};
bodyView.AddChidren (roomView);
var btnRoom = new Button () {
X = Application.GetRealWidth (50),
Width = Application.GetRealWidth (160),
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Room,
};
roomView.AddChidren (btnRoom);
var roomContenView = new FrameLayout () {
X = btnName.Right,
Gravity = Gravity.CenterVertical,
Width = Application.GetRealWidth (380),
Height = Application.GetRealHeight (60),
Radius = 1,
BorderColor = SkinStyle.Current.BorderColor,
BorderWidth = 1,
};
roomView.AddChidren (roomContenView);
var downSelectedButton = new Button () {
X = Application.GetRealWidth (310),
Height = Application.GetRealWidth (50),
Width = Application.GetRealWidth (55),
UnSelectedImagePath = "Item/Down.png",
SelectedImagePath = "Item/DownSelected.png",
Gravity = Gravity.CenterVertical,
};
roomContenView.AddChidren (downSelectedButton);
var btnRoomChoose = new Button () {
X = Application.GetRealWidth (10),
Gravity = Gravity.CenterVertical,
Width = Application.GetRealWidth (380),
Height = Application.GetRealHeight (60),
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1,
Text = timerTemp.RoomName,
};
roomContenView.AddChidren (btnRoomChoose);
#endregion
#region Devices
var devicesView = new RowLayout () {
Height = Application.GetRealHeight (110),
BackgroundColor = SkinStyle.Current.MainColor,
};
bodyView.AddChidren (devicesView);
var btnDeviceTitle = new Button () {
X = Application.GetRealWidth (50),
Width = Application.GetRealWidth (260),
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.DeviceList,
};
devicesView.AddChidren (btnDeviceTitle);
devicesListView = new FrameLayout () {
Height = Application.GetRealHeight (130),
};
bodyView.AddChidren (devicesListView);
#endregion
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 ();
var chooseRoomView = new FrameLayout () {
Animate = Animate.DownToUp,
};
chooseRoomView.MouseUpEventHandler += (sende1r, e1) => {
roomDialog.Close ();
};
roomDialog.AddChidren (chooseRoomView);
var chooseRoomTitleView = new FrameLayout () {
Y = Application.GetRealHeight (1136 - 360 - 80),
Height = Application.GetRealHeight (80),
BackgroundColor = SkinStyle.Current.MainColor,
};
chooseRoomView.AddChidren (chooseRoomTitleView);
var btnChooseRoomTitle = new Button () {
X = Application.GetRealWidth (40),
BackgroundColor = SkinStyle.Current.MainColor,
TextID = R.MyInternationalizationString.ChooseRoom,
TextColor = SkinStyle.Current.TextColor1,
TextAlignment = TextAlignment.CenterLeft
};
chooseRoomTitleView.AddChidren (btnChooseRoomTitle);
var roomListView = new VerticalScrolViewLayout () {
Y = Application.GetRealHeight (1136 - 360),
Height = Application.GetRealHeight (360),
BackgroundColor = SkinStyle.Current.ViewColor,
};
chooseRoomView.AddChidren (roomListView);
//获取房间列表
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 = room.Name,
TextColor = SkinStyle.Current.TextColor1,
TextAlignment = TextAlignment.Center,
};
roomListView.AddChidren (btnRoomNameChoose);
var btnLine = new Button () {
Height = 1,
BackgroundColor = SkinStyle.Current.BorderColor
};
roomListView.AddChidren (btnLine);
btnRoomNameChoose.MouseUpEventHandler += (sd, ds) => {
//切换房间清空之前选择数据;
selectedDeviceList.Clear ();
btnRoomChoose.Text = (sd as Button).Text;
//获取设备列表
var deviceList = mMthod.GetRoomDeviceList (btnRoomChoose.Text);
InitDeviceListView (deviceList);
roomDialog.Close ();
};
}
roomDialog.Show ();
};
#endregion
var saveTimeBottomView = new FrameLayout () {
Y = Application.GetRealHeight (1136 - 90),
Height = Application.GetRealHeight (90),
BackgroundColor = SkinStyle.Current.ViewColor,
};
AddChidren (saveTimeBottomView);
var btnSaveTimerBottom = new Button () {
BackgroundColor = SkinStyle.Current.MainColor,
TextAlignment = TextAlignment.Center,
TextID = R.MyInternationalizationString.SAVE,
TextSize = 18,
TextColor = SkinStyle.Current.TextColor1
};
saveTimeBottomView.AddChidren (btnSaveTimerBottom);
btnSaveTimerBottom.MouseUpEventHandler += (ll, kk) => {
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 ();
new Alert ("", "Please select the days.", "Close").Show ();
return;
}
string mTimerName = etName.Text.Trim ();
if (string.IsNullOrEmpty (mTimerName)) {
//new Alert ("", "请填写定时器名称!", "Close").Show ();
new Alert ("", "Please fill the tab Lable name.", "Close").Show ();
return;
}
//else if (listTimer.Find ((obj) => obj.TimerName == timerTemp.TimerName) != null && !isEdit) {//2020-01-09 编辑的时候也提示重复名字
// //if (isEdit) {
// //}
// new Alert ("", "The timer name already exists. Please change it before saving it.", "Close").Show ();
// return;
//}
if (selectedDeviceList.Count == 0) {
new Alert ("", "Please choose at least one device!", "Close").Show ();
return;
}
//名字重复判断限制
var mTimer = listTimer.Find ((obj) => obj.timerName == mTimerName);
if (isEdit) {
if (mTimer != null && mTimer.id != timerTemp.id) {
new Alert ("", "The timer name already exists. Please change it before saving it.", "Close").Show ();
return;
}
} else {
if (mTimer != null) {
new Alert ("", "The timer name already exists. Please change it before saving it.", "Close").Show ();
return;
}
}
//2020-02-10 时间重复判断限制
string mExecutionTime = btnTimelbl.Text;
//timerTemp.ExecutionTime = btnTimelbl.Text;
var mTimerExecutionTime = listTimer.Find ((obj) => (obj.executeUtcTime == mExecutionTime));
if (isEdit) {
if (mTimerExecutionTime != null && mTimerExecutionTime.id != timerTemp.id) {
new Alert ("", "The timer time already exists. Please change it before saving it.", "Close").Show ();
return;
}
} else {
if (mTimerExecutionTime != null) {
new Alert ("", "The timer time already exists. Please change it before saving it.", "Close").Show ();
return;
}
}
// 2021-03-30 先清空,再重新统计
timerTemp.whichDay = new List();
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;
} 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;
} 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;
} else {
timerTemp.timerType = TimerType.Week;
}
if (btnSunday.IsSelected) {
if (!timerTemp.whichDay.Contains (0)) {
timerTemp.whichDay.Add (0);
}
}
if (btnSaturday.IsSelected) {
if (!timerTemp.whichDay.Contains (6)) {
timerTemp.whichDay.Add (6);
}
}
if (btnMonday.IsSelected) {
if (!timerTemp.whichDay.Contains (1)) {
timerTemp.whichDay.Add (1);
}
}
if (btnTuesday.IsSelected) {
if (!timerTemp.whichDay.Contains (2)) {
timerTemp.whichDay.Add (2);
}
}
if (btnWednesday.IsSelected) {
if (!timerTemp.whichDay.Contains (3)) {
timerTemp.whichDay.Add (3);
}
}
if (btnThursday.IsSelected) {
if (!timerTemp.whichDay.Contains (4)) {
timerTemp.whichDay.Add (4);
}
}
if (btnFriday.IsSelected) {
if (!timerTemp.whichDay.Contains (5)) {
timerTemp.whichDay.Add (5);
}
}
//if (string.IsNullOrEmpty (timerTemp.id)) {
// timerTemp.id = Guid.NewGuid ().ToString ();
//}
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.executeUtcTime = btnTimelbl.Text;
timerTemp.timerName = etName.Text.Trim ();
System.Threading.Tasks.Task.Run (() => {
try {
ResponsePackNew revertObj = null;
if (isEdit) {
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.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 {
//提示错误
IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code);
}
});
} catch (Exception ex) {
Utlis.WriteLine (ex.Message);
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
});
}
});
};
}
///
/// 自定义TimePickerView
/// 2021-03-24
///
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 ();
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 ();
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 void InitDeviceListView (List deviceList)
{
devicesListView.RemoveAll ();
//房间设备列表
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);
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);
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);
var btnLevel = new Button () {
X = btnChoose.X + Application.GetRealWidth (10),
Y = btnChoose.Bottom,
Width = Application.GetRealWidth (75),
Height = Application.GetRealHeight (45),
TextColor = SkinStyle.Current.TextColor1,
SelectedTextColor = SkinStyle.Current.TextColor1,
Text = "OFF",
TextAlignment = TextAlignment.CenterLeft,
};
deviceRowView.AddChidren (btnLevel);
var levelBar = new HorizontalSeekBar () {
X = btnLevel.Right,
Y = btnLevel.Y,
Width = Application.GetRealWidth (460),
Height = Application.GetRealHeight (45),
ThumbColor = SkinStyle.Current.ThumbColor,
ProgressColor = SkinStyle.Current.SelectedColor,
ThumbRadius = 6,
Max = 100,
};
deviceRowView.AddChidren (levelBar);
levelBar.ProgressChanged += (sender, e) => {
if (!btnChoose.IsSelected) {
btnChoose.IsSelected = true;
}
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 (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";
} else {
btnLevel.Text = fundev.value + "%";
}
levelBar.Progress = int.Parse (fundev.value);
}
}
}
} catch { }
}
#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 (ex.Message);
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
});
}
});
}
///
///
///
///
///
void SetFanButtonState (Button btnFanLevel, string value)
{
if (btnFanLevel == null) return;
if (value == "0") {
btnFanLevel.Text = "OFF";
} else {
btnFanLevel.Text = value;
}
}
///
/// 设备数据转换
///
///
/// 开关状态值
/// 判断控件点击状态
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);
}
///
/// 添加设备数据到列表里
///
///
/// 判断控件点击状态
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);
}
}
}
}