From 4c586bb23cdcae56ae4e4c62e90e148dc10b9d90 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期二, 17 五月 2022 14:19:31 +0800 Subject: [PATCH] Merge branch 'Dev-Branch' into wxr1215 --- HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacControlPage.cs | 657 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 657 insertions(+), 0 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacControlPage.cs new file mode 100644 index 0000000..f4319c0 --- /dev/null +++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacControlPage.cs @@ -0,0 +1,657 @@ +锘縰sing System; +using System.Collections.Generic; +using HDL_ON.DriverLayer; +using HDL_ON.Entity; +using HDL_ON.Stan; +using HDL_ON.UI.CSS; +using Shared; + +namespace HDL_ON.UI +{ + public class CacControlPage : DeviceFunctionCardCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + /// <summary> + /// 绌鸿皟娓╁害鎺у埗鎺т欢 + /// </summary> + DiyArcSeekBar arcBar; + /// <summary> + /// 鍑忓彿鎸夐挳 + /// </summary> + Button btnMinus; + /// <summary> + /// 鍔犲彿鎸夐挳 + /// </summary> + Button btnPlus; + /// <summary> + /// 娓╁害鎸夐挳 + /// </summary> + Button btnTemp; + Button btnTempUint; + /// <summary> + /// 瀹ゅ唴娓╁害鎸夐挳 + /// </summary> + Button btnIndoorTemp; + /// <summary> + /// 妯″紡鎸夐挳 + /// </summary> + Button btnMode; + /// <summary> + /// 椋庨�熸寜閽� + /// </summary> + Button btnWindSpeed; + /// <summary> + /// 寮�鍏虫寜閽� + /// </summary> + Button btnSwitch; + + AC acFunction = new AC(); + + /// <summary> + /// 鎺у埗鏃堕棿 + /// </summary> + DateTime controlTime = DateTime.MinValue.AddDays(10); + /// <summary> + /// 鎺у埗娓╁害 + /// </summary> + int temp = 16; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭 + /// </summary> + public override void InitFrameWhiteContent() + { + + var sk = device.GetAttribute(FunctionAttributeKey.SetTemp); + if (sk != null) + { + if (sk.min == 0) + { + sk.min = 16; + } + if (sk.max == 0) + { + sk.max = 32; + } + } + + base.ShowColltionButton = false; + base.SetTitleText(Language.StringByID(StringId.Electric)); + + //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹� + this.InitFrameWhiteContent1(); + + //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛� + this.RefreshNowDeviceStatuMemory(this.device); + //鍒锋柊鐣岄潰鐘舵�� + this.RefreshFormStatu(); + //璇诲彇鐘舵�� + 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> + /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹� + /// </summary> + private void InitFrameWhiteContent1() + { + Button btnJinmaoIcon = new Button() + { + Gravity = Gravity.CenterHorizontal, + Y = Application.GetRealHeight(94), + Width = Application.GetRealWidth(164), + Height = Application.GetRealHeight(43), + UnSelectedImagePath = "FunctionIcon/CAC/JinMaoIcon.png" + }; + FrameWhiteCentet1.AddChidren(btnJinmaoIcon); + + + temp = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")); + arcBar = new DiyArcSeekBar() + { + 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 = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")); + + 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 = Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")).ToString(), + TextAlignment = TextAlignment.Center, + }; + 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); + + btnIndoorTemp = new Button() + { + Gravity = Gravity.CenterHorizontal, + Y = btnTemp.Bottom, + Width = Application.GetRealWidth(120), + Height = Application.GetRealHeight(20), + Text = Language.StringByID(StringId.IndoorTemp) + "20掳C/" + Language.StringByID(StringId.Humidity) +"45%", + TextColor = CSS_Color.PromptingColor1, + TextSize = CSS_FontSize.PromptFontSize_FirstLevel, + }; + 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); + + 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); + + btnMode = new Button() + { + X = Application.GetRealWidth(60), + Y = Application.GetRealHeight(334), + Width = Application.GetRealWidth(30), + Height = Application.GetRealWidth(30), + UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode),true), + }; + FrameWhiteCentet1.AddChidren(btnMode); + + Button btnModeText = new Button() + { + X = Application.GetRealWidth(30), + Y = btnMode.Bottom, + Width = Application.GetRealWidth(90), + Height = Application.GetRealHeight(20), + TextAlignment = TextAlignment.Center, + TextSize = 12, + TextColor = CSS_Color.TextualColor, + TextID = StringId.Mode + }; + FrameWhiteCentet1.AddChidren(btnModeText); + + btnWindSpeed = new Button() + { + X = Application.GetRealWidth(238), + Y = Application.GetRealHeight(333), + Width = Application.GetRealWidth(38), + Height = Application.GetRealWidth(38), + UnSelectedImagePath = "FunctionIcon/CAC/DataIcon.png", + }; + FrameWhiteCentet1.AddChidren(btnWindSpeed); + + Button btnDataText = new Button() + { + X = Application.GetRealWidth(212), + Y = btnWindSpeed.Bottom, + Width = Application.GetRealWidth(90), + Height = Application.GetRealHeight(20), + TextAlignment = TextAlignment.Center, + TextSize = 12, + TextColor = CSS_Color.TextualColor, + TextID = StringId.Data + }; + FrameWhiteCentet1.AddChidren(btnDataText); + + btnSwitch = new Button() + { + Gravity = Gravity.CenterHorizontal, + Y = Application.GetRealHeight(466), + Width = Application.GetRealWidth(32), + Height = Application.GetRealWidth(32), + UnSelectedImagePath = "Public/PowerClose.png", + SelectedImagePath = "Public/PowerOpen.png", + IsSelected = device.GetAttrState(FunctionAttributeKey.OnOff) == "on" + }; + FrameWhiteCentet1.AddChidren(btnSwitch); + + LoadEvent_TempChange(); + LoadEvent_AcStatesChange(); + + } + + /// <summary> + /// 鍔犺浇淇敼妯″紡鍖哄煙 + /// </summary> + void LoadDiv_ChangeModeView() + { + Dialog dialog = new Dialog(); + + FrameLayout dialogView = new FrameLayout() + { + BackgroundColor = CSS_Color.DialogTransparentColor1, + }; + dialog.AddChidren(dialogView); + + FrameLayout modeChangeView; + modeChangeView = new FrameLayout() + { + X = Application.GetRealWidth(30), + Y = Application.GetRealHeight(128 + 135), + Width = Application.GetRealWidth(160), + Height = Application.GetRealHeight(152), + BackgroundImagePath = "Public/dialogBg2.png", + }; + dialogView.AddChidren(modeChangeView); + + Button btnTitle; + btnTitle = new Button() + { + X = Application.GetRealWidth(8 + 16), + Y = Application.GetRealHeight(8), + Width = Application.GetRealWidth(112), + Height = Application.GetRealHeight(44), + TextID = StringId.ChooseMode, + TextAlignment = TextAlignment.CenterLeft, + TextColor = CSS_Color.FirstLevelTitleColor, + TextSize = CSS_FontSize.EmphasisFontSize_Secondary, + }; + modeChangeView.AddChidren(btnTitle); + + Button btnLine = new Button() + { + X = btnTitle.X, + Y = btnTitle.Bottom, + Width = Application.GetRealWidth(112), + Height = Application.GetRealHeight(1), + BackgroundColor = CSS_Color.BackgroundColor, + }; + modeChangeView.AddChidren(btnLine); + + var modeList = device.GetAttribute(FunctionAttributeKey.Mode).value; + foreach (var m in modeList) + { + Button btnModeIcon = new Button() + { + X = btnTitle.X, + Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8), + Width = Application.GetRealWidth(24), + Height = Application.GetRealWidth(24), + IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m, + }; + modeChangeView.AddChidren(btnModeIcon); + + Button btnModeText = new Button() + { + X = Application.GetRealWidth(12) + btnModeIcon.Right, + Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8), + Height = Application.GetRealHeight(44), + Width = Application.GetRealWidth(90), + TextAlignment = TextAlignment.CenterLeft, + TextColor = CSS_Color.FirstLevelTitleColor, + SelectedTextColor = CSS_Color.MainColor, + IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m, + TextSize = CSS_FontSize.TextFontSize, + }; + modeChangeView.AddChidren(btnModeText); + + btnModeIcon.UnSelectedImagePath = acFunction.GetModeIconPath(m, false); + btnModeIcon.SelectedImagePath = acFunction.GetModeIconPath(m); + btnModeText.Text = acFunction.GetModeAttrText(m); + + if (modeList.IndexOf(m) < modeList.Count - 1) + { + modeChangeView.AddChidren(new Button() + { + X = btnTitle.X, + Y = btnModeText.Bottom, + Width = Application.GetRealWidth(112), + Height = Application.GetRealHeight(1), + BackgroundColor = CSS_Color.BackgroundColor, + }); + } + EventHandler<MouseEventArgs> eventHandler = (sender, e) => + { + dialog.Close(); + }; + EventHandler<MouseEventArgs> eventHandler1 = (sender, e) => + { + //if (!device.online) + //{ + // new Tip() + // { + // CloseTime = 1, + // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), + // Direction = AMPopTipDirection.None, + // }.Show(MainPage.BaseView); + //} + btnModeIcon.IsSelected = btnModeText.IsSelected = true; + device.SetAttrState(FunctionAttributeKey.Mode, m); + btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(m); + Dictionary<string, string> d = new Dictionary<string, string>(); + d.Add(FunctionAttributeKey.Mode, m); + Control.Ins.SendWriteCommand(device, d); + dialog.Close(); + if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan") + { + arcBar.IsClickable = false; + arcBar.IsOffline = true; + } + else + { + arcBar.IsOffline = false; + arcBar.IsClickable = true; + } + }; + btnModeIcon.MouseUpEventHandler = eventHandler1; + btnModeText.MouseUpEventHandler = eventHandler1; + dialogView.MouseUpEventHandler = eventHandler; + + } + + dialogView.MouseUpEventHandler = (sender, e) => { + dialog.Close(); + }; + dialog.Show(); + } + + + #endregion + + #region 鈻� 璁惧鐘舵�佸弽棣坃______________________ + + /// <summary> + /// 璁惧鐘舵�佸弽棣� + /// </summary> + /// <param name="i_LocalDevice"></param> + public override void DeviceStatuPush(Function i_LocalDevice) + { + //涓嶆槸鍚屼竴涓笢瑗� + if (this.device.sid != i_LocalDevice.sid) { return; } + + //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛� + this.RefreshNowDeviceStatuMemory(i_LocalDevice); + //鍒锋柊鐣岄潰鐘舵�� + this.RefreshFormStatu(); + } + + #endregion + + #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________ + + /// <summary> + /// 娓╁害鏀瑰彉妯″紡 + /// </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(); + 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(); + 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(); + }; + //arcBar.MouseDownEventHandler = (sender, e) => { + // Console.WriteLine("ddd"); + // MainPage.BasePageView.ScrollEnabled =false; + //}; + //arcBar.MouseUpEventHandler = (sender, e) => { + // Console.WriteLine("ddd2"); + // MainPage.BasePageView.ScrollEnabled = true; + //}; + } + } + + /// <summary> + /// 鎺у埗妯″紡浜嬩欢 + /// </summary> + void LoadEvent_AcStatesChange() + { + btnMode.MouseUpEventHandler = (sender, e) => + { + if (device.trait_on_off.curValue.ToString() == "off") + { + return; + } + LoadDiv_ChangeModeView(); + }; + btnWindSpeed.MouseUpEventHandler = (sender, e) => + { + var page = new CacHistoryChoosePage(device); + MainPage.BasePageView.AddChidren(page); + page.InitView(); + MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; + }; + + btnSwitch.MouseUpEventHandler = (sender, e) => + { + //if (!device.online) + //{ + // new Tip() + // { + // CloseTime = 1, + // Text = Language.StringByID(StringId.DeviceOfflineCannotOption), + // Direction = AMPopTipDirection.None, + // }.Show(MainPage.BaseView); + //} + btnSwitch.IsSelected = !btnSwitch.IsSelected; + 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; + } + else + { + arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png"; + btnSwitch.IsBold = false; + arcBar.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()); + Control.Ins.SendWriteCommand(device, d); + }; + } + + #endregion + + #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________ + + /// <summary> + /// 鍒锋柊鐣岄潰鐘舵�� + /// </summary> + private void RefreshFormStatu() + { + Application.RunOnMainThread(() => + { + //app鑷繁鎺у埗鐨勪笉鐢ㄦ洿鏂帮紝浼氶�犳垚璺冲姩 + if (controlTime.AddSeconds(2) > DateTime.Now) + { + return; + } + else + { + btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp).Replace(",", "."))) + "掳C" + + Language.StringByID(StringId.Humidity) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState("room_humidity").Replace(", ", "."))) + "%"; + btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode)); + temp = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."))); + + + arcBar.Progress = temp; + btnTemp.Text = temp.ToString(); + + if (device.trait_on_off.curValue.ToString() == "on") + { + arcBar.IsOffline = false; + btnSwitch.IsSelected = true; + arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png"; + if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan") + { + arcBar.IsClickable = false; + } + else + { + arcBar.IsClickable = true; + } + } + else + { + arcBar.IsOffline = true; + btnSwitch.IsSelected = false; + arcBar.IsClickable = false; + arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png"; + } + + if (device.GetAttrState(FunctionAttributeKey.Mode) == "dry") + { + arcBar.IsOffline = true; + arcBar.IsClickable = false; + + } + } + + }); + } + + #endregion + + #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛� + /// </summary> + private void RefreshNowDeviceStatuMemory(Function i_LocalDevice) + { + } + + #endregion + } +} -- Gitblit v1.8.0