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);
|
};
|
}
|
|
/// <summary>
|
/// 安防条件View
|
/// </summary>
|
/// <param name="flMain">Fl main.</param>
|
/// <param name="edit">If set to <c>true</c> edit.</param>
|
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<string, string>();
|
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(() => { });
|
|
});
|
}
|
/// <summary>
|
/// 地理围栏View
|
/// </summary>
|
/// <param name="flMain">Fl main.</param>
|
/// <param name="edit">If set to <c>true</c> edit.</param>
|
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<string, string>();
|
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<string, string> accounts = new Dictionary<string, string>();
|
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<string, string> accounts = new Dictionary<string, string>();
|
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
|
});
|
|
|
}
|
|
/// <summary>
|
/// 时间条件View
|
/// </summary>
|
void TimeView()
|
{
|
PublicInterface publicInterface = new PublicInterface();
|
var list = publicInterface.GetViewList("时间");
|
publicInterface.SingleSelectionShow(this, list, MyInternationalizationString.type, "", (str) =>
|
{
|
if (str == Language.StringByID(MyInternationalizationString.immediateexecution))
|
{
|
|
Dictionary<string, string> timeConditionsInfo = new Dictionary<string, string>();
|
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();
|
|
}
|
|
});
|
|
|
|
|
|
|
}
|
|
|
}
|
|
}
|