using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.R;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DeviceBind
{
///
/// 空气质量传感器的时间设置
///
public class AirQualitySensorLogic : BindCommonLayout
{
/// 构造函数
///
///
public AirQualitySensorLogic(ZigBee.Device.TemperatureSensor sensor, TemperatureSensor.LedTimeData ledTimeData = null)
{
this.sensor = sensor;
if (ledTimeData == null)
{
curLedTimeData = new TemperatureSensor.LedTimeData();
}
else
{
curLedTimeData = ledTimeData;
}
setLedTimeData.enable= curLedTimeData.enable;
setLedTimeData.endHour = curLedTimeData.endHour;
setLedTimeData.endMin = curLedTimeData.endMin;
setLedTimeData.remark = curLedTimeData.remark;
setLedTimeData.serialNum = curLedTimeData.serialNum;
setLedTimeData.startHour = curLedTimeData.startHour;
setLedTimeData.startMin = curLedTimeData.startMin;
this.curNum = curNum;
}
#region 变量申明
///
/// 当前空气质量传感器对象
///
TemperatureSensor sensor;
///
/// 当前序号
///
int curNum = -1;
///
/// 灯设置灯数据
///
TimeData setLedTimeData = new TimeData();
///
/// 当前存在的灯数据
///
TemperatureSensor.LedTimeData curLedTimeData;
///
/// 文本名称编辑
///
EditText nameLed;
public Action refreshAction;
///
/// 当前操作索引
///
private int curOperateIndex = 0;
#endregion
///
/// 显示
///
public void Show()
{
TopFrameLayout();
MiddleFrameLayout();
}
///
/// Top布局
///
void TopFrameLayout()
{
string topicStr = "";
if (curLedTimeData.serialNum != -1)
{
topicStr = Language.StringByID(R.MyInternationalizationString.editautomation);
}
else
{
topicStr = Language.StringByID(R.MyInternationalizationString.newautomation);
}
this.TopFrameLayout(this, topicStr);
EventHandler eHandlerBack = (sender, e) =>
{
RemoveFromParent();
};
this.btnBack.MouseUpEventHandler += eHandlerBack;
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
}
///
/// Middle布局
///
void MiddleFrameLayout()
{
this.MidFrameLayout(this);
#region 自动化名称
var logicnamefl = new FrameLayout
{
Height = Application.GetRealHeight(130),
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
};
this.midFrameLayout.AddChidren(logicnamefl);
var text = new Button
{
Width = Application.GetRealWidth(270),
Height = Application.GetRealHeight(60),
X = Application.GetRealWidth(58),
TextAlignment = TextAlignment.CenterLeft,
Text = Language.StringByID(MyInternationalizationString.automationname) + ":",
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
Y = Application.GetRealHeight(35),
TextSize = 15,
};
logicnamefl.AddChidren(text);
nameLed = new EditText
{
Y = Application.GetRealHeight(35),
Width = Application.GetRealWidth(1080 - 58 - 300),
Height = Application.GetRealHeight(60),
X = text.Right - Application.GetRealWidth(7),
TextAlignment = TextAlignment.CenterLeft,
TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
TextSize = 14,
PlaceholderText = Language.StringByID(MyInternationalizationString.LEDSet),
PlaceholderTextColor = ZigbeeColor.Current.LogicBtnCancelColor,
};
logicnamefl.AddChidren(nameLed);
if (string.IsNullOrEmpty(curLedTimeData.remark))
{
nameLed.Text = Language.StringByID(MyInternationalizationString.LEDSet);
}
else
{
nameLed.Text = curLedTimeData.remark;
}
#endregion
#region 没有点击事件的布局
var contentFrameLayout = new FrameLayout
{
Height = Application.GetRealHeight(1282),
Y = Application.GetRealHeight(150),
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
};
this.midFrameLayout.AddChidren(contentFrameLayout);
var conditionBtn = new Button
{
Width = Application.GetRealWidth(965),
Height = Application.GetRealHeight(127),
X = Application.GetRealWidth(58),
Y = Application.GetRealHeight(20),
TextAlignment = TextAlignment.CenterLeft,
TextID = MyInternationalizationString.ifcondition,
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
TextSize = 15,
};
contentFrameLayout.AddChidren(conditionBtn);
var conditionLine = new Button
{
Width = Application.GetRealWidth(965),
Height = 1,
X = Application.GetRealWidth(58),
Y = Application.GetRealHeight(20 + 127),
BackgroundColor = ZigbeeColor.Current.XMRowLine,
};
contentFrameLayout.AddChidren(conditionLine);
var conditionPic = new Button
{
Width = Application.GetMinRealAverage(69),
Height = Application.GetMinRealAverage(69),
X = Application.GetRealWidth(89),
Y = Application.GetRealHeight(204),
UnSelectedImagePath = "AirQualitySensor/LEDLogic1.png",
};
contentFrameLayout.AddChidren(conditionPic);
var executeBtn = new Button
{
Width = Application.GetRealWidth(965),
Height = Application.GetRealHeight(127),
X = Application.GetRealWidth(58),
Y = Application.GetRealHeight(536),
TextAlignment = TextAlignment.CenterLeft,
TextID = MyInternationalizationString.execute,
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
TextSize = 15,
};
contentFrameLayout.AddChidren(executeBtn);
var executeLine = new Button
{
Width = Application.GetRealWidth(965),
Height = 1,
X = Application.GetRealWidth(58),
Y = Application.GetRealHeight(536 + 127),
BackgroundColor = ZigbeeColor.Current.XMRowLine,
TextSize = 15,
};
contentFrameLayout.AddChidren(executeLine);
var executePic = new Button
{
Width = Application.GetMinRealAverage(69),
Height = Application.GetMinRealAverage(69),
X = Application.GetRealWidth(89),
Y = Application.GetRealHeight(717),
UnSelectedImagePath = "AirQualitySensor/LED72.png",
};
contentFrameLayout.AddChidren(executePic);
var closeFrameLayout = new FrameLayout
{
Width = Application.GetRealWidth(867),
Height = Application.GetRealHeight(127),
X = Application.GetRealWidth(156),
Y = executeBtn.Bottom + Application.GetRealHeight(29),
};
contentFrameLayout.AddChidren(closeFrameLayout);
var closeRightText = new Button
{
Width = Application.GetRealWidth(204 + 100),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(23),
Y = Application.GetRealHeight(32),
TextAlignment = TextAlignment.CenterLeft,
TextID = MyInternationalizationString.DeviceLED,
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
TextSize = 15,
};
closeFrameLayout.AddChidren(closeRightText);
var closeLeftText = new Button
{
Width = Application.GetRealWidth(81 + 100),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(629),
Y = Application.GetRealHeight(32),
TextAlignment = TextAlignment.CenterRight,
TextID = MyInternationalizationString.Close,
TextColor = ZigbeeColor.Current.XMGray3,
TextSize = 15,
};
closeFrameLayout.AddChidren(closeLeftText);
#endregion
timeFrameLayoutUI(contentFrameLayout);
var btnFinifh = new Button()
{
Width = Application.GetRealWidth(907),
Height = Application.GetRealHeight(127),
X = Application.GetRealWidth(86),
Y = Application.GetRealHeight(1476),
Gravity = Gravity.CenterHorizontal,
Radius = (uint)Application.GetRealHeight(120) / 2,
TextID = R.MyInternationalizationString.Save,
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
TextSize = 16,
IsBold = true,
};
this.midFrameLayout.AddChidren(btnFinifh);
btnFinifh.MouseDownEventHandler += async (sender, e) =>
{
try
{
if (setLedTimeData.startHour == -1)
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.StartTimeEmpty), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance);
});
return;
}
if (setLedTimeData.endHour == -1)
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.EndTimeEmpty), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance);
});
return;
}
if (!CheckValidTime(setLedTimeData.startHour, setLedTimeData.startMin, setLedTimeData.endHour, setLedTimeData.endMin))
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.LedBindTip1), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance);
return;
}
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start("");
});
if (string.IsNullOrEmpty(nameLed.Text))
{
setLedTimeData.remark = nameLed.PlaceholderText;
}
else
{
setLedTimeData.remark = nameLed.Text;
}
if (!string.IsNullOrEmpty(setLedTimeData.remark))
{
var reamarkGwBytes = System.Text.Encoding.UTF8.GetBytes(setLedTimeData.remark);
if (36 < reamarkGwBytes.Length)
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.LedNameTooLong), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance);
});
return;
}
}
setLedTimeData.enable = 1;
if (curLedTimeData.serialNum != -1)
{
//修改
setLedTimeData.serialNum = curLedTimeData.serialNum;
}
else
{
//新增
for (int key = 0; key < 5; key++)
{
if (sensor.AirQualitySensorLedTimeList.ContainsKey(key) == false)
{
setLedTimeData.serialNum = key;
break;
}
}
}
TemperatureSensor.LedTimeData ledTimeDataTemp = new TemperatureSensor.LedTimeData();
ledTimeDataTemp.enable = setLedTimeData.enable;
ledTimeDataTemp.endHour = setLedTimeData.endHour;
ledTimeDataTemp.endMin = setLedTimeData.endMin;
ledTimeDataTemp.remark = setLedTimeData.remark;
ledTimeDataTemp.serialNum = setLedTimeData.serialNum;
ledTimeDataTemp.startHour = setLedTimeData.startHour;
ledTimeDataTemp.startMin = setLedTimeData.startMin;
var result = await sensor.SetAirQualitySensorLedTime(ledTimeDataTemp);
if (result != null && result.responseData != null)
{
if (result.responseData.status == 0)
{
if (sensor.AirQualitySensorLedTimeList.ContainsKey(setLedTimeData.serialNum))
{
sensor.AirQualitySensorLedTimeList[setLedTimeData.serialNum] = ledTimeDataTemp;
}
else
{
sensor.AirQualitySensorLedTimeList.Add(setLedTimeData.serialNum, ledTimeDataTemp);
}
Application.RunOnMainThread(() =>
{
refreshAction?.Invoke();
RemoveFromParent();
});
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AddFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance);
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance);
});
}
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Hide();
});
}
};
}
///
/// 有点击的布局,时间布局
///
void timeFrameLayoutUI(FrameLayout contentFrameLayout)
{
Action okAction = null;
for (int i = 0; i < 2; i++)
{
int curIndex = i;
var timeFrameLayout = new FrameLayout
{
Width = Application.GetRealWidth(867),
Height = Application.GetRealHeight(127),
X = Application.GetRealWidth(156),
Y = Application.GetRealHeight(176),
};
contentFrameLayout.AddChidren(timeFrameLayout);
var timeLeftText = new Button
{
Width = Application.GetRealWidth(204 + 100),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(23),
Y = Application.GetRealHeight(32),
TextAlignment = TextAlignment.CenterLeft,
TextID = MyInternationalizationString.starttime,
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
TextSize = 15,
};
timeFrameLayout.AddChidren(timeLeftText);
var timeRightText = new Button
{
Width = Application.GetRealWidth(81 + 300),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(429),
Y = Application.GetRealHeight(32),
Tag = curIndex,
TextAlignment = TextAlignment.CenterRight,
TextID = MyInternationalizationString.LEDSetTime,
TextColor = ZigbeeColor.Current.XMGray3,
TextSize = 14,
};
timeFrameLayout.AddChidren(timeRightText);
var line2 = new Button()
{
Y = timeFrameLayout.Height - 1,
Width = Application.GetRealWidth(867),
Height = 1,
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
};
timeFrameLayout.AddChidren(line2);
if (i == 1)
{
timeFrameLayout.Y = Application.GetRealHeight(331);
timeLeftText.TextID = MyInternationalizationString.endtime;
if (curLedTimeData.endHour != -1)
{
string em = curLedTimeData.endMin.ToString();
if (curLedTimeData.endMin < 10)
{
em = "0" + curLedTimeData.endMin;
}
timeRightText.Text = curLedTimeData.endHour + ":" + em;
}
}
else
{
if (curLedTimeData.startHour != -1)
{
string sm = curLedTimeData.startMin.ToString();
if (curLedTimeData.startMin < 10)
{
sm = "0" + curLedTimeData.startMin;
}
timeRightText.Text = curLedTimeData.startHour + ":" + sm;
}
}
EventHandler hander = (sender, e) =>
{
ClickHandle(curIndex, timeRightText);
};
timeLeftText.MouseDownEventHandler += hander;
timeFrameLayout.MouseDownEventHandler += hander;
timeRightText.MouseDownEventHandler += hander;
}
}
#region 公共事件处理
///
/// 事件处理
///
private void ClickHandle(int curIndex, Button timeRightText)
{
this.midFrameLayout.AddChidren(this.shadowRadiusFrameLayout);
this.bottomRadiusFrameLayout.Height = Application.GetRealHeight(806 - 127);
this.bottomRadiusFrameLayout.Y = Application.GetRealHeight(930 + 127);
this.bottomRadiusFrameLayout.RemoveAll();
this.BottomRadiusFrameLayout(this);
curOperateIndex = curIndex;
var mUIPickerView = new UIPickerView()
{
X = Application.GetRealWidth(0),
Height = Application.GetRealHeight(440),
};
this.bottomRadiusFrameLayout.AddChidren(mUIPickerView);
if (curIndex == 0)
{
this.btnBottomTitle.TextID = R.MyInternationalizationString.starttime;
}
else
{
this.btnBottomTitle.TextID = R.MyInternationalizationString.endtime;
}
mUIPickerView.Y = Application.GetRealWidth(245);
var mList1 = new List();
var mList2 = new List();
var mList3 = new List();
int cur1 = 0;
int cur2 = 0;
int cur3 = 0;
if (curIndex == 0)
{
if (curLedTimeData.startHour > 12)
{
cur1 = 1;
}
else
{
if (curLedTimeData.startHour ==0)
{
cur1 = 1;
}
}
if (curLedTimeData.startHour != 0)
{
cur2 = curLedTimeData.startHour - 1;
if (cur1 == 1)
{
cur2 = curLedTimeData.startHour - 13;
}
}
else
{
cur2 = 11;
}
cur3 = curLedTimeData.startMin;
}
else
{
if (curLedTimeData.endHour > 12)
{
cur1 = 1;
}
else
{
if (curLedTimeData.endHour == 0)
{
cur1 = 1;
}
}
if (curLedTimeData.endHour != 0)
{
cur2 = curLedTimeData.endHour - 1;
if (cur1 == 1)
{
cur2 = curLedTimeData.endHour - 13;
}
}
else
{
cur2 = 11;
}
cur3 = curLedTimeData.endMin;
}
mList1.Add(Language.StringByID(R.MyInternationalizationString.Morning));
mList1.Add(Language.StringByID(R.MyInternationalizationString.Afternoon));
for (int m = 1; m < 13; m++)
{
mList2.Add(m.ToString());
}
for (int d = 0; d < 60; d++)
{
mList3.Add(d.ToString());
}
mUIPickerView.setNPicker(mList1, mList2, mList3);
mUIPickerView.setCurrentItems(cur1, cur2, cur3);
mUIPickerView.OnSelectChangeEvent += (y, m, d) =>
{
int h = m + 1;
if (y > 0)
{
h += 12;
}
if (curIndex == 0)
{
setLedTimeData.startHour = h;
setLedTimeData.startMin = d;
}
else
{
setLedTimeData.endHour = h;
setLedTimeData.endMin = d;
}
};
btnCancel.MouseUpEventHandler += (sender1, e1) =>
{
this.shadowRadiusFrameLayout.RemoveFromParent();
};
btnFinish.MouseUpEventHandler += (sender1, e1) =>
{
if (curOperateIndex == 0)
{
if (setLedTimeData.startHour == -1)
{
setLedTimeData.startHour = 1;
}
if (setLedTimeData.startHour == 24)
{
setLedTimeData.startHour = 0;
}
string sm = setLedTimeData.startMin.ToString();
if (setLedTimeData.startMin < 10)
{
sm = "0" + setLedTimeData.startMin;
}
if (int.Parse(timeRightText.Tag.ToString()) == curOperateIndex)
{
timeRightText.Text = setLedTimeData.startHour + ":" + sm;
}
}
else
{
if (setLedTimeData.endHour == -1)
{
setLedTimeData.endHour = 1;
}
if (setLedTimeData.endHour == 24)
{
setLedTimeData.endHour = 0;
}
string em = setLedTimeData.endMin.ToString();
if (setLedTimeData.endMin < 10)
{
em = "0" + setLedTimeData.endMin;
}
if (int.Parse(timeRightText.Tag.ToString()) == curOperateIndex)
{
timeRightText.Text = setLedTimeData.endHour + ":" + em;
}
}
if (setLedTimeData.endHour != -1)
{
//首次输入
if (curOperateIndex == 0)
{
if (!CheckValidTime(setLedTimeData.startHour, setLedTimeData.startMin, setLedTimeData.endHour, setLedTimeData.endMin))
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.LedBindTip1), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance);
return;
}
this.shadowRadiusFrameLayout.RemoveFromParent();
}
else
{
if (!CheckValidTime(setLedTimeData.startHour, setLedTimeData.startMin, setLedTimeData.endHour, setLedTimeData.endMin))
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.LedBindTip2), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance);
return;
}
this.shadowRadiusFrameLayout.RemoveFromParent();
}
}
else
{
this.shadowRadiusFrameLayout.RemoveFromParent();
}
};
this.shadowRadiusFrameLayout.MouseUpEventHandler += (sender1, e1) =>
{
this.shadowRadiusFrameLayout.RemoveFromParent();
};
}
#endregion
///
/// 检查时间
///
///
private bool CheckValidTime(int st, int sm, int et, int em)
{
//开始时间
string nowValue1 = "";
nowValue1 = st.ToString().PadLeft(2, '0') + sm.ToString().PadLeft(2, '0');
//结束时间
string nowValue2 = "";
nowValue2 = et.ToString().PadLeft(2, '0') + em.ToString().PadLeft(2, '0');
if (nowValue1.CompareTo(nowValue2) == 1)
{
return false;
}
return true;
}
public class TimeData
{
///
/// 序号(正常序号0~4,共5个)
///
public int serialNum = -1;
///
/// 使能位
/// 0-无效 1--有效
///
public int enable = 0;
///
/// 起始时
///
public int startHour = -1;
///
/// 起始分
///
public int startMin;
///
/// 结束时
///
public int endHour = -1;
///
/// 结束分
///
public int endMin;
///
/// 备注
///
public string remark;
}
}
}