using 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
{
///
/// 晾衣架界面
///
public class ClothesHangerPage : DeviceFunctionCardCommonForm
{
#region ■ 变量声明___________________________
///
/// 图标
///
private Button btnIcon = null;
///
/// 上升
///
Button btnUp;
///
/// 停止
///
Button btnStop;
///
/// 下降
///
Button btnDown;
///
/// 烘干控件
///
ClothesHangerControl hotDryView;
///
/// 风干控件
///
ClothesHangerControl windDryView;
///
/// 消毒控件
///
ClothesHangerControl disinfectView;
///
/// 照明控件
///
ClothesHangerControl lightingView;
#endregion
#region ■ 初始化_____________________________
///
/// 初始化白色区域的内容
///
public override void InitFrameWhiteContent()
{
base.ShowColltionButton = false;
base.SetTitleText(Language.StringByID(StringId.Electric));
//初始化第一个索引页的内容
this.InitFrameWhiteContent1();
//刷新界面状态
this.RefreshFormStatu();
//读取状态
new System.Threading.Thread(() =>
{
Control.Ins.SendReadCommand(device);
})
{ IsBackground = true }.Start();
}
///
/// 初始化第一个索引页的内容
///
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);
#region 控制
btnUp.MouseDownEventHandler = (sender, e) => {
btnUp.IsSelected = true;
};
btnUp.MouseUpEventHandler = (sender, e) => {
new System.Threading.Thread(() =>
{
System.Threading.Thread.Sleep(2000);
Application.RunOnMainThread(() =>
{
btnUp.IsSelected = false;
});
})
{ IsBackground = true }.Start();
Dictionary d = new Dictionary();
d.Add(FunctionAttributeKey.Position, "up");
Control.Ins.SendWriteCommand(device, d);
};
//----
btnStop.MouseDownEventHandler = (sender, e) => {
btnStop.IsSelected = true;
};
btnStop.MouseUpEventHandler = (sender, e) => {
new System.Threading.Thread(() =>
{
System.Threading.Thread.Sleep(2000);
Application.RunOnMainThread(() =>
{
btnStop.IsSelected = false;
});
})
{ IsBackground = true }.Start();
Dictionary d = new Dictionary();
d.Add(FunctionAttributeKey.Position, "stop");
Control.Ins.SendWriteCommand(device, d);
};
//-----
btnDown.MouseDownEventHandler = (sender, e) => {
btnDown.IsSelected = true;
};
btnDown.MouseUpEventHandler = (sender, e) => {
new System.Threading.Thread(() =>
{
System.Threading.Thread.Sleep(2000);
Application.RunOnMainThread(() =>
{
btnDown.IsSelected = false;
});
})
{ IsBackground = true }.Start();
Dictionary d = new Dictionary();
d.Add(FunctionAttributeKey.Position, "down");
Control.Ins.SendWriteCommand(device, d);
};
#endregion
#endregion
#region 菜单
var menu = new List() {
FunctionAttributeKey.HotDry,
FunctionAttributeKey.WindDry,
FunctionAttributeKey.Disinfect,
FunctionAttributeKey.OnOff
};
int index = 0;
List 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 eventHandler = (sender, e) =>
{
string onoff = hotDryView.Lighting ? "false" : "true";
device.SetAttrState(FunctionAttributeKey.HotDry, onoff);
Dictionary d = new Dictionary();
d.Add(FunctionAttributeKey.HotDry, onoff);
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 eventHandler = (sender, e) =>
{
string onoff = windDryView.Lighting ? "false" : "true";
device.SetAttrState(FunctionAttributeKey.WindDry, onoff);
Dictionary d = new Dictionary();
d.Add(FunctionAttributeKey.WindDry, onoff);
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 eventHandler = (sender, e) =>
{
string onoff = disinfectView.Lighting ? "false" : "true";
device.SetAttrState(FunctionAttributeKey.Disinfect, onoff);
Dictionary d = new Dictionary();
d.Add(FunctionAttributeKey.Disinfect, onoff);
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 eventHandler = (sender, e) =>
{
string onoff = lightingView.Lighting ? "off" : "on";
device.SetAttrState(FunctionAttributeKey.OnOff, onoff);
Dictionary d = new Dictionary();
d.Add(FunctionAttributeKey.OnOff, onoff);
Control.Ins.SendWriteCommand(device, d);
};
lightingView.SetThouchEvent(eventHandler);
index++;
}
#endregion
#region 时间设置
var timeSetView = new ClothesHangerControl(
"FunctionIcon/Electrical/ClothesHanger/ClothesHangerTimeIcon.png",
"FunctionIcon/Electrical/ClothesHanger/ClothesHangerTimeIconOn.png",
Language.StringByID(StringId.Time),
"");
timeSetView.Width = Application.GetRealWidth(96);
timeSetView.Height = Application.GetRealHeight(74);
timeSetView.Y = Application.GetRealHeight(409);
timeSetView.X = Application.GetRealWidth(266 - 33);
EventHandler eventHandler_timeSetView = (sender, e) =>
{
var setTimePage = new ClothesHangerSetTimePage(device);
MainPage.BasePageView.AddChidren(setTimePage);
setTimePage.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
timeSetView.SetThouchEvent(eventHandler_timeSetView);
FrameWhiteCentet1.AddChidren(timeSetView);
#endregion
}
#endregion
#region ■ 设备状态反馈_______________________
///
/// 设备状态反馈
///
///
public override void DeviceStatuPush(Function i_LocalDevice)
{
//不是同一个东西
if (this.device.sid != i_LocalDevice.sid) { return; }
//刷新界面状态
this.RefreshFormStatu();
}
#endregion
#region ■ 发送各种命令_______________________
#endregion
#region ■ 刷新界面状态_______________________
///
/// 刷新界面状态
///
private void RefreshFormStatu()
{
Application.RunOnMainThread(() =>
{
btnIcon.IsSelected = true;
#region 点亮文本
var hotDryTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.HotDry);
if (hotDryTemp != null)
{
hotDryView.SetViewStatus(hotDryTemp.state == "true");
}
var windDryTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.WindDry);
if (windDryTemp != null)
{
windDryView.SetViewStatus(windDryTemp.state == "true");
}
var disinfectTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.Disinfect);
if (disinfectTemp != null)
{
disinfectView.SetViewStatus(disinfectTemp.state == "true");
}
var lightTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.OnOff);
if (lightTemp != null)
{
lightingView.SetViewStatus(lightTemp.state == "on");
}
//MainPage.Log($"时间戳:{device.time_stamp} 时间:{device.GeteTime()} 烘干:{hotDryTemp.state} 风干:{windDryTemp.state} 消毒:{disinfectTemp.state} 灯光状态:{lightTemp.state}");
#endregion
#region 修改时间
var hotDryTimeLeftTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.HotDryTimeLeft);
if (hotDryTimeLeftTemp != null)
{
hotDryView.ChangeTime(hotDryTimeLeftTemp.state);
}
var windDryTimeLeftTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.WindDryTimeLeft);
if (windDryTimeLeftTemp != null)
{
windDryView.ChangeTime(windDryTimeLeftTemp.state);
}
var disinfectTimeLeftTemp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.DisinfectTimeLeft);
if (disinfectTimeLeftTemp != null)
{
disinfectView.ChangeTime(disinfectTimeLeftTemp.state);
}
#endregion
});
}
#endregion
#region ■ 一般方法___________________________
#endregion
}
public class ClothesHangerControl : FrameLayout
{
private Button btnIcon;
private Button btnTitle;
private Button btnTime;
///
/// 倒计时时间
///
private int leftTime = 0;
///
/// 控件是否点亮
///
public bool Lighting = false;
public ClothesHangerControl(string unSelectedIconPath, string selectedIconPath, string title, string time)
{
btnIcon = new Button()
{
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(28),
Height = Application.GetRealWidth(28),
UnSelectedImagePath = unSelectedIconPath,
SelectedImagePath = selectedIconPath,
};
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 = Application.GetRealHeight(74-32),
Height = Application.GetRealHeight(32),
Text = time,
TextColor = 0x00000000,
SelectedTextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
};
this.AddChidren(btnTime);
}
///
/// 修改显示时间
///
///
public void ChangeTime(string newTime)
{
int.TryParse(newTime, out leftTime);
if (leftTime > 0)
{
Application.RunOnMainThread(() =>
{
btnTime.Text = new TimeSpan(0, leftTime, 0).ToString().Remove(5, 3);
});
leftTime--;
}
else if (leftTime == 0)
{
Application.RunOnMainThread(() =>
{
btnTime.Text = "";
});
}
if (countdownThread == null)
{
countdownThread = new System.Threading.Thread(() =>
{
while (true)
{
if (leftTime > 0)
{
Application.RunOnMainThread(() =>
{
btnTime.Text = new TimeSpan(0, leftTime, 0).ToString().Remove(5,3) ;
});
leftTime--;
}
else if(leftTime == 0)
{
Application.RunOnMainThread(() =>
{
btnTime.Text = "";
});
}
System.Threading.Thread.Sleep(60000);
}
})
{ IsBackground = true };
countdownThread.Start();
}
}
public void SetViewStatus(bool state)
{
btnIcon.IsSelected = btnTitle.IsSelected = btnTime.IsSelected = Lighting = state;
}
///
/// 设置点击事件
///
public void SetThouchEvent(EventHandler eventHandler)
{
btnIcon.MouseUpEventHandler = eventHandler;
btnTime.MouseUpEventHandler = eventHandler;
btnTitle.MouseUpEventHandler = eventHandler;
}
///
/// 倒计时线程
///
System.Threading.Thread countdownThread;
}
}