using System;
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 FhControlPage : DeviceFunctionCardCommonForm
{
#region ■ 变量声明___________________________
///
/// 空调温度控制控件
///
DiyArcSeekBar arcBar;
///
/// 减号按钮
///
Button btnMinus;
///
/// 加号按钮
///
Button btnPlus;
///
/// 温度按钮
///
Button btnTemp;
Button btnTempUint;
///
/// 室内温度按钮
///
Button btnIndoorTemp;
///
/// 模式按钮
///
Button btnMode;
///
/// 开关按钮
///
Button btnSwitch;
FloorHeating fhTemp = new FloorHeating();
#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()
{
arcBar = new DiyArcSeekBar()
{
Gravity = Gravity.CenterHorizontal,
OpenAngle = 160,
//ThumbImagePath = device.trait_on_off.curValue.ToString() == "on" ? "FunctionIcon/FloorHeating/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png",
ThumbImageHeight = Application.GetRealWidth(50),
ProgressBarColor = CSS_Color.AuxiliaryColor1, // 0xFFFC9C04,
OfflineProgressBarColor = CSS_Color.PromptingColor2,
MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min,
MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max,
ArcColor = CSS_Color.BackgroundColor,
Progress = Convert.ToInt32(device.GetAttrState(FunctionAttributeKey.SetTemp)),
#if __IOS__
Y = Application.GetRealHeight(120 + 25),
Width = Application.GetRealWidth(260 - 40),
Height = Application.GetRealWidth(260 - 40),
SeekBarPadding = Application.GetRealWidth(8),
#else
Y = Application.GetRealHeight(120 + 40),
Width = Application.GetRealWidth(260 - 40),
Height = Application.GetRealWidth(260 - 40),
SeekBarPadding = Application.GetRealWidth(7),
#endif
};
FrameWhiteCentet1.AddChidren(arcBar);
arcBar.ThumbImagePath = device.GetAttrState(FunctionAttributeKey.OnOff) == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
arcBar.IsOffline = device.GetAttrState(FunctionAttributeKey.OnOff) == "off";
arcBar.MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min;
arcBar.MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max;
arcBar.Progress = Convert.ToInt32(device.GetAttrState(FunctionAttributeKey.SetTemp));
btnTemp = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(200),
Width = Application.GetRealWidth(80),
Height = Application.GetRealWidth(60),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = 56,
IsBold = true,
Text = device.GetAttrState(FunctionAttributeKey.SetTemp),
TextAlignment = TextAlignment.Center,
};
FrameWhiteCentet1.AddChidren(btnTemp);
btnTempUint = new Button()
{
X = btnTemp.Right,
Y = btnTemp.Y,
Width = Application.GetRealWidth(30),
Height = Application.GetRealWidth(25),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
IsBold = true,
TextAlignment = TextAlignment.CenterLeft,
Text = fhTemp.GetTempUnitString(device)
};
FrameWhiteCentet1.AddChidren(btnTempUint);
btnIndoorTemp = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = btnTemp.Bottom + Application.GetRealWidth(10),
Width = Application.GetRealWidth(100),
Height = Application.GetRealHeight(20),
Text = Language.StringByID(StringId.IndoorTemp) + "20°C",
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
};
FrameWhiteCentet1.AddChidren(btnIndoorTemp);
btnMinus = new Button()
{
X = Application.GetRealWidth(21),
Y = Application.GetRealHeight(263),
Width = Application.GetRealWidth(32),
Height = Application.GetRealWidth(32),
UnSelectedImagePath = "Public/MinusSignIcon.png",
};
FrameWhiteCentet1.AddChidren(btnMinus);
btnPlus = new Button()
{
X = Application.GetRealWidth(275),
Y = Application.GetRealHeight(263),
Width = Application.GetRealWidth(32),
Height = Application.GetRealWidth(32),
UnSelectedImagePath = "Public/PlusSignIcon.png",
};
FrameWhiteCentet1.AddChidren(btnPlus);
if (device.GetAttribute(FunctionAttributeKey.Mode) != null)
{
btnMode = new Button()
{
X = Application.GetRealWidth(235),
Y = Application.GetRealHeight(337),
Width = Application.GetRealWidth(30),
Height = Application.GetRealWidth(30),
UnSelectedImagePath = fhTemp.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode))
};
FrameWhiteCentet1.AddChidren(btnMode);
btnMode.MouseUpEventHandler = (sender, e) =>
{
LoadDiv_ChangeModeView();
};
}
btnSwitch = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(466),
Width = Application.GetRealWidth(32),
Height = Application.GetRealWidth(32),
UnSelectedImagePath = "Public/PowerClose.png",
SelectedImagePath = "Public/PowerOpen.png",
IsSelected = device.trait_on_off.curValue.ToString() == "on"
};
FrameWhiteCentet1.AddChidren(btnSwitch);
LoadEvent_TempChange();
LoadEvent_AcStatesChange();
}
///
/// 加载修改模式区域
///
void LoadDiv_ChangeModeView()
{
Dialog dialog = new Dialog();
FrameLayout dialogView = new FrameLayout()
{
BackgroundColor = CSS_Color.DialogTransparentColor1,
};
dialog.AddChidren(dialogView);
FrameLayout modeChangeView;
modeChangeView = new FrameLayout()
{
X = Application.GetRealWidth(30),
Y = Application.GetRealHeight(128),
Width = Application.GetRealWidth(160),
Height = Application.GetRealHeight(287),
BackgroundImagePath = "FunctionIcon/AC/DivBg1.png",
};
dialogView.AddChidren(modeChangeView);
Button btnTitle;
btnTitle = new Button()
{
X = Application.GetRealWidth(8 + 16),
Y = Application.GetRealHeight(8),
Width = Application.GetRealWidth(112),
Height = Application.GetRealHeight(44),
TextID = StringId.ChooseMode,
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
};
modeChangeView.AddChidren(btnTitle);
Button btnLine = new Button()
{
X = btnTitle.X,
Y = btnTitle.Bottom,
Width = Application.GetRealWidth(112),
Height = Application.GetRealHeight(1),
BackgroundColor = CSS_Color.BackgroundColor,
};
modeChangeView.AddChidren(btnLine);
var modeList = device.GetAttribute(FunctionAttributeKey.Mode).value;
foreach (var m in modeList)
{
Button btnModeIcon = new Button()
{
X = btnTitle.X,
Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8),
Width = Application.GetRealWidth(24),
Height = Application.GetRealWidth(24),
IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m,
};
modeChangeView.AddChidren(btnModeIcon);
Button btnModeText = new Button()
{
X = Application.GetRealWidth(12) + btnModeIcon.Right,
Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8),
Height = Application.GetRealHeight(44),
Width = Application.GetRealWidth(90),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
SelectedTextColor = CSS_Color.MainColor,
IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m,
TextSize = CSS_FontSize.TextFontSize,
};
modeChangeView.AddChidren(btnModeText);
btnModeIcon.UnSelectedImagePath = fhTemp.GetModeIconPath(m, false);
btnModeIcon.SelectedImagePath = fhTemp.GetModeIconPath(m);
btnModeText.Text = fhTemp.GetModeAttrText(m);
if (modeList.IndexOf(m) < modeList.Count - 1)
{
modeChangeView.AddChidren(new Button()
{
X = btnTitle.X,
Y = btnModeText.Bottom,
Width = Application.GetRealWidth(112),
Height = Application.GetRealHeight(1),
BackgroundColor = CSS_Color.BackgroundColor,
});
}
EventHandler eventHandler = (sender, e) =>
{
dialog.Close();
};
EventHandler eventHandler1 = (sender, e) =>
{
btnModeIcon.IsSelected = btnModeText.IsSelected = true;
device.SetAttrState(FunctionAttributeKey.Mode, m);
btnMode.UnSelectedImagePath = fhTemp.GetModeIconPath(m);
System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary();
btnMode.UnSelectedImagePath = btnModeIcon.UnSelectedImagePath;
d.Add(FunctionAttributeKey.Mode, m);
Control.Ins.SendWriteCommand(device, d);
dialog.Close();
if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
{
arcBar.IsClickable = false;
}
else
{
arcBar.IsClickable = true;
}
};
btnModeIcon.MouseUpEventHandler = eventHandler1;
btnModeText.MouseUpEventHandler = eventHandler1;
dialogView.MouseUpEventHandler = eventHandler;
}
dialogView.MouseUpEventHandler = (sender, e) => {
dialog.Close();
};
dialog.Show();
}
#endregion
#region ■ 设备状态反馈_______________________
///
/// 设备状态反馈
///
///
public override void DeviceStatuPush(Function i_LocalDevice)
{
//不是同一个东西
if (this.device.sid != i_LocalDevice.sid) { return; }
//刷新界面状态
this.RefreshFormStatu();
}
#endregion
#region ■ 发送各种命令_______________________
///
/// 温度改变模式
///
void LoadEvent_TempChange()
{
btnMinus.MouseUpEventHandler = (sender, e) =>
{
if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
{
return;
}
var temp = Convert.ToInt32(device.GetAttrState(FunctionAttributeKey.SetTemp));
if (temp <= device.GetAttribute(FunctionAttributeKey.Mode).min)
{
return;
}
temp--;
arcBar.Progress = temp;
btnTemp.Text = temp.ToString();
device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString());
System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary();
d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
Control.Ins.SendWriteCommand(device, d);
};
btnPlus.MouseUpEventHandler = (sender, e) =>
{
if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
{
return;
}
var temp = Convert.ToInt32(device.GetAttrState(FunctionAttributeKey.SetTemp));
if (temp >= device.GetAttribute(FunctionAttributeKey.SetTemp).max)
{
return;
}
temp++;
arcBar.Progress = temp;
btnTemp.Text = temp.ToString();
device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString());
System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary();
d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
Control.Ins.SendWriteCommand(device, d);
};
arcBar.OnStopTrackingTouchEvent = (sender, e) =>
{
device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
btnTemp.Text = arcBar.Progress.ToString();
System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary();
d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
Control.Ins.SendWriteCommand(device, d);
};
arcBar.OnProgressChangedEvent = (sender, e) =>
{
device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
btnTemp.Text = e.ToString();
};
}
///
/// 控制模式事件
///
void LoadEvent_AcStatesChange()
{
btnMode.MouseUpEventHandler = (sender, e) =>
{
if (device.trait_on_off.curValue.ToString() == "off")
{
return;
}
LoadDiv_ChangeModeView();
};
btnSwitch.MouseUpEventHandler = (sender, e) =>
{
btnSwitch.IsSelected = !btnSwitch.IsSelected;
device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
if (device.trait_on_off.curValue.ToString() == "on")
{
arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png";
btnSwitch.IsSelected = true;
arcBar.IsOffline = false;
}
else
{
arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png";
btnSwitch.IsBold = false;
arcBar.IsOffline = true;
}
System.Collections.Generic.Dictionary d = new System.Collections.Generic.Dictionary();
d.Add(FunctionAttributeKey.OnOff, device.trait_on_off.curValue.ToString());
Control.Ins.SendWriteCommand(device, d);
};
}
#endregion
#region ■ 刷新界面状态_______________________
///
/// 刷新界面状态
///
private void RefreshFormStatu()
{
Application.RunOnMainThread(() =>
{
btnTemp.Text = device.GetAttrState(FunctionAttributeKey.SetTemp);
btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.IndoorTemp))) + "°C";
btnMode.UnSelectedImagePath = fhTemp.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode));
arcBar.Progress = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp)));
if (device.trait_on_off.curValue.ToString() == "on")
{
arcBar.IsOffline = false;
btnSwitch.IsSelected = true;
arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png";
if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
{
arcBar.IsClickable = false;
}
else
{
arcBar.IsClickable = true;
}
}
else
{
arcBar.IsOffline = true;
btnSwitch.IsSelected = false;
arcBar.IsClickable = false;
arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png";
}
});
}
#endregion
}
}