using System;
|
using System.Collections.Generic;
|
using HDL_ON.Entity;
|
using HDL_ON.UI.CSS;
|
using Shared;
|
|
namespace HDL_ON.UI
|
{
|
public partial class HomePage : FrameLayout
|
{
|
|
#region 控件列表
|
static FrameLayout bodyView;
|
/// <summary>
|
/// 顶部信息区域
|
/// </summary>
|
FrameLayout topView;
|
/// <summary>
|
///住宅名称显示
|
/// </summary>
|
Button btnResidenceName;
|
/// <summary>
|
/// 环境质量显示区域
|
/// </summary>
|
FrameLayout environmentalView;
|
/// <summary>
|
/// 当前温度信息
|
/// </summary>
|
Button btnTempValues;
|
/// <summary>
|
/// 当前湿度信息
|
/// </summary>
|
Button btnHumidityValues;
|
/// <summary>
|
/// 当前pm2.5状态
|
/// </summary>
|
Button btnPm25Values;
|
/// <summary>
|
/// 切换显示功能类型区域
|
/// </summary>
|
FrameLayout changeView;
|
/// <summary>
|
/// 切换显示设备功能按钮
|
/// </summary>
|
Button btnChangeFunction;
|
/// <summary>
|
/// 切换显示场景功能按钮
|
/// </summary>
|
Button btnChangeScene;
|
/// <summary>
|
/// 功能显示区域
|
/// </summary>
|
PageLayout contentView;
|
/// <summary>
|
/// 设备功能控制区域
|
/// </summary>
|
VerticalScrolViewLayout deviceFunctionView;
|
/// <summary>
|
/// 场景功能控制区域
|
/// </summary>
|
VerticalScrolViewLayout sceneFunctionView;
|
/// <summary>
|
/// 灯光区域集合
|
/// </summary>
|
static Dictionary<string, FrameLayout> LightViews;
|
/// <summary>
|
/// 空调区域集合
|
/// </summary>
|
static Dictionary<string, FrameLayout> AcViews;
|
/// <summary>
|
/// 窗帘区域集合
|
/// </summary>
|
static Dictionary<string, FrameLayout> CurtainViews;
|
#endregion
|
|
#region 区域变量
|
/// <summary>
|
/// 当前显示对控制类型是否是设备功能控制
|
/// </summary>
|
bool CurShowTypeIsFunction = true;
|
#endregion
|
|
public HomePage()
|
{
|
bodyView = this;
|
bodyView.BackgroundColor = 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 = CSS_Color.DialogTransparentColor2,
|
};
|
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 功能场景切换
|
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);
|
|
btnChangeFunction = new Button()
|
{
|
Width = Application.GetRealWidth(114),
|
TextID = StringId.Functions,
|
SelectedTextColor = CSS.CSS_Color.MainColor,
|
TextColor = CSS.CSS_Color.PromptingColor1,
|
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);
|
|
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,
|
TextAlignment = TextAlignment.Center,
|
};
|
changeView.AddChidren(btnChangeScene);
|
|
#endregion
|
|
#region ContextView
|
contentView = new PageLayout()
|
{
|
Y = changeView.Bottom + Application.GetRealHeight(10),
|
Height = Application.GetRealHeight(310 + 30), //20为超出部分
|
};
|
bodyView.AddChidren(contentView);
|
|
LightViews = new Dictionary<string, FrameLayout>();
|
AcViews = new Dictionary<string, FrameLayout>();
|
CurtainViews = new Dictionary<string, FrameLayout>();
|
|
deviceFunctionView = new VerticalScrolViewLayout();
|
contentView.AddChidren(deviceFunctionView);
|
LoadDeviceFunctionControlZone();
|
sceneFunctionView = new VerticalScrolViewLayout();
|
contentView.AddChidren(sceneFunctionView);
|
LoadSceneFunctionControlZone();
|
contentView.PageIndex = 0;
|
|
#endregion
|
|
LoadEvent_ChangeShowedFunctionType();
|
//刷新功能状态
|
DB_ResidenceData.residenceData.RefreshResidenceFunctionStatus();
|
}
|
|
/// <summary>
|
/// 加载设备功能显示区域
|
/// </summary>
|
void LoadDeviceFunctionControlZone()
|
{
|
#region ContextView
|
deviceFunctionView.RemoveAll();
|
LightViews.Clear();
|
AcViews.Clear();
|
CurtainViews.Clear();
|
var rowView = new FrameLayout();
|
try
|
{
|
int index = 0;
|
foreach (var function in DB_ResidenceData.residenceData.functionList.GetAllDeviceFunctionList())
|
{
|
if (!function.collection)
|
continue;
|
if (function.roomIdList.Count == 0)//如何在房间已经移除了这个功能,则收藏界面也不会再显示
|
{
|
function.collection = false;
|
continue;
|
}
|
if (index % 2 == 0)
|
{
|
rowView = new FrameLayout()
|
{
|
Height = Application.GetRealWidth(140),
|
};
|
deviceFunctionView.AddChidren(rowView);
|
}
|
var functionView_X = Application.GetRealWidth((182 + 7) * (index % 2));
|
if (index % 2 == 0)
|
{
|
functionView_X += Application.GetRealWidth(7);
|
}
|
var functionView = new FrameLayout()
|
{
|
X = functionView_X,
|
Width = Application.GetRealWidth(182),
|
Height = Application.GetRealWidth(140),
|
Radius = (uint)Application.GetRealWidth(12),
|
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;
|
}
|
LoadDeviceFunctionDiv(functionView, function);
|
index++;
|
}
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log("homepage erorr : " + ex.Message);
|
}
|
deviceFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
|
#endregion
|
|
}
|
/// <summary>
|
/// 加载场景功能显示区域
|
/// </summary>
|
void LoadSceneFunctionControlZone()
|
{
|
sceneFunctionView.RemoveAll();
|
var rowView = new FrameLayout();
|
try
|
{
|
int index = 0;
|
foreach (var function in DB_ResidenceData.residenceData.functionList.scenes)
|
{
|
if (!function.collection)
|
continue;
|
if (function.roomIdList.Count == 0)//如何在房间已经移除了这个功能,则收藏界面也不会再显示
|
{
|
function.collection = false;
|
continue;
|
}
|
if (index % 2 == 0)
|
{
|
sceneFunctionView.AddChidren(new Button() { Height = Application.GetRealHeight(7) });
|
rowView = new FrameLayout()
|
{
|
Height = Application.GetRealWidth(122),
|
};
|
sceneFunctionView.AddChidren(rowView);
|
sceneFunctionView.AddChidren(new Button() { Height = Application.GetRealHeight(7) });
|
}
|
var functionView_X = Application.GetRealWidth((16 + 164) * (index % 2) +16);
|
|
var functionView = new FrameLayout()
|
{
|
X = functionView_X,
|
Width = Application.GetRealWidth(164),
|
Height = Application.GetRealWidth(122),
|
Tag = function.sid,
|
BackgroundImagePath = (function as Scene).ImagePath,
|
};
|
rowView.AddChidren(functionView);
|
//functionView.Radius = (uint)Application.GetRealWidth(12);
|
//functionView.BorderColor = CSS_Color.BackgroundColor;
|
//functionView.BorderWidth = 1;
|
|
|
LoadSceneFunctionDiv(functionView, function);
|
index++;
|
}
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log("homepage erorr : " + ex.Message);
|
}
|
sceneFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
|
|
}
|
|
/// <summary>
|
/// 加载控制卡片
|
/// </summary>
|
void LoadDeviceFunctionDiv(FrameLayout view, Function function)
|
{
|
try
|
{
|
Button btnIcon;
|
btnIcon = new Button()
|
{
|
X = Application.GetRealWidth(16),
|
Y = Application.GetRealWidth(16),
|
Width = Application.GetMinRealAverage(32),
|
Height = Application.GetMinRealAverage(32),
|
};
|
view.AddChidren(btnIcon);
|
|
Button btnName;
|
btnName = new Button()
|
{
|
X = Application.GetRealWidth(21),
|
Y = Application.GetRealWidth(10) + btnIcon.Bottom,
|
Text = function.name,
|
IsBold = true,
|
TextColor = CSS.CSS_Color.FirstLevelTitleColor,
|
TextSize = CSS.CSS_FontSize.TextFontSize,
|
Height = Application.GetRealWidth(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.GetRealWidth(18),
|
Width = Application.GetRealWidth(113),
|
TextColor = CSS.CSS_Color.PromptingColor1,
|
TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel,
|
TextAlignment = TextAlignment.CenterLeft,
|
SelectedTextColor = CSS.CSS_Color.MainBackgroundColor,
|
Text = function.GetRoomListName()
|
};
|
view.AddChidren(btnZone);
|
|
Button btnState;
|
btnState = new Button()
|
{
|
X = Application.GetRealWidth(21),
|
Y = btnZone.Bottom,
|
Height = Application.GetRealWidth(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.GetRealWidth(16),
|
Width = Application.GetMinRealAverage(32),
|
Height = Application.GetMinRealAverage(32),
|
SelectedImagePath = "Collection/CollectionWhiteIcon.png",
|
UnSelectedImagePath = "Collection/CollectionIcon.png",
|
};
|
view.AddChidren(btnCollection);
|
|
Button btnSwitch;
|
btnSwitch = new Button()
|
{
|
X = Application.GetRealWidth(122),
|
Y = Application.GetRealWidth(92),
|
Width = Application.GetMinRealAverage(48),
|
Height = Application.GetMinRealAverage(36),
|
UnSelectedImagePath = "Public/Switch.png",
|
SelectedImagePath = "Public/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";
|
LoadRelaySwitchEvent(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);
|
}
|
}
|
|
|
/// <summary>
|
/// 加载控制卡片
|
/// </summary>
|
void LoadSceneFunctionDiv(FrameLayout view, Function function)
|
{
|
try
|
{
|
Button btnCoverd = new Button()
|
{
|
UnSelectedImagePath = "Collection/SceneCovered.png",
|
SelectedImagePath = "Collection/SceneCoveredOn.png",
|
//Width = Application.GetRealWidth(165),
|
};
|
view.AddChidren(btnCoverd);
|
btnCoverd.MouseDownEventHandler = (sender, e) => {
|
btnCoverd.IsSelected = true;
|
};
|
btnCoverd.MouseUpEventHandler = (sender, e) => {
|
new System.Threading.Thread(() => {
|
System.Threading.Thread.Sleep(200);
|
Application.RunOnMainThread(() => {
|
btnCoverd.IsSelected = false;
|
});
|
}) { IsBackground = true }.Start();
|
};
|
|
Button btnDelayIcon;
|
btnDelayIcon = new Button()
|
{
|
X = Application.GetRealWidth(12),
|
Y = Application.GetRealWidth(12),
|
Height = Application.GetRealWidth(24),
|
Width = Application.GetRealWidth(24),
|
UnSelectedImagePath = "FunctionIcon/Scene/DelayIcon.png"
|
};
|
view.AddChidren(btnDelayIcon);
|
|
Button btnName;
|
btnName = new Button()
|
{
|
X = Application.GetRealWidth(12),
|
Y = Application.GetRealWidth(68),
|
Width = Application.GetRealWidth(150),
|
Height = Application.GetRealHeight(24),
|
Text = function.name,
|
TextSize = CSS_FontSize.TextFontSize,
|
TextColor = CSS_Color.MainBackgroundColor,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
view.AddChidren(btnName);
|
|
Button btnZone;
|
btnZone = new Button()
|
{
|
X = Application.GetRealWidth(12),
|
Y = btnName.Bottom,
|
Height = Application.GetRealWidth(18),
|
Width = Application.GetRealWidth(113),
|
TextColor = CSS.CSS_Color.MainBackgroundColor,
|
TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel,
|
TextAlignment = TextAlignment.CenterLeft,
|
SelectedTextColor = CSS.CSS_Color.MainBackgroundColor,
|
Text = function.GetRoomListName(),
|
};
|
view.AddChidren(btnZone);
|
|
Button btnCollection;
|
btnCollection = new Button()
|
{
|
X = Application.GetRealWidth(116),
|
Y = Application.GetRealWidth(8),
|
Width = Application.GetMinRealAverage(32),
|
Height = Application.GetMinRealAverage(32),
|
SelectedImagePath = "Collection/CollectionWhiteIcon.png",
|
UnSelectedImagePath = "Collection/CollectionIcon.png",
|
};
|
view.AddChidren(btnCollection);
|
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log("homepage LoadControlView error : " + ex.Message);
|
}
|
}
|
|
}
|
}
|