using System; using System.Collections.Generic; using Shared; namespace HDL_ON.UI.UI2.Intelligence.Automation { public class AddInputType : FrameLayout { public AddInputType() { Tag = "Logic"; } public void Show() { LogicView.TopView topView = new LogicView.TopView(); this.AddChidren(topView.FLayoutView()); topView.clickBackBtn.MouseUpEventHandler += (e, sen) => { RemoveFromParent(); }; topView.topNameBtn.TextID = StringId.selectionCondition; FrameLayout viewLayout = new FrameLayout { Y = Application.GetRealHeight(64), Width = Application.GetRealWidth(LogicView.TextSize.view375), Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64), BackgroundColor = CSS.CSS_Color.viewMiddle, }; this.AddChidren(viewLayout); #region 时间 功能 室外变化 //时间 LogicView.SelectTypeView timeView = new LogicView.SelectTypeView(); timeView.btnText.TextID = StringId.time; timeView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; if (MainView.IsGatewayType) { viewLayout.AddChidren(timeView.FLayoutView()); } //功能 LogicView.SelectTypeView functionView = new LogicView.SelectTypeView(); functionView.frameLayout.Y = timeView.frameLayout.Bottom; functionView.btnText.TextID = StringId.funLogic; functionView.btnIcon.UnSelectedImagePath = "LogicIcon/functionicon.png"; viewLayout.AddChidren(functionView.FLayoutView()); if (!MainView.IsGatewayType) { functionView.frameLayout.Y = Application.GetRealHeight(0); } //场景 LogicView.SelectTypeView sceneView = new LogicView.SelectTypeView(); sceneView.frameLayout.Y = functionView.frameLayout.Bottom; sceneView.btnText.TextID = StringId.Scenes; sceneView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png"; viewLayout.AddChidren(sceneView.FLayoutView()); //室外变化 LogicView.SelectTypeView shiwaiView = new LogicView.SelectTypeView(); shiwaiView.frameLayout.Y = sceneView.frameLayout.Bottom; shiwaiView.btnText.TextID = StringId.shiwaibainhua; shiwaiView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png"; if (MainView.IsGatewayType) { viewLayout.AddChidren(shiwaiView.FLayoutView()); } //地理围栏 LogicView.SelectTypeView likiadaodaView = new LogicView.SelectTypeView(); likiadaodaView.frameLayout.Y = shiwaiView.frameLayout.Bottom; likiadaodaView.btnText.TextID = StringId.likiadaoda; likiadaodaView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png"; if (MainView.IsGatewayType) { viewLayout.AddChidren(likiadaodaView.FLayoutView()); } #endregion #region 所有点击事件 //时间 timeView.btnClick.MouseUpEventHandler += (sen, e) => { TimeTpye timeTpye = new TimeTpye(); MainPage.BasePageView.AddChidren(timeTpye); timeTpye.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; //功能 functionView.btnClick.MouseUpEventHandler += (sen, e) => { FunTpye funTpye = new FunTpye(); MainPage.BasePageView.AddChidren(funTpye); funTpye.Show(LogicMethod.condition_if); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; //场景点击事件 sceneView.btnClick.MouseUpEventHandler += (sen, e) => { SceneMethod(); }; //室外变化 shiwaiView.btnClick.MouseUpEventHandler += (sen, e) => { if (string.IsNullOrEmpty(Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0) { new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured); return; } Weather weather = new Weather(); MainPage.BasePageView.AddChidren(weather); weather.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; //地理围栏 likiadaodaView.btnClick.MouseUpEventHandler += (sen, e) => { LocationView(this, false); }; #endregion } /// /// 添加场景 /// public void SceneMethod() { var sceneList = LogicMethod.CurrLogicMethod.GetSceneList(); List nameList = new List(); for (int i = 0; i < sceneList.Count; i++) { var scene = sceneList[i]; nameList.Add(scene.name); } PublicInterface publicInterface = new PublicInterface(); publicInterface.FrameOrVv(this, nameList, new List { }, StringId.addSceneLogic, (index) => { var sceneSelecetd = sceneList[index]; Input input = new Input(); input.sid = sceneSelecetd.sid; input.condition_type = "10"; Dictionary dic = new Dictionary(); LogicMethod.CurrLogicMethod.dictionary(dic, "key", "scene"); LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); LogicMethod.CurrLogicMethod.dictionary(dic, "value", "on"); input.condition.Add(dic); AddCondition(input); LogicMethod.CurrLogicMethod.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }); } /// /// 地理围栏View /// /// Fl main. /// If set to true edit. public void LocationView(FrameLayout flMain, bool edit) { string strname = ""; ///通过调试宝给的经纬度<标准GPS> double latitude = Entity.DB_ResidenceData.Instance.CurrentRegion.latitude;//纬度 double longitude = Entity.DB_ResidenceData.Instance.CurrentRegion.longitude;//经度 //WGS84坐标转高德坐标 LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(Entity.DB_ResidenceData.Instance.CurrentRegion.longitude, Entity.DB_ResidenceData.Instance.CurrentRegion.latitude, out longitude, out latitude); int r = 500;//半径 if (edit) { for (var i = 0; i < Logic.currlogic.input.Count; i++) { var input = Logic.currlogic.input[i]; if (input.condition_type != "8") { continue; } if (input.condition[0]["value"] == "arrive") { //到达某地 strname = Language.StringByID(StringId.daoda); } else { //离开地点 strname = Language.StringByID(StringId.likai); } //纬度 latitude = Convert.ToDouble(input.geo_fence.latitude); //经度 longitude = Convert.ToDouble(input.geo_fence.longitude); //半径 r = int.Parse(input.geo_fence.radius); } } PublicInterface publicInterface = new PublicInterface(); var list = publicInterface.GetViewList("地理围栏"); publicInterface.SingleSelectionShow(flMain, list, Language.StringByID(StringId.likiadaoda), strname, (str) => { string valueStr = "arrive"; if (str == Language.StringByID(StringId.daoda)) { //到达某地 valueStr = "arrive"; } else { //离开 valueStr = "leave"; } #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) => { //高德坐标转WGS84坐标(高德地图设置GPS) double out_lng, out_lat; LogicMethod.CurrLogicMethod.GCJ02_to_WGS84(mLongitude, mLatitude, out out_lng, out out_lat); Input input = new Input(); input.sid = LogicMethod.CurrLogicMethod.NewSid(); input.condition_type = "8"; Dictionary dic = new Dictionary(); LogicMethod.CurrLogicMethod.dictionary(dic, "key", "direction"); LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); LogicMethod.CurrLogicMethod.dictionary(dic, "value", valueStr); input.condition.Add(dic); //纬度 input.geo_fence.latitude = out_lat.ToString(); //经度 input.geo_fence.longitude = out_lng.ToString(); //半径<单位米> input.geo_fence.radius = mRadius.ToString(); AddCondition(input); LogicMethod.CurrLogicMethod.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }, strname, Language.StringByID(StringId.save), true, latitude, longitude, r); }, "android.permission.READ_PHONE_STATE"); }, "android.permission.WRITE_EXTERNAL_STORAGE"); }); #endif #if __IOS__ //调用方法,跳转页面 GDMapKit.Show((mLatitude, mLongitude, mRadius, name) => { //高德坐标转WGS84坐标(高德地图设置GPS) double out_lng, out_lat; LogicMethod.CurrLogicMethod.GCJ02_to_WGS84(mLongitude, mLatitude, out out_lng, out out_lat); Input input = new Input(); input.sid = LogicMethod.CurrLogicMethod.NewSid(); input.condition_type = "8"; Dictionary dic = new Dictionary(); LogicMethod.CurrLogicMethod.dictionary(dic, "key", "direction"); LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); LogicMethod.CurrLogicMethod.dictionary(dic, "value", "arrive"); input.condition.Add(dic); //纬度 input.geo_fence.latitude = out_lat.ToString(); //经度 input.geo_fence.longitude = out_lng.ToString(); //半径<单位米> input.geo_fence.radius = mRadius.ToString(); AddCondition(input); LogicMethod.CurrLogicMethod.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }, strname, Language.StringByID(R.MyInternationalizationString.uSave), true, latitude, longitude, r); #endif }); } /// /// 添加条件 /// /// private void AddCondition(Input input) { ///记录索引值 int index = -1; for (var i = 0; i < Logic.currlogic.input.Count; i++) { var condition_type = Logic.currlogic.input[i].condition_type; if (condition_type == "10" || condition_type == "8") { //支持场景=10,地理围栏=8 ///找到标记索引,退出循环体 index = i; break; } } if (index != -1) { //移除旧数据 Logic.currlogic.input.RemoveAt(index); //新数据插入旧数据的位置 Logic.currlogic.input.Insert(index, input); } else { Logic.currlogic.input.Add(input); } } } }