| | |
| | | #region ■ 变量声明___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// The instance.
|
| | | /// </summary>
|
| | | public static HomeMainPageForm Instance;
|
| | | /// <summary>
|
| | | /// 整个界面的上下滑动控件
|
| | | /// </summary>
|
| | | private VerticalFrameControl listBodyContr = null;
|
| | |
| | | /// </summary>
|
| | | public void ShowForm()
|
| | | {
|
| | | this.FormID = "HomeMainPageForm";
|
| | | Instance = this;
|
| | | |
| | | //先初始化左滑房间列表界面(在反射里面初始化)
|
| | | if (ListRoomViewFrom.Instance == null) { }
|
| | | if (LeftListRoomViewFrom.Instance == null) { }
|
| | |
|
| | | //整个背景的上下滑动控件
|
| | | if (this.listBodyContr == null)
|
| | |
| | | this.AddNormalDeviceReportEvent();
|
| | | //添加传感器状态上报事件
|
| | | this.AddSensorDeviceReportEvent();
|
| | | //将当前的画面保存到内存当中
|
| | | UserCenterLogic.AddActionForm(this);
|
| | | //开启传感器状态还原的线程
|
| | | this.StartRecoverSenorStatuThread();
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | private void InitTopFrameLayoutControl()
|
| | | {
|
| | | //头部容器
|
| | | base.topFrameLayout = new FrameLayout();
|
| | | base.topFrameLayout = new NormalFrameLayout();
|
| | | topFrameLayout.Y = Application.GetRealHeight(60);
|
| | | topFrameLayout.Height = Application.GetRealHeight(127);
|
| | | topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
|
| | |
| | |
|
| | | //楼层图标
|
| | | var btnFloorIcon = new IconViewControl(69);
|
| | | btnFloorIcon.X = ControlCommonResourse.XXLeft;
|
| | | btnFloorIcon.X = HdlControlResourse.XXLeft;
|
| | | btnFloorIcon.Gravity = Gravity.CenterVertical;
|
| | | btnFloorIcon.UnSelectedImagePath = "Item/Floor.png";
|
| | | topFrameLayout.AddChidren(btnFloorIcon);
|
| | |
| | | this.ShowSelectFloorForm(btnFloorName);
|
| | | };
|
| | | }
|
| | |
|
| | | //可视对讲快捷方式
|
| | | Shared.Phone.Device.VideoIntercom.VideoMachine.AccountSupportVideo(topFrameLayout);
|
| | | //安防快捷方式
|
| | | if (UserCenterResourse.ResidenceOption.SafetyShortcut)
|
| | | if (HdlUserCenterResourse.ResidenceOption.SafetyShortcut)
|
| | | {
|
| | | var btnSafety = new Controls.SafetyShortcutControl();
|
| | | btnSafety.X = Application.GetRealWidth(860);
|
| | |
| | |
|
| | | //住宅名字
|
| | | var btnHouseName = new NormalViewControl(700, 95, true);
|
| | | btnHouseName.X = ControlCommonResourse.XXLeft;
|
| | | btnHouseName.X = HdlControlResourse.XXLeft;
|
| | | btnHouseName.Y = Application.GetRealHeight(161);
|
| | | btnHouseName.TextSize = 24;
|
| | | btnHouseName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
|
| | | btnHouseName.IsBold = true;
|
| | | btnHouseName.Text = Config.Instance.Home.Name;
|
| | | btnHouseName.Width = btnHouseName.GetRealWidthByText();
|
| | | btnHouseName.Width = btnHouseName.GetRealWidthByText() + Application.GetRealWidth(100);
|
| | | this.listBodyContr.frameTable.AddChidren(btnHouseName);
|
| | |
|
| | | //切换住宅
|
| | |
| | | selectHouse.Init();
|
| | | selectHouse.HouseAction = (houseId) =>
|
| | | {
|
| | | ChangeResidence(House.GetHouseByHouseId(houseId));
|
| | | //切换住宅
|
| | | this.ChangeResidence(HdlResidenceLogic.Current.GetHouseByHouseId(houseId));
|
| | | };
|
| | | }
|
| | | };
|
| | |
| | | private void InitMidFrameLayoutControl()
|
| | | {
|
| | | //成员身份不允许添加网关
|
| | | if (UserCenterResourse.UserInfo.AuthorityNo == 3)
|
| | | if (HdlUserCenterResourse.ResidenceOption.AuthorityNo == 3)
|
| | | {
|
| | | //初始化场景,功能的切换控件
|
| | | this.InitSceneFunctionSwitchControl();
|
| | |
| | | btnFunction.TextID = R.MyInternationalizationString.Function;
|
| | | btnFunction.TextAlignment = TextAlignment.Center;
|
| | | functionSceneView.AddChidren(btnFunction);
|
| | | if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 1)
|
| | | if (HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 1)
|
| | | {
|
| | | btnScene.IsSelected = true;
|
| | | btnScene.TextSize = 17;
|
| | | btnScene.IsBold = true;
|
| | | }
|
| | | else if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2)
|
| | | else if (HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2)
|
| | | {
|
| | | btnFunction.IsSelected = true;
|
| | | btnFunction.TextSize = 17;
|
| | |
| | | }
|
| | |
|
| | | //功能和场景bodyView
|
| | | this.bodyFrameLayout = new FrameLayout();
|
| | | this.bodyFrameLayout = new NormalFrameLayout();
|
| | | bodyFrameLayout.Y = functionSceneView.Bottom;
|
| | | bodyFrameLayout.Height = this.listBodyContr.frameTable.Height - functionSceneView.Bottom;
|
| | | bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
|
| | |
| | | return;
|
| | | }
|
| | | //功能分支选择
|
| | | UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 2;
|
| | | HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 2;
|
| | |
|
| | | btnScene.IsSelected = false;
|
| | | btnScene.TextSize = 15;
|
| | |
| | | return;
|
| | | }
|
| | | //场景分支选择
|
| | | UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 1;
|
| | | HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 1;
|
| | |
|
| | | btnScene.IsSelected = true;
|
| | | btnScene.TextSize = 17;
|
| | |
| | | this.listBodyContr.frameTable.AddChidren(bg);
|
| | |
|
| | | var tip = new NormalViewControl(this.GetPictrueRealSize(717), this.GetPictrueRealSize(58), false);
|
| | | tip.Y = Application.GetRealHeight(815);
|
| | | tip.Y = bg.Bottom + Application.GetRealHeight(35);
|
| | | tip.Gravity = Gravity.CenterHorizontal;
|
| | | tip.TextID = R.MyInternationalizationString.NewAccountNeedBingGW;
|
| | | tip.TextColor = ZigbeeColor.Current.GXCTextGrayColor;
|
| | |
| | | this.listBodyContr.frameTable.AddChidren(tip);
|
| | |
|
| | | var addBG = new PicViewControl(971, 366);
|
| | | addBG.Y = Application.GetRealHeight(1048);
|
| | | addBG.Y = tip.Bottom + Application.GetRealHeight(176);
|
| | | addBG.UnSelectedImagePath = "Item/VirtualFrame.png";
|
| | | addBG.Gravity = Gravity.CenterHorizontal;
|
| | | this.listBodyContr.frameTable.AddChidren(addBG);
|
| | |
|
| | | var addGatewayBtn = new IconViewControl(89);
|
| | | addGatewayBtn.Y = Application.GetRealHeight(1143);
|
| | | addGatewayBtn.Y = tip.Bottom + Application.GetRealHeight(271);
|
| | | addGatewayBtn.UnSelectedImagePath = "Item/Add_GW.png";
|
| | | addGatewayBtn.Gravity = Gravity.CenterHorizontal;
|
| | | this.listBodyContr.frameTable.AddChidren(addGatewayBtn);
|
| | |
| | | };
|
| | |
|
| | | var addTip = new PicViewControl(717, 58);
|
| | | addTip.Y = Application.GetRealHeight(1256);
|
| | | addTip.Y = addGatewayBtn.Bottom + Application.GetRealHeight(23);
|
| | | addTip.Gravity = Gravity.CenterHorizontal;
|
| | | addTip.TextID = R.MyInternationalizationString.AddSmartGW;
|
| | | addTip.TextColor = ZigbeeColor.Current.GXCTextBlackColor;
|
| | |
| | | roomPageView.SetLeftAndRightImageView(mLeftImageView, mRightImageView);
|
| | |
|
| | | //当前房间
|
| | | var listRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
|
| | | var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId);
|
| | | if (HdlRoomLogic.Current.NowMainPageRoom == null)
|
| | | {
|
| | | //设置第一个为初始房间
|
| | | HdlRoomLogic.Current.NowMainPageRoom = listRoom[0];
|
| | | }
|
| | | var curIndex = 0;
|
| | |
| | | //当没有绑定有网关,左滑时,点击房间列表,则不鸟它
|
| | | return;
|
| | | }
|
| | | var listRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
|
| | | var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId);
|
| | | for (int i = 0; i < listRoom.Count; i++)
|
| | | {
|
| | | if (room.Id == listRoom[i].Id)
|
| | |
| | | //重置一下楼层名字
|
| | | if (this.btnFloorName != null)
|
| | | {
|
| | | btnFloorName.Text = HdlResidenceLogic.Current.GetFloorNameById(Config.Instance.Home.CurrentFloorId);
|
| | | btnFloorName.Text = Config.Instance.Home.GetCurrentFloorName;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | bodyFrameLayout.RemoveAll();
|
| | | bodyFrameLayout.Height = Application.GetRealHeight(750);
|
| | | this.listBodyContr.RecoverTableHeight();
|
| | | this.dicSceneCardControl.Clear();
|
| | | this.dicDeviceCardControl.Clear();
|
| | | this.dicSceneCardControl = new Dictionary<int, Controls.SceneCardControl>();
|
| | | this.dicDeviceCardControl = new Dictionary<string, Controls.DeviceCardCommon>();
|
| | |
|
| | | var listDevice = new List<CommonDevice>();
|
| | | foreach (var mainkeys in HdlRoomLogic.Current.NowMainPageRoom.ListDevice)
|
| | | {
|
| | | var device = LocalDevice.Current.GetDevice(mainkeys);
|
| | | var device = HdlDeviceCommonLogic.Current.GetDevice(mainkeys);
|
| | | //判断该设备能否显示在主页
|
| | | if (LocalDevice.Current.CanShowInHomeHomeMainPage(device) == false)
|
| | | if (HdlDeviceCommonLogic.Current.CanShowInHomeHomeMainPage(device) == false)
|
| | | {
|
| | | continue;
|
| | | }
|
| | |
| | | {
|
| | | cardContr = new Controls.DeviceFreshAirCardControl();
|
| | | }
|
| | | // PM2.5
|
| | | else if (device.Type == DeviceType.PMSensor)
|
| | | {
|
| | | cardContr = new Controls.DevicePmSensorCardControl();
|
| | | }
|
| | | //彩灯(调光器)
|
| | | else if (device.Type == DeviceType.DimmableLight)
|
| | | {
|
| | |
| | | {
|
| | | cardContr = new Controls.DeviceDoorLockCardControl();
|
| | | }
|
| | | //色温灯
|
| | | else if (device.Type == DeviceType.ColorTemperatureLight)
|
| | | {
|
| | | cardContr = new Controls.DeviceColorTemperatureCardControl();
|
| | | }
|
| | | //无法识别
|
| | | else
|
| | | {
|
| | |
| | | cardContr.CardNeedRemoveEvent += () =>
|
| | | {
|
| | | //重置设备卡片控件坐标(卡片需要被删除专用)
|
| | | this.ResetDeviceCardControlLocation(LocalDevice.Current.GetDeviceMainKeys(device));
|
| | | this.ResetDeviceCardControlLocation(HdlDeviceCommonLogic.Current.GetDeviceMainKeys(device));
|
| | | };
|
| | | //设备计数
|
| | | contrCount++;
|
| | |
| | | YY = cardContr.Bottom + this.GetPictrueRealSize(15);
|
| | | }
|
| | | //控件记录到缓存中
|
| | | this.dicDeviceCardControl[LocalDevice.Current.GetDeviceMainKeys(device)] = cardContr;
|
| | | this.dicDeviceCardControl[HdlDeviceCommonLogic.Current.GetDeviceMainKeys(device)] = cardContr;
|
| | | //加缓存,然后发命令
|
| | | listContr.Add(cardContr);
|
| | |
|
| | |
| | | }
|
| | | HdlThreadLogic.Current.RunThread(() =>
|
| | | {
|
| | | for (int i = 0; i < listContr.Count; i++)
|
| | | while (listDeviceBackContr.Parent != null)
|
| | | {
|
| | | if (listDeviceBackContr.Parent == null)
|
| | | bool hadSend = false;
|
| | | for (int i = 0; i < listContr.Count; i++)
|
| | | {
|
| | | return;
|
| | | if (listDeviceBackContr.Parent == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | //如果还没有接收到数据,则再次发送
|
| | | if (listContr[i].ReceiveResponeResultStatu() == false)
|
| | | {
|
| | | //发送获取状态的命令
|
| | | listContr[i].SendStatuComand();
|
| | | hadSend = true;
|
| | | System.Threading.Thread.Sleep(200);
|
| | | }
|
| | | }
|
| | | System.Threading.Thread.Sleep(200);
|
| | | //发送获取状态的命令
|
| | | listContr[i].SendStatuComand();
|
| | | if (hadSend == false)
|
| | | {
|
| | | //如果已经全部回路都接收了网关回复,则不再二次发送
|
| | | break;
|
| | | }
|
| | | System.Threading.Thread.Sleep(2000);
|
| | | }
|
| | |
|
| | | }, ShowErrorMode.NO);
|
| | | }
|
| | | });
|
| | |
| | | bodyFrameLayout.RemoveAll();
|
| | | bodyFrameLayout.Height = Application.GetRealHeight(750);
|
| | | this.listBodyContr.RecoverTableHeight();
|
| | | this.dicSceneCardControl.Clear();
|
| | | this.dicDeviceCardControl.Clear();
|
| | | this.dicSceneCardControl = new Dictionary<int, Controls.SceneCardControl>();
|
| | | this.dicDeviceCardControl = new Dictionary<string, Controls.DeviceCardCommon>();
|
| | |
|
| | | var listScene = new List<SceneUI>();
|
| | | foreach (int sceneId in HdlRoomLogic.Current.NowMainPageRoom.ListSceneId)
|
| | |
| | | //让界面别闪烁
|
| | | HdlThreadLogic.Current.RunMainInThread(() =>
|
| | | {
|
| | | if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2)
|
| | | if (HdlUserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2)
|
| | | {
|
| | | //功能
|
| | | this.ShowFunction();
|
| | |
| | | /// <param name="home">Home.</param>
|
| | | private void ChangeResidence(House home)
|
| | | {
|
| | | try
|
| | | HdlThreadLogic.Current.RunThread(() =>
|
| | | {
|
| | | CommonPage.Loading.Start();
|
| | | new System.Threading.Thread(async () =>
|
| | | {
|
| | | Config.Instance.HomeId = home.Id;
|
| | | Config.Instance.Home = House.GetHouseByFilePath(home.FileName);
|
| | | Global.CreateHomeDirectory(home.Id);
|
| | | Config.Instance.Save();
|
| | | //刷新个人中心的内存及线程
|
| | | await UserCenterLogic.InitUserCenterMenmoryAndThread();
|
| | | this.ShowProgressBar();
|
| | |
|
| | | Application.RunOnMainThread(() =>
|
| | | //切换住宅
|
| | | var result = HdlResidenceLogic.Current.SwitchResidence(home.Id);
|
| | |
|
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | if (result == true)
|
| | | {
|
| | | //刷新界面
|
| | | this.ShowForm();
|
| | |
|
| | | CommonPage.Loading.Hide();
|
| | | });
|
| | | })
|
| | | { IsBackground = true }.Start();
|
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | | Application.RunOnMainThread(() =>
|
| | | {
|
| | | CommonPage.Loading.Hide();
|
| | | Console.WriteLine(ex.Message);
|
| | | }
|
| | | this.CloseProgressBar();
|
| | | });
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | //处理一般设备的上报数据
|
| | | string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
|
| | | string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
|
| | | if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true)
|
| | | {
|
| | | //刷新卡片信息
|
| | | var locadevice = LocalDevice.Current.GetDevice(mainKeys);
|
| | | var locadevice = HdlDeviceCommonLogic.Current.GetDevice(mainKeys);
|
| | | //已经接收到网关的反馈 2020.05.09:删除Ack主题
|
| | | this.dicDeviceCardControl[mainKeys].SetHadGetResponeResultStatu();
|
| | | //刷新控件
|
| | | this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice);
|
| | | if (locadevice.Type != DeviceType.IASZone)
|
| | | {
|
| | | //传感器不需要属性上报(但是那个球型传感器居然会属性上报)
|
| | | this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice);
|
| | | }
|
| | | else if (report.DeviceStatusReport.CluterID == 1)
|
| | | {
|
| | | //这个是电量推送
|
| | | this.dicDeviceCardControl[mainKeys].RefreshBatteryStatu();
|
| | | }
|
| | | }
|
| | | }, ShowErrorMode.NO);
|
| | | });
|
| | |
| | | {
|
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
|
| | | string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
|
| | | if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true)
|
| | | {
|
| | | //刷新卡片状态
|
| | | bool bolOnline = Common.LocalDevice.Current.CheckDeviceIsOnline(report);
|
| | | bool bolOnline = HdlDeviceCommonLogic.Current.CheckDeviceIsOnline(report);
|
| | | this.dicDeviceCardControl[mainKeys].SetCardOnlineStatu(bolOnline);
|
| | | return;
|
| | | }
|
| | |
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | //处理传感器上报数据
|
| | | string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
|
| | | string mainKeys = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(report);
|
| | | if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true)
|
| | | {
|
| | | //本地设备对象
|
| | | var locadevice = LocalDevice.Current.GetDevice(mainKeys);
|
| | | //刷新卡片信息
|
| | | this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice);
|
| | | //开启卡片闪烁特效
|
| | | this.dicDeviceCardControl[mainKeys].StartCardLightAppeal();
|
| | | }
|
| | |
|
| | | }, ShowErrorMode.NO);
|
| | | });
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 传感器状态还原_____________________
|
| | |
|
| | | /// <summary>
|
| | | /// 开启传感器状态还原的线程
|
| | | /// </summary>
|
| | | private void StartRecoverSenorStatuThread()
|
| | | {
|
| | | HdlThreadLogic.Current.RunThread(() =>
|
| | | {
|
| | | while (this.Parent != null)
|
| | | {
|
| | | try
|
| | | {
|
| | | var dicControl = this.dicDeviceCardControl;
|
| | | foreach (var contr in dicControl.Values)
|
| | | {
|
| | | //如果是传感器,则刷新状态
|
| | | if (contr.device.Type == DeviceType.IASZone && contr.Parent != null
|
| | | && ((IASZone)contr.device).iASInfo == null)
|
| | | {
|
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | //设备状态必须刷新
|
| | | string statuText = HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(contr.device);
|
| | | contr.SetDeviceStatuText(statuText);
|
| | | //传感器切换为灰色状态
|
| | | contr.SwitchCardStatuAppeal(false);
|
| | |
|
| | | }, ShowErrorMode.NO);
|
| | | }
|
| | | }
|
| | | System.Threading.Thread.Sleep(8000);
|
| | | }
|
| | | catch { System.Threading.Thread.Sleep(3000); }
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | |
| | | private void ShowSelectFloorForm(NormalViewControl btnFloor)
|
| | | {
|
| | | var floorFL = new Category.SelectFloorForm();
|
| | | floorFL.CurFloorId = Config.Instance.Home.CurrentFloorId;
|
| | | this.AddChidren(floorFL);
|
| | | floorFL.Init(35, 153);
|
| | | floorFL.changeFloor = true;
|
| | | floorFL.FloorAction = (floorId) =>
|
| | | {
|
| | | btnFloor.Text = Config.Instance.Home.GetFloorNameById(floorId);
|
| | | btnFloor.Text = HdlResidenceLogic.Current.GetFloorNameById(floorId);
|
| | | Config.Instance.Home.CurrentFloorId = floorId;
|
| | | HdlRoomLogic.Current.NowMainPageRoom = HdlRoomLogic.Current.GetLoveRoom();
|
| | | //分类界面需要刷新
|
| | | UserView.UserPage.Instance.RefreshCategoryForm = true;
|
| | | this.ShowForm();
|
| | | };
|
| | | }
|
| | |
| | | /// </summary>
|
| | | public override void CloseFormBefore()
|
| | | {
|
| | | //把静态变量的这个东西置空
|
| | | Instance = null;
|
| | |
|
| | | HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceOnline");
|
| | | HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceRespone");
|
| | | HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceStatus");
|
| | | HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewSensor");
|
| | |
|