using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Shared;
using Shared.SimpleControl;
using Shared.SimpleControl.R;
using SmartHome;
namespace SuperGateWay
{
public class LogicListPage : FrameLayout
{
public LogicListPage ()
{
Tag = "Logic";
}
Button beforeClickButton = new Button ();
GateWay gateWay;
Logic logicIfon = null;
public void Show (GateWay gateWay)
{
this.gateWay = gateWay;
this.BackgroundColor = 0xFF1F1F1F;
this.AddChidren (new Button {
Height = Application.GetRealHeight (30),
});
var topFrameLayout = new FrameLayout {
Height = Application.GetRealHeight (100),
Y = Application.GetRealHeight (30),
};
AddChidren (topFrameLayout);
var titleName = new Button {
TextID = MyInternationalizationString.automation,
TextSize = 17,
};
topFrameLayout.AddChidren (titleName);
var back = new Button {
Width = Application.GetRealWidth (82),
Height = Application.GetRealHeight (89),
X = Application.GetRealWidth (10),
Gravity = Gravity.CenterVertical,
UnSelectedImagePath = "MusicIcon/HomepageBack.png",
};
topFrameLayout.AddChidren (back);
back.MouseDownEventHandler += (sender, e) => {
RemoveFromParent ();
};
var searchdevice = new Button {
Width = Application.GetMinRealAverage (60),
Height = Application.GetMinRealAverage (80),
X = Application.GetRealWidth (550),
Gravity = Gravity.CenterVertical,
UnSelectedImagePath = "MusicIcon/seekdevice.png",
};
topFrameLayout.AddChidren (searchdevice);
var tetleframeLayout = new FrameLayout {
Y = topFrameLayout.Bottom,
Height = Application.GetRealHeight (100),
BackgroundColor = 0xff0f0f0f,
};
AddChidren (tetleframeLayout);
var tetlebtn = new Button {
Width = Application.GetRealWidth (400),
TextID = MyInternationalizationString.selectsavedautomation,
//Text = "请选择已保存自动化",
TextSize = 16,
TextAlignment = TextAlignment.CenterLeft,
X = Application.GetRealWidth (40),
};
tetleframeLayout.AddChidren (tetlebtn);
var middle = new VerticalScrolViewLayout ();
middle.Y = tetleframeLayout.Bottom;
middle.Height = Application.GetRealHeight (Application.DesignHeight - 130 - 100 - 80);
middle.BackgroundColor = 0xff2F2F2F;
this.AddChidren (middle);
var btncomplete = new Button {
Y = middle.Bottom,
Height = Application.GetRealHeight (80),
TextID = MyInternationalizationString.complete,
TextSize=16,
};
AddChidren (btncomplete);
///加载逻辑界面的方法
refreshlogicView (middle);
///逻辑刷新图标的点击事件
searchdevice.MouseUpEventHandler += (sender, e) => {
middle.RemoveAll ();
logicIfon = null;
refreshlogiclist (() => {
///加载逻辑界面的方法
refreshlogicView (middle);
});
};
///保存控件的点击事件
btncomplete.MouseUpEventHandler += (sedder, e) => {
if (gateWay.Logics.Count == 0||logicIfon==null) {
var alert = new Alert (Language.StringByID (MyInternationalizationString.Prompt),
Language.StringByID (MyInternationalizationString.selectlogic),
Language.StringByID (MyInternationalizationString.OK));
alert.Show ();
return;
}
var selectedLogicState = new SelectedLogicState ();
MainPage.MainFrameLayout.AddChidren (selectedLogicState);
selectedLogicState.Show (gateWay, logicIfon);
};
}
///
/// 读取逻辑列表
///
/// The refreshlogiclist.
/// Gate way.
async void refreshlogiclist (Action action)
{
gateWay.Logics.Clear ();
MainPage.Loading.Start ();
await System.Threading.Tasks.Task.Run (() => {
try {
var logicuidlist = Control.getLogiclist ();
//logicuidlist.Add ("logicuidlist");
if (logicuidlist == null) {
return;
}
var array = logicuidlist.ToArray ();
Array.Sort (array);
foreach (var logicuid in array) {
try {
var result= Control.getSceneByUID (logicuid.Replace (".json", ""));
// string result = "{\"module\":\"logic\",\"name\":\"logic_name\",\"sid\":\"10010B0506010001\",\"objects\":[{\"sid\":\"45678912\",\"value\":\"1\"}],\"delay\":\"10\",\"trigger\":\"0\",\"operator\":\"&&\",\"conditions\":[{\"sid\":\"10010B0506010001\",\"value\":\"1\"}]}";
//string result = "{\"module\":\"logic\",\"name\":\"logic_name\",\"sid\":\"1234556778\",\"param\":{\"operator\":\"&&\",\"delay\":\"10\"},\"input\":[{\"sid\":\"1001560306010001\",\"value\":\"1\",\"param\":{\"continue\":\"5\",\"compare\":\"=\",\"chinese_calendar\":\"false\"}},{\"sid\":\"1001590405010001\",\"value\":\"1\",\"param\":{\"continue\":\"5\",\"compare\":\"=\",\"chinese_calendar\":\"false\"}}],\"output\":[{\"objects\":[{\"sid\":\"1001560305000002\",\"value\":\"0\",\"delay\":\"10\"},{\"sid\":\"1001780302000002\",\"value\":\"0\",\"delay\":\"10\"}]},{\"objects\":[{\"sid\":\"1001780302010002\",\"value\":\"1\",\"delay\":\"10\"},{\"sid\":\"1001780305010002\",\"value\":\"1\",\"delay\":\"10\"}]}]}";
if (result == null) {
continue;
}
var logicstring = Newtonsoft.Json.JsonConvert.DeserializeObject (result);
if (logicstring != null) {
//logicstring.inputSidToDevice ();
//logicstring.outputSidToDevice ();
gateWay.Logics.Add (logicstring);
}
} catch (Exception e) {
var s = e.Message;
}
}
} catch { }
});
MainPage.Loading.Hide ();
action ();
}
///
/// 加载逻辑界面的方法
///
/// Middle.
/// Logic ifon.
void refreshlogicView (VerticalScrolViewLayout middle )
{
foreach (var logic in gateWay.Logics) {
var deviceRowLayout = new RowLayout {
Height = Application.GetRealHeight (100),
};
middle.AddChidren (deviceRowLayout);
var btn = new Button {
Height = Application.GetRealHeight (100),
Width = LayoutParams.MatchParent,
SelectedBackgroundColor = 0xfffe5e00,
};
deviceRowLayout.AddChidren (btn);
var btnlogic = new Button {
Width = Application.GetRealWidth (200),
Text = logic.name,
TextAlignment = TextAlignment.CenterLeft,
X = Application.GetRealWidth (40),
};
deviceRowLayout.AddChidren (btnlogic);
var btnlogicback = new Button {
Width = Application.GetRealWidth (87),
Height = Application.GetRealHeight (100),
UnSelectedImagePath = "MusicIcon/Next.png",
SelectedImagePath = "MusicIcon/NextSelecte.png",
X = Application.GetRealWidth (525),
};
deviceRowLayout.AddChidren (btnlogicback);
EventHandler logicclick = (sender, e) => {
logicIfon = logic;
beforeClickButton.IsSelected = false;
beforeClickButton = btn;
btn.IsSelected = true;
};
btnlogic.MouseUpEventHandler += logicclick;
deviceRowLayout.MouseUpEventHandler += logicclick;
btnlogicback.MouseUpEventHandler += logicclick;
btn.MouseUpEventHandler += logicclick;
}
}
}
}