using System;
using System.Collections.Generic;
using Shared;
using Shared.Common;
using Shared.Phone.Device;
using Shared.R;
using ZigBee.Device;
using Shared.Phone.Device.Logic.LogicView;
namespace Shared.Phone.Device.Logic
{
public class AddLogicPage : FrameLayout
{
public AddLogicPage()
{
Tag = "Logic";
}
public void Show()
{
#region 界面的布局代码
TopView view = new TopView();
this.AddChidren(view.TopRowView());
view.toptitleNameBtn.TextID = MyInternationalizationString.selection;
view.clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); };
var middle = new FrameLayout
{
Y = view.topRowLayout.Bottom,
Height = Application.GetRealHeight(Method.H - 184),
BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
};
this.AddChidren(middle);
///时间
FunView timeView = new FunView();
timeView.iconBtn.UnSelectedImagePath = "ZigeeLogic/time.png";
timeView.funnameBtn.TextID = MyInternationalizationString.timecondition;
middle.AddChidren(timeView.FunFrameView());
///设备
FunView functionView = new FunView();
functionView.funFrameLayout.Y = timeView.funFrameLayout.Bottom;
functionView.iconBtn.UnSelectedImagePath = "ZigeeLogic/function.png";
functionView.funnameBtn.TextID = MyInternationalizationString.device;
middle.AddChidren(functionView.FunFrameView());
///安防
FunView securityView = new FunView();
securityView.funFrameLayout.Y = functionView.funFrameLayout.Bottom;
securityView.iconBtn.UnSelectedImagePath = "ZigeeLogic/security.png";
securityView.funnameBtn.TextID = MyInternationalizationString.security;
middle.AddChidren(securityView.FunFrameView());
///地理围栏
FunView positionView = new FunView();
positionView.funFrameLayout.Y = securityView.funFrameLayout.Bottom;
positionView.funFrameLayout.Height = Application.GetRealHeight(160+20);//最后一行增加20高度;
positionView.iconBtn.UnSelectedImagePath = "ZigeeLogic/position.png";
positionView.funnameBtn.TextID = MyInternationalizationString.location;
positionView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor;
middle.AddChidren(positionView.FunFrameView());
#endregion
timeView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
{
TimeView();
};
functionView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
{
var roomAndDeviceView = new RoomAndDeviceView();
UserView.HomePage.Instance.AddChidren(roomAndDeviceView);
UserView.HomePage.Instance.PageIndex += 1;
roomAndDeviceView.IfType = LogicView.IfString.Condition_Logic;
roomAndDeviceView.Show(Language.StringByID(MyInternationalizationString.devicestate));
};
securityView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
{
SecurityView(this,false);
};
positionView.clickviewBtn.MouseUpEventHandler += (sender, e) =>
{
LocationView(this, false);
};
}
///
/// 安防条件View
///
/// Fl main.
/// If set to true edit.
public static void SecurityView(FrameLayout flMain, bool edit)
{
string stateText = "";
if (edit)
{
foreach (var securityifon in Common.Logic.CurrentLogic.Conditions)
{
if (securityifon["Type"] == "6")
{
switch (securityifon["EnOrWithdrawMode"])
{
case "0":
{
if (securityifon["ModeId"] == "1")
{
stateText = Language.StringByID(MyInternationalizationString.logicathomegarrison);
}
else
{
stateText = Language.StringByID(MyInternationalizationString.logicremovehomegarrison);
}
}
break;
case "1":
{
stateText = Language.StringByID(MyInternationalizationString.withdrawal);
}
break;
case "2":
{
stateText = Language.StringByID(MyInternationalizationString.urgentwithdrawal);
}
break;
}
}
}
}
PublicInterface publicInterface = new PublicInterface();
var list=publicInterface.GetViewList("安防");
publicInterface.SingleSelectionShow(flMain, list, MyInternationalizationString.security, stateText, (str) =>
{
string EnOrWithdrawMode = "";
string ModeId = "";
//在家布防
if (str == Language.StringByID(MyInternationalizationString.logicathomegarrison))
{
EnOrWithdrawMode = "0";
ModeId = "1";
}
//离家布防
else if (str == Language.StringByID(MyInternationalizationString.logicremovehomegarrison))
{
EnOrWithdrawMode = "0";
ModeId = "2";
}
//撤防
else if (str == Language.StringByID(MyInternationalizationString.withdrawal))
{
EnOrWithdrawMode = "1";
ModeId = "0";
}
//胁迫撤防
else if (str == Language.StringByID(MyInternationalizationString.urgentwithdrawal))
{
EnOrWithdrawMode = "2";
ModeId = "0";
}
var securityConditions = new Dictionary();
securityConditions.Add("Type", "6");
securityConditions.Add("IsValid", "1");
securityConditions.Add("EnOrWithdrawMode", EnOrWithdrawMode);
securityConditions.Add("ModeId", ModeId);
LogicIfon.AddSecurityconditions(securityConditions);
var logicCommunalPage = new LogicCommunalPage();
UserView.HomePage.Instance.AddChidren(logicCommunalPage);
UserView.HomePage.Instance.PageIndex += 1;
logicCommunalPage.Show(() => { });
});
}
///
/// 地理围栏View
///
/// Fl main.
/// If set to true edit.
public static void LocationView(FrameLayout flMain, bool edit)
{
string strname = "";
double latitude = Config.Instance.Home.Latitude;//纬度
double longitude = Config.Instance.Home.Longitude;//经度
int r = 500;//半径
if (edit)
{
string guid = "";
foreach (var Locationifon in Common.Logic.CurrentLogic.Conditions)
{
if (Locationifon["Type"] == "7")
{
guid = Locationifon["WhoSiteUId"];
if (Locationifon["AtHome"] == "1")
{
strname = Language.StringByID(MyInternationalizationString.athome);
}
else
{
//离开地点
strname = Language.StringByID(MyInternationalizationString.leavehome);
}
break;
}
}
foreach (var accounts in Common.Logic.CurrentLogic.Accounts)
{
if (accounts["Type"] == "7" && accounts["Account"] == guid)
{
///转换为double类型;
latitude = Convert.ToDouble(accounts["Latitude"]) / 1000000.0;
longitude = Convert.ToDouble(accounts["Longitude"]) / 1000000.0;
r = int.Parse(accounts["Radius"]);
break;
}
}
}
PublicInterface publicInterface = new PublicInterface();
var list = publicInterface.GetViewList("地理围栏");
publicInterface.SingleSelectionShow(flMain, list, MyInternationalizationString.location, strname, (str) =>
{
var LocationConditionsInfo = new Dictionary();
LocationConditionsInfo.Add("Type", "7");
LocationConditionsInfo.Add("IsValid", "1");
LocationConditionsInfo.Add("WhoSiteUId", Config.Instance.Guid);
if (str == Language.StringByID(MyInternationalizationString.athome))
{
LocationConditionsInfo.Add("AtHome", "1");
}
else if (str == Language.StringByID(MyInternationalizationString.leavehome))
{
LocationConditionsInfo.Add("AtHome", "0");
}
#if Android
//申请定位权限
((BaseActivity)Application.Activity).SetGPSLocationPermission((result1) =>
{
if (result1 == false) { return; }
//申请允许程序写入外部存储,如SD卡上写文件
((BaseActivity)Application.Activity).SetPermission((result2) =>
{
if (result2 == false) { return; }
//读取电话状态权限
((BaseActivity)Application.Activity).SetPermission((result3) =>
{
if (result3 == false) { return; }
//调用方法,跳转页面
GDMapKit.Show((mLatitude, mLongitude, mRadius, name) =>
{
//截取字符串后第6位;
//var len = name.Substring(name.Length - 6, 6);
//点击保存按钮,回调当前选择的纬度,经度,半径范围
var latitudW = (int)Math.Truncate(mLatitude * 1000000);
var longitudeH = (int)Math.Truncate(mLongitude * 1000000);
Dictionary accounts = new Dictionary();
accounts.Add("Account", Config.Instance.Guid);
accounts.Add("Type", "7");
accounts.Add("Latitude", latitudW.ToString());
accounts.Add("Longitude", longitudeH.ToString());
accounts.Add("Radius", mRadius.ToString());
LogicIfon.Addaccounts(accounts);
LogicIfon.AddLocationconditions(LocationConditionsInfo);
var logicCommunalPage = new LogicCommunalPage();
UserView.HomePage.Instance.AddChidren(logicCommunalPage);
UserView.HomePage.Instance.PageIndex += 1;
logicCommunalPage.Show(() => { });
}, strname, Language.StringByID(R.MyInternationalizationString.uSave), true, latitude, longitude, r);
}, "android.permission.READ_PHONE_STATE");
}, "android.permission.WRITE_EXTERNAL_STORAGE");
});
#endif
#if iOS
//调用方法,跳转页面
GDMapKit.Show((mLatitude, mLongitude, mRadius, name) =>
{
//截取字符串后第6位;
//var len = name.Substring(name.Length - 6, 6);
//点击保存按钮,回调当前选择的纬度,经度,半径范围
var latitudW = (int)Math.Truncate(mLatitude * 1000000);
var longitudeH = (int)Math.Truncate(mLongitude * 1000000);
Dictionary accounts = new Dictionary();
accounts.Add("Account", Config.Instance.Guid);
accounts.Add("Type", "7");
accounts.Add("Latitude", latitudW.ToString());
accounts.Add("Longitude", longitudeH.ToString());
accounts.Add("Radius", mRadius.ToString());
LogicIfon.Addaccounts(accounts);
LogicIfon.AddLocationconditions(LocationConditionsInfo);
var logicCommunalPage = new LogicCommunalPage();
UserView.HomePage.Instance.AddChidren(logicCommunalPage);
UserView.HomePage.Instance.PageIndex += 1;
logicCommunalPage.Show(() => { });
}, strname, Language.StringByID(R.MyInternationalizationString.uSave), true, latitude, longitude, r);
#endif
});
}
///
/// 时间条件View
///
void TimeView()
{
PublicInterface publicInterface = new PublicInterface();
var list = publicInterface.GetViewList("时间");
publicInterface.SingleSelectionShow(this, list, MyInternationalizationString.type, "", (str) =>
{
if (str == Language.StringByID(MyInternationalizationString.immediateexecution))
{
Dictionary timeConditionsInfo = new Dictionary();
timeConditionsInfo.Add("Type", "0");
timeConditionsInfo.Add("IsValid", "1");
timeConditionsInfo.Add("DateType", "1");
timeConditionsInfo.Add("RemindTime", "0");
timeConditionsInfo.Add("EnDelay", "0");
timeConditionsInfo.Add("DelayTime", "0");
timeConditionsInfo.Add("AdjustTime", "0");
var timePoint = new TimePoint();
UserView.HomePage.Instance.AddChidren(timePoint);
UserView.HomePage.Instance.PageIndex += 1;
timePoint.Show(timeConditionsInfo);
}
else if (str == Language.StringByID(MyInternationalizationString.timeframe))
{
var timePage = new TimePage();
UserView.HomePage.Instance.AddChidren(timePage);
UserView.HomePage.Instance.PageIndex += 1;
timePage.Show();
}
});
}
}
}