wxr
2021-11-30 358044c907e0e492b26377b21ca5091d19b503c8
合并wjc
2个文件已删除
8个文件已修改
630 ■■■■ 已修改文件
HDL-ON_Android/Application.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation 2.zip 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation.zip 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Application.cs
@@ -149,15 +149,23 @@
            HDLUtils.SetAuthoritiesName("com.hdl.onpro.fileProvider");
            //Shared.Application.IsGpsEnable = true;
      bool isfirst = true;
            //获取经纬度 
            Shared.Application.LocationAction = (lon, lat) =>
            {
                try
                {
                    Shared.Application.LocationAction = null;
          if (isfirst)
          {
            //只触发一次
            //Shared.Application.LocationAction = null;
                    new HDL_ON.DAL.Server.HttpServerRequest().GetCityWeatherInfo(lon.ToString(), lat.ToString());
          }
          isfirst = false;
          ///监听经纬度
          HDL_ON.UI.UI2.Intelligence.Automation.LogicMethod.CurrLogicMethod.AppLatAndLonEvent(lon, lat);
                    //关闭定位服务
                    Shared.Application.StopGPSLocationService();
          //Shared.Application.StopGPSLocationService();
                }
                catch (Exception ex)
                {
HDL-ON_Android/HDL-ON_Android.csproj
@@ -33,7 +33,6 @@
    <DefineConstants>DEBUG;TRACE;__Android__</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
    <MandroidI18n>cjk</MandroidI18n>
    <AndroidDexTool>d8</AndroidDexTool>
    <AndroidEnableSGenConcurrent>false</AndroidEnableSGenConcurrent>
@@ -62,7 +61,7 @@
    <AndroidEnableSGenConcurrent>false</AndroidEnableSGenConcurrent>
    <AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
    <AndroidKeyStore>True</AndroidKeyStore>
    <AndroidSigningKeyStore>/Users/kaede/Desktop/HDL_APP_Project/on_plus.keystore</AndroidSigningKeyStore>
    <AndroidSigningKeyStore>/Users/hdl/Desktop/on_plus/on_plus.keystore</AndroidSigningKeyStore>
    <AndroidSigningStorePass>85521566</AndroidSigningStorePass>
    <AndroidSigningKeyPass>85521566</AndroidSigningKeyPass>
    <AndroidSigningKeyAlias>on_plus</AndroidSigningKeyAlias>
HDL_ON/UI/MainPage.cs
@@ -120,7 +120,8 @@
        /// </summary>
        public static List<string> RoomNotSupportFunctionList
        {
            get {
      get
      {
                if(_RoomNotSupportFunctionList == null)
                {
                    _RoomNotSupportFunctionList = new List<string>();
@@ -145,9 +146,6 @@
                BaseView = Application.MainPage;
                Application.MainPage.BackgroundColor = CSS_Color.MainBackgroundColor;
                ///监听经纬度
                HDL_ON.UI.UI2.Intelligence.Automation.LogicMethod.CurrLogicMethod.AppLatAndLonEvent();
                //#region 测试
                //var ddd = new UI.test.TestDialog();
                //ddd.InitView();
@@ -281,7 +279,8 @@
                StartX = (int)e.X;
                BtnBackIcon.Y = (int)e.Y + Application.GetRealHeight(50);
            };
            backView.MouseUpEventHandler = (sender, e) => {
      backView.MouseUpEventHandler = (sender, e) =>
      {
                MainPage.Log($"up{e.X}");
                StartX = 0;
                BtnBackIcon.X = -Application.GetRealWidth(100);
@@ -294,7 +293,8 @@
                    }
                }
            };
            backView.MouseUpOutsideEventHandler = (sender, e) => {
      backView.MouseUpOutsideEventHandler = (sender, e) =>
      {
                MainPage.Log($"up{e.X}");
                StartX = 0;
                BtnBackIcon.X = -Application.GetRealWidth(100);
@@ -370,7 +370,8 @@
                catch (Exception ex)
                {
                    MainPage.Log($"GoUserPage : {ex.Message}");
                }finally
        }
        finally
                {
                    Application.RunOnMainThread(() =>
                    {
@@ -427,11 +428,13 @@
                                if (view.Tag.ToString() != "unlockpage")
                                {
                                    view.RemoveFromParent();
                                }else
                }
                else
                                {
                                    result = 2;
                                }
                            }else
              }
              else
                            {
                                view.RemoveFromParent();
                            }
HDL_ON/UI/UI2/3-Intelligence/Automation 2.zip
Binary files differ
HDL_ON/UI/UI2/3-Intelligence/Automation.zip
Binary files differ
HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -11,7 +11,6 @@
        }
        public void Show()
        {
            LogicView.TopView topView = new LogicView.TopView();
            this.AddChidren(topView.FLayoutView());
            topView.clickBackBtn.MouseUpEventHandler += (e, sen) =>
@@ -159,9 +158,8 @@
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            });
        }
        /// <summary>
        /// 地理围栏View
    /// 添加地理围栏
        /// </summary>
        /// <param name="flMain">Fl main.</param>
        /// <param name="edit">If set to <c>true</c> edit.</param>
@@ -171,9 +169,8 @@
            ///通过调试宝给的经纬度<标准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;//半径
      int r = 500;//默认半径
            if (edit)
            {
                for (var i = 0; i < Logic.currlogic.input.Count; i++)
@@ -193,12 +190,18 @@
                        //离开地点
                        strname = Language.StringByID(StringId.likai);
                    }
                    //纬度
                    latitude = Convert.ToDouble(input.geo_fence.latitude);
                    //经度
                    longitude = Convert.ToDouble(input.geo_fence.longitude);
          //再一次编辑地理围栏 <控件暂时不支持显示记录上一次的状态>
          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();
@@ -232,7 +235,36 @@
                       ((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 Location(string valueStr, string strname, double latitude, double longitude, int r)
    {
      if (r == 0)
      {
        //按道理说不会出现
        r = 500;
      }
                           //调用方法,跳转页面
                           GDMapKit.Show((mLatitude, mLongitude, mRadius, name) =>
                            {
@@ -262,48 +294,7 @@
                                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(StringId.save), true, latitude, longitude, r);
#endif
             });
        }
        /// <summary>
        /// 添加条件
        /// </summary>
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -827,16 +827,23 @@
        /// <summary>
        /// APP上报GPS经纬度
        /// </summary>
        public void AppLatAndLonEvent()
    /// <param name="lon">APP GPS经度</param>
    /// <param name="lat">APP GPS纬度</param>
    public void AppLatAndLonEvent(double lon, double lat)
        {
            Application.LocationAction += (lon, lat) =>
            {
                ////GPS坐标转成高德坐标
                //double out_lng, out_lat;
                //this.WGS84_to_GCJ02(lon, lat, out out_lng, out out_lat);
                //上报经纬度
      Console.WriteLine($"GPS经度===={lon}  \nGPS纬度===={lat}");
      //Application.LocationAction += (lon, lat) =>
      //{
      //  Console.WriteLine($"GPS经度===={lon}");
      //  Console.WriteLine($"GPS纬度===={lat}");
      //  ////GPS坐标转成高德坐标
      //  //double out_lng, out_lat;
      //  //this.WGS84_to_GCJ02(lon, lat, out out_lng, out out_lat);
      //  //上报经纬度
      //  this.AutomatedGeofenceStatusReporting(lon, lat);
      //};
      //上报经纬度<gps 上报条件大于30秒且移动距离大于100米,上报经纬度>
                this.AutomatedGeofenceStatusReporting(lon, lat);
            };
        }
        /// <summary>
@@ -846,9 +853,18 @@
        /// <param name="out_lat">APP GPS纬度</param>
        private void AutomatedGeofenceStatusReporting(double out_lng, double out_lat)
        {
      if (IsOthreShare)
      {
        //不是主账号直接返回
        return;
      }
            List<LogicData> logicDataList = new List<LogicData>();
            logicDataList.Clear();
            //获取逻辑ID列表
      System.Threading.Tasks.Task.Run(() =>
      {
        try
        {
          //获取逻辑ID列表,目前针对所有<备注:如果只针对当前手机的话,可以直接拿缓存数据自动化列表遍历>
            var idStr = Send.GetLogicIdList();
            if (idStr.Code == "0" && idStr.Data != null && idStr.Data.ToString() != "")
            {
@@ -856,7 +872,8 @@
                logicDataList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogicData>>(date);
            }
            ///有自动列表才处理
            if (logicDataList.Count>0) {
          if (logicDataList.Count > 0)
          {
                ///遍历所有列表
                for (int i = 0; i < logicDataList.Count; i++)
                {
@@ -867,9 +884,9 @@
                        //经纬度为空,认为自动化没有配置地理围栏,不处理;
                        continue;
                    }
                    //自动化纬度
              //自动化配置输入条件纬度
                    double lat = Convert.ToDouble(logicDate.geo_fence.latitude);
                    //自动化经度
              //自动化配置输入条件经度
                    double lon = Convert.ToDouble(logicDate.geo_fence.longitude);
                    //自动化配置输入条件<地理围栏半径><单位,公里、千米.米>
                    int radius = int.Parse(logicDate.geo_fence.radius);
@@ -878,21 +895,74 @@
                    //定义一个局部变量
                    string direction = string.Empty;
                    //两点距离小于配置距离<既自动化配置输入条件地理围栏半径>,说明进入区域
                    if (r<radius) {
              if (r < radius)
              {
                        //到达某地
                        direction = "arrive";
                    } else {
              }
              else
              {
                        //离开
                        direction = "leave";
                    }
                     bool f= Send.GeoFenceStateReport(logicDate.userLogicId,logicDate.sid, direction);
                    //if () { }
                    //Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
              ///遍历缓存列表<不为空说明数据已经推送过,不再推送>
              var isPush = pushList.Find((o) => o.homeId == HomeId && o.userId == UserInfo.Current.ID && o.userLogicId == logicDate.userLogicId && o.arriveOnLeave == direction);
              if (isPush == null)
              {
                //推送给云端是否成功
                bool push = Send.GeoFenceStateReport(logicDate.userLogicId, logicDate.sid, direction);
                if (push)
                {
                  ///添加到推送列表
                  pushList.Add(new Push
                  {
                    homeId = HomeId,
                    userId = UserInfo.Current.ID,
                    userLogicId = logicDate.userLogicId,
                    sid = logicDate.sid,
                    arriveOnLeave = direction,
                  });
                }
              }
                }
            }
        }
        catch { }
      });
    }
    /// <summary>
    /// 推送列表<这里数据已经推送过>
    /// </summary>
    private static List<Push> pushList = new List<Push>();
        }
  public class Push
  {
    /// <summary>
    /// 云端唯一id
    /// </summary>
    public string userLogicId = "";
    /// <summary>
    /// 网关id
    /// </summary>
    public string gatewayId = "";
    /// <summary>
    /// 逻辑唯一标识
    /// </summary>
    public string sid = "";
    /// <summary>
    /// 住宅id
    /// </summary>
    public string homeId = "";
    /// <summary>
    /// 到达某地 离开
    /// </summary>
    public string arriveOnLeave = "";
    /// <summary>
    ///  用户id
    /// </summary>
    public string userId = "";
    }
}
HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -30,7 +30,6 @@
            }
            return new List<ResidenceMemberInfo>();
        }
        /// <summary>
        /// 获取逻辑ID列表
        /// </summary>
@@ -106,7 +105,8 @@
                        conditionArray.Add(conditionJOb);
                    }
                    inputTypeJOb.Add("condition",conditionArray);
                    if (dictionary.condition_type=="8") {
          if (dictionary.condition_type == "8")
          {
                        ///地理围栏
                        var geo_fencejob = new JObject();
                        geo_fencejob.Add("longitude", dictionary.geo_fence.longitude);
@@ -216,6 +216,7 @@
                    var conditionArray = new JArray { };
                    foreach (var dic in dictionary.condition)
                    {
                        var conditionJOb = new JObject { };
                        conditionJOb.Add("key", dic["key"]);
                        var c1 = "";
@@ -350,8 +351,6 @@
            }
            return responsePackNew;
        }
        /// <summary> 
        /// 自动化地理围栏状态上报
        /// </summary>
HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs
@@ -108,9 +108,6 @@
                        index = i;
                        break;
                    }
                    ///找到标记索引,退出循环体
                    index = i;
                    break;
                }
            }
            if (index != -1)
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
@@ -29,6 +29,7 @@
        VerticalScrolViewLayout functionListView;
<<<<<<< HEAD
        Action<SecurityAlarm> refreshAction;
        /// <summary>
        /// 本地功能转换的输出列表(灯光、场景)
@@ -43,6 +44,20 @@
            refreshAction = action;
            alarm = inOutput;
        }
=======
    SecurityAlarm securityAlarm;
    Action<SecurityAlarm> refreshAction;
    List<SecurityOutput> outputList = new List<SecurityOutput>();
    List<Function> allocatedList = new List<Function>();
    public AddOutputPage(SecurityAlarm function, Action<SecurityAlarm> action)
    {
      bodyView = this;
      securityAlarm = function;
      refreshAction = action;
    }
>>>>>>> WJC
        /// <summary>
@@ -50,6 +65,62 @@
        /// </summary>
        public void LoadPage()
        {
      bodyView.BackgroundColor = CSS_Color.BackgroundColor;
      new TopViewDiv(bodyView, Language.StringByID(StringId.AddFunction)).LoadTopView();
      #region 显示的功能类型切换区域
      showdFunctionTypeRow = new FrameLayout()
      {
        Y = Application.GetRealHeight(64),
        Height = Application.GetRealHeight(62),
        BackgroundColor = CSS_Color.MainBackgroundColor,
      };
      bodyView.AddChidren(showdFunctionTypeRow);
      btnFloorDownIcon = new Button()
      {
        Width = Application.GetMinRealAverage(16),
        Height = Application.GetMinRealAverage(16),
        X = Application.GetRealWidth(16),
        Y = Application.GetRealHeight(18),
        UnSelectedImagePath = "Public/DownIcon.png",
      };
      showdFunctionTypeRow.AddChidren(btnFloorDownIcon);
      btnFloor = new Button()
      {
        X = btnFloorDownIcon.Right,
        Y = Application.GetRealHeight(18),
        Width = Application.GetRealWidth(200),
        Height = Application.GetMinRealAverage(16),
        TextColor = CSS_Color.FirstLevelTitleColor,
        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
        TextAlignment = TextAlignment.CenterLeft,
        Text = DB_ResidenceData.Instance.CurFloor.roomName,
      };
      showdFunctionTypeRow.AddChidren(btnFloor);
      #endregion
      functionListView = new VerticalScrolViewLayout()
      {
        Y = showdFunctionTypeRow.Bottom,
        Height = Application.GetRealHeight(530 - 100),
        BackgroundColor = CSS_Color.BackgroundColor,
      };
      bodyView.AddChidren(functionListView);
      foreach (var function in FunctionList.List.Functions)
      {
        if (!MainPage.SceneSupportFunctionList.Contains(function.spk))
        {
<<<<<<< HEAD
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            new TopViewDiv(bodyView, Language.StringByID(StringId.AddFunction)).LoadTopView();
@@ -130,9 +201,70 @@
                this.RemoveFromParent();
                refreshAction?.Invoke(alarm);
            };
=======
          continue;
        }
        if (function == null)
        {
          continue;
        }
        function.roomIds.Remove(null);
        allocatedList.Add(function);
      }
      LoadFunctionListRow(null);
      var bottomView = new FrameLayout()
      {
        Y = Application.GetRealHeight(591),
        Height = Application.GetRealHeight(100),
        BackgroundColor = CSS_Color.MainBackgroundColor,
        Radius = (uint)Application.GetRealWidth(22),
      };
      this.AddChidren(bottomView);
      var btnConfrim = new Button()
      {
        X = Application.GetRealWidth(78),
        Y = Application.GetRealHeight(12),
        Width = Application.GetRealWidth(220),
        Height = Application.GetRealWidth(44),
        Radius = (uint)Application.GetRealWidth(22),
        BackgroundColor = CSS_Color.MainColor,
        TextID = StringId.Confirm,
        TextSize = CSS_FontSize.SubheadingFontSize,
        TextColor = CSS_Color.MainBackgroundColor,
        TextAlignment = TextAlignment.Center,
      };
      bottomView.AddChidren(btnConfrim);
      btnConfrim.MouseUpEventHandler = (sender, e) =>
      {
        securityAlarm.output = new List<SecurityOutput>();
        foreach (var output in outputList)
        {
          if (output.addCondition)
          {
            securityAlarm.output.Add(output);
          }
        }
        this.RemoveFromParent();
        refreshAction?.Invoke(securityAlarm);
      };
>>>>>>> WJC
        }
<<<<<<< HEAD
        /// <summary>
        /// 配置数据
        /// </summary>
@@ -164,6 +296,9 @@
                    RoomName = function.GetRoomListName(),
                });
            }
=======
    }
>>>>>>> WJC
            foreach (var scene in FunctionList.List.scenes)
@@ -192,10 +327,72 @@
                });
            }
    // <summary>
    /// 显示功能Row
    /// </summary>
    void LoadFunctionListRow(List<Function> functions)
    {
      functionListView.RemoveAll();
      if (functions == null)
      {
        functions = allocatedList;
        }
      foreach (var function in functions)
      {
        var output = securityAlarm.output.Find((obj) => obj.sid == function.sid);
        if (output == null)
        {
          output = new SecurityOutput();
          output.sid = function.sid;
        }
        else
        {
          output.addCondition = true;
        }
        outputList.Add(output);
        FrameLayout functionRow = new FrameLayout()
        {
          Height = Application.GetRealHeight(65),
          BackgroundColor = CSS_Color.MainBackgroundColor,
        };
        functionListView.AddChidren(functionRow);
        var btnFunctionName = new Button()
        {
          X = Application.GetRealWidth(16),
          Width = Application.GetRealWidth(200),
          Height = Application.GetRealHeight(44),
          Text = function.name,
          TextAlignment = TextAlignment.CenterLeft,
          TextColor = CSS_Color.FirstLevelTitleColor,
          TextSize = CSS_FontSize.TextFontSize,
        };
        functionRow.AddChidren(btnFunctionName);
        var btnFunctionFloorName = new Button()
        {
          X = Application.GetRealWidth(16),
          Y = Application.GetRealHeight(24),
          Width = Application.GetRealWidth(200),
          Height = Application.GetRealHeight(41),
          Text = function.GetRoomListName(),
          TextAlignment = TextAlignment.CenterLeft,
          TextColor = CSS_Color.PromptingColor1,
          TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
        };
        functionRow.AddChidren(btnFunctionFloorName);
        Button btnState = new Button()
        {
          Width = Application.GetRealWidth(317),
          TextAlignment = TextAlignment.CenterRight,
          TextSize = CSS_FontSize.TextFontSize,
          TextColor = CSS_Color.PromptingColor1,
        };
        functionRow.AddChidren(btnState);
<<<<<<< HEAD
        // <summary>
        /// 显示功能Row
        /// </summary>
@@ -313,30 +510,63 @@
                    Height = Application.GetRealWidth(1),
                    BackgroundColor = CSS_Color.DividingLineColor,
                });
=======
            }
        }
        private void ShowStateDialog(SecurityOutput output, Button btnState, Button btnChoose = null)
        Button btnChooseIcon = new Button()
        {
            Dialog dialog = new Dialog();
          X = Application.GetRealWidth(333),
          Gravity = Gravity.CenterVertical,
          Width = Application.GetMinRealAverage(32),
          Height = Application.GetMinRealAverage(32),
          UnSelectedImagePath = "Public/ChooseIcon.png",
          SelectedImagePath = "Public/ChooseOnIcon.png",
        };
        functionRow.AddChidren(btnChooseIcon);
            FrameLayout contentView = new FrameLayout();
            dialog.AddChidren(contentView);
            contentView.MouseUpEventHandler = (sender, e) =>
        btnChooseIcon.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
          btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected;
          if (btnChooseIcon.IsSelected)
          {
            output.addCondition = true;
                if (output.status.Count == 0)
                {
                    if (btnChoose != null)
                    {
                        btnChoose.IsSelected = false;
              ShowStateDialog(output, btnState, btnChooseIcon);
                    }
          }
          else
          {
            output.addCondition = false;
                }
            };
        btnState.MouseUpEventHandler = (sender, e) =>
        {
          ShowStateDialog(output, btnState, btnChooseIcon);
        };
>>>>>>> WJC
        if (output.addCondition)
        {
          btnChooseIcon.IsSelected = true;
          btnState.Text = output.StateText();
        }
<<<<<<< HEAD
        private void ShowStateDialog(SecurityOutput output, Button btnState, Button btnChoose = null)
=======
        functionListView.AddChidren(new Button()
>>>>>>> WJC
        {
          Gravity = Gravity.CenterHorizontal,
          Width = Application.GetRealWidth(343),
          Height = Application.GetRealWidth(1),
          BackgroundColor = CSS_Color.DividingLineColor,
        });
<<<<<<< HEAD
            VerticalScrolViewLayout optinView = new VerticalScrolViewLayout()
            {
                Gravity = Gravity.CenterHorizontal,
@@ -379,6 +609,67 @@
                btnOpen.IsSelected =  output.status[0].value.ToLower() == "on";
                btnClose.IsSelected = !btnOpen.IsSelected;
            }
=======
      }
    }
>>>>>>> WJC
    private void ShowStateDialog(SecurityOutput output, Button btnState, Button btnChoose = null)
    {
      Dialog dialog = new Dialog();
      FrameLayout contentView = new FrameLayout();
      dialog.AddChidren(contentView);
      contentView.MouseUpEventHandler = (sender, e) =>
      {
        dialog.Close();
        if (output.status.Count == 0)
        {
          if (btnChoose != null)
          {
            btnChoose.IsSelected = false;
          }
        }
      };
      VerticalScrolViewLayout optinView = new VerticalScrolViewLayout()
      {
        Gravity = Gravity.CenterHorizontal,
        Y = Application.GetRealHeight(515),
        Width = Application.GetRealWidth(343),
        Height = Application.GetRealHeight(88),
        Radius = (uint)Application.GetRealHeight(13),
        BackgroundColor = CSS_Color.MainBackgroundColor,
      };
      contentView.AddChidren(optinView);
      Button btnOpen = new Button()
      {
        Height = Application.GetRealHeight(44),
        TextAlignment = TextAlignment.Center,
        TextColor = CSS_Color.MainColor,
        TextSize = CSS_FontSize.SubheadingFontSize,
        TextID = StringId.On
      };
      optinView.AddChidren(btnOpen);
      optinView.AddChidren(new Button()
      {
        Height = 1,
        BackgroundColor = CSS_Color.DividingLineColor
      });
      Button btnClose = new Button()
      {
        Height = Application.GetRealHeight(44),
        TextAlignment = TextAlignment.Center,
        TextColor = CSS_Color.PromptingColor1,
        TextID = StringId.OFF,
        TextSize = CSS_FontSize.SubheadingFontSize,
      };
      optinView.AddChidren(btnClose);
            Button btnCancel = new Button()
@@ -397,7 +688,8 @@
            dialog.Show();
            btnOpen.MouseUpEventHandler = (sender, e) => {
      btnOpen.MouseUpEventHandler = (sender, e) =>
      {
                btnState.Text = btnOpen.Text;
                output.status = new List<SecurityOutputStatus>()
                {
@@ -407,6 +699,7 @@
                        value = "on",
                    }
                };
<<<<<<< HEAD
                var localInput = alarm.output.Find((obj) =>
                   obj.sid == output.sid
                );
@@ -422,11 +715,27 @@
                btnState.Text = btnClose.Text;
                output.status = new List<SecurityOutputStatus>()
                {
=======
        output.addCondition = true;
        if (btnChoose != null)
        {
          btnChoose.IsSelected = true;
        }
        dialog.Close();
      };
      btnClose.MouseUpEventHandler = (sender, e) =>
      {
        btnState.Text = btnClose.Text;
        output.status = new List<SecurityOutputStatus>()
          {
>>>>>>> WJC
                    new SecurityOutputStatus()
                    {
                        key = FunctionAttributeKey.OnOff,
                        value = "off",
                    }
<<<<<<< HEAD
                };
                var localInput = alarm.output.Find((obj) =>
                 obj.sid == output.sid
@@ -451,11 +760,33 @@
            };
=======
          };
        output.addCondition = true;
        if (btnChoose != null)
        {
          btnChoose.IsSelected = true;
>>>>>>> WJC
        }
        dialog.Close();
      };
      btnCancel.MouseUpEventHandler = (sender, e) =>
      {
        dialog.Close();
        if (output.status.Count == 0)
        {
          if (btnChoose != null)
          {
            btnChoose.IsSelected = false;
          }
        }
      };
    }
<<<<<<< HEAD
        /// <summary>
        /// 住宅列表点击事件
        /// </summary>
@@ -477,6 +808,32 @@
                }, nowSelectId);
            };
        }
=======
>>>>>>> WJC
    /// <summary>
    /// 住宅列表点击事件
    /// </summary>
    void LoadDialog_ChangeFloor()
    {
      string nowSelectId = null;
      btnFloor.MouseUpEventHandler += (sender, e) =>
      {
        var listAllFun = new List<Function>();
        listAllFun.AddRange(allocatedList);
              //显示下拉界面
              var form = new FloorRoomSelectPopupView();
        form.ShowDeviceFunctionView(btnFloor, listAllFun, (selectId, listFun) =>
              {
            nowSelectId = selectId;
                  //重新刷新设备列表
                  this.LoadFunctionListRow(listFun);
          }, nowSelectId);
      };
    }
    }