| | |
| | | /// <summary> |
| | | /// 空调温度控制控件 |
| | | /// </summary> |
| | | DiyArcSeekBar arcBar; |
| | | //DiyArcSeekBar arcBar; |
| | | DiyImageSeekBar setTempBar; |
| | | /// <summary> |
| | | /// 减号按钮 |
| | | /// </summary> |
| | | Button btnMinus; |
| | | //Button btnMinus; |
| | | /// <summary> |
| | | /// 加号按钮 |
| | | /// </summary> |
| | | Button btnPlus; |
| | | //Button btnPlus; |
| | | /// <summary> |
| | | /// 温度按钮 |
| | | /// </summary> |
| | |
| | | /// 控制时间 |
| | | /// </summary> |
| | | DateTime controlTime = DateTime.MinValue.AddDays(10); |
| | | /// <summary> |
| | | /// 控制温度 |
| | | /// </summary> |
| | | int temp = 16; |
| | | |
| | | #endregion |
| | | |
| | |
| | | this.RefreshFormStatu(); |
| | | //读取状态 |
| | | Control.Ins.SendReadCommand(device); |
| | | //new System.Threading.Thread(() => |
| | | //{ |
| | | // while (true) |
| | | // { |
| | | // if(controlTime == DateTime.MinValue) |
| | | // { |
| | | |
| | | // } |
| | | // else if (controlTime.AddSeconds(2)<DateTime.Now) |
| | | // { |
| | | // Control.Ins.SendReadCommand(device); |
| | | // controlTime = DateTime.MinValue; |
| | | // } |
| | | // System.Threading.Thread.Sleep(1000); |
| | | // } |
| | | //}) |
| | | //{ IsBackground = true }.Start(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | //获取温度值 |
| | | string setTempTemp = device.GetAttrState(FunctionAttributeKey.SetTemp); |
| | | temp = (int) Convert.ToDouble(setTempTemp); |
| | | var temp = (int)Convert.ToDouble(setTempTemp); |
| | | if (temp <= 0) |
| | | { |
| | | //默认值改成16,2022年06月10日10:03:19 成甫要求的 |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | arcBar = new DiyArcSeekBar() |
| | | var setTempAttr = device.GetAttribute(FunctionAttributeKey.SetTemp); |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | OpenAngle = 160, |
| | | ThumbImageHeight = Application.GetRealWidth(50), |
| | | ProgressBarColor = CSS_Color.MainColor, |
| | | OfflineProgressBarColor = CSS_Color.PromptingColor2, |
| | | ArcColor = CSS_Color.BackgroundColor, |
| | | #if __IOS__ |
| | | Y = Application.GetRealHeight(120 + 25), |
| | | Width = Application.GetRealWidth(260 - 40), |
| | | Height = Application.GetRealWidth(260 - 40), |
| | | SeekBarPadding = Application.GetRealWidth(8), |
| | | #else |
| | | Y = Application.GetRealHeight(120 + 40), |
| | | Width = Application.GetRealWidth(260 - 40), |
| | | Height = Application.GetRealWidth(260 - 40), |
| | | SeekBarPadding = Application.GetRealWidth(7), |
| | | #endif |
| | | |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(arcBar); |
| | | |
| | | |
| | | arcBar.ThumbImagePath = device.GetAttrState(FunctionAttributeKey.OnOff) == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png"; |
| | | arcBar.IsOffline = device.GetAttrState(FunctionAttributeKey.OnOff) == "off"; |
| | | arcBar.MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min; |
| | | arcBar.MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max; |
| | | arcBar.Progress = temp; |
| | | |
| | | btnTemp = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(206), |
| | | Width = Application.GetRealWidth(71), |
| | | Height = Application.GetRealWidth(60), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = 50, |
| | | IsBold = true, |
| | | Text = "111", |
| | | TextAlignment = TextAlignment.Center, |
| | | }; |
| | | btnTemp.Width = btnTemp.GetTextWidth() + Application.GetRealWidth(5); |
| | | btnTemp.Text = Convert.ToDouble(temp).ToString(); |
| | | FrameWhiteCentet1.AddChidren(btnTemp); |
| | | btnTemp = new Button() |
| | | { |
| | | Y = Application.GetRealHeight(121), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Height = Application.GetRealHeight(70), |
| | | TextAlignment = TextAlignment.TopCenter, |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = 60, |
| | | Text = "---", |
| | | IsBold = true, |
| | | }; |
| | | if(setTempAttr.step == "0.5") |
| | | { |
| | | btnTemp.Text = Convert.ToDouble(setTempAttr.curValue).ToString("0.0"); |
| | | } |
| | | else |
| | | { |
| | | btnTemp.Text = setTempAttr.curValue.ToString(); |
| | | } |
| | | btnTemp.Width = btnTemp.GetTextWidth(); |
| | | FrameWhiteCentet1.AddChidren(btnTemp); |
| | | |
| | | |
| | | btnTempUint = new Button() |
| | | { |
| | | X = btnTemp.Right, |
| | | Y = btnTemp.Y, |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealHeight(30), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.EmphasisFontSize_Secondary, |
| | | IsBold = true, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = "°C", |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnTempUint); |
| | | btnTempUint = new Button() |
| | | { |
| | | X = btnTemp.Right, |
| | | Y = Application.GetRealHeight(131), |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealHeight(30), |
| | | TextColor = CSS_Color.FirstLevelTitleColor, |
| | | TextSize = CSS_FontSize.EmphasisFontSize_Secondary, |
| | | IsBold = true, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Text = "°C", |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnTempUint); |
| | | |
| | | btnIndoorTemp = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = btnTemp.Bottom, |
| | | Width = Application.GetRealWidth(120), |
| | | Height = Application.GetRealHeight(20), |
| | | Text = Language.StringByID(StringId.Indoor) + " 20°C", |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnIndoorTemp); |
| | | btnIndoorTemp = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = btnTemp.Bottom, |
| | | Width = Application.GetRealWidth(120), |
| | | Height = Application.GetRealHeight(30), |
| | | Text = Language.StringByID(StringId.Indoor) + " 20°C", |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | TextAlignment = TextAlignment.TopCenter, |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnIndoorTemp); |
| | | |
| | | btnMinus = new Button() |
| | | { |
| | | X = Application.GetRealWidth(21), |
| | | Y = Application.GetRealHeight(263), |
| | | Width = Application.GetRealWidth(32), |
| | | Height = Application.GetRealWidth(32), |
| | | UnSelectedImagePath = "Public/MinusSignIcon.png", |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnMinus); |
| | | var setTempView = new FrameLayout() |
| | | { |
| | | Height = Application.GetRealHeight(80), |
| | | Y = Application.GetRealHeight(10) + btnIndoorTemp.Bottom, |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(setTempView); |
| | | |
| | | btnPlus = new Button() |
| | | { |
| | | X = Application.GetRealWidth(275), |
| | | Y = Application.GetRealHeight(263), |
| | | Width = Application.GetRealWidth(32), |
| | | Height = Application.GetRealWidth(32), |
| | | UnSelectedImagePath = "Public/PlusSignIcon.png", |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnPlus); |
| | | var btnMinTemp = new Button() |
| | | { |
| | | X = Application.GetRealWidth(26), |
| | | Width = Application.GetRealWidth(18), |
| | | TextAlignment = TextAlignment.Center, |
| | | Text = setTempAttr.min.ToString(), |
| | | TextSize = 12, |
| | | TextColor = 0xFFC0C7D4, |
| | | }; |
| | | setTempView.AddChidren(btnMinTemp); |
| | | |
| | | setTempBar = new DiyImageSeekBar() |
| | | { |
| | | X = btnMinTemp.Right, |
| | | Y = Application.GetRealHeight(4), |
| | | Width = Application.GetRealWidth(240), |
| | | //Height = Application.GetRealHeight(41), |
| | | //ProgressBarColor = CSS_Color.MainColor, |
| | | //SeekBarBackgroundColor = CSS_Color.BackgroundColor, |
| | | //MinValue = 16, |
| | | //MaxValue = 30, |
| | | //IsProgressTextShow = false, |
| | | //ThumbImageHeight = 30, |
| | | |
| | | //Width = Application.GetRealWidth(238), |
| | | Height = Application.GetRealHeight(72), |
| | | SeekBarViewHeight = Application.GetRealHeight(14), |
| | | ThumbImagePath = "FunctionIcon/Acst/ThumbImage.png", |
| | | ThumbImageHeight = Application.GetRealHeight(51), |
| | | ProgressBarColor = device.trait_on_off.curValue.ToString() == "on" ? CSS_Color.MainColor : CSS_Color.DividingLineColor, |
| | | Progress = 0, |
| | | SeekBarPadding = Application.GetRealWidth(20), |
| | | IsProgressTextShow = false, |
| | | ProgressChangeDelayTime = 0, |
| | | }; |
| | | if (setTempAttr.step == "0.5") |
| | | { |
| | | setTempBar.MaxValue = (setTempAttr.max - setTempAttr.min) * 2; |
| | | } |
| | | else |
| | | { |
| | | setTempBar.MaxValue = (setTempAttr.max - setTempAttr.min); |
| | | } |
| | | setTempView.AddChidren(setTempBar); |
| | | |
| | | var btnMaxTemp = new Button() |
| | | { |
| | | X = setTempBar.Right, |
| | | Width = Application.GetRealWidth(18), |
| | | TextAlignment = TextAlignment.Center, |
| | | Text = setTempAttr.max.ToString(), |
| | | TextSize = 12, |
| | | TextColor = 0xFFC0C7D4, |
| | | }; |
| | | setTempView.AddChidren(btnMaxTemp); |
| | | |
| | | } |
| | | |
| | | |
| | | btnMode = new Button() |
| | | { |
| | |
| | | }; |
| | | FrameWhiteCentet1.AddChidren(btnSwitch); |
| | | |
| | | LoadEvent_TempChange(); |
| | | setTempBar.OnProgressChangedEvent = (sender, e) => { |
| | | if (setTempAttr.step == "0.5") |
| | | { |
| | | btnTemp.Text = (setTempAttr.min + ((double)e / 2)).ToString("0.0"); |
| | | } |
| | | else |
| | | { |
| | | btnTemp.Text = (setTempAttr.min + e).ToString(); |
| | | } |
| | | }; |
| | | setTempBar.OnStopTrackingTouchEvent = (sender,e) =>{ |
| | | temp = e; |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString()); |
| | | if (setTempAttr.step == "0.5") |
| | | { |
| | | btnTemp.Text = (setTempAttr.min + ((double)e / 2)).ToString("0.0"); |
| | | } |
| | | else |
| | | { |
| | | btnTemp.Text = (setTempAttr.min + e).ToString(); |
| | | } |
| | | controlTime = DateTime.Now; |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.SetTemp, e.ToString()); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | }; |
| | | |
| | | LoadEvent_AcStatesChange(); |
| | | |
| | | LoadDiv_IrView(); |
| | |
| | | dialog.Close(); |
| | | if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan") |
| | | { |
| | | arcBar.IsClickable = false; |
| | | arcBar.IsOffline = true; |
| | | |
| | | setTempBar.IsClickable = false; |
| | | setTempBar.IsOffline = true; |
| | | } |
| | | else |
| | | { |
| | | arcBar.IsOffline = false; |
| | | arcBar.IsClickable = true; |
| | | setTempBar.IsOffline = false; |
| | | setTempBar.IsClickable = true; |
| | | } |
| | | }; |
| | | btnModeIcon.MouseUpEventHandler = eventHandler1; |
| | |
| | | /// </summary> |
| | | void LoadEvent_TempChange() |
| | | { |
| | | btnMinus.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //if (!device.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | //} |
| | | if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan") |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (temp <= device.GetAttribute(FunctionAttributeKey.SetTemp).min) |
| | | { |
| | | return; |
| | | } |
| | | --temp; |
| | | Console.WriteLine($"temp == {temp}"); |
| | | controlTime = DateTime.Now; |
| | | arcBar.Progress = temp; |
| | | btnTemp.Text = temp.ToString(); |
| | | //btnTemp.Width = btnTemp.GetTextWidth() + Application.GetRealWidth(5); |
| | | //btnTempUint.X = btnTemp.Right; |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | }; |
| | | btnPlus.MouseUpEventHandler = (sender, e) => |
| | | { |
| | | //if (!device.online) |
| | | //{ |
| | | // new Tip() |
| | | // { |
| | | // CloseTime = 1, |
| | | // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), |
| | | // Direction = AMPopTipDirection.None, |
| | | // }.Show(MainPage.BaseView); |
| | | //} |
| | | if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan") |
| | | { |
| | | return; |
| | | } |
| | | if (temp >= device.GetAttribute(FunctionAttributeKey.SetTemp).max) |
| | | { |
| | | return; |
| | | } |
| | | ++temp; |
| | | controlTime = DateTime.Now; |
| | | arcBar.Progress = temp; |
| | | btnTemp.Text = temp.ToString(); |
| | | //btnTemp.Width = btnTemp.GetTextWidth() + Application.GetRealWidth(5); |
| | | //btnTempUint.X = btnTemp.Right; |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.SetTemp, temp.ToString()); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | }; |
| | | //if (device.online) |
| | | { |
| | | arcBar.OnStopTrackingTouchEvent = (sender, e) => |
| | | { |
| | | temp = arcBar.Progress; |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString()); |
| | | btnTemp.Text = arcBar.Progress.ToString(); |
| | | controlTime = DateTime.Now; |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString()); |
| | | Control.Ins.SendWriteCommand(device, d); |
| | | }; |
| | | arcBar.OnProgressChangedEvent = (sender, e) => |
| | | { |
| | | device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString()); |
| | | btnTemp.Text = e.ToString(); |
| | | //btnTemp.Width = btnTemp.GetTextWidth() + Application.GetRealWidth(5); |
| | | //btnTempUint.X = btnTemp.Right; |
| | | }; |
| | | //arcBar.MouseDownEventHandler = (sender, e) => { |
| | | // Console.WriteLine("ddd"); |
| | | // MainPage.BasePageView.ScrollEnabled =false; |
| | | //}; |
| | | //arcBar.MouseUpEventHandler = (sender, e) => { |
| | | // Console.WriteLine("ddd2"); |
| | | // MainPage.BasePageView.ScrollEnabled = true; |
| | | //}; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off"; |
| | | if (device.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png"; |
| | | btnSwitch.IsSelected = true; |
| | | arcBar.IsOffline = false; |
| | | setTempBar.IsOffline = false; |
| | | } |
| | | else |
| | | { |
| | | arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png"; |
| | | btnSwitch.IsBold = false; |
| | | arcBar.IsOffline = true; |
| | | setTempBar.IsOffline = true; |
| | | } |
| | | System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.OnOff, device.trait_on_off.curValue.ToString()); |
| | |
| | | btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode), false); |
| | | btnSwing.UnSelectedImagePath = acFunction.GetSwingIconPath(device.GetAttrState(FunctionAttributeKey.Swing), false); |
| | | btnWindSpeed.UnSelectedImagePath = acFunction.GetFanIconPath(device.GetAttrState(FunctionAttributeKey.FanSpeed), false); |
| | | temp = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."))); |
| | | |
| | | |
| | | if (device.GetAttribute(FunctionAttributeKey.SetTemp).step == "0.5") |
| | | { |
| | | var t = Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")); |
| | | var temp = (int)(t * 2); |
| | | setTempBar.Progress = temp - device.GetAttribute(FunctionAttributeKey.SetTemp).min * 2; |
| | | btnTemp.Text = Convert.ToDouble(t).ToString("0.0"); |
| | | } |
| | | else |
| | | { |
| | | var temp = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."))); |
| | | setTempBar.Progress = temp - device.GetAttribute(FunctionAttributeKey.SetTemp).min; |
| | | btnTemp.Text = temp.ToString(); |
| | | } |
| | | |
| | | arcBar.Progress = temp; |
| | | btnTemp.Text = temp.ToString(); |
| | | //btnTemp.Width = btnTemp.GetTextWidth() + Application.GetRealWidth(5); |
| | | //btnTempUint.X = btnTemp.Right; |
| | | |
| | | if (device.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | btnMode.IsSelected = btnSwing.IsSelected = btnWindSpeed.IsSelected = true; |
| | | arcBar.IsOffline = false; |
| | | setTempBar.IsOffline = false; |
| | | btnSwitch.IsSelected = true; |
| | | arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png"; |
| | | if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan") |
| | | { |
| | | arcBar.IsClickable = false; |
| | | setTempBar.IsClickable = false; |
| | | } |
| | | else |
| | | { |
| | | arcBar.IsClickable = true; |
| | | setTempBar.IsClickable = true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | btnMode.IsSelected = btnSwing.IsSelected = btnWindSpeed.IsSelected = false; |
| | | arcBar.IsOffline = true; |
| | | setTempBar.IsOffline = true; |
| | | btnSwitch.IsSelected = false; |
| | | arcBar.IsClickable = false; |
| | | arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png"; |
| | | setTempBar.IsClickable = false; |
| | | } |
| | | |
| | | if(device.GetAttrState(FunctionAttributeKey.Mode) == "dry") |
| | | { |
| | | arcBar.IsOffline = true; |
| | | arcBar.IsClickable = false; |
| | | setTempBar.IsOffline = true; |
| | | setTempBar.IsClickable = false; |
| | | |
| | | } |
| | | } |