using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.UserView;
using Shared.R;
namespace Shared.Phone.Device.Logic
{
public class LogicMain
{
FrameLayout functionSceneAutoBodyView = null;
///
/// 自动化
///
public async void ShowAutotion(FrameLayout frameLayoutfunctionSceneAutoBodyView)
{
functionSceneAutoBodyView = frameLayoutfunctionSceneAutoBodyView;
functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
var bjFrameLayout = new FrameLayout
{
Width = Application.GetRealWidth(1080 - 58),
Height = Application.GetRealHeight(170),
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
X = Application.GetRealWidth(58),
Radius = (uint)Application.GetRealHeight(50),
Y = Application.GetRealHeight(30),
};
functionSceneAutoBodyView.AddChidren(bjFrameLayout);
var sigBtn = new Button
{
Width = Application.GetMinRealAverage(84),
Height = Application.GetMinRealAverage(84),
UnSelectedImagePath = "ZigeeLogic/sign.png",
X = Application.GetRealWidth(58),
Gravity = Gravity.CenterVertical,
};
bjFrameLayout.AddChidren(sigBtn);
var recommendtextBtn = new Button
{
Width = Application.GetMinRealAverage(300),
Height = Application.GetMinRealAverage(84),
X = sigBtn.Right + Application.GetRealWidth(35),
TextAlignment = TextAlignment.CenterLeft,
//Text = "推荐模板",
TextID = MyInternationalizationString.logictemplate,
Gravity = Gravity.CenterVertical,
TextColor = ZigbeeColor.Current.LogicBtnSelectedColor,
};
bjFrameLayout.AddChidren(recommendtextBtn);
var recommendswitchBtn = new Button
{
Width = Application.GetMinRealAverage(104),
Height = Application.GetMinRealAverage(63),
UnSelectedImagePath = "ZigeeLogic/logicclose.png",
SelectedImagePath = "ZigeeLogic/logicopen.png",
X = bjFrameLayout.Width - Application.GetRealWidth(104 + 58),
Gravity = Gravity.CenterVertical,
};
bjFrameLayout.AddChidren(recommendswitchBtn);
var scenehorizontalScrol = new HorizontalScrolViewLayout
{
Width = Application.GetRealWidth(1080 - 58),
X = Application.GetRealWidth(58),
Y = bjFrameLayout.Bottom + Application.GetRealHeight(30),
Height = Application.GetRealHeight(0),
};
functionSceneAutoBodyView.AddChidren(scenehorizontalScrol);
var logicScrolView = new VerticalScrolViewLayout
{
Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
X = Application.GetRealWidth(58),
Radius = (uint)Application.GetRealHeight(50),
Y = scenehorizontalScrol.Bottom,
};
functionSceneAutoBodyView.AddChidren(logicScrolView);
recommendswitchBtn.MouseUpEventHandler += (sender, e) =>
{
int Yheight = 0;
recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected;
scenehorizontalScrol.RemoveAll();
if (recommendswitchBtn.IsSelected)
{
scenehorizontalScrol.Height = Application.GetRealHeight(246);
Yheight = 20;
for (int i = 1; i < 4; i++)
{
var frameLayout = new FrameLayout
{
Width = Application.GetMinRealAverage(369 + 46),
Height = Application.GetMinRealAverage(246),
};
scenehorizontalScrol.AddChidren(frameLayout);
var logiciocnBtn = new Button
{
Width = Application.GetMinRealAverage(369),
Height = Application.GetMinRealAverage(246),
UnSelectedImagePath = "ZigeeLogic/" + i + ".png",
Tag = i,
};
frameLayout.AddChidren(logiciocnBtn);
var logicnameBtn = new Button
{
Width = Application.GetMinRealAverage(250),
Height = Application.GetMinRealAverage(80),
X = Application.GetRealWidth(23),
Y = Application.GetRealHeight(246 - 23 - 80),
TextAlignment = TextAlignment.CenterLeft,
TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
};
frameLayout.AddChidren(logicnameBtn);
if (i == 1)
{
logicnameBtn.Text = Language.StringByID(MyInternationalizationString.onlight);
}
else if (i == 2)
{
logicnameBtn.Text = Language.StringByID(MyInternationalizationString.offlight);
}
else if (i == 3)
{
logicnameBtn.Text = Language.StringByID(MyInternationalizationString.automation1);
}
EventHandler iconclick = (sender1, e1) =>
{
Common.Logic.CurrentLogic = new Common.Logic();
Common.Logic.CurrentLogic.IsEnable = 1;//默认为开
if (logiciocnBtn.Tag.ToString() == "3")
{
Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;// Language.StringByID(MyInternationalizationString.automation1);
var addLogicPage = new Logic.AddLogicPage();
HomePage.Instance.AddChidren(addLogicPage);
HomePage.Instance.PageIndex += 1;
addLogicPage.Show();
}
else
{
Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
Logic.TemplatePage templatePage = new Logic.TemplatePage();
Logic.TemplatePage.s = logiciocnBtn.Tag.ToString();
HomePage.Instance.AddChidren(templatePage);
HomePage.Instance.PageIndex += 1;
templatePage.Show();
}
};
logiciocnBtn.MouseUpEventHandler += iconclick;
logicnameBtn.MouseUpEventHandler += iconclick;
}
}
else
{
scenehorizontalScrol.Height = Application.GetRealHeight(0);
Yheight = 0;
}
logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight;
logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight;
Automationview(logicScrolView);
};
CommonPage.Loading.Start();
if (Common.Logic.LogicList.Count == 0)
{
var Idlist = await Logic.Send.GetLogicId(0);
if (Idlist.Count != 0)
{
var listlogic = await Logic.Send.ReadList(Idlist.Count, 0);
//foreach可能集合已被修改,枚举操作可能不会执行,可能出现崩溃(建议for)。
for (int j = 0; j < listlogic.Count; j++)
{
var logic = listlogic[j];
if (logic.LogicType != 0)
{
continue;
}
Common.Logic.LogicList.Add(logic);
}
}
}
//自动化
Automationview(logicScrolView);
CommonPage.Loading.Hide();
}
///
/// 自动化列表界面
///
/// Refresview.
public async void Automationview(VerticalScrolViewLayout refresview)
{
refresview.RemoveAll();
foreach (var logic in Common.Logic.LogicList)
{
var logicRowlayout = new RowLayout
{
Height = Application.GetRealHeight(190 + 30),
Width = Application.GetRealWidth(1080),
LineColor = ZigbeeColor.Current.LogicBackgroundColor,
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
};
refresview.AddChidren(logicRowlayout);
var logicnameBtn = new Button
{
Height = Application.GetRealHeight(58),
Width = Application.GetRealWidth(350),
Text = logic.LogicName,
X = Application.GetRealWidth(12 + 46),
Y = Application.GetRealHeight(30),
TextAlignment = TextAlignment.CenterLeft,
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
};
logicRowlayout.AddChidren(logicnameBtn);
var logicswitchBtn = new Button
{
Width = Application.GetMinRealAverage(104),
Height = Application.GetMinRealAverage(63),
UnSelectedImagePath = "ZigeeLogic/logicclose.png",
SelectedImagePath = "ZigeeLogic/logicopen.png",
X = logicRowlayout.Width - Application.GetRealWidth(104 + 58 + 58),
Y = Application.GetRealHeight(58 + 30 + 9 + 30),
};
logicRowlayout.AddChidren(logicswitchBtn);
logicswitchBtn.MouseUpEventHandler += (sender1, e1) =>
{
logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected;
if (logicswitchBtn.IsSelected)
{
//逻辑开
logic.IsEnable = 1;
StatusColor(logic, logicRowlayout, 1);
}
else
{
//逻辑关
logic.IsEnable = 0;
StatusColor(logic, logicRowlayout, 0);
}
Logic.Send.LogicControlSwitch(logic);
//Logic.Send.AddModifyLogic(logic);
};
if (logic.IsEnable == 1)
{
logicswitchBtn.IsSelected = true;
StatusColor(logic, logicRowlayout, 1);
}
else if (logic.IsEnable == 0)
{
logicswitchBtn.IsSelected = false;
StatusColor(logic, logicRowlayout, 0);
}
///编辑
var edit = new Button
{
BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1,
Text = Language.StringByID(MyInternationalizationString.edit),
TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
};
logicRowlayout.AddRightView(edit);
edit.MouseUpEventHandler += (sender, e) =>
{
Common.Logic.CurrentLogic = logic;
var logicCommunalPage = new Logic.LogicCommunalPage();
HomePage.Instance.AddChidren(logicCommunalPage);
HomePage.Instance.PageIndex += 1;
logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview); });
};
///删除
var del = new Button
{
BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1,
Text = Language.StringByID(MyInternationalizationString.del),
TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
};
logicRowlayout.AddRightView(del);
del.MouseUpEventHandler += (sender, e) =>
{
var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete),
Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim));
alert.ResultEventHandler += (sender1, e1) =>
{
if (e1)
{
Common.Logic.LogicList.Remove(logic);
Automationview(refresview);
Logic.Send.DelLogic(logic.LogicId);
}
};
alert.Show();
};
var line = new Button
{
Y = Application.GetRealHeight(215),
Height = Application.GetRealHeight(5),
Width = Application.GetRealWidth(1080 - 58),
BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
X = Application.GetRealWidth(58),
};
logicRowlayout.AddChidren(line);
}
}
///
/// 显示图标的颜色
///
///
///
///
public void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue)
{
var logictimeBtn = new Button
{
Height = Application.GetRealHeight(58),
Width = logicRowlayout.Width - Application.GetRealWidth(58 + 12 + 350 + 58),
Y = Application.GetRealHeight(30),
X = Application.GetRealWidth(365),
TextAlignment = TextAlignment.CenterRight,
TextColor = ZigbeeColor.Current.LogicListWeekTextColor,
};
logicRowlayout.AddChidren(logictimeBtn);
///显示执行周期
switch (logic.TimeAttribute.Repeat)
{
///0:只执行一次,执行后IsEnable值置;1,今年内执行;2:每天执行;3:每月执行;4:每年执行;5:周重复。
case 0:
{
logictimeBtn.Text = Language.StringByID(MyInternationalizationString.executeonce);
}; break;
case 1: { }; break;
case 2:
{
logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyday);
}; break;
case 3:
{
string len = "", value = "";
var stringvalue = Convert.ToString(logic.TimeAttribute.MonthDate, 2);
var str = stringvalue.Insert(0, new string('0', 32 - stringvalue.Length));
for (int j = 31; j >= 0; j--)
{
len += str.Substring(j, 1);
}
for (int j = 0; j < len.Length; j++)
{
var strvalue = len.Substring(j, 1);
if (strvalue == "1")
{
value += (j + 1).ToString() + ",";
}
}
logictimeBtn.Text = Language.StringByID(MyInternationalizationString.monthly) + value.TrimEnd(',') + Language.StringByID(MyInternationalizationString.day);
}; break;
case 4:
{
Dictionary dictionary = new Dictionary();
///找出执行的月份和天数
if (logic.TimeAttribute.SelectMonDate.Count != 0)
{
for (int i = 0; i < logic.TimeAttribute.SelectMonDate.Count; i++)
{
var dayvalue = logic.TimeAttribute.SelectMonDate[i];
if (dayvalue != 0)
{
dictionary.Add(i + 1, dayvalue);
}
}
}
if (dictionary.Count != 0 && dictionary.Count == 1)
{
string len = "", leng = "";
int minvalue = 0, Maximum = 0;
foreach (var value in dictionary)
{
///取出月份
var month = value.Key;
///取出日数
var day = value.Value;
var maxvalue = Convert.ToString(day, 2);
var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length));
for (int j = 31; j >= 0; j--)
{
len += str.Substring(j, 1);
}
for (int j = 0; j < len.Length; j++)
{
var strvalue = len.Substring(j, 1);
if (strvalue == "1")
{
minvalue = j + 1;
break;
}
}
for (int j = 0; j < len.Length; j++)
{
var strvalue = len.Substring(j, 1);
if (strvalue == "1")
{
Maximum = j + 1;
}
}
if (month.ToString().Length < 2)
{
leng = "0" + month.ToString();
}
else
{
leng = month.ToString();
}
if (minvalue == Maximum)
{
logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString());
}
else
{
logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-" + leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString());
}
}
}
else
{
int b = 0;
string stringtext = "";
foreach (var value in dictionary)
{
string len = "", leng = "";
int minvalue = 0, Maximum = 0;
///取出月份
var month = value.Key;
///取出日数
var day = value.Value;
var maxvalue = Convert.ToString(day, 2);
var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length));
for (int j = 31; j >= 0; j--)
{
len += str.Substring(j, 1);
}
if (month.ToString().Length < 2)
{
leng = "0" + month.ToString();
}
else
{
leng = month.ToString();
}
if (b == 0)
{
for (int j = 0; j < len.Length; j++)
{
var strvalue = len.Substring(j, 1);
if (strvalue == "1")
{
minvalue = j + 1;
break;
}
}
stringtext += leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-";
}
if (b == dictionary.Count - 1)
{
for (int j = 0; j < len.Length; j++)
{
var strvalue = len.Substring(j, 1);
if (strvalue == "1")
{
Maximum = j + 1;
}
}
stringtext += leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString());
}
b++;
}
logictimeBtn.Text = Language.StringByID(MyInternationalizationString.everyyear) + stringtext;
}
}; break;
case 5:
{
string len = "", text = "";
List listvalueInt = new List();
listvalueInt.Clear();
var maxvalue = Convert.ToString(logic.TimeAttribute.WeekDay, 2);
var str = maxvalue.Insert(0, new string('0', 8 - maxvalue.Length));
for (int j = 7; j >= 0; j--)
{
len += str.Substring(j, 1);
}
for (int j = 0; j < len.Length; j++)
{
var strvalue = len.Substring(j, 1);
if (strvalue == "1")
{
listvalueInt.Add(j + 1);
if ((j + 1) == 1)
{
text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.mon1) + ",";
//text += Language.StringByID(MyInternationalizationString.mon) + ",";
}
else if ((j + 1) == 2)
{
text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.tue1) + ",";
//text += Language.StringByID(MyInternationalizationString.tue) + ",";
}
else if ((j + 1) == 3)
{
text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.wed1) + ",";
//text += Language.StringByID(MyInternationalizationString.wed) + ",";
}
else if ((j + 1) == 4)
{
text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.thu1) + ",";
//text += Language.StringByID(MyInternationalizationString.thu) + ",";
}
else if ((j + 1) == 5)
{
text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.frl1) + ",";
//text += Language.StringByID(MyInternationalizationString.frl) + ",";
}
else if ((j + 1) == 6)
{
text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sat1) + ",";
//text += Language.StringByID(MyInternationalizationString.sat) + ",";
}
else if ((j + 1) == 7)
{
text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sun1) + ",";
//text += Language.StringByID(MyInternationalizationString.sun) + ",";
}
}
}
//暂时隐藏掉,需要显示周末和工作日再放开;
//if (listvalueInt.Count == 5 && !listvalueInt.Contains(6) && !listvalueInt.Contains(7))
//{
// btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.workingday);
//}
//else if (listvalueInt.Count == 2 && listvalueInt.Contains(6) && listvalueInt.Contains(7))
//{
// btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.weekend);
//}
//else if (listvalueInt.Count == 7)
//{
// btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.everyday);
//}
//else
//{
// btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(',');
//}
logictimeBtn.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(',');
//btndisplaycycle.Text = text.TrimEnd(',');
}; break;
}
List indexlist = new List();
List iconIndexlist = new List();
for (int i = 0; i < logic.Actions.Count; i++)
{
var linkType = logic.Actions[i]["LinkType"].ToString();
var d = indexlist.Find((value) => { return value == linkType; });
if (d == null)
{
indexlist.Add(linkType);
}
}
if (indexlist.Contains("0"))
{
iconIndexlist.Add("0");
}
if (indexlist.Contains("2"))
{
iconIndexlist.Add("2");
}
if (indexlist.Contains("6"))
{
iconIndexlist.Add("6");
}
if (indexlist.Contains("7"))
{
iconIndexlist.Add("7");
}
for (int i = 0; i < iconIndexlist.Count; i++)
{
var iconindex = iconIndexlist[i];
var typebjBtn = new FrameLayout
{
Width = Application.GetRealWidth(82),
Height = Application.GetRealHeight(82),
X = Application.GetRealWidth(58) + Application.GetRealWidth(12 + (12 + 82 + 45 + 12) * i),
Y = Application.GetRealHeight(58 + 30 + 30),
Radius = (uint)Application.GetRealHeight(41),
BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
};
logicRowlayout.AddChidren(typebjBtn);
var typeIconBtn = new Button
{
Width = Application.GetRealWidth(58),
Height = Application.GetRealHeight(58),
Gravity = Gravity.Center,
};
typebjBtn.AddChidren(typeIconBtn);
var connectIconBtn = new Button
{
Y = typebjBtn.Y + Application.GetRealHeight(35),
X = Application.GetRealWidth(58) + Application.GetRealWidth((12 + 82 + 12) + (12 + 45 + 82 + 12) * i),
Width = Application.GetRealWidth(48),
Height = Application.GetRealHeight(15),
UnSelectedImagePath = "ZigeeLogic/connect.png",
};
logicRowlayout.AddChidren(connectIconBtn);
if (iconIndexlist.Count - 1 == i)
{
connectIconBtn.Visible = false;
}
switch (iconindex)
{
case "0":
{
if (intvalue == 1)
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color;
}
else
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
}
}
break;
case "2":
{
if (intvalue == 1)
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/scene1.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicScene1Color;
}
else
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/noscene.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
}
}
break;
case "6":
{
if (intvalue == 1)
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/security1.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicSecurity1Color;
}
else
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nosecurity.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
}
}
break;
case "7":
{
if (intvalue == 1)
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/delay1.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicDelay1Color;
}
else
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nodelay.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
}
}
break;
}
}
}
public void AddLogic() {
//new一个新逻辑对象;
Common.Logic.CurrentLogic = new Common.Logic();
Common.Logic.CurrentLogic.IsEnable = 1;//默认为开
Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1);
var addLogicPage = new AddLogicPage();
UserView.HomePage.Instance.AddChidren(addLogicPage);
UserView.HomePage.Instance.PageIndex += 1;
addLogicPage.Show();
}
}
}