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(); } }); } } }