JLChen
2021-11-16 b8d7b4fa382f7c779fb9e81a9f049d94a9083fa3
HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -61,17 +61,29 @@
            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) => {
            timeView.btnClick.MouseUpEventHandler += (sen, e) =>
            {
                TimeTpye timeTpye = new TimeTpye();
                MainPage.BasePageView.AddChidren(timeTpye);
                timeTpye.Show();
@@ -79,7 +91,8 @@
            };
            //功能
            functionView.btnClick.MouseUpEventHandler += (sen, e) => {
            functionView.btnClick.MouseUpEventHandler += (sen, e) =>
            {
                FunTpye funTpye = new FunTpye();
                MainPage.BasePageView.AddChidren(funTpye);
                funTpye.Show(LogicMethod.condition_if);
@@ -91,7 +104,8 @@
                SceneMethod();
            };
            //室外变化
            shiwaiView.btnClick.MouseUpEventHandler += (sen, e) => {
            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);
@@ -101,6 +115,12 @@
                MainPage.BasePageView.AddChidren(weather);
                weather.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            //地理围栏
            likiadaodaView.btnClick.MouseUpEventHandler += (sen, e) =>
            {
                LocationView(this, false);
            };
            #endregion
@@ -141,6 +161,150 @@
        }
        /// <summary>
        /// 地理围栏View
        /// </summary>
        /// <param name="flMain">Fl main.</param>
        /// <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;//经度
            //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<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);
                                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<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", "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
             });
        }
        /// <summary>
        /// 添加条件
        /// </summary>
        /// <param name="input"></param>
@@ -151,8 +315,9 @@
            for (var i = 0; i < Logic.currlogic.input.Count; i++)
            {
                var condition_type = Logic.currlogic.input[i].condition_type;
                if (condition_type == "10")
                if (condition_type == "10" || condition_type == "8")
                {
                    //支持场景=10,地理围栏=8
                    ///找到标记索引,退出循环体
                    index = i;
                    break;