using 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 TuyaWaterValvePage : DeviceFunctionCardCommonForm
|
{
|
#region ■ 变量声明___________________________
|
/// <summary>
|
/// 图片控件
|
/// </summary>
|
private PicViewControl btnPictrue = null;
|
/// <summary>
|
/// 控制器控制状态提示文本按钮
|
/// </summary>
|
NormalViewControl btnControlTip = null;
|
/// <summary>
|
/// 控制器控制时间提示文本按钮
|
/// </summary>
|
NormalViewControl btnControlTimeTip = null;
|
|
/// <summary>
|
///
|
/// </summary>
|
private IconViewControl btnTimeSet = null;
|
|
/// <summary>
|
/// 开关控件
|
/// </summary>
|
private IconViewControl btnSwitch = null;
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 初始化白色区域的内容
|
/// </summary>
|
public override void InitFrameWhiteContent()
|
{
|
base.SetTitleText(Language.StringByID(StringId.AirCleaner));
|
|
//初始化第一个索引页的内容
|
this.InitFrameWhiteContent1();
|
//刷新界面状态
|
this.RefreshFormStatu();
|
}
|
|
/// <summary>
|
/// 初始化第一个索引页的内容
|
/// </summary>
|
private void InitFrameWhiteContent1()
|
{
|
//图片控件
|
this.btnPictrue = new PicViewControl(130, 118);
|
btnPictrue.Y = Application.GetRealHeight(95);
|
btnPictrue.Gravity = Gravity.CenterHorizontal;
|
btnPictrue.UnSelectedImagePath = "FunctionIcon/Electrical/WaterValve/WaterValveBg.png";
|
btnPictrue.SelectedImagePath = "FunctionIcon/Electrical/WaterValve/WaterValveOnBg.png";
|
FrameWhiteCentet1.AddChidren(btnPictrue);
|
btnPictrue.ButtonClickEvent += (sender, e) =>
|
{
|
//发送开关命令
|
this.SendSwitchComand();
|
};
|
|
btnControlTip = new NormalViewControl(300,30, true)
|
{
|
Y = Application.GetRealHeight(231),
|
TextAlignment = TextAlignment.Center,
|
Gravity = Gravity.CenterHorizontal,
|
TextSize = CSS_FontSize.TextFontSize,
|
SelectedTextColor = CSS_Color.MainColor,
|
TextColor = CSS_Color.TextualColor,
|
TextID = StringId.ControllerNotOn,
|
};
|
FrameWhiteCentet1.AddChidren(btnControlTip);
|
|
btnControlTimeTip = new NormalViewControl(300, 30, true)
|
{
|
Y = Application.GetRealHeight(252),
|
Gravity = Gravity.CenterHorizontal,
|
TextAlignment = TextAlignment.Center,
|
TextSize = CSS_FontSize.TextFontSize,
|
//TextColor = 0x00000000,
|
SelectedTextColor = CSS_Color.TextualColor,
|
TextColor = CSS_Color.TextualColor,
|
Text = "00:00:00"
|
};
|
FrameWhiteCentet1.AddChidren(btnControlTimeTip);
|
|
btnTimeSet = new IconViewControl(50)
|
{
|
Y = Application.GetRealHeight(365),
|
Gravity = Gravity.CenterHorizontal,
|
UnSelectedImagePath = "FunctionIcon/Electrical/WaterValve/SetTimeIcon.png",
|
SelectedImagePath = "FunctionIcon/Electrical/WaterValve/SetTimeIcon.png",
|
};
|
FrameWhiteCentet1.AddChidren(btnTimeSet);
|
btnTimeSet.ButtonClickEvent = (sender, e) => {
|
SetControlTime();
|
};
|
|
//开关图标
|
this.btnSwitch = new IconViewControl(40);
|
btnSwitch.Gravity = Gravity.CenterHorizontal;
|
btnSwitch.Y = Application.GetRealHeight(468);
|
btnSwitch.UnSelectedImagePath = "Public/PowerClose.png";
|
btnSwitch.SelectedImagePath = "Public/PowerOpen.png";
|
FrameWhiteCentet1.AddChidren(btnSwitch);
|
btnSwitch.ButtonClickEvent += (sender, e) =>
|
{
|
//发送开关命令
|
this.SendSwitchComand();
|
};
|
|
var pack = new DAL.Server.HttpServerRequest().GetDeviceInfoList(new List<string>() { base.device.deviceId });
|
}
|
#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.RefreshFormStatu();
|
}
|
|
#endregion
|
|
#region ■ 发送各种命令_______________________
|
|
/// <summary>
|
/// 发送开关命令
|
/// </summary>
|
private void SendSwitchComand()
|
{
|
this.btnPictrue.CanClick = false;
|
this.btnSwitch.CanClick = false;
|
|
string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
var dic = new Dictionary<string, string>();
|
dic.Add(FunctionAttributeKey.OnOff, statu);
|
Control.Ins.SendWriteCommand(this.device, dic, true);
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
this.btnPictrue.CanClick = true;
|
this.btnSwitch.CanClick = true;
|
});
|
});
|
}
|
|
#endregion
|
|
#region ■ 刷新界面状态_______________________
|
|
/// <summary>
|
/// 刷新界面状态
|
/// </summary>
|
private void RefreshFormStatu()
|
{
|
Application.RunOnMainThread(() =>
|
{
|
var onoffStatu = device.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff);
|
var timeStatu = device.status.Find((obj) => obj.key == FunctionAttributeKey.TuyaWaterTime);
|
|
if (onoffStatu != null)
|
{
|
if (onoffStatu.value.ToString() == "on")
|
{
|
btnControlTip.TextID = StringId.ControllerOn;
|
}
|
else
|
{
|
btnControlTip.TextID = StringId.ControllerNotOn;
|
}
|
this.btnSwitch.IsSelected = this.btnPictrue.IsSelected = onoffStatu.value.ToString() == "on";
|
}
|
if (timeStatu != null)
|
{
|
int.TryParse(timeStatu.value, out waterRunningTime);
|
}
|
RefreshTimeButton();
|
});
|
}
|
|
System.Threading.Thread refreshTimeThread;
|
int waterRunningTime = 0;
|
/// <summary>
|
/// 刷新水阀时间文本
|
/// </summary>
|
private void RefreshTimeButton()
|
{
|
if (refreshTimeThread == null || refreshTimeThread.ThreadState == System.Threading.ThreadState.Stopped)
|
{
|
refreshTimeThread = new System.Threading.Thread(() =>
|
{
|
while (waterRunningTime >= 0)
|
{
|
if (waterRunningTime > 0)
|
{
|
waterRunningTime--;
|
}
|
var sce = waterRunningTime % 60;
|
var min = 0;
|
if(waterRunningTime > 60)
|
{
|
min = (waterRunningTime - sce) / 60 %60;
|
}
|
var hour = 0;
|
if(waterRunningTime > 360)
|
{
|
hour = (waterRunningTime - sce - (min * 60)) / 3600;
|
}
|
Application.RunOnMainThread(() =>
|
{
|
btnControlTimeTip.Text = $"{hour.ToString().PadLeft(2,'0')}:{min.ToString().PadLeft(2, '0')}:{sce.ToString().PadLeft(2, '0')}";
|
});
|
System.Threading.Thread.Sleep(1000);
|
}
|
})
|
{ IsBackground = true };
|
}
|
refreshTimeThread.Start();
|
}
|
|
public override void RemoveFromParent()
|
{
|
if (refreshTimeThread != null)
|
{
|
refreshTimeThread.Abort();
|
}
|
base.RemoveFromParent();
|
}
|
|
#endregion
|
|
|
private void SetControlTime()
|
{
|
var timeControl = new BottomTimeSelectControl();
|
timeControl.InitControl(0,0);
|
timeControl.FinishEvent = (type,hours,min) => {
|
if (type == 1)//0:取消;1:确定
|
{
|
HdlThreadLogic.Current.RunThread(() =>
|
{
|
var time = hours * 60 * 60 + min * 60;
|
var dic = new Dictionary<string, string>();
|
dic.Add(FunctionAttributeKey.TuyaWaterTime, time.ToString());
|
Control.Ins.SendWriteCommand(this.device, dic, true);
|
HdlThreadLogic.Current.RunMain(() =>
|
{
|
waterRunningTime = time;
|
this.btnControlTimeTip.Text = $"{hours.ToString().PadLeft(2, '0')}:{min.ToString().PadLeft(2, '0')}:00";
|
});
|
});
|
}
|
};
|
}
|
}
|
}
|