using Shared;
using HDL_ON.Stan;
using System;
using System.Collections.Generic;
using System.Text;
using HDL_ON.UI.CSS;
using HDL_ON.Entity;
using HDL_ON.DriverLayer;
namespace HDL_ON.UI
{
///
/// 涂鸦扫地机器人的控制界面
///
public class TuyaWeepRobotPage : DeviceFunctionCardCommonForm
{
#region ■ 变量声明___________________________
///
/// 电池图标
///
private IconViewControl btnBatteryIcon = null;
///
/// 电池百分比控件
///
private NormalViewControl btnBatteryView = null;
///
/// 吸力调节图标
///
private IconViewControl btnSuctionIcon = null;
///
/// 吸力调节文本控件
///
private NormalViewControl btnSuctionView = null;
///
/// 充电图标
///
private IconViewControl btnChargeIcon = null;
///
/// 声音图标
///
private IconViewControl btnVoiceIcon = null;
///
/// 声音文本控件
///
private NormalViewControl btnVoiceView = null;
///
/// 清扫模式图标
///
private IconViewControl btnModeIcon = null;
///
/// 清扫模式文本控件
///
private NormalViewControl btnModeView = null;
///
/// 图像控制控件
///
private DirectionImageControl ImageControl = null;
///
/// 扫地机器人数据
///
private WeepRobotData weepRobotData = new WeepRobotData();
#endregion
#region ■ 初始化_____________________________
///
/// 初始化白色区域的内容
///
public override void InitFrameWhiteContent()
{
base.SetTitleText(Language.StringByID(StringId.WeepRobot));
//添加第二索引页
this.AddSecondPage();
//初始化第一个索引页的内容
this.InitFrameWhiteContent1();
//初始化第二个索引页的内容
this.InitFrameWhiteContent2();
//刷新当前设备的状态缓存
this.RefreshNowDeviceStatuMemory(this.device);
//刷新界面状态
this.RefreshFormStatu();
}
///
/// 初始化第一个索引页的内容
///
private void InitFrameWhiteContent1()
{
//电池图标
this.btnBatteryIcon = new IconViewControl(24);
btnBatteryIcon.X = base.btnRoomName.Right + Application.GetRealWidth(24);
btnBatteryIcon.Y = base.btnRoomName.Y - (btnBatteryIcon.IconSize - base.btnRoomName.Height) / 2;
btnBatteryIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Battery.png";
FrameWhiteCentet1.AddChidren(btnBatteryIcon);
//电池百分比
this.btnBatteryView = new NormalViewControl(30, 16, true);
btnBatteryView.X = btnBatteryIcon.Right + Application.GetRealWidth(4);
btnBatteryView.Y = btnBatteryIcon.Y + (btnBatteryIcon.Height - Application.GetRealHeight(16)) / 2;
btnBatteryView.Text = this.weepRobotData.ElectricityLeft + "%";
btnBatteryView.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
btnBatteryView.TextColor = CSS_Color.PromptingColor1;
FrameWhiteCentet1.AddChidren(btnBatteryView);
//配置变更事件
base.SettionFinishEvent += () =>
{
btnBatteryIcon.X = base.btnRoomName.Right + Application.GetRealWidth(24);
btnBatteryView.X = btnBatteryIcon.Right + Application.GetRealWidth(4);
};
//初始化中间的那个图像控制控件
this.ImageControl = new DirectionImageControl();
ImageControl.Y = Application.GetRealHeight(108);
ImageControl.Width = Application.GetRealWidth(198);
ImageControl.Height = Application.GetRealWidth(198);
ImageControl.Gravity = Gravity.CenterHorizontal;
FrameWhiteCentet1.AddChidren(ImageControl);
//初始化控件
ImageControl.InitControl("FunctionIcon/Electrical/WeepRobot/ControlEnable.png", "FunctionIcon/Electrical/WeepRobot/ControlDisable.png",
"FunctionIcon/Electrical/WeepRobot/ControlUp.png", "FunctionIcon/Electrical/WeepRobot/ControlDown.png",
"FunctionIcon/Electrical/WeepRobot/ControlLeft.png", "FunctionIcon/Electrical/WeepRobot/ControlRight.png");
//控制事件(不支持Enable和Disable,都归为Mid)
ImageControl.ControlEvent += (select) =>
{
};
//吸力调节
this.btnSuctionIcon = new IconViewControl(28);
btnSuctionIcon.Y = ImageControl.Bottom + Application.GetRealHeight(64);
btnSuctionIcon.X = Application.GetRealWidth(33);
btnSuctionIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Suction.png";
btnSuctionIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/SuctionSelect.png";
FrameWhiteCentet1.AddChidren(btnSuctionIcon);
btnSuctionIcon.ButtonClickEvent += (sender, e) =>
{
};
this.btnSuctionView = new NormalViewControl(80, 54, true);
btnSuctionView.Y = btnSuctionIcon.Bottom + Application.GetRealHeight(10);
btnSuctionView.X = btnSuctionIcon.X - (Application.GetRealWidth(80) - btnSuctionIcon.Width) / 2;
btnSuctionView.TextAlignment = TextAlignment.TopCenter;
btnSuctionView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
btnSuctionView.Text = Language.StringByID(StringId.SuctionAdjustment);
btnSuctionView.IsMoreLines = true;
FrameWhiteCentet1.AddChidren(btnSuctionView);
//充电图标
this.btnChargeIcon = new IconViewControl(28);
btnChargeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Charge.png";
btnChargeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/ChargeSelect.png";
btnChargeIcon.Y = btnSuctionIcon.Y;
btnChargeIcon.X = btnSuctionIcon.Right + Application.GetRealWidth(50);
FrameWhiteCentet1.AddChidren(btnChargeIcon);
btnChargeIcon.ButtonClickEvent += (sender, e) =>
{
};
var btnChargeView = new NormalViewControl(80, 18, true);
btnChargeView.Y = btnSuctionView.Y;
btnChargeView.X = btnChargeIcon.X - (Application.GetRealWidth(80) - btnChargeIcon.Width) / 2;
btnChargeView.TextAlignment = TextAlignment.TopCenter;
btnChargeView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
btnChargeView.TextID = StringId.Charge;
FrameWhiteCentet1.AddChidren(btnChargeView);
//声音图标
this.btnVoiceIcon = new IconViewControl(28);
btnVoiceIcon.Y = btnSuctionIcon.Y;
btnVoiceIcon.X = btnChargeIcon.Right + Application.GetRealWidth(50);
btnVoiceIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Voice.png";
btnVoiceIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/VoiceSelect.png";
FrameWhiteCentet1.AddChidren(btnVoiceIcon);
btnVoiceIcon.ButtonClickEvent += (sender, e) =>
{
};
this.btnVoiceView = new NormalViewControl(80, 18, true);
btnVoiceView.Y = btnSuctionView.Y;
btnVoiceView.X = btnVoiceIcon.X - (Application.GetRealWidth(80) - btnVoiceIcon.Width) / 2;
btnVoiceView.TextAlignment = TextAlignment.TopCenter;
btnVoiceView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
btnVoiceView.TextID = StringId.Mute;
FrameWhiteCentet1.AddChidren(btnVoiceView);
//清扫模式图标
this.btnModeIcon = new IconViewControl(28);
btnModeIcon.Y = btnSuctionIcon.Y;
btnModeIcon.X = btnVoiceIcon.Right + Application.GetRealWidth(50);
btnModeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Clean.png";
FrameWhiteCentet1.AddChidren(btnModeIcon);
btnModeIcon.ButtonClickEvent += (sender, e) =>
{
};
this.btnModeView = new NormalViewControl(80, 54, true);
btnModeView.Y = btnSuctionView.Y;
btnModeView.X = btnModeIcon.X - (Application.GetRealWidth(80) - btnModeIcon.Width) / 2;
btnModeView.TextAlignment = TextAlignment.TopCenter;
btnModeView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
btnModeView.TextID = StringId.CleanMode;
btnModeView.IsMoreLines = true;
FrameWhiteCentet1.AddChidren(btnModeView);
}
///
/// 初始化第二个索引页的内容
///
private void InitFrameWhiteContent2()
{
//扫地机器人
var btnTitleName = new NormalViewControl(270, 37, true);
btnTitleName.X = Application.GetRealWidth(16);
btnTitleName.Y = Application.GetRealHeight(18);
btnTitleName.TextColor = CSS_Color.FirstLevelTitleColor;
btnTitleName.TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel;
btnTitleName.TextID = StringId.WeepRobot;
FrameWhiteCentet2.AddChidren(btnTitleName);
//耗材管理
var rowManment = new FrameRowControl();
rowManment.Height = Application.GetRealHeight(50);
rowManment.Width = FrameWhiteCentet2.Width;
rowManment.Y = Application.GetRealHeight(75);
FrameWhiteCentet2.AddChidren(rowManment);
rowManment.AddLeftCaption(Language.StringByID(StringId.ConsumablesManagement), 200);
rowManment.AddBottomLine();
rowManment.AddRightArrow();
rowManment.ButtonClickEvent += (sender, e) =>
{
};
//历史记录
var rowHistory = new FrameRowControl();
rowHistory.Height = Application.GetRealHeight(50);
rowHistory.Width = FrameWhiteCentet2.Width;
rowHistory.Y = rowManment.Bottom;
FrameWhiteCentet2.AddChidren(rowHistory);
rowHistory.AddLeftCaption(Language.StringByID(StringId.HistoryLog), 200);
rowHistory.AddBottomLine();
rowHistory.AddRightArrow();
rowHistory.ButtonClickEvent += (sender, e) =>
{
};
}
#endregion
#region ■ 设备状态反馈_______________________
///
/// 设备状态反馈
///
///
public override void DeviceStatuPush(Function i_LocalDevice)
{
//不是同一个东西
if (this.device.sid != i_LocalDevice.sid) { return; }
//刷新当前设备的状态缓存
this.RefreshNowDeviceStatuMemory(i_LocalDevice);
//刷新界面状态
this.RefreshFormStatu();
}
#endregion
#region ■ 发送各种命令_______________________
///
/// 发送开关命令
///
private void SendSwitchComand()
{
//this.btnSwitch.CanClick = false;
//string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
//HdlThreadLogic.Current.RunThread(() =>
//{
// var dic = new Dictionary();
// dic.Add(FunctionAttributeKey.OnOff, statu);
// Control.Ins.SendWriteCommand(this.device, dic, true);
// HdlThreadLogic.Current.RunMain(() =>
// {
// this.btnSwitch.CanClick = true;
// });
//});
}
#endregion
#region ■ 刷新界面状态_______________________
///
/// 刷新界面状态
///
private void RefreshFormStatu()
{
//静音(它有四个图标)
if (this.weepRobotData.VoiceSwitch == true)
{
//需要切换图标
if (this.btnVoiceIcon.UnSelectedImagePath != "FunctionIcon/Electrical/WeepRobot/Mute.png")
{
this.btnVoiceIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Mute.png";
this.btnVoiceIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/MuteSelect.png";
}
}
else
{
//需要切换图标
if (this.btnVoiceIcon.UnSelectedImagePath != "FunctionIcon/Electrical/WeepRobot/Voice.png")
{
this.btnVoiceIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Voice.png";
this.btnVoiceIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/VoiceSelect.png";
}
}
}
#endregion
#region ■ 一般方法___________________________
///
/// 刷新当前设备的状态缓存
///
private void RefreshNowDeviceStatuMemory(Function i_LocalDevice)
{
foreach (var data in i_LocalDevice.attributes)
{
//开关
if (data.key == "on_off") { this.weepRobotData.Open = data.realValue.ToLower() == "on"; }
//寻找机器
else if (data.key == "seek") { this.weepRobotData.SearchRobot = data.realValue.ToLower() == "true"; }
//边刷重置
else if (data.key == "reset_edge_brush") { this.weepRobotData.ResetEdgeBrush = data.realValue.ToLower() == "true"; }
//滚刷重置
else if (data.key == "reset_roll_brush") { this.weepRobotData.ResetRollBrush = data.realValue.ToLower() == "true"; }
//滤网重置
else if (data.key == "reset_filter") { this.weepRobotData.ResetFilter = data.realValue.ToLower() == "true"; }
//吸力选择
else if (data.key == "suction") { this.weepRobotData.Suction = data.realValue; }
//工作模式
else if (data.key == "mode") { this.weepRobotData.Mode = data.realValue; }
//清扫方向
else if (data.key == "direction_control") { this.weepRobotData.DirectionControl = data.realValue; }
//声音开关
else if (data.key == "voice_switch") { this.weepRobotData.VoiceSwitch = data.realValue.ToLower() == "true"; }
//清扫面积
else if (data.key == "clean_area")
{
var value = data.realValue;
if (value != string.Empty)
{
this.weepRobotData.CleanArea = Convert.ToInt32(value);
}
}
//清扫记录
else if (data.key == "clean_record") { this.weepRobotData.CleanRecord = data.realValue; }
//边刷寿命
else if (data.key == "edge_brush")
{
var value = data.realValue;
if (value != string.Empty)
{
this.weepRobotData.EdgeBrush = Convert.ToInt32(value);
}
}
//滚刷寿命
else if (data.key == "roll_brush")
{
var value = data.realValue;
if (value != string.Empty)
{
this.weepRobotData.RollBrush = Convert.ToInt32(value);
}
}
//滤网寿命
else if (data.key == "filter")
{
var value = data.realValue;
if (value != string.Empty)
{
this.weepRobotData.Filter = Convert.ToInt32(value);
}
}
//清扫时间
else if (data.key == "clean_time")
{
var value = data.realValue;
if (value != string.Empty)
{
this.weepRobotData.CleanTime = Convert.ToInt32(value);
}
}
//剩余电量
else if (data.key == "electricity_left")
{
var value = data.realValue;
if (value != string.Empty)
{
this.weepRobotData.ElectricityLeft = Convert.ToInt32(value);
}
}
}
}
#endregion
#region ■ 结构体_____________________________
///
/// 扫地机器人的数据
///
private class WeepRobotData
{
///
/// 是否打开
///
public bool Open = true;
///
/// 寻找机器
///
public bool SearchRobot = false;
///
/// 边刷重置
///
public bool ResetEdgeBrush = false;
///
/// 滚刷重置
///
public bool ResetRollBrush = false;
///
/// 滤网重置
///
public bool ResetFilter = false;
///
/// 吸力选择(strong:一档 normal:二挡 quiet:三挡)
///
public string Suction = string.Empty;
///
/// 工作模式(random:自动清扫 smart:定点清扫 wall_follow:沿墙清扫 spiral:区域清扫 chargego:充电)
///
public string Mode = string.Empty;
///
/// 清扫方向(forward:向前 backward:向后 turn_left:向左 turn_right:向右 stop:停止)
///
public string DirectionControl = string.Empty;
///
/// 静音
///
public bool VoiceSwitch = false;
///
/// 清扫面积
///
public int CleanArea = 0;
///
/// 清扫记录(目前都是空的)
///
public string CleanRecord = string.Empty;
///
/// 边刷寿命(百分比)
///
public int EdgeBrush = 0;
///
/// 滚刷寿命(百分比)
///
public int RollBrush = 0;
///
/// 滤网寿命(百分比)
///
public int Filter = 0;
///
/// 清扫时间(0-432000)
///
public int CleanTime = 0;
///
/// 剩余电量(百分比)
///
public int ElectricityLeft = 0;
}
#endregion
}
}