using System;
|
using System.Collections.Generic;
|
using HDL_ON.DriverLayer;
|
using HDL_ON.Entity;
|
using Shared;
|
|
namespace HDL_ON.UI
|
{
|
|
|
/// <summary>
|
/// 绿建科技系统
|
/// 总控主页
|
/// </summary>
|
public class AcstParentPage : FrameLayout
|
{
|
static AcstParentPage basePage;
|
|
VerticalScrolViewLayout bodyView;
|
|
#region 天气控件
|
Button btnOutdoorTemp;
|
Button btnWeather;
|
TextButton btnHumidityValues;
|
TextButton btnPm25Values;
|
#endregion
|
|
#region 传感器、耗电量组件
|
SensorDiyView sensorDiyView_Temp;
|
SensorDiyView sensorDiyView_Humi;
|
SensorDiyView sensorDiyView_Pm25;
|
SensorDiyView sensorDiyView_Co2;
|
SensorDiyView sensorDiyView_Tvoc;
|
SensorDiyView sensorDiyView_EleDay;
|
SensorDiyView sensorDiyView_EleMonth;
|
SensorDiyView sensorDiyView_EleTotal;
|
#endregion
|
/// <summary>
|
/// 子控区域列表
|
/// </summary>
|
Dictionary<string, AcstSubControlView> subViewList;
|
|
|
Button btnWorkSceneControl;
|
|
Button btnModeControl;
|
Button btnPowerControl;
|
|
|
public override void RemoveFromParent()
|
{
|
base.RemoveFromParent();
|
basePage = null;
|
}
|
|
Function function;
|
/// <summary>
|
/// 当前时段颜色
|
/// </summary>
|
uint curColor = CSS.CSS_Color.MainColor;
|
|
string imageFolder = "blue";
|
|
public AcstParentPage()
|
{
|
basePage = this;
|
this.function = FunctionList.List.GetAcstParentList()[0];
|
this.BackgroundColor = CSS.CSS_Color.BackgroundColor;
|
bodyView = new VerticalScrolViewLayout();
|
this.AddChidren(bodyView);
|
subViewList = new Dictionary<string, AcstSubControlView>();
|
}
|
/// <summary>
|
/// 更新天气信息
|
/// </summary>
|
public void InitGetWeatherAction()
|
{
|
MainPage.CityWeatherAction = () =>
|
{
|
Application.RunOnMainThread(() =>
|
{
|
btnOutdoorTemp.Text = MainPage.cityInfo.temperature + "°";
|
btnWeather.Text = MainPage.cityInfo.weather;
|
btnHumidityValues.Text = MainPage.cityInfo.humidity + "%";
|
btnHumidityValues.Width = btnHumidityValues.GetTextWidth() + Application.GetRealWidth(10);
|
btnPm25Values.Text = MainPage.cityInfo.pm25;
|
btnPm25Values.Width = btnPm25Values.GetTextWidth() + Application.GetRealWidth(10);
|
});
|
};
|
}
|
/// <summary>
|
/// 更新主控数据信息
|
/// </summary>
|
public static void UpdateAcstParentInfo(Function temp)
|
{
|
if (basePage == null)
|
{
|
return;
|
}
|
if (basePage.sensorDiyView_Temp != null)
|
basePage.sensorDiyView_Temp.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.room_temp.ToString()).state);
|
if (basePage.sensorDiyView_Humi != null)
|
basePage.sensorDiyView_Humi.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.room_humidity.ToString()).state);
|
if (basePage.sensorDiyView_Pm25 != null)
|
basePage.sensorDiyView_Pm25.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.pm25.ToString()).state);
|
if (basePage.sensorDiyView_Co2 != null)
|
basePage.sensorDiyView_Co2.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.co2.ToString()).state);
|
if (basePage.sensorDiyView_Tvoc != null)
|
basePage.sensorDiyView_Tvoc.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.tvoc.ToString()).state);
|
if (basePage.sensorDiyView_EleDay != null)
|
basePage.sensorDiyView_EleDay.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.day_electricity.ToString()).state);
|
if (basePage.sensorDiyView_EleMonth != null)
|
basePage.sensorDiyView_EleMonth.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.month_electricity.ToString()).state);
|
if (basePage.sensorDiyView_EleTotal != null)
|
basePage.sensorDiyView_EleTotal.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.total_electricity.ToString()).state);
|
|
|
basePage.btnModeControl.IsSelected = basePage.btnWorkSceneControl.IsSelected = basePage.btnPowerControl.IsSelected = temp.trait_on_off.state == "on";
|
|
switch (temp.GetAttrState("mode"))
|
{
|
case "cool"://制冷
|
basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeCoolIcon2.png";
|
basePage.btnModeControl.UnSelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeCoolIcon2.png";
|
break;
|
case "heat"://制热
|
basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatIcon2.png";
|
basePage.btnModeControl.UnSelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHeatIcon2.png";
|
break;
|
case "fan"://通风
|
basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeFanIcon2.png";
|
basePage.btnModeControl.UnSelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeFanIcon2.png";
|
break;
|
case "dry"://除湿
|
basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeDeHumiIcon2.png";
|
basePage.btnModeControl.UnSelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeDeHumiIcon2.png";
|
break;
|
case "humidity"://加湿
|
basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHumiIcon2.png";
|
basePage.btnModeControl.UnSelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHumiIcon2.png";
|
break;
|
case "heat_humidity"://制热加湿
|
basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png";
|
basePage.btnModeControl.UnSelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHeatHumiIcon2.png";
|
break;
|
}
|
switch (temp.GetAttrState("scene"))
|
{
|
case "at_home"://在家
|
basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAtHome2.png";
|
basePage.btnModeControl.UnSelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeCoolIcon2.png";
|
break;
|
case "leave_home"://离家
|
basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png";
|
basePage.btnModeControl.UnSelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneAwayHomeIcon2.png";
|
break;
|
case "sleep"://睡眠
|
basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneSleepIcon2.png";
|
basePage.btnModeControl.UnSelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneSleepIcon2.png";
|
break;
|
}
|
|
}
|
|
|
/// <summary>
|
/// 更新子控信息
|
/// </summary>
|
/// <param name="temp"></param>
|
public static void UpdateAcstSubInfo(Function temp)
|
{
|
if(basePage == null)
|
{
|
return;
|
}
|
Application.RunOnMainThread(() => {
|
var view = basePage.subViewList[temp.sid];
|
if(view!= null)
|
{
|
view.btnSubHumidityValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%";
|
view.btnSubTempValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%";
|
view.btnSubPower.IsSelected = temp.GetAttrState(AcstSub_AttrEnum.on_off.ToString()) == "on";
|
}
|
});
|
}
|
|
public void LoadPage()
|
{
|
var curTime = DateTime.Now;
|
string helloText = "上午好";
|
if (curTime.Hour >= 8 && curTime.Hour < 12)
|
{
|
helloText = "上午好";
|
curColor = CSS.CSS_Color.MainColor;
|
imageFolder = "blue";
|
}
|
else if (curTime.Hour >= 12 && curTime.Hour < 18)
|
{
|
helloText = "下午好";
|
curColor = 0xFFE7914F;
|
imageFolder = "orange";
|
}
|
else
|
{
|
helloText = "晚上好";
|
curColor = 0xFF9175F3;
|
imageFolder = "purple";
|
}
|
|
#region 头部信息区域
|
FrameLayout topView = new FrameLayout()
|
{
|
Height = Application.GetRealHeight(180),
|
BackgroundImagePath = $"FunctionIcon/Acst/{imageFolder}/TopViewBg.png",
|
};
|
bodyView.AddChidren(topView);
|
|
var backView = new FrameLayout()
|
{
|
Y = Application.GetRealHeight(32),
|
Width = Application.GetRealWidth(100),
|
Height = Application.GetRealHeight(34),
|
};
|
topView.AddChidren(backView);
|
|
Button btnBackIcon = new Button()
|
{
|
X = Application.GetRealWidth(16),
|
Width = Application.GetRealWidth(12),
|
Height = Application.GetRealHeight(20),
|
UnSelectedImagePath = "FunctionIcon/Acst/BackIcon.png",
|
};
|
backView.AddChidren(btnBackIcon);
|
|
Button btnBackClick = new Button();
|
backView.AddChidren(btnBackClick);
|
|
btnBackClick.MouseUpEventHandler = (sender, e) => {
|
this.RemoveFromParent();
|
};
|
|
var btnHelloText = new Button()
|
{
|
X = Application.GetRealWidth(25),
|
Y = Application.GetRealHeight(55),
|
Width = Application.GetRealWidth(200),
|
Height = Application.GetRealHeight(38),
|
TextSize = 20,
|
Text = helloText,
|
TextColor = 0xFFFFFFFF,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
topView.AddChidren(btnHelloText);
|
|
|
btnOutdoorTemp = new Button()
|
{
|
X = Application.GetRealWidth(25),
|
Y = Application.GetRealHeight(90),
|
Width = Application.GetRealWidth(85),
|
Height = Application.GetRealHeight(66),
|
TextColor = 0xFFFFFFFF,
|
TextSize = 50,
|
TextAlignment = TextAlignment.TopLeft,
|
Text = MainPage.cityInfo.temperature + "°"
|
};
|
topView.AddChidren(btnOutdoorTemp);
|
|
btnWeather = new Button()
|
{
|
X = btnOutdoorTemp.Right,
|
Y = Application.GetRealHeight(95),
|
Width = Application.GetRealWidth(80),
|
Height = Application.GetRealHeight(26),
|
Text = MainPage.cityInfo.weather,
|
TextColor = 0xFFFFFFFF,
|
TextSize = 14,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
topView.AddChidren(btnWeather);
|
|
|
var environmentalView = new FrameLayout()
|
{
|
Y = Application.GetRealHeight(150),
|
Height = Application.GetRealHeight(32),
|
};
|
topView.AddChidren(environmentalView);
|
|
var btnHumidityIcon = new Button()
|
{
|
X = Application.GetRealWidth(25),
|
Gravity = Gravity.CenterVertical,
|
Width = Application.GetMinRealAverage(16),
|
Height = Application.GetMinRealAverage(16),
|
UnSelectedImagePath = "Public/DeviceInfoIcon/HumidityIcon.png",
|
};
|
environmentalView.AddChidren(btnHumidityIcon);
|
|
btnHumidityValues = new TextButton()
|
{
|
X = btnHumidityIcon.Right + Application.GetRealWidth(4),
|
Gravity = Gravity.CenterVertical,
|
TextColor = 0xFFFFFFFF,
|
TextSize = 16,
|
Text = MainPage.cityInfo.humidity + "%",
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
|
environmentalView.AddChidren(btnHumidityValues);
|
|
var btnPm25Icon = new Button()
|
{
|
X = btnHumidityValues.Right + Application.GetRealWidth(14),
|
Gravity = Gravity.CenterVertical,
|
Width = Application.GetMinRealAverage(16),
|
Height = Application.GetMinRealAverage(16),
|
UnSelectedImagePath = "Public/DeviceInfoIcon/Pm25Icon.png",
|
};
|
environmentalView.AddChidren(btnPm25Icon);
|
|
btnPm25Values = new TextButton()
|
{
|
X = btnPm25Icon.Right + Application.GetRealWidth(4),
|
Gravity = Gravity.CenterVertical,
|
TextColor = 0xFFFFFFFF,
|
TextSize = 16,
|
Text = MainPage.cityInfo.pm25,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
btnPm25Values.Width = btnPm25Values.GetTextWidth();
|
environmentalView.AddChidren(btnPm25Values);
|
|
|
#endregion
|
|
bodyView.AddChidren(new Button
|
{
|
Height = Application.GetRealHeight(8),
|
});
|
|
#region 数据
|
var infoView = new FrameLayout()
|
{
|
Y = topView.Bottom,
|
Height = Application.GetRealHeight(104),
|
BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
|
};
|
bodyView.AddChidren(infoView);
|
|
var infoContentView = new FrameLayout()
|
{
|
Gravity = Gravity.Center,
|
Width = Application.GetRealWidth(343),
|
Height = Application.GetRealHeight(72),
|
BackgroundImagePath = $"FunctionIcon/Acst/{imageFolder}/MsgViewBg.png",
|
};
|
infoView.AddChidren(infoContentView);
|
|
#region 传感器数据
|
int sensorCount = 0;
|
var tempObj = function.GetAttribute(AcstParent_AttrEnum.room_temp.ToString());
|
if (tempObj != null)
|
{
|
sensorCount++;
|
}
|
var humiObj = function.GetAttribute(AcstParent_AttrEnum.room_humidity.ToString());
|
if (humiObj != null)
|
{
|
sensorCount++;
|
}
|
var pm25Obj = function.GetAttribute(AcstParent_AttrEnum.pm25.ToString());
|
if (pm25Obj != null)
|
{
|
sensorCount++;
|
}
|
var co2Obj = function.GetAttribute(AcstParent_AttrEnum.co2.ToString());
|
if (co2Obj != null)
|
{
|
sensorCount++;
|
}
|
var tvocObj = function.GetAttribute(AcstParent_AttrEnum.tvoc.ToString());
|
if (tvocObj != null)
|
{
|
sensorCount++;
|
}
|
|
var sensorListView = new HorizontalScrolViewLayout()
|
{
|
Width = Application.GetRealWidth(60 * sensorCount),
|
Gravity = Gravity.Center,
|
};
|
infoContentView.AddChidren(sensorListView);
|
|
|
if (tempObj != null)
|
{
|
sensorDiyView_Temp = new SensorDiyView(sensorListView, curColor, tempObj.state == "" ? "--" : tempObj.state + "°", "温度");
|
}
|
if (humiObj != null)
|
{
|
sensorDiyView_Humi = new SensorDiyView(sensorListView, curColor, humiObj.state == "" ? "--" : humiObj.state + "%", "湿度");
|
}
|
if (pm25Obj != null)
|
{
|
sensorDiyView_Pm25 = new SensorDiyView(sensorListView, curColor, pm25Obj.state == "" ? "--" : pm25Obj.state, "PM2.5");
|
}
|
if (co2Obj != null)
|
{
|
sensorDiyView_Co2 = new SensorDiyView(sensorListView, curColor, co2Obj.state == "" ? "--" : co2Obj.state, "CO2");
|
}
|
if (tvocObj != null)
|
{
|
sensorDiyView_Tvoc = new SensorDiyView(sensorListView, curColor, tvocObj.state == "" ? "--" : tvocObj.state, "TVOC");
|
}
|
#endregion
|
|
#region 能耗数据
|
int energyCount = 0;
|
var dayObj = function.GetAttribute(AcstParent_AttrEnum.day_electricity.ToString());
|
if (dayObj != null)
|
{
|
energyCount++;
|
}
|
var monthObj = function.GetAttribute(AcstParent_AttrEnum.month_electricity.ToString());
|
if (monthObj != null)
|
{
|
energyCount++;
|
}
|
var totalObj = function.GetAttribute(AcstParent_AttrEnum.total_electricity.ToString());
|
if (totalObj != null)
|
{
|
energyCount++;
|
}
|
|
var energyListView = new HorizontalScrolViewLayout()
|
{
|
Width = Application.GetRealWidth(100 * energyCount),
|
Gravity = Gravity.Center,
|
Visible = false,
|
};
|
infoContentView.AddChidren(energyListView);
|
if (dayObj != null)
|
{
|
sensorDiyView_EleDay = new SensorDiyView(energyListView, curColor, dayObj.state == "" ? "--" : dayObj.state + "KW", "今日耗电",100);
|
}
|
if (monthObj != null)
|
{
|
sensorDiyView_EleMonth = new SensorDiyView(energyListView, curColor, monthObj.state == "" ? "--" : monthObj.state + "KWh", "本月耗电", 100);
|
}
|
if (totalObj != null)
|
{
|
sensorDiyView_EleTotal = new SensorDiyView(energyListView, curColor, totalObj.state == "" ? "--" : totalObj.state + "KWh", "总耗电量", 100);
|
}
|
|
var btnChangeClick = new Button();
|
infoView.AddChidren(btnChangeClick);
|
|
bool showSensor = true;
|
EventHandler<MouseEventArgs> changeInfoEvent = (sender, e) => {
|
if (showSensor)
|
{
|
sensorListView.Visible = false;
|
showSensor = false;
|
energyListView.Visible = true;
|
}
|
else
|
{
|
sensorListView.Visible = true;
|
showSensor = true;
|
energyListView.Visible = false;
|
}
|
};
|
btnChangeClick.MouseUpEventHandler = changeInfoEvent;
|
|
|
#endregion
|
|
#endregion
|
|
#region 子控列表
|
|
var subTitleView = new FrameLayout()
|
{
|
Height = Application.GetRealHeight(54-11),
|
};
|
bodyView.AddChidren(subTitleView);
|
|
var btnCollection = new Button()
|
{
|
X = Application.GetRealWidth(6),
|
Y = Application.GetRealHeight(10),
|
Width = Application.GetRealWidth(39),
|
Height = Application.GetRealWidth(39),
|
IsSelected = function.collect,
|
UnSelectedImagePath = "FunctionIcon/Acst/grey/CollectionIcon.png",
|
SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/CollectionIcon.png",
|
};
|
subTitleView.AddChidren(btnCollection);
|
//收藏
|
btnCollection.MouseUpEventHandler = (sender, e) => {
|
function.collect = !function.collect;
|
btnCollection.IsSelected = function.collect;
|
|
//var http = new DAL.Server.HttpServerRequest();
|
//http.CollectDevice(function.deviceId);
|
function.CollectFunction();
|
|
};
|
|
var btnTitleText2 = new Button()
|
{
|
X = btnCollection.Right,
|
Text = "我的家庭",
|
TextSize = 16,
|
TextColor = 0xFF242424,
|
TextAlignment = TextAlignment.CenterLeft,
|
IsBold = true,
|
Height = Application.GetRealHeight(54),
|
};
|
subTitleView.AddChidren(btnTitleText2);
|
|
int subFunctionCount = 0;
|
|
var subFunctionListView = new HorizontalScrolViewLayout()
|
{
|
Height = Application.GetRealHeight(88),
|
};
|
bodyView.AddChidren(subFunctionListView);
|
|
|
subFunctionListView.AddChidren(new Button { Width = Application.GetRealWidth(9) });
|
foreach (var sub in FunctionList.List.GetAcstSubList())
|
{
|
if (subViewList.ContainsKey(sub.sid))
|
{
|
continue;
|
}
|
|
if (subFunctionCount > 0 && subFunctionCount % 2 == 0)
|
{
|
subFunctionListView = new HorizontalScrolViewLayout()
|
{
|
Height = Application.GetRealHeight(93),
|
};
|
bodyView.AddChidren(subFunctionListView);
|
subFunctionListView.AddChidren(new Button { Width = Application.GetRealWidth(9) });
|
}
|
|
AcstSubControlView subFunctionView = new AcstSubControlView(sub, subFunctionListView,imageFolder);
|
|
subViewList.Add(sub.sid, subFunctionView);
|
|
|
|
subFunctionCount++;
|
}
|
|
#endregion
|
|
bodyView.AddChidren(new Button()
|
{
|
Height = Application.GetRealHeight(72),
|
});
|
|
#region 底部控制栏
|
var bottomView = new FrameLayout()
|
{
|
Y = Application.GetRealHeight(667 - 56),
|
Height = Application.GetRealHeight(56),
|
BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
|
};
|
this.AddChidren(bottomView);
|
|
btnModeControl = new Button()
|
{
|
X = Application.GetRealWidth(89),
|
Gravity = Gravity.CenterVertical,
|
Width = Application.GetRealWidth(38),
|
Height = Application.GetRealWidth(38),
|
UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeCoolIcon2.png",
|
SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeCoolIcon2.png",
|
TextAlignment = TextAlignment.Center,
|
IsSelected = function.trait_on_off.state == "on"
|
};
|
bottomView.AddChidren(btnModeControl);
|
btnModeControl.MouseUpEventHandler = (sender3, e3) =>
|
{
|
if(function.trait_on_off.state == "off")
|
{
|
return;
|
}
|
Dialog dialog = new Dialog();
|
|
var dialogView = new FrameLayout();
|
dialog.AddChidren(dialogView);
|
dialogView.MouseUpEventHandler = (sender, e) => {
|
dialog.Close();
|
};
|
|
var dialogContentView = new FrameLayout() {
|
X = Application.GetRealWidth(34),
|
Y = Application.GetRealHeight(291),
|
Width = Application.GetRealWidth(148),
|
Height = Application.GetRealHeight(319),
|
BackgroundImagePath = "FunctionIcon/Acst/BgChooseMode.png",
|
};
|
dialogView.AddChidren(dialogContentView);
|
|
var titleView = new FrameLayout() {
|
X = Application.GetRealWidth(2),
|
Y = Application.GetRealHeight(3),
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(titleView);
|
var btnTitleText = new Button()
|
{
|
X = Application.GetRealWidth(16),
|
Width = Application.GetRealWidth(100),
|
Text = "选择模式",
|
TextSize = 16,
|
TextColor = CSS.CSS_Color.FirstLevelTitleColor,
|
IsBold = true,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
titleView.AddChidren(btnTitleText);
|
|
#region 制冷
|
var coolView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = titleView.Bottom,
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(coolView);
|
coolView.AddChidren(new Button
|
{
|
Width = Application.GetRealWidth(112),
|
Gravity = Gravity.CenterHorizontal,
|
Height = 1,
|
BackgroundColor = CSS.CSS_Color.DividingLineColor,
|
});
|
IconButton coolIconButton = new IconButton("FunctionIcon/Acst/grey/ModeCoolIcon.png", $"FunctionIcon/Acst/{imageFolder}/ModeCoolIcon.png",
|
Language.StringByID(StringId.Cool),curColor, function.GetAttrState(AcstParent_AttrEnum.mode.ToString()) == "cool");
|
coolIconButton.Click(()=> {
|
dialog.Close();
|
btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeCoolIcon2.png";
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add(AcstParent_AttrEnum.mode.ToString(), AcstParent_Attr_ModeValueEnum.cool.ToString());
|
Control.Ins.SendWriteCommand(function, d);
|
}) { IsBackground = true }.Start();
|
});
|
coolView.AddChidren(coolIconButton);
|
#endregion
|
|
|
#region 制热
|
var heatView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = coolView.Bottom,
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(heatView);
|
heatView.AddChidren(new Button
|
{
|
Width = Application.GetRealWidth(112),
|
Gravity = Gravity.CenterHorizontal,
|
Height = 1,
|
BackgroundColor = CSS.CSS_Color.DividingLineColor,
|
});
|
IconButton heatIconButton = new IconButton("FunctionIcon/Acst/grey/ModeHeatIcon.png", $"FunctionIcon/Acst/{imageFolder}/ModeHeatIcon.png",
|
Language.StringByID(StringId.Heat), curColor, function.GetAttrState(AcstParent_AttrEnum.mode.ToString()) == "heat");
|
heatIconButton.Click(() => {
|
dialog.Close();
|
btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeHeatIcon2.png";
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add("mode", "heat");
|
Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
});
|
heatView.AddChidren(heatIconButton);
|
#endregion
|
|
#region 除湿
|
var dehumiView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = heatView.Bottom,
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(dehumiView);
|
dehumiView.AddChidren(new Button
|
{
|
Width = Application.GetRealWidth(112),
|
Gravity = Gravity.CenterHorizontal,
|
Height = 1,
|
BackgroundColor = CSS.CSS_Color.DividingLineColor,
|
});
|
IconButton dehumiIconButton = new IconButton("FunctionIcon/Acst/grey/ModeDeHumiIcon.png", $"FunctionIcon/Acst/{imageFolder}/ModeDeHumiIcon.png",
|
Language.StringByID(StringId.Humidity), curColor, function.GetAttrState(AcstParent_AttrEnum.mode.ToString()) == AcstParent_Attr_ModeValueEnum.dry.ToString());
|
dehumiIconButton.Click(() => {
|
btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeDeHumiIcon2.png";
|
dialog.Close();
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add("mode", AcstParent_Attr_ModeValueEnum.dry.ToString());
|
Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
});
|
dehumiView.AddChidren(dehumiIconButton);
|
#endregion
|
|
#region 通风
|
var fanView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = dehumiView.Bottom,
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(fanView);
|
fanView.AddChidren(new Button
|
{
|
Width = Application.GetRealWidth(112),
|
Gravity = Gravity.CenterHorizontal,
|
Height = 1,
|
BackgroundColor = CSS.CSS_Color.DividingLineColor,
|
});
|
IconButton fanIconButton = new IconButton("FunctionIcon/Acst/grey/ModeFanIcon.png", $"FunctionIcon/Acst/{imageFolder}/ModeFanIcon.png",
|
Language.StringByID(StringId.Ventilated), curColor, function.GetAttrState(AcstParent_AttrEnum.mode.ToString()) == AcstParent_Attr_ModeValueEnum.fan.ToString());
|
fanIconButton.Click(() => {
|
btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeFanIcon2.png";
|
dialog.Close();
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add("mode", AcstParent_Attr_ModeValueEnum.fan.ToString());
|
Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
});
|
fanView.AddChidren(fanIconButton);
|
#endregion
|
|
#region 制热除湿
|
var heatHumiView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = fanView.Bottom,
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(heatHumiView);
|
heatHumiView.AddChidren(new Button
|
{
|
Gravity = Gravity.CenterHorizontal,
|
Width = Application.GetRealWidth(112),
|
Height = 1,
|
BackgroundColor = CSS.CSS_Color.DividingLineColor,
|
});
|
IconButton heatHumiIconButton = new IconButton("FunctionIcon/Acst/grey/ModeHeatHumiIcon.png", $"FunctionIcon/Acst/{imageFolder}/ModeHeatHumiIcon.png",
|
"制热除湿", curColor, function.GetAttrState(AcstParent_AttrEnum.mode.ToString()) == AcstParent_Attr_ModeValueEnum.heat_humidity.ToString());
|
heatHumiIconButton.Click(() => {
|
btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeHeatHumiIcon2.png";
|
dialog.Close();
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add("mode", AcstParent_Attr_ModeValueEnum.heat_humidity.ToString());
|
Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
});
|
heatHumiView.AddChidren(heatHumiIconButton);
|
#endregion
|
|
#region 加湿
|
var humiView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = heatHumiView.Bottom,
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(humiView);
|
humiView.AddChidren(new Button
|
{
|
Width = Application.GetRealWidth(112),
|
Gravity = Gravity.CenterHorizontal,
|
Height = 1,
|
BackgroundColor = CSS.CSS_Color.DividingLineColor,
|
});
|
IconButton humiIconButton = new IconButton("FunctionIcon/Acst/grey/ModeHumiIcon.png", $"FunctionIcon/Acst/{imageFolder}/ModeHumiIcon.png",
|
"加湿", curColor, function.GetAttrState(AcstParent_AttrEnum.mode.ToString()) == AcstParent_Attr_ModeValueEnum.humidity.ToString());
|
humiIconButton.Click(() => {
|
btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeHumiIcon2.png";
|
dialog.Close();
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add("mode", AcstParent_Attr_ModeValueEnum.humidity.ToString());
|
Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
});
|
humiView.AddChidren(humiIconButton);
|
#endregion
|
|
dialog.Show();
|
};
|
|
btnPowerControl = new Button()
|
{
|
Gravity = Gravity.Center,
|
Width = Application.GetRealWidth(38),
|
Height = Application.GetRealWidth(38),
|
UnSelectedImagePath = "FunctionIcon/Acst/grey/PowerOffIcon.png",
|
SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/PowerIcon.png",
|
TextAlignment = TextAlignment.Center,
|
IsSelected = function.trait_on_off.state == "on"
|
};
|
bottomView.AddChidren(btnPowerControl);
|
btnPowerControl.MouseUpEventHandler = (sender, e) => {
|
btnPowerControl.IsSelected = !btnPowerControl.IsSelected;
|
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add("onoff", btnPowerControl.IsSelected ? "on" : "off");
|
Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
};
|
|
|
btnWorkSceneControl = new Button()
|
{
|
Gravity = Gravity.CenterVertical,
|
X = Application.GetRealWidth(249),
|
Width = Application.GetRealWidth(38),
|
Height = Application.GetRealWidth(38),
|
UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneSleepIcon2.png",
|
SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneSleepIcon2.png",
|
TextAlignment = TextAlignment.Center,
|
IsSelected = function.trait_on_off.state == "on"
|
};
|
bottomView.AddChidren(btnWorkSceneControl);
|
|
|
btnWorkSceneControl.MouseUpEventHandler = (sender2, e2) =>
|
{
|
if (function.trait_on_off.state == "off")
|
{
|
return;
|
}
|
Dialog dialog = new Dialog();
|
|
var dialogView = new FrameLayout();
|
dialog.AddChidren(dialogView);
|
dialogView.MouseUpEventHandler = (sender, e) => {
|
dialog.Close();
|
};
|
|
var dialogContentView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(194),
|
Y = Application.GetRealHeight(419),
|
Width = Application.GetRealWidth(148),
|
Height = Application.GetRealHeight(191),
|
BackgroundImagePath = "FunctionIcon/Acst/BgChooseScene.png",
|
};
|
dialogView.AddChidren(dialogContentView);
|
|
var titleView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = Application.GetRealHeight(3),
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(titleView);
|
var btnTitleText = new Button()
|
{
|
X = Application.GetRealWidth(16),
|
Width = Application.GetRealWidth(100),
|
Text = "选择场景",
|
TextSize = 16,
|
TextColor = CSS.CSS_Color.FirstLevelTitleColor,
|
IsBold = true,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
titleView.AddChidren(btnTitleText);
|
|
#region 在家
|
var atHomeView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = titleView.Bottom,
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(atHomeView);
|
atHomeView.AddChidren(new Button
|
{
|
Width = Application.GetRealWidth(112),
|
Gravity = Gravity.CenterHorizontal,
|
Height = 1,
|
BackgroundColor = CSS.CSS_Color.DividingLineColor,
|
});
|
IconButton atHomeIconButton = new IconButton("FunctionIcon/Acst/grey/SceneAtHome.png", $"FunctionIcon/Acst/{imageFolder}/SceneAtHome.png",
|
"在家", curColor, function.GetAttrState(AcstParent_AttrEnum.scene.ToString()) == AcstParent_Attr_SceneValueEnum.at_home.ToString());
|
atHomeIconButton.Click(() => {
|
btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneAtHome2.png";
|
dialog.Close();
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add(AcstParent_AttrEnum.scene.ToString(), AcstParent_Attr_SceneValueEnum.at_home.ToString());
|
Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
});
|
atHomeView.AddChidren(atHomeIconButton);
|
#endregion
|
|
|
#region 离家
|
var awayHomeView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = atHomeView.Bottom,
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(awayHomeView);
|
awayHomeView.AddChidren(new Button
|
{
|
Width = Application.GetRealWidth(112),
|
Gravity = Gravity.CenterHorizontal,
|
Height = 1,
|
BackgroundColor = CSS.CSS_Color.DividingLineColor,
|
});
|
IconButton awayHomeIconButton = new IconButton("FunctionIcon/Acst/grey/SceneAwayHomeIcon.png", $"FunctionIcon/Acst/{imageFolder}/SceneAwayHomeIcon.png",
|
"离家", curColor, function.GetAttrState(AcstParent_AttrEnum.scene.ToString()) == AcstParent_Attr_SceneValueEnum.leave_home.ToString());
|
awayHomeIconButton.Click(() => {
|
btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneAwayHomeIcon2.png";
|
dialog.Close();
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add("scene", "leave_home");
|
Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
});
|
awayHomeView.AddChidren(awayHomeIconButton);
|
#endregion
|
|
#region 睡眠
|
var sleepView = new FrameLayout()
|
{
|
X = Application.GetRealWidth(2),
|
Y = awayHomeView.Bottom,
|
Width = Application.GetRealWidth(144),
|
Height = Application.GetRealHeight(44),
|
};
|
dialogContentView.AddChidren(sleepView);
|
sleepView.AddChidren(new Button
|
{
|
Height = 1,
|
Gravity = Gravity.CenterHorizontal,
|
Width = Application.GetRealWidth(112),
|
BackgroundColor = CSS.CSS_Color.DividingLineColor,
|
});
|
IconButton sleepIconButton = new IconButton("FunctionIcon/Acst/grey/SceneSleepIcon.png", $"FunctionIcon/Acst/{imageFolder}/SceneSleepIcon.png",
|
Language.StringByID(StringId.Humidity), curColor, function.GetAttrState(AcstParent_AttrEnum.scene.ToString()) == AcstParent_Attr_SceneValueEnum.sleep.ToString());
|
sleepIconButton.Click(() => {
|
btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneSleepIcon2.png";
|
dialog.Close();
|
new System.Threading.Thread(() => {
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add("scene", "sleep");
|
Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
});
|
sleepView.AddChidren(sleepIconButton);
|
#endregion
|
dialog.Show();
|
};
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
InitGetWeatherAction();
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
/// 传感器数据组件
|
/// </summary>
|
public class SensorDiyView
|
{
|
private FrameLayout contentView;
|
private Button btnValue;
|
private Button btnText;
|
public string Tag;
|
|
public SensorDiyView(HorizontalScrolViewLayout view,uint color,string value,string text,int setWidth = 60)
|
{
|
if (string.IsNullOrEmpty(value))
|
{
|
value = "--";
|
}
|
|
///默认Tag 为传进来的Text
|
Tag = text;
|
|
contentView = new FrameLayout()
|
{
|
Width = Application.GetRealWidth(setWidth),
|
Height = Application.GetRealHeight(72),
|
};
|
view.AddChidren(contentView);
|
|
btnValue = new Button()
|
{
|
Y = Application.GetRealHeight(10),
|
Height = Application.GetRealHeight(72 - 37),
|
TextAlignment = TextAlignment.Center,
|
TextColor = color,
|
TextSize = 20,
|
Text = value,
|
};
|
contentView.AddChidren(btnValue);
|
|
btnText = new Button()
|
{
|
Y = Application.GetRealHeight(72 - 37),
|
Height = Application.GetRealHeight(37),
|
TextAlignment = TextAlignment.Center,
|
TextColor = 0xFF949AA5,
|
TextSize = 12,
|
Text = text,
|
};
|
contentView.AddChidren(btnText);
|
}
|
|
public void UpdateValue(string value)
|
{
|
btnText.Text = value;
|
}
|
}
|
|
/// <summary>
|
/// 子控卡片组件
|
/// </summary>
|
public class AcstSubControlView
|
{
|
public TextButton btnSubTempValues;
|
public TextButton btnSubHumidityValues;
|
public Button btnSubPower;
|
public string Tag;
|
|
public AcstSubControlView(Function sub, HorizontalScrolViewLayout subFunctionListView,string imageFolder)
|
{
|
Tag = sub.sid;
|
|
var subFunctionView = new FrameLayout()
|
{
|
Width = Application.GetRealWidth(177),
|
Height = Application.GetRealHeight(93),
|
BackgroundImagePath = "FunctionIcon/Acst/grey/BgSubControlView.png",
|
};
|
subFunctionListView.AddChidren(subFunctionView);
|
|
var btnRoomInfo = new Button()
|
{
|
X = Application.GetRealWidth(18 + 7),
|
Y = Application.GetRealHeight(11),
|
Height = Application.GetRealHeight(40),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = 0xFF1b3053,
|
TextSize = 13,
|
Text = sub.GetRoomListName(),
|
};
|
subFunctionView.AddChidren(btnRoomInfo);
|
|
var btnSubTempIcon = new Button()
|
{
|
X = Application.GetRealWidth(16 + 7),
|
Y = Application.GetRealHeight(47 + 11),
|
Width = Application.GetMinRealAverage(11),
|
Height = Application.GetMinRealAverage(11),
|
UnSelectedImagePath = "FunctionIcon/CAC/HvacCacTempIcon.png",
|
};
|
subFunctionView.AddChidren(btnSubTempIcon);
|
|
btnSubTempValues = new TextButton()
|
{
|
X = btnSubTempIcon.Right,
|
Y = Application.GetRealHeight(45 + 11),
|
Height = Application.GetRealHeight(14),
|
Width = Application.GetRealWidth(22),
|
TextColor = 0xFF1b3035,
|
TextSize = 10,
|
Text = sub.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()) + "°C",
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
subFunctionView.AddChidren(btnSubTempValues);
|
|
Button btnSubHumidityIcon = new Button()
|
{
|
X = btnSubTempValues.Right + Application.GetRealWidth(5),
|
Y = Application.GetRealHeight(47 + 11),
|
Width = Application.GetMinRealAverage(11),
|
Height = Application.GetMinRealAverage(11),
|
UnSelectedImagePath = "FunctionIcon/CAC/HvacCacHumidityIcon.png",
|
};
|
subFunctionView.AddChidren(btnSubHumidityIcon);
|
|
btnSubHumidityValues = new TextButton()
|
{
|
X = btnSubHumidityIcon.Right,
|
Y = Application.GetRealHeight(45 + 11),
|
Height = Application.GetRealHeight(14),
|
Width = Application.GetRealWidth(22),
|
TextColor = 0xFF1b3053,
|
TextSize = 10,
|
Text = sub.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%",
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
subFunctionView.AddChidren(btnSubHumidityValues);
|
|
btnSubPower = new Button()
|
{
|
X = Application.GetRealWidth(121 + 7),
|
Gravity = Gravity.CenterVertical,
|
Width = Application.GetRealWidth(28),
|
Height = Application.GetRealWidth(28),
|
UnSelectedImagePath = "FunctionIcon/Acst/grey/PowerOffIcon.png",
|
SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/PowerIcon.png",
|
TextAlignment = TextAlignment.Center,
|
};
|
subFunctionView.AddChidren(btnSubPower);
|
btnSubPower.MouseUpEventHandler = (sender, e) => {
|
btnSubPower.IsSelected = !btnSubPower.IsSelected;
|
string onoff = btnSubPower.IsSelected ? "on" : "off";
|
Dictionary<string, string> d = new Dictionary<string, string>();
|
d.Add(FunctionAttributeKey.OnOff, onoff);
|
Control.Ins.SendWriteCommand(sub, d);
|
};
|
|
EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
|
var page = new AcstSubPage(sub,imageFolder);
|
MainPage.BasePageView.AddChidren(page);
|
page.LoadPage();
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
};
|
|
btnRoomInfo.MouseUpEventHandler = eventHandler;
|
btnSubHumidityIcon.MouseUpEventHandler = eventHandler;
|
btnSubHumidityValues.MouseUpEventHandler = eventHandler;
|
btnSubPower.MouseUpEventHandler = eventHandler;
|
btnSubTempIcon.MouseUpEventHandler = eventHandler;
|
btnSubTempValues.MouseUpEventHandler = eventHandler;
|
subFunctionView.MouseUpEventHandler = eventHandler;
|
}
|
}
|
|
|
public class IconButton : FrameLayout
|
{
|
FrameLayout view;
|
|
public Button btnIcon;
|
|
public Button btnText;
|
|
public IconButton(string iconPath,string iconPath2,string text,uint color,bool isSelect)
|
{
|
view = this;
|
view.Width = Application.GetRealWidth(144);
|
view.Height = Application.GetRealHeight(44);
|
|
btnIcon = new Button()
|
{
|
X = Application.GetRealWidth(16),
|
Gravity = Gravity.CenterVertical,
|
Width = Application.GetRealWidth(24),
|
Height = Application.GetRealWidth(24),
|
UnSelectedImagePath = iconPath,
|
SelectedImagePath = iconPath2,
|
IsSelected = isSelect,
|
};
|
view.AddChidren(btnIcon);
|
|
btnText = new Button()
|
{
|
X = Application.GetRealWidth(52),
|
Width = Application.GetRealWidth(90),
|
TextAlignment = TextAlignment.CenterLeft,
|
Text = text,
|
TextSize = 14,
|
TextColor = CSS.CSS_Color.FirstLevelTitleColor,
|
SelectedTextColor = color,
|
IsSelected = isSelect,
|
};
|
view.AddChidren(btnText);
|
|
|
}
|
|
|
public void Click(Action action)
|
{
|
view.MouseUpEventHandler = (sender, e) => {
|
action();
|
};
|
btnText.MouseUpEventHandler = (sender, e) => {
|
action();
|
};
|
btnIcon.MouseUpEventHandler = (sender, e) => {
|
action();
|
};
|
}
|
}
|
}
|