| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.UI.UI2.Intelligence.Automation |
| | | { |
| | | public class AddInputType : FrameLayout |
| | |
| | | { |
| | | Tag = "Logic"; |
| | | } |
| | | |
| | | public void Show() |
| | | { |
| | | |
| | | LogicView.TopView topView = new LogicView.TopView(); |
| | | this.AddChidren(topView.FLayoutView()); |
| | | topView.clickBackBtn.MouseUpEventHandler += (e, sen) => |
| | |
| | | likiadaodaView.frameLayout.Y = shiwaiView.frameLayout.Bottom; |
| | | likiadaodaView.btnText.TextID = StringId.likiadaoda; |
| | | likiadaodaView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png"; |
| | | int count = 0;//输入类型个数 |
| | | int count = 3;//输入类型个数 |
| | | //2022年05月24日15:08:22 隐藏掉地理围栏 |
| | | if (MainView.IsGatewayType) |
| | | { |
| | | count = 4; |
| | |
| | | #region 所有点击事件 |
| | | //时间 |
| | | timeView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | MainPage.BasePageView.AddChidren(timeTpye); |
| | | timeTpye.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | { |
| | | |
| | | }; |
| | | |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | MainPage.BasePageView.AddChidren(timeTpye); |
| | | timeTpye.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | |
| | | }; |
| | | |
| | | //场景点击事件 |
| | | sceneView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | |
| | | #endregion |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加场景 |
| | | /// </summary> |
| | | public void SceneMethod() |
| | | { |
| | | var sceneList = LogicMethod.CurrLogicMethod.GetSceneList(); |
| | | var sceneList = LogicMethod.Current.GetSceneList(); |
| | | List<string> nameList = new List<string>(); |
| | | for (int i = 0; i < sceneList.Count; i++) |
| | | { |
| | |
| | | nameList.Add(scene.name); |
| | | } |
| | | PublicInterface publicInterface = new PublicInterface(); |
| | | publicInterface.FrameOrVv(this, nameList, new List<string> { }, StringId.addSceneLogic, (index) => |
| | | publicInterface.FrameOrVv(this, nameList, new List<string> { }, Language.StringByID(StringId.addSceneLogic), (index) => |
| | | { |
| | | var sceneSelecetd = sceneList[index]; |
| | | Input input = new Input(); |
| | | input.sid = sceneSelecetd.sid; |
| | | input.condition_type = "10"; |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "key", "scene"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "value", "on"); |
| | | LogicMethod.Current.dictionary(dic, "key", "scene"); |
| | | LogicMethod.Current.dictionary(dic, "comparator", "="); |
| | | LogicMethod.Current.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.Current.dictionary(dic, "value", "on"); |
| | | input.condition.Add(dic); |
| | | AddCondition(input); |
| | | LogicMethod.CurrLogicMethod.RemoveAllView(); |
| | | LogicMethod.Current.RemoveAllView(); |
| | | AddLogic addLogic = new AddLogic(); |
| | | MainPage.BasePageView.AddChidren(addLogic); |
| | | addLogic.Show(); |
| | |
| | | /// <param name="edit">If set to <c>true</c> edit.</param> |
| | | 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;//经度 |
| | | LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(Entity.DB_ResidenceData.Instance.CurrentRegion.longitude, Entity.DB_ResidenceData.Instance.CurrentRegion.latitude, out longitude, out latitude); |
| | | //double latitude = Entity.DB_ResidenceData.Instance.CurrentRegion.latitude;//纬度 |
| | | //double longitude = Entity.DB_ResidenceData.Instance.CurrentRegion.longitude;//经度 |
| | | /////如果是用当前手机位置作为中心的话;再次编辑ui界面显示是当前手机位置,还是之前的经纬呢? |
| | | double latitude = Convert.ToDouble(MainPage.cityInfo.lat);//纬度 |
| | | double longitude = Convert.ToDouble(MainPage.cityInfo.lon);//经度 |
| | | int r = 500;//默认半径 |
| | | if (edit) |
| | | { |
| | |
| | | //按道理说不会出现 |
| | | r = 500; |
| | | } |
| | | ChooseIocate chooseIocate = new ChooseIocate(); |
| | | MainPage.BasePageView.AddChidren(chooseIocate); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | chooseIocate.Show(latitude, longitude, r, (value) => |
| | | { |
| | | if (value.Contains("km")) |
| | | { |
| | | value = value.Replace("km", ""); |
| | | } |
| | | else { |
| | | value = value.Replace("m", ""); |
| | | } |
| | | Input input = new Input(); |
| | | input.sid = LogicMethod.Current.NewSid(); |
| | | input.condition_type = "8"; |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | LogicMethod.Current.dictionary(dic, "key", "direction"); |
| | | LogicMethod.Current.dictionary(dic, "comparator", "="); |
| | | LogicMethod.Current.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.Current.dictionary(dic, "value", valueStr); |
| | | input.condition.Add(dic); |
| | | //纬度 |
| | | input.geo_fence.latitude = latitude.ToString(); |
| | | //经度 |
| | | input.geo_fence.longitude = longitude.ToString(); |
| | | //半径<单位米> |
| | | input.geo_fence.radius = value; |
| | | AddCondition(input); |
| | | LogicMethod.Current.RemoveAllView(); |
| | | AddLogic addLogic = new AddLogic(); |
| | | MainPage.BasePageView.AddChidren(addLogic); |
| | | addLogic.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | |
| | | }); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 添加地理围栏(有高德地图,因为高德收费暂时弃用) |
| | | /// </summary> |
| | | /// <param name="flMain">Fl main.</param> |
| | | /// <param name="edit">If set to <c>true</c> edit.</param> |
| | | public void LocationView1(FrameLayout flMain, bool edit) |
| | | { |
| | | string strname = ""; |
| | | ///通过调试宝给的经纬度<标准GPS> |
| | | double latitude = Entity.DB_ResidenceData.Instance.CurrentRegion.latitude;//纬度 |
| | | double longitude = Entity.DB_ResidenceData.Instance.CurrentRegion.longitude;//经度 |
| | | LogicMethod.Current.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); |
| | | } |
| | | //再一次编辑地理围栏 <控件暂时不支持显示记录上一次的状态> |
| | | if (!string.IsNullOrEmpty(input.geo_fence.latitude) && !string.IsNullOrEmpty(input.geo_fence.longitude)) |
| | | { |
| | | ////纬度 |
| | | //var latitude1 = Convert.ToDouble(input.geo_fence.latitude); |
| | | ////经度 |
| | | //var longitude1 = Convert.ToDouble(input.geo_fence.longitude); |
| | | //半径 |
| | | r = int.Parse(input.geo_fence.radius); |
| | | //WGS84坐标转高德坐标 |
| | | //LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(longitude1, latitude1, out longitude, out latitude); |
| | | } |
| | | } |
| | | } |
| | | |
| | | 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; } |
| | | //调用方法,跳转页面 |
| | | Location(valueStr, strname, latitude, longitude, r); |
| | | }, "android.permission.READ_PHONE_STATE"); |
| | | |
| | | }, "android.permission.WRITE_EXTERNAL_STORAGE"); |
| | | }); |
| | | #endif |
| | | #if __IOS__ |
| | | //调用方法,跳转页面 |
| | | Location(valueStr, strname, latitude, longitude, r); |
| | | #endif |
| | | }); |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 地理围栏View |
| | | /// </summary> |
| | | /// <param name="valueStr">进入(arrive)或者离开(leave)</param> |
| | | /// <param name="strname"></param> |
| | | /// <param name="latitude">纬度</param> |
| | | /// <param name="longitude">经度</param> |
| | | /// <param name="r">半径(默认500米)</param> |
| | | private void Location1(string valueStr, string strname, double latitude, double longitude, int r) |
| | | { |
| | | if (r == 0) |
| | | { |
| | | //按道理说不会出现 |
| | | r = 500; |
| | | } |
| | | //调用方法,跳转页面 |
| | | 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); |
| | | LogicMethod.Current.GCJ02_to_WGS84(mLongitude, mLatitude, out out_lng, out out_lat); |
| | | Input input = new Input(); |
| | | input.sid = LogicMethod.CurrLogicMethod.NewSid(); |
| | | input.sid = LogicMethod.Current.NewSid(); |
| | | input.condition_type = "8"; |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "key", "direction"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "value", valueStr); |
| | | LogicMethod.Current.dictionary(dic, "key", "direction"); |
| | | LogicMethod.Current.dictionary(dic, "comparator", "="); |
| | | LogicMethod.Current.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.Current.dictionary(dic, "value", valueStr); |
| | | input.condition.Add(dic); |
| | | //纬度 |
| | | input.geo_fence.latitude = out_lat.ToString(); |
| | |
| | | //半径<单位米> |
| | | input.geo_fence.radius = mRadius.ToString(); |
| | | AddCondition(input); |
| | | LogicMethod.CurrLogicMethod.RemoveAllView(); |
| | | LogicMethod.Current.RemoveAllView(); |
| | | AddLogic addLogic = new AddLogic(); |
| | | MainPage.BasePageView.AddChidren(addLogic); |
| | | addLogic.Show(); |
| | |
| | | Logic.currlogic.input.Add(input); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |