From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期二, 30 八月 2022 09:37:38 +0800 Subject: [PATCH] 合并了IOS的代码 --- ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirerDetailCardForm.cs | 812 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 812 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirerDetailCardForm.cs b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirerDetailCardForm.cs new file mode 100644 index 0000000..fcfdd7e --- /dev/null +++ b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceAirerDetailCardForm.cs @@ -0,0 +1,812 @@ +锘縰sing Shared.Common; +using Shared.Phone.UserCenter; +using System; +using System.Collections.Generic; +using System.Text; +using ZigBee.Device; +namespace Shared.Phone.MainPage.ControlForm +{ + /// <summary> + /// 鏅捐。鏋剁被鍨嬬殑娣卞害鍗$墖鐣岄潰 + /// </summary> + public class DeviceAirerDetailCardForm : DeviceDetailCardCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + /// <summary> + /// 褰撳墠鏅捐。鏋� + /// </summary> + Airer airer = null; + /// <summary> + /// 鎵撳紑鎺т欢 + /// </summary> + private IconBigViewControl btnOpen = null; + /// <summary> + /// 鍋滄鎺т欢 + /// </summary> + private IconBigViewControl btnStop = null; + /// <summary> + /// 鍏抽棴鎺т欢 + /// </summary> + private IconBigViewControl btnClose = null; + /// <summary> + /// 鐓ф槑 + /// </summary> + private IconViewControl btnLight = null; + /// <summary> + /// 娑堟瘨 + /// </summary> + private IconViewControl btnDisinfect = null; + /// <summary> + /// 椋庡共 + /// </summary> + private IconViewControl btnWind = null; + /// <summary> + /// 鐑樺共 + /// </summary> + private IconViewControl btnDry = null; + + /// <summary> + /// 寮�鍚堝笜鎺т欢 + /// </summary> + private CurtainSeekBar SeekBarOpenCurtain = null; + /// <summary> + /// 杩涘害鍊兼槸鍚﹀湪鏀瑰彉涓� + /// </summary> + private bool isProgressing = false; + /// <summary> + /// 鏄惁宸茬粡鍒濆鍖栦簡鎺т欢(鍥犱负搴曞眰鏈夊彲鑳戒細鍒锋柊鏁翠釜鐣岄潰) + /// </summary> + private bool hadInitControl = false; + /// <summary> + /// 鐑樺共鏃堕棿 + /// </summary> + Button btnDryTimeText; + /// <summary> + /// 椋庡共鏃堕棿 + /// </summary> + Button btnWindTimeText; + /// <summary> + /// 娑堟瘨鏃堕棿 + /// </summary> + Button btnDisinfectTimeText; + /// <summary> + /// 鐑樺共鏂囨湰鏃堕棿澶勭悊 + /// </summary> + public Action<string> actionDry = null; + /// <summary> + /// 椋庡共鏂囨湰鏃堕棿澶勭悊 + /// </summary> + public Action<string> actionWind = null; + /// <summary> + /// 娑堟瘨鏂囨湰鏃堕棿澶勭悊 + /// </summary> + public Action<string> actionDisinfect = null; + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 搴曞眰鍒濆鍖栦腑閮ㄦ帶浠跺畬鎴愪箣鍚� + /// </summary> + /// <param name="frameWhiteBack"></param> + public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack) + { + airer = this.device as Airer; + //宸︽粦涓嶈兘 + this.ScrollEnabled = false; + //璁剧疆鐘舵�佹枃瀛� + this.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device)); + + var btnDoorLockPic = new Button() + { + Width = Application.GetMinReal(432), + Height = Application.GetMinReal(302), + Y = Application.GetRealHeight(228), + UnSelectedImagePath = "Airer/DetailAirerPic.png", + Gravity = Gravity.CenterHorizontal, + }; + frameWhiteBack.AddChidren(btnDoorLockPic); + + //鎵撳紑鎺т欢 + this.btnOpen = new IconBigViewControl(81, 81); + btnOpen.btnIcon.UseClickStatu = true; + frameWhiteBack.AddChidren(btnOpen); + btnOpen.InitControl(); + btnOpen.UnSelectedImagePath = "Airer/UpOffline.png"; + btnOpen.SelectedImagePath = "Airer/Up.png"; + btnOpen.X = Application.GetRealWidth(132) - btnOpen.XOffset; + btnOpen.Y = Application.GetRealHeight(671); + + //鍋滄鎺т欢 + this.btnStop = new IconBigViewControl(81, 81); + btnStop.btnIcon.UseClickStatu = true; + btnStop.UnSelectedImagePath = "Airer/StopOffline.png"; + btnStop.SelectedImagePath = "Airer/Stop.png"; + frameWhiteBack.AddChidren(btnStop); + btnStop.InitControl(); + btnStop.X = Application.GetRealWidth(444) - btnStop.XOffset; + btnStop.Y = btnOpen.Y; + + //鍏抽棴 + this.btnClose = new IconBigViewControl(81, 81); + btnClose.btnIcon.UseClickStatu = true; + frameWhiteBack.AddChidren(btnClose); + btnClose.InitControl(); + btnClose.UnSelectedImagePath = "Airer/DownOffline.png"; + btnClose.SelectedImagePath = "Airer/Down.png"; + btnClose.X = Application.GetRealWidth(752) - btnClose.XOffset; + btnClose.Y = btnOpen.Y; + + //鐑樺共 + btnDry = new IconViewControl(81); + btnDry.UnSelectedImagePath = "Airer/DryOffline.png"; + btnDry.SelectedImagePath = "Airer/Dry.png"; + btnDry.X = Application.GetRealWidth(98); + btnDry.Y = Application.GetRealHeight(913); + btnDry.IsSelected = ((Airer)this.device).DryOnOffStatus == 1 ? true : false; + frameWhiteBack.AddChidren(btnDry); + + //椋庡共 + btnWind = new IconViewControl(81); + frameWhiteBack.AddChidren(btnWind); + btnWind.UnSelectedImagePath = "Airer/WindOffline.png"; + btnWind.SelectedImagePath = "Airer/Wind.png"; + btnWind.X = Application.GetRealWidth(328); + btnWind.IsSelected = ((Airer)this.device).WindOnOffStatus == 1 ? true : false; + btnWind.Y = btnDry.Y; + + //娑堟瘨 + btnDisinfect = new IconViewControl(81); + frameWhiteBack.AddChidren(btnDisinfect); + btnDisinfect.UnSelectedImagePath = "Airer/DisinfectOffline.png"; + btnDisinfect.SelectedImagePath = "Airer/DisinfectSelected.png"; + btnDisinfect.IsSelected = ((Airer)this.device).DisinfectOnOffStatus == 1 ? true : false; + btnDisinfect.X = Application.GetRealWidth(556); + btnDisinfect.Y = btnDry.Y; + + //鐓ф槑 + btnLight = new IconViewControl(81); + frameWhiteBack.AddChidren(btnLight); + btnLight.UnSelectedImagePath = "Airer/LightOffline.png"; + btnLight.SelectedImagePath = "Airer/LightSelected.png"; + btnLight.IsSelected = ((Airer)this.device).OnOffStatus == 1 ? true : false; + btnLight.X = Application.GetRealWidth(786); + btnLight.Y = btnDry.Y; + + string[] stringText = { + Language.StringByID(R.MyInternationalizationString.AirerUp), + Language.StringByID(R.MyInternationalizationString.AirerStop), + Language.StringByID(R.MyInternationalizationString.AirerDown), + Language.StringByID(R.MyInternationalizationString.AirerDry), + Language.StringByID(R.MyInternationalizationString.AirerWind), + Language.StringByID(R.MyInternationalizationString.AirerDisinfect), + Language.StringByID(R.MyInternationalizationString.AirerLight) + }; + + for (int i = 0; i < stringText.Length; i++) + { + var btnText = new Button() + { + Width = Application.GetRealWidth(69 + 20), + Height = Application.GetRealHeight(46), + TextColor = ZigbeeColor.Current.XMGray2, + TextSize = 12, + Text = stringText[i], + }; + frameWhiteBack.AddChidren(btnText); + + switch (i) + { + case 0: + btnText.X = Application.GetRealWidth(128); + btnText.Y = Application.GetRealHeight(780); + break; + case 1: + btnText.X = Application.GetRealWidth(439); + btnText.Y = Application.GetRealHeight(780); + break; + case 2: + btnText.X = Application.GetRealWidth(747); + btnText.Y = Application.GetRealHeight(780); + break; + case 3: + btnText.X = Application.GetRealWidth(94); + btnText.Y = Application.GetRealHeight(1022); + btnText.BackgroundColor = 0xff00ff; + break; + case 4: + btnText.X = Application.GetRealWidth(324); + btnText.Y = Application.GetRealHeight(1022); + btnText.BackgroundColor = 0xff00ff; + break; + case 5: + btnText.X = Application.GetRealWidth(552); + btnText.Y = Application.GetRealHeight(1022); + break; + case 6: + btnText.X = Application.GetRealWidth(782); + btnText.BackgroundColor = 0xff00ff; + btnText.Y = Application.GetRealHeight(1022); + break; + } + } + + //鍙崇澶� {鐑樺共銆侀骞插拰娑堟瘨鐨勮缃粯璁ゆ椂闂存殏鏃跺彇鍘绘帀锛屼笖鍊掕鏃朵篃鍘绘帀锛屽洜涓虹涓夋柟璁惧涓嶆敮鎸併�� + //TimeShow(frameWhiteBack); + + ClickEventHander(); + + } + + #endregion + + #region 鈻� 鏃堕棿鏄剧ず_______________________ + + /// <summary> + /// 鍙戦�佺獥甯樺懡浠� + /// </summary> + /// <param name="comand"></param> + private void TimeShow(FrameLayout frameWhiteBack) + { + //鐑樺共鏃堕棿 + btnDryTimeText = new Button() + { + Width = Application.GetRealWidth(109 + 10), + Height = Application.GetRealHeight(40), + X = Application.GetRealWidth(81), + Y = Application.GetRealHeight(1092), + TextColor = ZigbeeColor.Current.XMOrange, + TextSize = 10, + Text = GetTimeString(airer.DryRemainTime), + }; + frameWhiteBack.AddChidren(btnDryTimeText); + + //椋庡共鏃堕棿 + btnWindTimeText = new Button() + { + Width = Application.GetRealWidth(109 + 10), + Height = Application.GetRealHeight(40), + TextColor = ZigbeeColor.Current.XMOrange, + TextSize = 10, + X = Application.GetRealWidth(311), + Y = btnDryTimeText.Y, + Text = GetTimeString(airer.WindRemainTime), + }; + frameWhiteBack.AddChidren(btnWindTimeText); + + //娑堟瘨鏃堕棿 + btnDisinfectTimeText = new Button() + { + Width = Application.GetRealWidth(109 + 10), + Height = Application.GetRealHeight(40), + TextColor = ZigbeeColor.Current.XMOrange, + TextSize = 10, + Text = GetTimeString(airer.DisinfectRemainTime), + X = Application.GetRealWidth(539), + Y = btnDryTimeText.Y, + }; + frameWhiteBack.AddChidren(btnDisinfectTimeText); + + var rowAirer = new AiererTimeControl(0); + rowAirer.DetailCardActionTimeEvent += (timeCur, typeCur) => + { + switch (typeCur) + { + case 1: + btnDryTimeText.Text = GetTimeString(timeCur); + break; + case 2: + btnWindTimeText.Text = GetTimeString(timeCur); + break; + case 3: + btnDisinfectTimeText.Text = GetTimeString(timeCur); + break; + } + }; + actionDry = (textTime) => + { + btnDryTimeText.Text = textTime; + TimerHandler(airer); + }; + actionWind = (textTime) => + { + btnWindTimeText.Text = textTime; + TimerHandler(airer); + }; + actionDisinfect = (textTime) => + { + btnDisinfectTimeText.Text = textTime; + TimerHandler(airer); + }; + + TimerHandler(airer); + } + + #endregion + + #region 鈻� 鐐瑰嚮浜嬩欢澶勭悊_______________________ + /// <summary> + /// 鐐瑰嚮浜嬩欢澶勭悊 + /// </summary> + void ClickEventHander() + { + btnOpen.ButtonClickEvent += (sender, e) => + { + //鍙戦�佺獥甯樺懡浠� + this.SetCurtainCommand(0); + }; + btnStop.ButtonClickEvent += (sender, e) => + { + //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹�,鍒欐鍔熻兘鏃犳晥 + if (Common.Config.Instance.Home.IsVirtually == true) + { + return; + } + //鍙戦�佺獥甯樺懡浠� + this.SetCurtainCommand(2); + }; + btnClose.ButtonClickEvent += (sender, e) => + { + //鍙戦�佺獥甯樺懡浠� + this.SetCurtainCommand(1); + }; + + btnDry.ButtonClickEvent += (sender, e) => + { + //鍙戦�佸紑鍏冲懡浠� + this.SetSwitchCommand(!btnDry.IsSelected, 4); + }; + btnWind.ButtonClickEvent += (sender, e) => + { + //鍙戦�佸紑鍏冲懡浠� + this.SetSwitchCommand(!btnWind.IsSelected, 3); + }; + btnDisinfect.ButtonClickEvent += (sender, e) => + { + //鍙戦�佸紑鍏冲懡浠� + this.SetSwitchCommand(!btnDisinfect.IsSelected, 5); + }; + btnLight.ButtonClickEvent += (sender, e) => + { + //鍙戦�佸紑鍏冲懡浠� + this.SetSwitchCommand(!btnLight.IsSelected, 2); + }; + } + #endregion + + #region 鈻� 鍙戦�佸紑鍏冲懡浠______________________ + /// <summary> + /// 鍙戦�佸紑鍏冲懡浠� + ///娉ㄦ剰锛岃。鏋朵腑涓嶅悓绔偣浠h〃涓嶅悓鍔熻兘 + ///鍥炶矾1:绐楀笜鎺у埗 + ///鍥炶矾2:鐓ф槑鎺у埗 + ///鍥炶矾3:椋庡共鎺у埗 + ///鍥炶矾4:鐑樺共鎺у埗 + ///鍥炶矾5:娑堟瘨鎺у埗 + /// </summary> + /// <param name="isOpen">鍙戦�佺姸鎬�</param> + /// <param name="type">鍙戦�佺被鍨嬶細2:鐓ф槑锛�3:椋庡共锛�4:鐑樺共锛�5娑堟瘨</param> + private void SetSwitchCommand(bool isOpen, int type) + { + //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + switch (type) + { + case 2: + ((Airer)this.device).OnOffStatus = isOpen == true ? 1 : 0; + //鍙樻洿鍗$墖鐘舵�� + this.RefreshSwitchStatu(((Airer)this.device).OnOffStatus == 1, 2); + break; + case 3: + ((Airer)this.device).WindOnOffStatus = isOpen == true ? 1 : 0; + if (isOpen) + { + airer.WindRemainTime = airer.WindTime; + } + //鍙樻洿鍗$墖鐘舵�� + this.RefreshSwitchStatu(((Airer)this.device).WindOnOffStatus == 1, 3); + break; + case 4: + ((Airer)this.device).DryOnOffStatus = isOpen == true ? 1 : 0; + if (isOpen) + { + airer.DryRemainTime = airer.DryTime; + } + //鍙樻洿鍗$墖鐘舵�� + this.RefreshSwitchStatu(((Airer)this.device).DryOnOffStatus == 1, 4); + break; + case 5: + ((Airer)this.device).DisinfectOnOffStatus = isOpen == true ? 1 : 0; + if (isOpen) + { + airer.DisinfectRemainTime = airer.DisinfectTime; + } + //鍙樻洿鍗$墖鐘舵�� + this.RefreshSwitchStatu(((Airer)this.device).DisinfectOnOffStatus == 1, 5); + break; + } + return; + } + + //妫�娴嬫槸鍚﹁幏鍙栫綉鍏冲弽棣堢殑缁撴灉,濡傛灉缃戝叧娌℃湁鍥炲,鍒欎細寮瑰嚭娑堟伅 + var listControl = new List<ButtonBase>(); + listControl.Add(btnDry); + listControl.Add(btnWind); + listControl.Add(btnDisinfect); + listControl.Add(btnLight); + this.StartCheckResponeResult(listControl, (result) => + { + //鎺ユ敹鍒扮綉鍏冲洖澶� + if (result == true) + { + HdlThreadLogic.Current.RunMain(() => + { + //鍙樻洿鍗$墖鐘舵�� + switch (type) + { + case 2: + bool statu = ((Airer)this.device).OnOffStatus == 1; + this.RefreshSwitchStatu(statu, type); + break; + case 3: + bool statu5 = ((Airer)this.device).WindOnOffStatus == 1; + this.RefreshSwitchStatu(statu5, type); + break; + case 4: + bool statu4 = ((Airer)this.device).DryOnOffStatus == 1; + this.RefreshSwitchStatu(statu4, type); + break; + case 5: + bool statu3 = ((Airer)this.device).DisinfectOnOffStatus == 1; + this.RefreshSwitchStatu(statu3, type); + break; + } + + }); + } + }); + + //鎵撳紑 + //switch (type) + //{ + // case 3: + //鍙戦�侀粯璁ゆ椂闂� + //if (airer.WindTime == 0) + //{ + // airer.WindTime = 180; + //} + //airer.SetAirerFunTimeDevice(airer.WindTime, 3); + // break; + //case 4: + //鍙戦�侀粯璁ゆ椂闂� + //if (airer.DryTime == 0) + //{ + // airer.DryTime = 180; + //} + //airer.SetAirerFunTimeDevice(airer.DryTime, 4); + // break; + //case 5: + //鍙戦�侀粯璁ゆ椂闂� + //if (airer.DisinfectTime == 0) + //{ + // airer.DisinfectTime = 30; + //} + //airer.SetAirerFunTimeDevice(airer.DisinfectTime, 5); + // break; + //} + if (isOpen == true) + { + airer.SwitchControl(1, type); + } + else + { + airer.SwitchControl(0, type); + } + } + + #endregion + + #region 鈻� 鍙戦�佺獥甯樺懡浠______________________ + + /// <summary> + /// 鍙戦�佺獥甯樺懡浠� + ///娉ㄦ剰锛岃。鏋朵腑涓嶅悓绔偣浠h〃涓嶅悓鍔熻兘 + ///鍥炶矾1:绐楀笜鎺у埗 + ///鍥炶矾2:鐓ф槑鎺у埗 + ///鍥炶矾3:椋庡共鎺у埗 + ///鍥炶矾4:鐑樺共鎺у埗 + ///鍥炶矾5:娑堟瘨鎺у埗 + /// </summary> + /// <param name="comand"></param> + private void SetCurtainCommand(int comand) + { + // + this.device.DeviceEpoint = 1; + //鍙戦�佸懡浠� + ((Airer)device).AirerUpDownStopControl(comand); + } + + #endregion + + #region 鈻� 鍒锋柊寮�鍏崇姸鎬乢______________________ + + /// <summary> + /// 鍒锋柊寮�鍏崇姸鎬� + /// </summary> + /// <param name="isOpen">鎵撳紑鐘舵��</param> + /// <param name="type">鍙戦�佺被鍨嬶細2:鐓ф槑锛�3:椋庡共锛�4:鐑樺共锛�5娑堟瘨</param> + private void RefreshSwitchStatu(bool isOpen, int type) + { + switch (type) + { + case 2: + btnLight.IsSelected = isOpen; + break; + case 3: + btnWind.IsSelected = isOpen; + //btnWindTimeText.Text = GetTimeString(airer.WindRemainTime); + //if (!isOpen) + //{ + // airer.WindRemainTime = 0; + //} + break; + case 4: + btnDry.IsSelected = isOpen; + //btnDryTimeText.Text = GetTimeString(airer.DryRemainTime); + //if (!isOpen) + //{ + // airer.DryRemainTime = 0; + //} + break; + case 5: + btnDisinfect.IsSelected = isOpen; + //btnDisinfectTimeText.Text = GetTimeString(airer.DisinfectRemainTime); + //if (!isOpen) + //{ + // airer.DisinfectRemainTime = 0; + //} + break; + } + //璁剧疆鐘舵�佹枃瀛� + this.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device)); + } + + #endregion + + #region 鈻� 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋淿____________ + + /// <summary> + /// 妫�娴嬬綉鍏崇殑鍙嶉缁撴灉(灞炴�т笂鎶ョ殑瀵硅薄锛歞evice.DeviceStatusReport) + /// </summary> + /// <param name="comandDiv">鍛戒护鍖哄垎</param> + /// <param name="report">涓婃姤鏁版嵁</param> + /// <returns></returns> + public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report) + { + if (comandDiv == ReceiveComandDiv.A璁惧灞炴�т笂鎶�) + { + HdlThreadLogic.Current.RunMain(() => + { + //鍙樻洿鍗$墖鐘舵�� + switch (report.DeviceEpoint) + { + case 2: + this.RefreshSwitchStatu(((Airer)this.device).OnOffStatus == 1, 2); + break; + case 3: + this.RefreshSwitchStatu(((Airer)this.device).WindOnOffStatus == 1, 3); + break; + case 4: + this.RefreshSwitchStatu(((Airer)this.device).DryOnOffStatus == 1, 4); + break; + case 5: + this.RefreshSwitchStatu(((Airer)this.device).DisinfectOnOffStatus == 1, 5); + break; + } + }); + return true; + } + return false; + } + + #endregion + + /// <summary> + /// 鏃堕棿鍊掕鏃惰缃� + /// <param name="type">鏅捐。鏋舵椂闂� 锛�1鐑樺共锛�2:椋庡共锛�3娑堟瘨</param> + /// </summary> + /// <param name="sceneContr"></param> + public async void TimerHandler(Airer airer) + { + if (airer.DryOnOffStatus == 1 && airer.DryRemainTime != 0) + { + new System.Threading.Thread(async () => + { + while (airer.DryRemainTime > 0 && this.Parent != null) + { + System.Threading.Thread.Sleep(1000); + HdlThreadLogic.Current.RunMain(() => + { + actionDry?.Invoke(GetTimeString(airer.DryRemainTime)); + }, ShowErrorMode.NO); + airer.DryRemainTime--; + } + HdlThreadLogic.Current.RunMain(() => + { + if (this.Parent != null) + { + //鐩存帴寮�鍚疞oading鐗规晥 + actionDry?.Invoke(""); + } + }, ShowErrorMode.NO); + }) + { IsBackground = true }.Start(); + } + if (airer.WindOnOffStatus == 1 && airer.WindRemainTime != 0) + { + //寮�鍚骞叉椂闂� + new System.Threading.Thread(async () => + { + while (airer.WindRemainTime > 0 && this.Parent != null) + { + System.Threading.Thread.Sleep(1000); + HdlThreadLogic.Current.RunMain(() => + { + actionWind?.Invoke(GetTimeString(airer.WindRemainTime)); + }, ShowErrorMode.NO); + airer.WindRemainTime--; + } + HdlThreadLogic.Current.RunMain(() => + { + if (this.Parent != null) + { + //鐩存帴寮�鍚疞oading鐗规晥 + actionWind?.Invoke(""); + } + }, ShowErrorMode.NO); + }) + { IsBackground = true }.Start(); + } + if (airer.DisinfectOnOffStatus == 1 && airer.DisinfectRemainTime != 0) + { + //寮�鍚秷姣掓椂闂� + new System.Threading.Thread(async () => + { + while (airer.DisinfectRemainTime > 0 && this.Parent != null) + { + System.Threading.Thread.Sleep(1000); + HdlThreadLogic.Current.RunMain(() => + { + actionDisinfect?.Invoke(GetTimeString(airer.DisinfectRemainTime)); + }, ShowErrorMode.NO); + airer.DisinfectRemainTime--; + } + + HdlThreadLogic.Current.RunMain(() => + { + if (this.Parent != null) + { + //鐩存帴寮�鍚疞oading鐗规晥 + actionDisinfect?.Invoke(""); + } + }, ShowErrorMode.NO); + }) + { IsBackground = true }.Start(); + } + } + + /// <summary> + /// 鑾峰彇鍦烘櫙寤舵椂瀛楃涓� + /// </summary> + /// <param name="second"></param> + /// <returns></returns> + public static string GetTimeString(int second) + { + if (second == 0) + { + return null; + } + string timeStr = string.Empty; + int hour = second / 3600; + int minu = second % 3600 / 60; + int sec = second % 60; + string h = string.Empty; + string m = string.Empty; + string s = string.Empty; + + if (hour > 0) + { + if (hour < 10) + { + h = "0" + hour; + } + else + { + h = hour.ToString(); + } + timeStr += $"{h}:"; + + if (minu >= 0) + { + if (minu < 10) + { + m = "0" + minu; + } + else + { + m = minu.ToString(); + } + timeStr += $"{m}:"; + } + + if (sec >= 0) + { + if (sec < 10) + { + s = "0" + sec; + } + else + { + s = minu.ToString(); + } + timeStr += $"{s}"; + } + + return timeStr; + } + else + { + if (minu > 0) + { + timeStr = "00:"; + if (minu < 10) + { + m = "0" + minu; + } + else + { + m = minu.ToString(); + } + timeStr += $"{m}:"; + + if (sec >= 0) + { + if (sec < 10) + { + s = "0" + sec; + } + else + { + s = sec.ToString(); + } + timeStr += $"{s}"; + } + + return timeStr; + } + else + { + if (sec > 0) + { + timeStr = "00:00:"; + if (sec < 10) + { + s = "0" + sec; + } + else + { + s = sec.ToString(); + } + timeStr += $"{s}"; + return timeStr; + } + else + { + return ""; + } + } + } + } + } +} -- Gitblit v1.8.0