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;
|
/// <summary>
|
/// 顶部信息区域
|
/// </summary>
|
FrameLayout topView;
|
/// <summary>
|
/// 连接状态提示
|
/// </summary>
|
Button btnLinkStateTip;
|
/// <summary>
|
///住宅名称显示
|
/// </summary>
|
Button btnResidenceName;
|
/// <summary>
|
/// 环境质量显示区域
|
/// </summary>
|
FrameLayout environmentalView;
|
/// <summary>
|
/// 当前温度信息-室外
|
/// </summary>
|
TextButton btnTempValues;
|
/// <summary>
|
/// 当前湿度信息-室外
|
/// </summary>
|
TextButton btnHumidityValues;
|
/// <summary>
|
/// 当前温度信息-室内
|
/// </summary>
|
TextButton btnIndoorTempValues;
|
/// <summary>
|
/// 当前湿度信息-室内
|
/// </summary>
|
TextButton btnIndoorHumiValues;
|
/// <summary>
|
/// 当前pm2.5状态
|
/// </summary>
|
TextButton 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>
|
List<FrameLayout> functionViews;
|
#endregion
|
|
#region 区域变量
|
/// <summary>
|
/// 当前显示对控制类型是否是设备功能控制
|
/// </summary>
|
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();
|
};
|
|
#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
|
//LoadEvent_CheckLinkStatus();
|
|
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
|
//搜索网关
|
btnResidenceName.MouseUpEventHandler = (sender, e) =>
|
{
|
|
};
|
#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 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,//+ Application.GetRealWidth(4),
|
//X = Application.GetRealWidth(12),
|
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)
|
{
|
double tempTotalValues = 0;
|
foreach (var temp in tempSensorList)
|
{
|
double tempValue = 0;
|
double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
|
tempTotalValues += tempValue;
|
}
|
if (tempTotalValues > 0)
|
{
|
btnIndoorTempValues.Text = "/" + tempTotalValues + "°";
|
}
|
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)
|
{
|
double humiTotalValues = 0;
|
foreach (var humi in humiSensorList)
|
{
|
double humiValue = 0;
|
double.TryParse(humi.GetAttrState(FunctionAttributeKey.Value), out humiValue);
|
humiTotalValues += humiValue;
|
}
|
if (humiTotalValues > 0)
|
{
|
btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
|
}
|
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
|
|
#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<FrameLayout>();
|
|
LoadContentView();
|
|
#endregion
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log($"HomePage LoadPage Error : {ex.Message}");
|
}
|
|
|
#if DEBUG
|
FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "测试投影仪",
|
attributes = new List<FunctionAttributes>() {
|
new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
|
new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
|
new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
|
new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
|
new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
|
new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
|
new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
|
new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
|
new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
|
new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
|
new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
|
new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
|
new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
|
new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
|
new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
|
new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
|
new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
|
new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
|
new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
|
new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
|
}
|
});
|
|
FunctionList.List.Functions.Add(new Function()
|
{
|
spk = SPK.StbIr,
|
name = "测试机顶盒",
|
attributes = new List<FunctionAttributes>() {
|
new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
|
new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
|
new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
|
new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
|
new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
|
new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
|
new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
|
new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
|
new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
|
new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
|
new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
|
new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
|
new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
|
new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
|
new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
|
new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
|
new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
|
new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
|
new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
|
new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
|
}
|
});
|
|
FunctionList.List.Functions.Add(new Function()
|
{
|
spk = SPK.TvIr,
|
name = "测试电视",
|
attributes = new List<FunctionAttributes>() {
|
new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
|
new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
|
new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
|
new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
|
new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
|
new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
|
new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
|
new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
|
new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
|
new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
|
new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
|
new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
|
new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
|
new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
|
new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
|
new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
|
new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
|
new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
|
new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
|
new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
|
}
|
});
|
#endif
|
|
}
|
/// <summary>
|
/// 加载内容区域
|
/// </summary>
|
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();
|
contentView.PageIndex = 0;
|
|
|
LoadEvent_ChangeShowedFunctionType();
|
|
// 查询未读消息并显示
|
GetUnreadPushMessages();
|
RegisterGetPushMessageAction();
|
|
waitPage.Hide();
|
});
|
}
|
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();
|
contentView.PageIndex = 0;
|
|
|
LoadEvent_ChangeShowedFunctionType();
|
|
// 查询未读消息并显示
|
GetUnreadPushMessages();
|
RegisterGetPushMessageAction();
|
|
}
|
|
}
|
|
/// <summary>
|
/// 加载设备功能显示区域
|
/// </summary>
|
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 (function.Spk_Prefix == FunctionCategory.Music)
|
{
|
//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
|
|
}
|
/// <summary>
|
/// 加载场景功能显示区域
|
/// </summary>
|
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) });
|
|
}
|
|
/// <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);
|
|
|
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 (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr
|
|| function.spk == SPK.StbIr || function.spk == SPK.PjtIr)
|
{
|
//btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
|
//btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
|
|
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",
|
};
|
view.AddChidren(btnPower);
|
LoadEvent_ControlTV(function, btnPower);
|
}
|
|
else if (function.spk == SPK.MusicStandard)
|
{
|
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";
|
|
//switch (function.Spk_Prefix)
|
//{
|
// //todo 增加设备,主页收藏图标
|
// case FunctionCategory.Light:
|
// #region 灯光 Light
|
// btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightIcon.png";
|
// btnIcon.SelectedImagePath = "FunctionIcon/Light/LightOnIcon.png";
|
// UpdataFunctionStates(function);
|
// #endregion
|
// break;
|
// case FunctionCategory.AC:
|
// #region 空调 AC
|
// btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png";
|
// btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png";
|
// #endregion
|
// break;
|
// case FunctionCategory.FloorHeat:
|
// #region 地热
|
// btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png";
|
// btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png";
|
// #endregion
|
// break;
|
// case FunctionCategory.Electric:
|
// switch (function.spk)
|
// {
|
// case SPK.ElectricSocket:
|
// btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketIcon.png";
|
// btnIcon.SelectedImagePath = "FunctionIcon/Socket/SocketOnIcon.png";
|
// break;
|
// case SPK.ElectricFan:
|
// btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/FanIcon.png";
|
// btnIcon.SelectedImagePath = "FunctionIcon/Electrical/FanOnIcon.png";
|
// break;
|
// case SPK.ElectricTuyaAirCleaner:
|
// btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIcon.png";
|
// btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIconOn.png";
|
// break;
|
// case SPK.ElectricTuyaFan:
|
// btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/FanIcon.png";
|
// btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/FanIconOn.png";
|
// break;
|
// case SPK.ElectricTuyaWaterValve:
|
// btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIcon.png";
|
// btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIconOn.png";
|
// break;
|
// case SPK.ElectricTuyaWeepRobot:
|
// btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIcon.png";
|
// btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIconOn.png";
|
// break;
|
// }
|
// break;
|
//}
|
LoadEvent_SwitchFunction(function, btnSwitch);
|
}
|
//取消收藏事件
|
Action cannelCollect = () => {
|
function.collect = false;
|
if (function.Spk_Prefix == FunctionCategory.Music)//处理音乐主从关系
|
{
|
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(function.spk!= SPK.ElectricTV && function.spk != SPK.StbIr && function.spk != SPK.PjtIr)
|
{
|
UpdataFunctionStates(function);
|
}
|
}
|
catch (Exception ex)
|
{
|
MainPage.Log("homepage LoadControlView error : " + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 加载场景控制卡片
|
/// </summary>
|
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 (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
|
{
|
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);
|
}
|
}
|
|
}
|
}
|