using System;
using System.Collections.Generic;
using HDL_ON.Entity;
using Shared;
namespace HDL_ON.UI
{
public partial class HomePage : FrameLayout
{
#region 控件列表
static FrameLayout bodyView;
///
/// 顶部信息区域
///
FrameLayout topView;
///
///住宅名称显示
///
Button btnResidenceName;
///
/// 环境质量显示区域
///
FrameLayout environmentalView;
///
/// 当前温度信息
///
Button btnTempValues;
///
/// 当前湿度信息
///
Button btnHumidityValues;
///
/// 当前pm2.5状态
///
Button btnPm25Values;
///
/// 灯光区域集合
///
static Dictionary LightViews;
///
/// 空调区域集合
///
static Dictionary AcViews;
///
/// 窗帘区域集合
///
static Dictionary CurtainViews;
#endregion
public HomePage()
{
bodyView = this;
bodyView.BackgroundColor = CSS.CSS_Color.BackgroundColor;
}
public void LoadPage()
{
#region topView
topView = new FrameLayout()
{
Height = Application.GetRealHeight(216),
BackgroundImagePath = DB_ResidenceData.residenceData.residenceImage,
};
bodyView.AddChidren(topView);
Button btnTop;
btnTop = new Button() {
BackgroundColor = 0x33000000,
};
topView.AddChidren(btnTop);
btnResidenceName = new Button()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(32),
Width = Application.GetRealWidth(200),
Height = Application.GetRealHeight(33),
TextColor = CSS.CSS_Color.MainBackgroundColor,
TextSize = CSS.CSS_FontSize.EmphasisFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
Text = DB_ResidenceData.residenceData.residenceName,
IsBold = true
};
topView.AddChidren(btnResidenceName);
environmentalView = new FrameLayout()
{
Y = Application.GetRealHeight(1) + btnResidenceName.Bottom,
Height = Application.GetRealHeight(32),
};
topView.AddChidren(environmentalView);
#region 环境数据
Button btnTempIcon = new Button()
{
X = Application.GetRealWidth(12),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
UnSelectedImagePath = "Public/InfoIcon/TempIcon.png",
};
environmentalView.AddChidren(btnTempIcon);
btnTempValues = new Button()
{
X = btnTempIcon.Right + Application.GetRealWidth(4),
Width = Application.GetRealWidth(30),
Gravity = Gravity.CenterVertical,
TextColor = CSS.CSS_Color.MainBackgroundColor,
TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
Text = "--°",
TextAlignment = TextAlignment.CenterLeft,
};
environmentalView.AddChidren(btnTempValues);
Button btnHumidityIcon = new Button()
{
X = btnTempValues.Right + Application.GetRealWidth(2),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
UnSelectedImagePath = "Public/InfoIcon/HumidityIcon.png",
};
environmentalView.AddChidren(btnHumidityIcon);
btnHumidityValues = new Button()
{
X = btnHumidityIcon.Right + Application.GetRealWidth(4),
Width = Application.GetRealWidth(30),
Gravity = Gravity.CenterVertical,
TextColor = CSS.CSS_Color.MainBackgroundColor,
TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
Text = "--%",
TextAlignment = TextAlignment.CenterLeft,
};
environmentalView.AddChidren(btnHumidityValues);
Button btnPm25Icon = new Button()
{
X = btnHumidityValues.Right + Application.GetRealWidth(2),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
UnSelectedImagePath = "Public/InfoIcon/Pm25Icon.png",
};
environmentalView.AddChidren(btnPm25Icon);
btnPm25Values = new Button()
{
X = btnPm25Icon.Right + Application.GetRealWidth(4),
Width = Application.GetRealWidth(30),
Gravity = Gravity.CenterVertical,
TextColor = CSS.CSS_Color.MainBackgroundColor,
TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
Text = "--",
TextAlignment = TextAlignment.CenterLeft,
};
environmentalView.AddChidren(btnPm25Values);
#endregion
#region msg
FrameLayout msgView;
msgView = new FrameLayout()
{
Y = Application.GetRealHeight(164),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(28),
};
topView.AddChidren(msgView);
var btngb = new Button()
{
BackgroundColor = CSS.CSS_Color.MainColor,//0x3F4484F4,//
Alpha = 0.4f,
};
msgView.AddChidren(btngb);
Button btnMsgIcon;
btnMsgIcon = new Button()
{
X = Application.GetRealWidth(12),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(24),
Height = Application.GetMinRealAverage(24),
UnSelectedImagePath = "Collection/MsgIcon.png",
SelectedImagePath = "Collection/MsgIconTip.png",
};
msgView.AddChidren(btnMsgIcon);
Button btnMsg;
btnMsg = new Button()
{
X = Application.GetRealWidth(10) + btnMsgIcon.Right,
Width = Application.GetRealWidth(240),
Text = "无",
TextColor = CSS.CSS_Color.MainBackgroundColor,
TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
};
msgView.AddChidren(btnMsg);
Button btnMsgTime;
btnMsgTime = new Button()
{
X = Application.GetRealWidth(299),
Width = Application.GetRealWidth(44),
Text = "00:00",
TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
};
msgView.AddChidren(btnMsgTime);
#endregion
#endregion
#region 功能场景切换
FrameLayout changeView;
changeView = new FrameLayout()
{
Y = Application.GetRealHeight(20) + topView.Bottom,
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(230),
Height = Application.GetRealHeight(62),
BackgroundImagePath = "Collection/ChangeViewbg.png",
};
bodyView.AddChidren(changeView);
Button btnChangeFunction;
btnChangeFunction = new Button()
{
Width = Application.GetRealWidth(114),
TextID = StringId.Functions,
SelectedTextColor = CSS.CSS_Color.MainColor,
TextColor = CSS.CSS_Color.PromptingColor1,
//TextSize = CSS.CSS_FontSize.TextFontSize,
TextSize = CSS.CSS_FontSize.HeadlineFontSize,
TextAlignment = TextAlignment.Center,
IsSelected = true,
IsBold = true
};
changeView.AddChidren(btnChangeFunction);
Button btnLine = new Button()
{
X = btnChangeFunction.Right,
Gravity = Gravity.CenterVertical,
Width = Application.GetRealWidth(1),
Height = Application.GetRealHeight(14),
BackgroundColor = CSS.CSS_Color.PromptingColor1,
};
changeView.AddChidren(btnLine);
Button btnChangeScene;
btnChangeScene = new Button()
{
X = btnLine.Right,
Width = Application.GetRealWidth(114),
TextID = StringId.Scenes,
SelectedTextColor = CSS.CSS_Color.MainColor,
TextColor = CSS.CSS_Color.PromptingColor1,
TextSize = CSS.CSS_FontSize.TextFontSize,
//TextSize = CSS.CSS_FontSize.HeadlineFontSize,
TextAlignment = TextAlignment.Center,
};
changeView.AddChidren(btnChangeScene);
#endregion
#region ContextView
VerticalScrolViewLayout contextView;
contextView = new VerticalScrolViewLayout()
{
Y = changeView.Bottom + Application.GetRealHeight(10),
Height = Application.GetRealHeight(310 + 30), //20为超出部分
};
bodyView.AddChidren(contextView);
LightViews = new Dictionary();
AcViews = new Dictionary();
CurtainViews = new Dictionary();
var rowView = new FrameLayout();
try
{
int index = 0;
foreach (var function in DB_ResidenceData.residenceData.functions.functions)
{
if (!function.collection)
continue;
if (index % 2 == 0)
{
rowView = new FrameLayout()
{
Height = Application.GetRealHeight(140),
};
contextView.AddChidren(rowView);
}
var functionView_X = Application.GetRealWidth((182 + 7) * (index % 2));
if (index % 2 == 0)
{
functionView_X += 7;
}
var functionView = new FrameLayout()
{
X = functionView_X,
Width = Application.GetRealWidth(182),
Height = Application.GetRealHeight(140),
Tag = function.sid
};
rowView.AddChidren(functionView);
var btnbg = new Button()
{
UnSelectedImagePath = "Collection/Functionbg.png",
SelectedImagePath = "Collection/FunctionOnbg.png",
};
functionView.AddChidren(btnbg);
switch (function.functionCategory)
{
case FunctionType.Light:
#region 灯光 Light
LightViews.Add(function.sid, functionView);
#endregion
break;
case FunctionType.Curtain:
#region 窗帘
CurtainViews.Add(function.sid, functionView);
#endregion
break;
case FunctionType.AC:
#region 空调 AC
AcViews.Add(function.sid, functionView);
#endregion
break;
}
LoadControlView(functionView, function);
index++;
}
}
catch (Exception ex)
{
MainPage.Log("homepage erorr : " + ex.Message);
}
contextView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
#endregion
DB_ResidenceData.residenceData.RefreshResidenceFunctionStatus();
}
///
/// 加载控制卡片
///
void LoadControlView(FrameLayout view,Function function)
{
try
{
Button btnIcon;
btnIcon = new Button()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(16),
Width = Application.GetMinRealAverage(32),
Height = Application.GetMinRealAverage(32),
};
view.AddChidren(btnIcon);
Button btnName;
btnName = new Button()
{
X = Application.GetRealWidth(21),
Y = Application.GetRealHeight(10) + btnIcon.Bottom,
Text = function.name,
IsBold = true,
TextColor = CSS.CSS_Color.FirstLevelTitleColor,
TextSize = CSS.CSS_FontSize.TextFontSize,
Height = Application.GetRealHeight(24),
Width = Application.GetRealWidth(140),
TextAlignment = TextAlignment.CenterLeft,
};
view.AddChidren(btnName);
Button btnZone;
btnZone = new Button()
{
X = Application.GetRealWidth(21),
Y = btnName.Bottom,
Height = Application.GetRealHeight(18),
Width = Application.GetRealWidth(113),
TextColor = CSS.CSS_Color.PromptingColor1,
TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel,
TextAlignment = TextAlignment.CenterLeft,
SelectedTextColor = CSS.CSS_Color.MainBackgroundColor,
};
view.AddChidren(btnZone);
foreach (var roomId in function.roomIdList)
{
var room = DB_ResidenceData.residenceData.rooms.Find((obj) => obj.sid == roomId);
if (room != null)
{
btnZone.Text = room.floor + " " + room.name;
}
else
{
btnZone.Text = "";
}
}
Button btnState;
btnState = new Button()
{
X = Application.GetRealWidth(21),
Y = btnZone.Bottom,
Height = Application.GetRealHeight(18),
Width = Application.GetRealWidth(113),
SelectedTextColor = CSS.CSS_Color.MainBackgroundColor,
TextColor = 0x00000000,
TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel,
TextAlignment = TextAlignment.CenterLeft,
Tag = "state",
Text = function.lastState
};
view.AddChidren(btnState);
Button btnCollection;
btnCollection = new Button()
{
X = Application.GetRealWidth(130),
Y = Application.GetRealHeight(16),
Width = Application.GetMinRealAverage(32),
Height = Application.GetMinRealAverage(32),
SelectedImagePath = "Collection/CollectionWhiteIcon.png",
UnSelectedImagePath = "Collection/CollectionIcon.png",
};
view.AddChidren(btnCollection);
btnCollection.MouseUpEventHandler += (sender, e) => {
//btnCollection.IsSelected = !btnCollection.IsSelected;
};
Button btnSwitch;
btnSwitch = new Button()
{
X = Application.GetRealWidth(122),
Y = Application.GetRealHeight(92),
Width = Application.GetMinRealAverage(48),
Height = Application.GetMinRealAverage(36),
UnSelectedImagePath = "Collection/Switch.png",
SelectedImagePath = "Collection/SwitchOn.png",
};
view.AddChidren(btnSwitch);
switch (function.functionCategory)
{
case FunctionType.Light:
#region 灯光 Light
btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightIcon.png";
btnIcon.SelectedImagePath = "FunctionIcon/Light/LightOnIcon.png";
LoadSwitchEvent(function, btnSwitch, view);
//btnCollection.IsSelected = btnIcon.IsSelected = btnName.IsSelected = btnZone.IsSelected = btnSwitch.IsSelected = (function as Light).state == 1;
UpdataLightView(function as Light);
//btnSwitch.MouseUpEventHandler += (sender, e) =>
//{
// var curState = !btnSwitch.IsSelected;
// for (int i = 0; i < view.ChildrenCount; i++)
// {
// if (view.GetChildren(i).GetType() == typeof(Button))
// {
// var btn = view.GetChildren(i) as Button;
// btn.IsSelected = curState;
// }
// }
// new System.Threading.Thread(() =>
// {
// var light = function as Light;
// light.state = btnSwitch.IsSelected ? 1 : 0;
// Control.Send("write", function, 3);
// })
// { IsBackground = true }.Start();
//};
#endregion
break;
case FunctionType.Curtain:
#region 窗帘
btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
btnIcon.SelectedImagePath = "FunctionIcon/Curtain/CurtainOnIcon.png";
#endregion
break;
case FunctionType.AC:
#region 空调 AC
btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png";
btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png";
#endregion
break;
case FunctionType.FloorHeating:
#region 地热
btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png";
btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png";
#endregion
break;
}
}catch(Exception ex)
{
MainPage.Log("homepage LoadControlView error : " + ex.Message);
}
}
}
}