| | |
| | | /// </summary>
|
| | | private bool isProgressing = false;
|
| | | /// <summary>
|
| | | /// 能否发送进度值
|
| | | /// </summary>
|
| | | private bool canSetProgressValue = true;
|
| | | /// <summary>
|
| | | /// 是否已经初始化了控件(因为底层有可能会刷新整个界面)
|
| | | /// </summary>
|
| | | private bool hadInitControl = false;
|
| | |
| | | if (((LightBase)this.device).OnOffStatus == 1)
|
| | | {
|
| | | //亮度 XX
|
| | | this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + " " + HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device));
|
| | | this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + " " + HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device));
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | waveSeekBar.MaxValue = 100;
|
| | | waveSeekBar.Progress = (int)(((DimmableLight)this.device).Level * 1.0 / MaxLevel * 100);
|
| | | waveSeekBar.CornerRadius = Application.GetRealHeight(58);
|
| | | waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End);
|
| | | frameWhiteBack.AddChidren(waveSeekBar);
|
| | |
|
| | | //开关
|
| | |
| | |
|
| | | //设置初始状态
|
| | | this.IsLightOpen = ((LightBase)this.device).OnOffStatus == 1;
|
| | | this.canSetProgressValue = this.IsLightOpen;
|
| | | if (IsLightOpen == true)
|
| | | {
|
| | | btnSwitch.IsSelected = true;
|
| | | waveSeekBar.IsClickable = true;
|
| | | waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End);
|
| | | }
|
| | | else
|
| | | {
|
| | | waveSeekBar.IsClickable = false;
|
| | | waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor);
|
| | | }
|
| | |
|
| | | //彩灯控件里面的那个显示百分比的控件
|
| | |
| | | //如果住宅为虚拟住宅,直接改缓存
|
| | | ((DimmableLight)this.device).Level = value * MaxLevel / 100;
|
| | | //亮度 XX
|
| | | this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + " " + HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device));
|
| | | this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + " " + HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device));
|
| | | }
|
| | | };
|
| | |
|
| | |
| | | }
|
| | | this.hadInitControl = true;
|
| | |
|
| | | if (Config.Instance.Home.IsVirtually == true)
|
| | | {
|
| | | //虚拟住宅
|
| | | return;
|
| | | }
|
| | |
|
| | | //开一个线程,监视是否滑动的滑动条,每秒检测一次
|
| | | HdlThreadLogic.Current.RunThread(() =>
|
| | | {
|
| | | while (this.Parent != null)
|
| | | {
|
| | | System.Threading.Thread.Sleep(1000);
|
| | | if (nowProgressValue == oldProgressValue
|
| | | || this.canSetProgressValue == false)
|
| | | if (nowProgressValue == oldProgressValue)
|
| | | {
|
| | | //值一样
|
| | | continue;
|
| | |
| | | /// <param name="isOpen"></param>
|
| | | private void SetSwitchCommand(bool isOpen)
|
| | | {
|
| | | //获取当前亮度
|
| | | int level = Convert.ToInt32(this.device.GetType().InvokeMember("Level", System.Reflection.BindingFlags.GetField, null, this.device, null));
|
| | | //如果住宅是虚拟住宅
|
| | | if (Common.Config.Instance.Home.IsVirtually == true)
|
| | | {
|
| | | ((LightBase)this.device).OnOffStatus = isOpen == true ? 1 : 0;
|
| | | if (((LightBase)this.device).OnOffStatus == 1 && level == 0)
|
| | | {
|
| | | //如果当前是打开状态,并且亮度为0的话,则需要变成100%亮度
|
| | | this.device.GetType().InvokeMember("Level", System.Reflection.BindingFlags.SetField, null, this.device, new object[] { 100 });
|
| | | }
|
| | | //刷新开关状态
|
| | | this.RefreshSwitchStatu(isOpen);
|
| | | return;
|
| | | }
|
| | |
|
| | | //当按下开关按钮时,不能再发送进度值
|
| | | this.canSetProgressValue = false;
|
| | |
|
| | | //检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
|
| | | this.StartCheckResponeResult(this.listControl, (result) =>
|
| | | {
|
| | | HdlThreadLogic.Current.RunMain(() =>
|
| | | {
|
| | | bool statu = ((LightBase)this.device).OnOffStatus == 1;
|
| | | //接收到网关回复
|
| | | if (result == true)
|
| | | {
|
| | | bool statu = ((LightBase)this.device).OnOffStatus == 1;
|
| | | //刷新开关状态
|
| | | this.RefreshSwitchStatu(statu);
|
| | | if (statu == true)
|
| | | {
|
| | | //等待结果结束后,彩灯控件可以滑动
|
| | | waveSeekBar.IsClickable = true;
|
| | | }
|
| | | //状态取反
|
| | | listControl[0].IsSelected = statu;
|
| | | }
|
| | | });
|
| | | });
|
| | |
|
| | | //发送等待的时间内,不能滑动彩灯控件
|
| | | waveSeekBar.IsClickable = false;
|
| | | //状态取反
|
| | | listControl[0].IsSelected = !listControl[0].IsSelected;
|
| | | if (isOpen == true)
|
| | | {
|
| | | //打开
|
| | | this.device.SwitchControl(1);
|
| | | if (level == 0)
|
| | | {
|
| | | //如果当前是打开状态,并且亮度为0的话,则需要变成100%亮度
|
| | | this.device.GetType().InvokeMember("SetLevel", System.Reflection.BindingFlags.InvokeMethod, null, this.device, new object[] { 254 });
|
| | | }
|
| | | else
|
| | | {
|
| | | this.device.SwitchControl(1);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | if (isOpen == true)
|
| | | {
|
| | | //亮度是必须要刷新的 亮度 XX
|
| | | this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + " " + HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device));
|
| | | if (this.isProgressing == false)
|
| | | {
|
| | | //当进度值在手动变更中时,不接收推送
|
| | | waveSeekBar.Progress = (int)(((DimmableLight)this.device).Level * 1.0 / MaxLevel * 100);
|
| | | }
|
| | | this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uBrightness) + " " + HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device));
|
| | | }
|
| | | if (isOpen == false && this.IsLightOpen == true)
|
| | | {
|
| | | //状态不一样,才变更字样:关闭
|
| | | this.SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
|
| | | }
|
| | |
|
| | | if (this.isProgressing == false)
|
| | | {
|
| | | //当进度值在手动变更中时,不接收推送
|
| | | waveSeekBar.Progress = (int)(((DimmableLight)this.device).Level * 1.0 / MaxLevel * 100);
|
| | | }
|
| | |
|
| | | if (listControl[0].IsSelected != isOpen)
|
| | |
| | | listControl[0].IsSelected = isOpen;
|
| | | }
|
| | |
|
| | | //状态不一样才变更
|
| | | if (this.IsLightOpen != isOpen)
|
| | | {
|
| | | if (isOpen == true)
|
| | | {
|
| | | waveSeekBar.IsClickable = true;
|
| | | waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarColor_Start, ZigbeeColor.Current.GXCWaveSeekBarColor_End);
|
| | | }
|
| | | else
|
| | | {
|
| | | waveSeekBar.IsClickable = false;
|
| | | waveSeekBar.SetProgressBarColors(ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor, ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor);
|
| | | }
|
| | | }
|
| | | this.IsLightOpen = isOpen;
|
| | | //回复的结果说,处于打开状态才能发送
|
| | | this.canSetProgressValue = this.IsLightOpen;
|
| | | }
|
| | |
|
| | | #endregion
|