From 25ce81434a6ce69cf10f12d4f5a25ab80a339ba7 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期三, 03 三月 2021 17:50:53 +0800
Subject: [PATCH] 2021-3-3-3
---
HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs | 464 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 459 insertions(+), 5 deletions(-)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
index 96b2b0f..3e848e6 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
@@ -1,21 +1,475 @@
-锘縰sing System;
-using Shared;
+锘縰sing Shared;
+using HDL_ON.Stan;
using HDL_ON.UI.CSS;
+using HDL_ON.Entity;
+using System.Collections.Generic;
+using System;
+using HDL_ON.DriverLayer;
namespace HDL_ON.UI
{
/// <summary>
/// 鏅捐。鏋剁晫闈�
/// </summary>
- public class ClothesHangerPage : FrameLayout
+ public class ClothesHangerPage : DeviceFunctionCardCommonForm
{
- public ClothesHangerPage()
+ #region 鈻� 鍙橀噺澹版槑___________________________
+
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ private Button btnIcon = null;
+ /// <summary>
+ /// 涓婂崌
+ /// </summary>
+ Button btnUp;
+ /// <summary>
+ /// 鍋滄
+ /// </summary>
+ Button btnStop;
+ /// <summary>
+ /// 涓嬮檷
+ /// </summary>
+ Button btnDown;
+ /// <summary>
+ /// 鐑樺共鎺т欢
+ /// </summary>
+ ClothesHangerControl hotDryView;
+ /// <summary>
+ /// 椋庡共鎺т欢
+ /// </summary>
+ ClothesHangerControl windDryView;
+ /// <summary>
+ /// 娑堟瘨鎺т欢
+ /// </summary>
+ ClothesHangerControl disinfectView;
+ /// <summary>
+ /// 鐓ф槑鎺т欢
+ /// </summary>
+ ClothesHangerControl lightingView;
+
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖朹____________________________
+
+ /// <summary>
+ /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
+ /// </summary>
+ public override void InitFrameWhiteContent()
{
+ base.ShowColltionButton = false;
+ base.SetTitleText(Language.StringByID(StringId.Electric));
+
+ //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+ this.InitFrameWhiteContent1();
+
+ //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+ this.RefreshNowDeviceStatuMemory(this.device);
+ //鍒锋柊鐣岄潰鐘舵��
+ this.RefreshFormStatu();
+ //璇诲彇鐘舵��
+ new System.Threading.Thread(() =>
+ {
+ Control.Ins.SendReadCommand(device);
+ })
+ { IsBackground = true }.Start();
}
- public void LoadPage()
+ /// <summary>
+ /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+ /// </summary>
+ private void InitFrameWhiteContent1()
{
+ btnIcon = new Button()
+ {
+ Gravity = Gravity.CenterHorizontal,
+ Y = Application.GetRealHeight(85),
+ Width = Application.GetRealWidth(195),
+ Height = Application.GetRealHeight(121),
+ UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerBgIcon.png",
+ SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerBgIconOn.png",
+ };
+ FrameWhiteCentet1.AddChidren(btnIcon);
+ #region 涓婂崌 鍋滄 涓嬮檷
+ btnUp = new Button()
+ {
+ X = Application.GetRealWidth(42),
+ Y = Application.GetRealHeight(236),
+ Width = Application.GetRealWidth(28),
+ Height = Application.GetRealWidth(28),
+ UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIcon.png",
+ SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIconOn.png",
+ };
+ FrameWhiteCentet1.AddChidren(btnUp);
+
+ btnStop = new Button()
+ {
+ Gravity = Gravity.CenterHorizontal,
+ Y = Application.GetRealHeight(236),
+ Width = Application.GetRealWidth(28),
+ Height = Application.GetRealWidth(28),
+ UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerStopIcon.png",
+ SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerStopIconOn.png",
+ };
+ FrameWhiteCentet1.AddChidren(btnStop);
+
+ btnDown = new Button()
+ {
+ X = Application.GetRealWidth(257),
+ Y = Application.GetRealHeight(236),
+ Width = Application.GetRealWidth(28),
+ Height = Application.GetRealWidth(28),
+ UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIcon.png",
+ SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIconOn.png",
+ };
+ FrameWhiteCentet1.AddChidren(btnDown);
+
+ #endregion
+
+ #region 鑿滃崟
+ var menu = new List<string>() {
+ FunctionAttributeKey.HotDry,
+ FunctionAttributeKey.WindDry,
+ FunctionAttributeKey.Disinfect,
+ FunctionAttributeKey.OnOff
+ };
+
+ int index = 0;
+ List<string> attrs = device.GetAttributes();
+
+ hotDryView = new ClothesHangerControl(
+ "FunctionIcon/Electrical/ClothesHanger/ClothesHangerHotDryIcon.png",
+ "FunctionIcon/Electrical/ClothesHanger/ClothesHangerHotDryIconOn.png",
+ Language.StringByID(StringId.HotDry),
+ device.GetAttrState(FunctionAttributeKey.HotDryTimeLeft));
+ hotDryView.X = 0;
+ hotDryView.Y = Application.GetRealHeight(304);
+ hotDryView.Width = Application.GetRealWidth(96);
+ hotDryView.Height = Application.GetRealHeight(74);//28 29 14 3
+ if (attrs.Contains(menu[0]))
+ {
+ FrameWhiteCentet1.AddChidren(hotDryView);
+
+ EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+ device.SetAttrState(FunctionAttributeKey.HotDry, "true");
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add(FunctionAttributeKey.HotDry, "true");
+ Control.Ins.SendWriteCommand(device, d);
+ };
+ hotDryView.SetThouchEvent(eventHandler);
+
+ index++;
+ }
+
+ windDryView = new ClothesHangerControl(
+ "FunctionIcon/Electrical/ClothesHanger/ClothesHangerWindDryIcon.png",
+ "FunctionIcon/Electrical/ClothesHanger/ClothesHangerWindDryIconOn.png",
+ Language.StringByID(StringId.WindDry),
+ device.GetAttrState(FunctionAttributeKey.WindDryTimeLeft));
+ windDryView.Y = Application.GetRealHeight(304);
+ windDryView.Width = Application.GetRealWidth(96);
+ windDryView.Height = Application.GetRealHeight(74);
+ if (attrs.Contains(menu[1]))
+ {
+ if(index == 1)
+ {
+ windDryView.Gravity = Gravity.CenterHorizontal;
+ }
+ FrameWhiteCentet1.AddChidren(windDryView);
+
+ EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+ device.SetAttrState(FunctionAttributeKey.WindDry, "true");
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add(FunctionAttributeKey.WindDry, "true");
+ Control.Ins.SendWriteCommand(device, d);
+ };
+ windDryView.SetThouchEvent(eventHandler);
+
+ index++;
+ }
+
+
+
+ disinfectView = new ClothesHangerControl(
+ "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDisinfectIcon.png",
+ "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDisinfectIconOn.png",
+ Language.StringByID(StringId.Disinfect),
+ device.GetAttrState(FunctionAttributeKey.DisinfectTimeLeft));
+ disinfectView.Y = Application.GetRealHeight(304);
+ disinfectView.Width = Application.GetRealWidth(96);
+ disinfectView.Height = Application.GetRealHeight(74);
+ if (attrs.Contains(menu[2]))
+ {
+ if(index == 1)
+ {
+ disinfectView.Gravity = Gravity.CenterHorizontal;
+ }
+ else if (index == 2)
+ {
+ disinfectView.X = Application.GetRealWidth(266 - 33);
+ }
+ FrameWhiteCentet1.AddChidren(disinfectView);
+
+ EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+ device.SetAttrState(FunctionAttributeKey.Disinfect, "true");
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add(FunctionAttributeKey.Disinfect, "true");
+ Control.Ins.SendWriteCommand(device, d);
+ };
+ disinfectView.SetThouchEvent(eventHandler);
+
+ index++;
+ }
+
+ lightingView = new ClothesHangerControl(
+ "FunctionIcon/Electrical/ClothesHanger/ClothesHangerLightIcon.png",
+ "FunctionIcon/Electrical/ClothesHanger/ClothesHangerLightIconOn.png",
+ Language.StringByID(StringId.Lighting),
+ "");
+ lightingView.Width = Application.GetRealWidth(96);
+ lightingView.Height = Application.GetRealHeight(74);
+ if (attrs.Contains(menu[3]))
+ {
+ if(index >2)
+ {
+ lightingView.Y = Application.GetRealHeight(409);
+ }else
+ {
+ lightingView.Y = Application.GetRealHeight(304);
+ if (index == 1)
+ {
+ lightingView.Gravity = Gravity.CenterHorizontal;
+ }
+ else if (index == 2)
+ {
+ lightingView.X = Application.GetRealWidth(266 - 33);
+ }
+ }
+ FrameWhiteCentet1.AddChidren(lightingView);
+
+ EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
+ string onoff = lightingView.Lighting ? "off" : "on";
+ device.SetAttrState(FunctionAttributeKey.OnOff, onoff);
+ Dictionary<string, string> d = new Dictionary<string, string>();
+ d.Add(FunctionAttributeKey.OnOff, onoff);
+ Control.Ins.SendWriteCommand(device, d);
+ };
+ lightingView.SetThouchEvent(eventHandler);
+
+ index++;
+ }
+
+ #endregion
}
+ #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 鈻� 鍙戦�佸悇绉嶅懡浠______________________
+
+ #endregion
+
+ #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
+
+ /// <summary>
+ /// 鍒锋柊鐣岄潰鐘舵��
+ /// </summary>
+ private void RefreshFormStatu()
+ {
+ Application.RunOnMainThread(() => {
+ btnIcon.IsSelected = true;
+ #region 鐐逛寒鏂囨湰
+ var hotDryTemp = device.status.Find((sta) => sta.key == FunctionAttributeKey.HotDry);
+ if (hotDryTemp != null)
+ {
+ hotDryView.SetViewStatus(hotDryTemp.value == "true");
+ }
+ var windDryTemp = device.status.Find((sta) => sta.key == FunctionAttributeKey.WindDry);
+ if (windDryTemp != null)
+ {
+ windDryView.SetViewStatus(windDryTemp.value == "true");
+ }
+ var disinfectTemp = device.status.Find((sta) => sta.key == FunctionAttributeKey.Disinfect);
+ if (disinfectTemp != null)
+ {
+ disinfectView.SetViewStatus(disinfectTemp.value == "true");
+ }
+ var lightTemp = device.status.Find((sta) => sta.key == FunctionAttributeKey.OnOff);
+ if (lightTemp != null)
+ {
+ lightingView.SetViewStatus(lightTemp.value == "on");
+ }
+ #endregion
+
+ #region 淇敼鏃堕棿
+ var hotDryTimeLeftTemp = device.status.Find((sta) => sta.key == FunctionAttributeKey.HotDryTimeLeft);
+ if (hotDryTimeLeftTemp != null)
+ {
+ hotDryView.ChangeTime(hotDryTimeLeftTemp.value);
+ }
+ var windDryTimeLeftTemp = device.status.Find((sta) => sta.key == FunctionAttributeKey.WindDryTimeLeft);
+ if (windDryTimeLeftTemp != null)
+ {
+ windDryView.ChangeTime(windDryTimeLeftTemp.value);
+ }
+ var disinfectTimeLeftTemp = device.status.Find((sta) => sta.key == FunctionAttributeKey.DisinfectTimeLeft);
+ if (disinfectTimeLeftTemp != null)
+ {
+ disinfectView.ChangeTime(disinfectTimeLeftTemp.value);
+ }
+ #endregion
+
+
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 涓�鑸柟娉昣__________________________
+
+ /// <summary>
+ /// 鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+ /// </summary>
+ private void RefreshNowDeviceStatuMemory(Function i_LocalDevice)
+ {
+ foreach (var data in i_LocalDevice.status)
+ {
+ //寮�鍏�
+ //if (data.key == "on_off") { this.weepRobotData.Cleaning = data.value.ToLower() == "on"; }
+ }
+ }
+
+ #endregion
+ }
+
+ public class ClothesHangerControl : FrameLayout
+ {
+ private Button btnIcon;
+ private Button btnTitle;
+ private Button btnTime;
+ /// <summary>
+ /// 鎺т欢鏄惁鐐逛寒
+ /// </summary>
+ public bool Lighting = false;
+
+ public ClothesHangerControl(string iconPath1, string iconPath2,string title,string time)
+ {
+ btnIcon = new Button()
+ {
+ Gravity = Gravity.CenterHorizontal,
+ Width = Application.GetRealWidth(28),
+ Height = Application.GetRealWidth(28),
+ UnSelectedImagePath = iconPath1,
+ SelectedImagePath = iconPath2,
+ };
+ this.AddChidren(btnIcon);
+
+ btnTitle = new Button()
+ {
+ Gravity = Gravity.Center,
+ Text = title,
+ Height = Application.GetRealHeight(42),
+ TextColor = CSS_Color.TextualColor,
+ SelectedTextColor = CSS_Color.MainColor,
+ TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+ };
+ this.AddChidren(btnTitle);
+
+ btnTime = new Button()
+ {
+ Gravity = Gravity.CenterHorizontal,
+ Y = btnTitle.Bottom,
+ Height = Application.GetRealHeight(32),
+ Text = time,
+ TextColor = 0x00000000,
+ SelectedTextColor = CSS_Color.MainColor,
+ TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+ };
+ this.AddChidren(btnTime);
+ }
+ /// <summary>
+ /// 淇敼鏄剧ず鏃堕棿
+ /// </summary>
+ /// <param name="newTime"></param>
+ public void ChangeTime (string newTime)
+ {
+ if(newTime == "0")
+ {
+ newTime = "";
+ }
+
+ int time = 0;
+ int.TryParse(newTime, out time);
+ time = time * 60;
+
+ if (countdownThread == null)
+ {
+ countdownThread = new System.Threading.Thread(() => {
+ while(true)
+ {
+ if(time>1)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ btnTime.Text = new TimeSpan(0, 0, time).ToString();
+ });
+ System.Threading.Thread.Sleep(1000);
+ time--;
+ }else
+ {
+ Application.RunOnMainThread(() =>
+ {
+ btnTime.Text = "";
+ });
+ }
+ }
+ }) { IsBackground = true };
+ countdownThread.Start();
+ }
+ }
+
+ public void SetViewStatus(bool state)
+ {
+ btnIcon.IsSelected = btnTitle.IsSelected = btnTime.IsSelected = Lighting = state;
+ }
+
+ public bool GetViewState()
+ {
+ return Lighting;
+ }
+
+ /// <summary>
+ /// 璁剧疆鐐瑰嚮浜嬩欢
+ /// </summary>
+ public void SetThouchEvent(EventHandler<MouseEventArgs> eventHandler)
+ {
+ btnIcon.MouseUpEventHandler = eventHandler;
+ btnTime.MouseUpEventHandler = eventHandler;
+ btnTitle.MouseUpEventHandler = eventHandler;
+ }
+
+ /// <summary>
+ /// 鍊掕鏃剁嚎绋�
+ /// </summary>
+ System.Threading.Thread countdownThread;
}
}
--
Gitblit v1.8.0