using System;
using System.Collections.Generic;
using System.Text;
using HDL_ON.DAL;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Shared;
namespace HDL_ON.UI
{
public partial class HomePage : VerticalRefreshLayout
{
#region 控件列表
static HomePage bodyView;
//FrameLayout bodyView;
///
/// 顶部信息区域
///
FrameLayout topView;
///
/// 连接状态提示
///
Button btnLinkStateTip;
///
/// 安防状态图标
///
Button btnSecurityStatus;
///
///住宅名称显示
///
Button btnResidenceName;
///
/// 环境质量显示区域
///
FrameLayout environmentalView;
///
/// 当前温度信息-室外
///
TextButton btnTempValues;
///
/// 当前湿度信息-室外
///
TextButton btnHumidityValues;
///
/// 当前温度信息-室内
///
TextButton btnIndoorTempValues;
///
/// 当前湿度信息-室内
///
TextButton btnIndoorHumiValues;
///
/// 当前pm2.5状态
///
TextButton btnPm25Values;
///
/// 切换显示功能类型区域
///
FrameLayout changeView;
///
/// 切换显示设备功能按钮
///
Button btnChangeFunction;
///
/// 切换显示场景功能按钮
///
Button btnChangeScene;
///
/// 功能显示区域
///
PageLayout contentView;
///
/// 设备功能控制区域
///
VerticalScrolViewLayout deviceFunctionView;
///
/// 场景功能控制区域
///
VerticalScrolViewLayout sceneFunctionView;
///
/// 功能区域集合
///
List functionViews;
#endregion
#region 区域变量
///
/// 当前显示对控制类型是否是设备功能控制
///
bool CurShowTypeIsFunction = true;
#endregion
#region 报警信息
Button btnMsgBg;
Button btnMsgTime;
Button btnMsg;
Button btnMsgIcon;
#endregion
public HomePage()
{
bodyView = this;
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
this.VerticalScrollBarEnabled = false;
#if __IOS__
//自动偏移取消
if (UIKit.UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
{
(this.uiView as UIKit.UIScrollView).ContentInsetAdjustmentBehavior = UIKit.UIScrollViewContentInsetAdjustmentBehavior.Never;
}
#endif
}
public override void RemoveFromParent()
{
UnregisterGetPushMessageAction();
base.RemoveFromParent();
}
public void LoadPage()
{
MainPage.CurPageIndex = 0;
try
{
this.BeginHeaderRefreshingAction = () =>
{
this.EndHeaderRefreshing();
Common.ApiUtlis.Ins.DownloadData();
LoadContentView();
if(!CurShowTypeIsFunction)
{
contentView.PageIndex = 1;
}
};
#region topView
bodyView.RemoveAll();
topView = new FrameLayout()
{
Height = Application.GetRealHeight(216),
BackgroundImagePath = DB_ResidenceData.Instance.residenceImage,
};
bodyView.AddChidren(topView);
Button btnTop;
btnTop = new Button()
{
BackgroundColor = CSS_Color.DialogTransparentColor2,
};
topView.AddChidren(btnTop);
btnLinkStateTip = new Button()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(46),
Width = Application.GetRealWidth(6),
Height = Application.GetRealWidth(6),
BackgroundColor = CSS_Color.LinkTipFail,
Radius = (uint)Application.GetRealWidth(3),
};
topView.AddChidren(btnLinkStateTip);
//更新链接状态icon颜色
CheckLinkStatus();//2020-12-22
btnResidenceName = new Button()
{
X = Application.GetRealWidth(26),
Y = Application.GetRealHeight(32),
Width = Application.GetRealWidth(300),
Height = Application.GetRealHeight(33),
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
Text = DB_ResidenceData.Instance.CurrentRegion.homeName,
IsBold = true
};
topView.AddChidren(btnResidenceName);
#if DEBUG
int msdId = 111;
btnResidenceName.MouseUpEventHandler = (sender, e) =>
{
Control.Ins.AuthGateway();
};
#endif
environmentalView = new FrameLayout()
{
Y = Application.GetRealHeight(1) + btnResidenceName.Bottom,
Height = Application.GetRealHeight(32),
};
topView.AddChidren(environmentalView);
#region 环境数据
var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
var enviList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => SPK.EvironmentSensorList().Contains(obj.spk));
foreach (var enviTemp in enviList)
{
var humiAttr = enviTemp.attributes.Find((obj) => obj.key == "humidity");
if (humiAttr != null)
{
var newTemp = new Function()
{
name = enviTemp.name,
sid = enviTemp.sid,
deviceId = enviTemp.deviceId,
attributes = new List { new FunctionAttributes { key = "value", state = humiAttr.state, curValue = humiAttr.curValue } },
};
humiSensorList.Add(newTemp);
}
var tempAttr = enviTemp.attributes.Find((obj) => obj.key == "temperature");
if (tempAttr != null)
{
var newTemp = new Function()
{
name = enviTemp.name,
sid = enviTemp.sid,
deviceId = enviTemp.deviceId,
attributes = new List { new FunctionAttributes { key = "value", state = tempAttr.state, curValue = tempAttr.curValue } },
};
tempSensorList.Add(newTemp);
}
}
var btnEnvirValuesTitle = new Button() {
X = Application.GetRealWidth(12),
Gravity = Gravity.CenterVertical,
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.Outdoor,
TextAlignment = TextAlignment.CenterLeft,
};
if (tempSensorList.Count > 0 || humiSensorList.Count > 0)
{
btnEnvirValuesTitle.TextID = StringId.InOutdoor;
}
btnEnvirValuesTitle.Width = Application.GetRealWidth(8) + btnEnvirValuesTitle.GetTextWidth();
environmentalView.AddChidren(btnEnvirValuesTitle);
Button btnTempIcon = new Button()
{
X = btnEnvirValuesTitle.Right,
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
UnSelectedImagePath = "Public/DeviceInfoIcon/TempIcon.png",
};
environmentalView.AddChidren(btnTempIcon);
btnTempValues = new TextButton()
{
X = btnTempIcon.Right + Application.GetRealWidth(4),
Gravity = Gravity.CenterVertical,
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = MainPage.cityInfo.temperature + "°",
TextAlignment = TextAlignment.CenterLeft,
};
btnTempValues.Width = btnTempValues.GetTextWidth();
environmentalView.AddChidren(btnTempValues);
btnIndoorTempValues = new TextButton()
{
X = btnTempValues.Right,
Gravity = Gravity.CenterVertical,
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
Text = ""
};
if (tempSensorList.Count > 0)
{
btnIndoorTempValues.Text = "/--°";
double tempTotalValues = 0;
double tempTotalCount = 0;
foreach (var temp in tempSensorList)
{
double tempValue = 0;
double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
if (tempValue > 0)
{
tempTotalValues += tempValue;
tempTotalCount++;
}
}
if (tempTotalValues > 0)
{
btnIndoorTempValues.Text = "/" + (tempTotalValues/ tempTotalCount).ToString("0.0") + "°";
}
}
btnIndoorTempValues.Width = btnIndoorTempValues.GetTextWidth();
environmentalView.AddChidren(btnIndoorTempValues);
Button btnHumidityIcon = new Button()
{
X = btnIndoorTempValues.Right + Application.GetRealWidth(8),
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 = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = MainPage.cityInfo.humidity + "%",
TextAlignment = TextAlignment.CenterLeft,
};
btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
environmentalView.AddChidren(btnHumidityValues);
btnIndoorHumiValues = new TextButton()
{
X = btnHumidityValues.Right,
Gravity = Gravity.CenterVertical,
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
Text = ""
};
if (tempSensorList.Count > 0)
{
btnIndoorHumiValues.Text = "/--%";
double humiTotalValues = 0;
double humiTotalCount = 0;
foreach (var humi in humiSensorList)
{
double humiValue = 0;
double.TryParse(humi.GetAttrState(FunctionAttributeKey.Value), out humiValue);
if (humiValue > 0)
{
humiTotalValues += humiValue;
humiTotalCount++;
}
}
if (humiTotalValues > 0)
{
btnIndoorHumiValues.Text = "/" + (humiTotalValues / humiTotalCount).ToString("0") + "%";
}
}
btnIndoorHumiValues.Width = btnIndoorHumiValues.GetTextWidth();
environmentalView.AddChidren(btnIndoorHumiValues);
Button btnPm25Icon = new Button()
{
X = btnIndoorHumiValues.Right + Application.GetRealWidth(4),
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 = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = MainPage.cityInfo.pm25,
TextAlignment = TextAlignment.CenterLeft,
};
btnPm25Values.Width = btnPm25Values.GetTextWidth();
environmentalView.AddChidren(btnPm25Values);
#endregion
btnSecurityStatus = new Button()
{
X = Application.GetRealWidth(329),
Y = Application.GetRealHeight(34),
Width = Application.GetRealWidth(30),
Height = Application.GetRealWidth(30),
SelectedImagePath = "Collection/DefenseStatusIcon.png",
UnSelectedImagePath = "Collection/DisarmStatusIcon.png"
};
if (DB_ResidenceData.Instance.GatewayType == 1)
{
topView.AddChidren(btnSecurityStatus);
foreach (var temp in FunctionList.List.securities)
{
if (temp.status == "enable")
{
btnSecurityStatus.IsSelected = true;
if (temp.alarm)
{
btnSecurityStatus.SelectedImagePath = "Collection/DefenseAlarmIcon.png";
}
else
{
btnSecurityStatus.SelectedImagePath = "Collection/DefenseStatusIcon.png";
}
break;
}
}
btnSecurityStatus.MouseUpEventHandler = (sender, e) => {
var page = new ArmCenterPage();
MainPage.BasePageView.AddChidren(page);
page.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
}
#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);
btnMsgBg = new Button()
{
BackgroundColor = CSS_Color.MainColor,//0x3F4484F4,
Alpha = 0.4f,
};
msgView.AddChidren(btnMsgBg);
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);
btnMsg = new Button()
{
X = Application.GetRealWidth(10) + btnMsgIcon.Right,
Width = Application.GetRealWidth(240),
Text = "...",
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
};
msgView.AddChidren(btnMsg);
btnMsgTime = new Button()
{
X = Application.GetRealWidth(299),
Width = Application.GetRealWidth(44),
Text = "00:00",
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
};
msgView.AddChidren(btnMsgTime);
LoadEvent_GotoMessageCenterPage();
#endregion
#endregion
#region 功能场景切换
bodyView.AddChidren(new Button() { Height = Application.GetRealHeight(20), BackgroundColor = 0x00000000 });
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()
{
X = Application.GetRealWidth(10),
Width = Application.GetRealWidth(114-10),
TextID = StringId.Functions,
SelectedTextColor = CSS_Color.MainColor,
TextColor = CSS_Color.PromptingColor1,
TextSize = 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_Color.PromptingColor1,
};
changeView.AddChidren(btnLine);
btnChangeScene = new Button()
{
X = btnLine.Right,
Width = Application.GetRealWidth(114-10),
TextID = StringId.Scenes,
SelectedTextColor = CSS_Color.MainColor,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.TextFontSize,
TextAlignment = TextAlignment.Center,
};
changeView.AddChidren(btnChangeScene);
#endregion
#region ContextView
contentView = new PageLayout()
{
//Y = changeView.Bottom,
Height = Application.GetRealHeight(310 + 30 + 10), //20为超出部分
IsShowPoint = false,
};
bodyView.AddChidren(contentView);
functionViews = new List();
LoadContentView();
#endregion
}
catch (Exception ex)
{
MainPage.Log($"HomePage LoadPage Error : {ex.Message}");
}
#if DEBUG
//FunctionList.List.Functions.Add(new Function()
//{
// spk = SPK.SensorDryContact,
// name = "干接点",
// attributes = new List()
// {
// new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
// },
//});
//FunctionList.List.Functions.Add(new Function()
//{
// spk = SPK.AirSwitch,
// name = "智能空开",
// attributes = new List()
// {
// new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
// },
//});
//FunctionList.List.Functions.Add(new Function()
//{
// spk = SPK.AirFreshStandard,
// name = "测试新风",
// attributes = new List()
// {
// new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
// new FunctionAttributes(){ key = "fan",curValue= "low",state = "low" ,value = new List(){ "high", "medium", "low" } },
// },
//});
FunctionList.List.Functions.Add(new Function()
{
spk = SPK.HvacAirFreshJinmao,
name = "测试金茂新风",
attributes = new List()
{
new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
new FunctionAttributes(){ key = "mode",curValue= "humidification",state = "humidification" ,value = new List(){ "humidification", "fan" } },
new FunctionAttributes(){ key = "energy",curValue= "true",state = "true" ,value = new List(){ "true", "false" } },
new FunctionAttributes(){ key = "fan",curValue= "level_1",state = "level_1" ,value = new List(){ "level_1", "level_2", "level_3","auto" } },
new FunctionAttributes(){ key = "humidity",curValue= "0",state = "0" ,value = new List(){ },min = 0,max = 100 },
new FunctionAttributes(){ key = "indoor_temp",curValue= "26",state = "26" ,value = new List(){ },min = 0,max = 100 },
new FunctionAttributes(){ key = "indoor_humidity",curValue= "0",state = "0" ,value = new List(){ },min = 0,max = 100 },
new FunctionAttributes(){ key = "filter_remain",curValue= "0",state = "0" ,value = new List(){ },min = 0,max = 100 },
new FunctionAttributes(){ key = "filter_timeout",curValue= "false",state = "false" ,value = new List(){ "true", "false" }},
},
});
//FunctionList.List.Functions.Add(new Function()
//{
// spk = SPK.SensorGas,
// name = "燃气传感器",
// attributes = new List()
// {
// new FunctionAttributes(){ key = "enable",curValue= "true",state = "true" ,value = new List(){ "true", "false" } },
// new FunctionAttributes(){ key = "status",curValue= "normal",state = "normal" ,value = new List(){ "alarm", "normal" } },
// },
//});
//FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "测试投影仪",
// attributes = new List() {
// new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
// new FunctionAttributes(){ key = "computer",value = new List(){"电脑" } },
// new FunctionAttributes(){ key = "video",value = new List(){"视频" } },
// new FunctionAttributes(){ key = "source",value = new List(){"信号源" } },
// new FunctionAttributes(){ key = "zoom+",value = new List(){"变焦+" } },
// new FunctionAttributes(){ key = "zoom-",value = new List(){"变焦-" } },
// new FunctionAttributes(){ key = "page+",value = new List(){"画面+" } },
// new FunctionAttributes(){ key = "page-",value = new List(){"画面-" } },
// new FunctionAttributes(){ key = "menu",value = new List(){"菜单" } },
// new FunctionAttributes(){ key = "ok",value = new List(){"确认" } },
// new FunctionAttributes(){ key = "up",value = new List(){"上" } },
// new FunctionAttributes(){ key = "left",value = new List(){"左" } },
// new FunctionAttributes(){ key = "right",value = new List(){"右" } },
// new FunctionAttributes(){ key = "down",value = new List(){"下" } },
// new FunctionAttributes(){ key = "exit",value = new List(){"退出" } },
// new FunctionAttributes(){ key = "volume+",value = new List(){"音量+" } },
// new FunctionAttributes(){ key = "volume-",value = new List(){"音量-" } },
// new FunctionAttributes(){ key = "mute",value = new List(){"静音" } },
// new FunctionAttributes(){ key = "auto",value = new List(){"自动" } },
// new FunctionAttributes(){ key = "pause",value = new List(){"暂停" } },
// }
//});
//FunctionList.List.Functions.Add(new Function()
//{
// spk = SPK.StbIr,
// name = "测试机顶盒",
// attributes = new List() {
// new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
// new FunctionAttributes(){ key = "computer",value = new List(){"电脑" } },
// new FunctionAttributes(){ key = "video",value = new List(){"视频" } },
// new FunctionAttributes(){ key = "source",value = new List(){"信号源" } },
// new FunctionAttributes(){ key = "zoom+",value = new List(){"变焦+" } },
// new FunctionAttributes(){ key = "zoom-",value = new List(){"变焦-" } },
// new FunctionAttributes(){ key = "page+",value = new List(){"画面+" } },
// new FunctionAttributes(){ key = "page-",value = new List(){"画面-" } },
// new FunctionAttributes(){ key = "menu",value = new List(){"菜单" } },
// new FunctionAttributes(){ key = "ok",value = new List(){"确认" } },
// new FunctionAttributes(){ key = "up",value = new List(){"上" } },
// new FunctionAttributes(){ key = "left",value = new List(){"左" } },
// new FunctionAttributes(){ key = "right",value = new List(){"右" } },
// new FunctionAttributes(){ key = "down",value = new List(){"下" } },
// new FunctionAttributes(){ key = "exit",value = new List(){"退出" } },
// new FunctionAttributes(){ key = "volume+",value = new List(){"音量+" } },
// new FunctionAttributes(){ key = "volume-",value = new List(){"音量-" } },
// new FunctionAttributes(){ key = "mute",value = new List(){"静音" } },
// new FunctionAttributes(){ key = "auto",value = new List(){"自动" } },
// new FunctionAttributes(){ key = "pause",value = new List(){"暂停" } },
// }
//});
//FunctionList.List.Functions.Add(new Function()
//{
// spk = SPK.TvIr,
// name = "测试电视",
// attributes = new List() {
// new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
// new FunctionAttributes(){ key = "computer",value = new List(){"电脑" } },
// new FunctionAttributes(){ key = "video",value = new List(){"视频" } },
// new FunctionAttributes(){ key = "source",value = new List(){"信号源" } },
// new FunctionAttributes(){ key = "zoom+",value = new List(){"变焦+" } },
// new FunctionAttributes(){ key = "zoom-",value = new List(){"变焦-" } },
// new FunctionAttributes(){ key = "page+",value = new List(){"画面+" } },
// new FunctionAttributes(){ key = "page-",value = new List(){"画面-" } },
// new FunctionAttributes(){ key = "menu",value = new List(){"菜单" } },
// new FunctionAttributes(){ key = "ok",value = new List(){"确认" } },
// new FunctionAttributes(){ key = "up",value = new List(){"上" } },
// new FunctionAttributes(){ key = "left",value = new List(){"左" } },
// new FunctionAttributes(){ key = "right",value = new List(){"右" } },
// new FunctionAttributes(){ key = "down",value = new List(){"下" } },
// new FunctionAttributes(){ key = "exit",value = new List(){"退出" } },
// new FunctionAttributes(){ key = "volume+",value = new List(){"音量+" } },
// new FunctionAttributes(){ key = "volume-",value = new List(){"音量-" } },
// new FunctionAttributes(){ key = "mute",value = new List(){"静音" } },
// new FunctionAttributes(){ key = "auto",value = new List(){"自动" } },
// new FunctionAttributes(){ key = "pause",value = new List(){"暂停" } },
// }
//});
#endif
}
///
/// 加载内容区域
///
void LoadContentView()
{
if (!Common.ApiUtlis.Ins.DownloadDataComplete)
{
var waitPage = new Loading();
MainPage.BaseView.AddChidren(waitPage);
waitPage.Start(Language.StringByID(StringId.PleaseWait));
new System.Threading.Thread(() =>
{
try
{
while (!Common.ApiUtlis.Ins.DownloadDataComplete)
{
System.Threading.Thread.Sleep(400);
}
Application.RunOnMainThread(() =>
{
if (contentView == null)
{
return;
}
contentView.RemoveAll();
deviceFunctionView = new VerticalScrolViewLayout();
contentView.AddChidren(deviceFunctionView);
LoadDeviceFunctionControlZone();
sceneFunctionView = new VerticalScrolViewLayout();
contentView.AddChidren(sceneFunctionView);
LoadSceneFunctionControlZone();
if (CurShowTypeIsFunction)
{
contentView.PageIndex = 0;
}else
{
contentView.PageIndex = 1;
}
LoadEvent_ChangeShowedFunctionType();
// 查询未读消息并显示
GetUnreadPushMessages();
RegisterGetPushMessageAction();
if (waitPage != null)
{
waitPage.RemoveFromParent();
waitPage = null;
}
});
}
catch (Exception ex) {
MainPage.Log($"刷新主页异常:{ex.Message}");
}
finally { }
})
{ IsBackground = true }.Start();
}
else
{
deviceFunctionView = new VerticalScrolViewLayout();
contentView.AddChidren(deviceFunctionView);
LoadDeviceFunctionControlZone();
sceneFunctionView = new VerticalScrolViewLayout();
contentView.AddChidren(sceneFunctionView);
LoadSceneFunctionControlZone();
if (CurShowTypeIsFunction)
{
contentView.PageIndex = 0;
}
else
{
contentView.PageIndex = 1;
}
LoadEvent_ChangeShowedFunctionType();
// 查询未读消息并显示
GetUnreadPushMessages();
RegisterGetPushMessageAction();
}
}
///
/// 加载设备功能显示区域
///
void LoadDeviceFunctionControlZone()
{
#region ContextView
deviceFunctionView.RemoveAll();
functionViews.Clear();
var rowView = new FrameLayout();
try
{
int index = 0;
var list = FunctionList.List.GetDeviceFunctionList();
foreach (var function in list)
{
//音乐模块有主从关系,需要特殊处理
if (SPK.MusicSpkList().Contains( function.spk))
{
//var music = function as Music.A31MusicModel;
var music = Music.A31MusicModel.A31MusicModelList.Find((obj) => obj.sid == function.sid);
if (music == null)
{
continue;
}
if (music.ServerClientType == -1)
{
continue;
}
else if (music.ServerClientType == 1)
{
if (!music.MainPlayCollection)
{
continue;
}
}
else
{
if (!music.collect)
{
continue;
}
}
}
else
{
if (!function.collect)
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",
Tag = function.sid
};
functionView.AddChidren(btnbg);
functionViews.Add(functionView);
LoadDeviceFunctionDiv(functionView, function);
index++;
}
if (index == 0)
{
var view = new FrameLayout();
deviceFunctionView.AddChidren(view);
var btnNoCollectionBg = new Button()
{
Y = Application.GetRealHeight(20),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(180),
Height = Application.GetRealWidth(180),
UnSelectedImagePath = "Collection/NoCollectionBg.png",
};
view.AddChidren(btnNoCollectionBg);
var btnNoCollectionTip = new Button()
{
Height = Application.GetRealHeight(42),
Y = btnNoCollectionBg.Bottom,
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.TipNoFunctionCollcetion,
};
view.AddChidren(btnNoCollectionTip);
}
}
catch (Exception ex)
{
MainPage.Log("homepage error : " + ex.Message);
}
deviceFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
#endregion
}
///
/// 加载场景功能显示区域
///
void LoadSceneFunctionControlZone()
{
sceneFunctionView.RemoveAll();
var rowView = new FrameLayout();
try
{
int index = 0;
foreach (var scene in FunctionList.List.scenes)
{
if (!scene.collect)
continue;
//if (scene.roomIds.Count == 0)//如何在房间已经移除了这个功能,则收藏界面也不会再显示
//{
// scene.collect = 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 = scene.sid,
BackgroundImagePath = scene.ImagePath,
};
rowView.AddChidren(functionView);
//2020-12-03 修改图片加载方法
ImageUtlis.Current.LoadLocalOrNetworkImages((scene as Scene).ImagePath, functionView);
LoadSceneFunctionDiv( functionView, scene);
index++;
}
if (index == 0)
{
var view = new FrameLayout();
sceneFunctionView.AddChidren(view);
var btnNoCollectionBg = new Button()
{
Y = Application.GetRealHeight(20),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(180),
Height = Application.GetRealWidth(180),
UnSelectedImagePath = "Collection/NoCollectionBg.png",
};
view.AddChidren(btnNoCollectionBg);
var btnNoCollectionTip = new Button()
{
Height = Application.GetRealHeight(42),
Y = btnNoCollectionBg.Bottom,
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.TipNoSceneCollcetion,
};
view.AddChidren(btnNoCollectionTip);
}
}
catch (Exception ex)
{
MainPage.Log("homepage erorr : " + ex.Message);
}
sceneFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
}
///
/// 加载功能控制卡片
///
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);
btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
Button btnName;
btnName = new Button()
{
X = Application.GetRealWidth(21),
Y = Application.GetRealWidth(10) + btnIcon.Bottom,
Text = function.name,
IsBold = true,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = 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_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
TextAlignment = TextAlignment.CenterLeft,
SelectedTextColor = 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_Color.MainBackgroundColor,
TextColor = 0x00000000,
TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
TextAlignment = TextAlignment.CenterLeft,
Tag = "state",
Text = function.lastState
};
if (function.spk != SPK.LightSwitch)
{
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);
//2020-12-16 如果是成员隐藏收藏功能
//if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
//{
// view.AddChidren(btnCollection);
//}
LoadEvent_FunctionCollection(btnCollection, function);
if (//SPK.CurtainSpkList().Contains(function.spk))
function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades ||
function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex )
{
btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
btnIcon.SelectedImagePath = "FunctionIcon/Curtain/CurtainOnIcon.png";
Button btnCurtainClose;
btnCurtainClose = new Button()
{
X = Application.GetRealWidth(84),
Y = Application.GetRealWidth(89),
Width = Application.GetRealWidth(44),
Height = Application.GetRealWidth(44),
UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseBlueIcon_Shadow.png",
SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseWhiteIcon_Shadow.png",
};
view.AddChidren(btnCurtainClose);
Button btnCurtainOpen;
btnCurtainOpen = new Button()
{
X = btnCurtainClose.Right,
Y = Application.GetRealWidth(89),
Width = Application.GetRealWidth(44),
Height = Application.GetRealWidth(44),
UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenBlueIcon_Shadow.png",
SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenWhiteIcon_Shadow.png",
};
view.AddChidren(btnCurtainOpen);
LoadEvent_ControlCurtain(function, btnCurtainClose, btnCurtainOpen);
}
else if (SPK.NotStatusSpkList.Contains(function.spk))
{
Button btnPower;
btnPower = new Button()
{
X = Application.GetRealWidth(131),
Y = Application.GetRealHeight(80),
Width = Application.GetRealWidth(32),
Height = Application.GetRealWidth(32),
UnSelectedImagePath = "Public/PowerClose.png",
SelectedImagePath = "Public/PowerOpen.png",
};
view.AddChidren(btnPower);
LoadEvent_ControlTV(function, btnPower);
}
else if (function.spk == SPK.MusicStandard || function.spk == SPK.AvMusic)
{
btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicIcon.png";
btnIcon.SelectedImagePath = "FunctionIcon/Music/MusicOnIcon.png";
Button btnPower;
btnPower = new Button()
{
X = Application.GetRealWidth(118),
Y = Application.GetRealWidth(83),
Width = Application.GetRealWidth(44),
Height = Application.GetRealWidth(44),
UnSelectedImagePath = "FunctionIcon/Music/MusicPlayIcon.png",
SelectedImagePath = "FunctionIcon/Music/MusicPlayOnIcon.png",
};
view.AddChidren(btnPower);
var a31player = (function as UI.Music.A31MusicModel);
btnState.Text = a31player.A31PlayStatus.Title;
btnState.SelectedTextColor = CSS_Color.MainBackgroundColor;
btnState.TextColor = CSS_Color.MainBackgroundColor;//PromptingColor1
//Music.SendMethod.ReadStatus(a31player);
btnPower.MouseUpEventHandler = (sender, e) =>
{
if (btnPower.IsSelected)
{
btnPower.IsSelected = false;
Music.SendMethod.Pause(a31player);
a31player.A31PlayStatus.status = "pause";
a31player.trait_on_off.curValue = "off";
}
else
{
btnPower.IsSelected = true;
Music.SendMethod.Play(a31player);
a31player.A31PlayStatus.status = "play";
a31player.trait_on_off.curValue = "on";
}
UpdataFunctionStates(a31player);
};
}
else if (function.spk == SPK.ClothesHanger)
{
btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerBlueIcon.png";
btnIcon.SelectedImagePath = "FunctionIcon/Electrical/Curtain/ClothesHangerBlueIcon.png";
Button btnUp;
btnUp = new Button()
{
X = Application.GetRealWidth(84+3),
Y = Application.GetRealWidth(89),
Width = Application.GetRealWidth(38),
Height = Application.GetRealWidth(38),
UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIcon2.png",
SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIcon2On.png",
};
view.AddChidren(btnUp);
Button btnDown;
btnDown = new Button()
{
X = btnUp.Right + Application.GetRealWidth(3),
Y = Application.GetRealWidth(89),
Width = Application.GetRealWidth(38),
Height = Application.GetRealWidth(38),
UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIcon2.png",
SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIcon2On.png",
};
view.AddChidren(btnDown);
LoadEvent_ControlClothesHanger(function, btnUp, btnDown);
}
else
{
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);
btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
LoadEvent_SwitchFunction(function, btnSwitch);
}
//取消收藏事件
Action cannelCollect = () => {
function.collect = false;
if (SPK.MusicSpkList().Contains(function.spk))//处理音乐主从关系
{
if ((function as Music.A31MusicModel).ServerClientType == 1)
{
(function as Music.A31MusicModel).MainPlayCollection = false;
Music.A31MusicModel.Save();
}
}
string msg = function.name + Language.StringByID(StringId.CollectionCancelled);
LoadDeviceFunctionControlZone();
function.CollectFunction();
};
var skipControlPageEvent = new PublicAssmebly().LoadEvent_SkipFunctionControlPage(function, btnCollection, btnName, btnZone);
view.MouseUpEventHandler = skipControlPageEvent;
btnName.MouseUpEventHandler = skipControlPageEvent;
btnIcon.MouseUpEventHandler = skipControlPageEvent;
btnState.MouseUpEventHandler = skipControlPageEvent;
//不需要更新状态的动能列表
if(!SPK.NotStatusSpkList.Contains(function.spk))
{
UpdataFunctionStates(function);
}
}
catch (Exception ex)
{
MainPage.Log("homepage LoadControlView error : " + ex.Message);
}
}
///
/// 加载场景控制卡片
///
void LoadSceneFunctionDiv(FrameLayout view, Scene scene)
{
try
{
Button btnCoverd = new Button()
{
UnSelectedImagePath = "Collection/SceneCovered.png",
};
view.AddChidren(btnCoverd);
Button btnShowDelay;
btnShowDelay = new Button()
{
X = Application.GetRealWidth(40),
Y = Application.GetRealWidth(4),
Height = Application.GetRealWidth(32),
Width = Application.GetRealWidth(100),
TextColor = CSS_Color.AuxiliaryColor1,
TextAlignment = TextAlignment.CenterLeft,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
};
view.AddChidren(btnShowDelay);
Button btnSettingIcon;
btnSettingIcon = new Button()
{
X = Application.GetRealWidth(4),
Y = Application.GetRealWidth(4),
Height = Application.GetRealWidth(32),
Width = Application.GetRealWidth(32),
UnSelectedImagePath = "Public/FuncInfoSetIcon_white.png",
};
if (scene.userId == UserInfo.Current.ID)
{
view.AddChidren(btnSettingIcon);
}
Button btnName;
btnName = new Button()
{
X = Application.GetRealWidth(12),
Y = Application.GetRealWidth(68),
Width = Application.GetRealWidth(150),
Height = Application.GetRealHeight(24),
Text = scene.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_Color.MainBackgroundColor,
TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
TextAlignment = TextAlignment.CenterLeft,
SelectedTextColor = CSS_Color.MainBackgroundColor,
Text = scene.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);
//2020-12-16 如果是成员隐藏收藏功能
//if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
//{
// view.AddChidren(btnCollection);
//}
LoadEvent_SceneCollection(btnCollection, scene);
LoadEvent_ControlScene(btnCoverd, btnName, btnZone, btnShowDelay, scene);
btnSettingIcon.MouseUpEventHandler = (sender, e) => {
Action backAction = () => {
//LoadSceneFunctionControlZone();
};
Action refreshAction = () => {
btnName.Text = scene.name;
btnZone.Text = scene.GetRoomListName();
//view.BackgroundImagePath = (scene as Scene).ImagePath;
//2020-12-03 修改图片加载方法
ImageUtlis.Current.LoadLocalOrNetworkImages((scene as Scene).ImagePath, view);
};
var aep = new SceneEditPage(scene, backAction);
MainPage.BasePageView.AddChidren(aep);
aep.LoadPage( refreshAction);
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
//场景正在倒计时执行中
scene.SceneCountDown(btnShowDelay);
}
catch (Exception ex)
{
MainPage.Log("homepage LoadControlView error : " + ex.Message);
}
}
}
}