using System;
using System.Collections.Generic;
using System.Linq;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
public partial class FunctionPage : FrameLayout
{
#region 控件列表
///
/// 当前窗体
///
static FrameLayout bodyView;
///
/// 楼层选择下拉图标
///
Button btnFloorDownIcon;
///
/// 楼层显示
///
Button btnFloor;
///
/// 功能列表集合显示区域
///
static VerticalScrolViewLayout functionListView;
#endregion
List functionList;
int titleId;
public FunctionPage()
{
bodyView = this;
functionList = new List();
}
public void LoadPage(int titleId_out)
{
this.titleId = titleId_out;
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
if (titleId == StringId.Lights && !DB_ResidenceData.Instance.HomeGateway.isSupportGroupControl)
{
Action action = () =>
{
Action refreshAction = (outScene) => {
if (outScene != null)
{
functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
var sceneRow = new SceneControlZone(outScene);
functionListView.AddChidren(sceneRow);
sceneRow.LoadView();
}
};
var skipView = new AddLightScene(new List(), new Scene() { sceneType = SceneType.LightScene }, refreshAction);
MainPage.BasePageView.AddChidren(skipView);
skipView.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView_LightFunction(action);
}
else
{
new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
}
#if DEBUG
//Button testBtn = new Button()
//{
// X = Application.GetRealWidth(80),
// Height = Application.GetRealHeight(64),
// BackgroundColor = 0xFFFF0000
//};
//bodyView.AddChidren(testBtn);
//int ddd = 0;
//testBtn.MouseUpEventHandler = (sender, e) => {
// ddd++;
// Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
// if (ddd % 2 == 0)
// {
// function_online.online = true;
// }
// else
// {
// function_online.online = false;
// }
// HomePage.LoadEvent_RefreshDevcieOnline(function_online);
// FunctionPage.UpdataOnline(function_online);
// RoomPage.UpdataOnline(function_online);
//};
#endif
///
/// 房间内容显示区域
///
var roomFloorChangeView = new FrameLayout()
{
Y = Application.GetRealHeight(64),
Height = Application.GetRealHeight(52),
};
bodyView.AddChidren(roomFloorChangeView);
#region 房间顶部切换显示区域
btnFloorDownIcon = new Button()
{
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(18),
UnSelectedImagePath = "Public/DownIcon.png",
};
roomFloorChangeView.AddChidren(btnFloorDownIcon);
btnFloor = new Button()
{
X = btnFloorDownIcon.Right,
Y = Application.GetRealHeight(18),
Width = Application.GetRealWidth(200),
Height = Application.GetMinRealAverage(16),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextAlignment = TextAlignment.CenterLeft,
Text = DB_ResidenceData.Instance.CurFloor.roomName,
};
roomFloorChangeView.AddChidren(btnFloor);
#endregion
functionListView = new VerticalScrolViewLayout()
{
Y = Application.GetRealHeight(64 + 52),
Height = Application.GetRealHeight(603 - 12 - 52),
};
bodyView.AddChidren(functionListView);
if (titleId == StringId.Lights)
{
functionList.AddRange(FunctionList.List.groupControls);
functionList.AddRange(FunctionList.List.GetLightList());
}
else if (titleId == StringId.AC)
{
functionList.AddRange(FunctionList.List.GetAcList());
}
else if (titleId == StringId.Curtain)
{
functionList.AddRange(FunctionList.List.GetCurtainList());
}
else if (titleId == StringId.FloorHeating)
{
functionList.AddRange(FunctionList.List.GetFloorHeatingList());
}
else if (titleId == StringId.Electric)
{
functionList.AddRange(FunctionList.List.GetElectricals());
}
else if (titleId == StringId.EnvironmentalScience)
{
functionList.AddRange(FunctionList.List.GetEnvirSensorsList());
}
else if (titleId == StringId.Sensor)
{
functionList.AddRange(FunctionList.List.GetArmSensorList());
}
else if (titleId == StringId.FreshAir)
{
functionList.AddRange(FunctionList.List.GetAirFreshList());
}
else if(titleId == StringId.MechanicalArm)
{
functionList.AddRange(FunctionList.List.GetMechanicalArmList());
}
else if(titleId == StringId.SecurityMonitoring)
{
functionList.AddRange(FunctionList.List.GetIpCamImouList());
}
functionList = functionList.OrderByDescending(o => o.controlCounter).ToList();
ShowFunctionRow(functionList);
LoadDialog_ChangeFloor();
}
///
/// 显示的设备的总数
///
int showCount = -1;
///
/// 加载功能row
///
void ShowFunctionRow(List showList, bool isAppend = false)
{
var waitPage = new Loading();
bodyView.AddChidren(waitPage);
waitPage.Start("");
new System.Threading.Thread(() =>
{
try
{
Application.RunOnMainThread(() =>
{
if (!isAppend)
{
showCount = -1;
functionListView.RemoveAll();
#region 加载组合调光场景
if (titleId == StringId.Lights)
{
foreach (var lightScene in FunctionList.List.scenes)
{
if (lightScene.sceneType == SceneType.LightScene)
if (lightScene != null)
{
var sceneRow = new SceneControlZone(lightScene);
functionListView.AddChidren(sceneRow);
sceneRow.LoadView();
functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
}
}
}
#endregion
}
for (var i = 0;i<50;i++)
//foreach (var function in showList)
{
showCount++;
if (showCount >= showList.Count)
{
break;
}
var function = showList[showCount];
if (function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
{
continue;
}
if (function.spk == SPK.LightRGBW || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
{
var functionDiv = new FunctionControlZone(function,null)
{
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(116),
Radius = (uint)Application.GetMinRealAverage(12),
BorderColor = 0x00FFFFFF,
BorderWidth = 1,
BackgroundColor = CSS_Color.MainBackgroundColor,
Tag = function.spk + function.sid
};
functionDiv.LoadFunctionDiv();
functionDiv.OrderEvent = OrderEvent;
functionListView.AddChidren(functionDiv);
}
else if (function.spk == SPK.IpCam_Imou)
{
var functionDiv = new FunctionControlZone(function,null)
{
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(96),
Radius = (uint)Application.GetMinRealAverage(12),
BorderColor = 0x00FFFFFF,
BorderWidth = 1,
BackgroundColor = CSS_Color.MainBackgroundColor,
Tag = function.spk + function.sid
};
functionDiv.LoadFunctionDiv();
functionListView.AddChidren(functionDiv);
}
else
{
var functionDiv = new FunctionControlZone(function,null)
{
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(96),
Radius = (uint)Application.GetMinRealAverage(12),
BorderColor = 0x00FFFFFF,
BorderWidth = 1,
BackgroundColor = CSS_Color.MainBackgroundColor,
Tag = function.spk + function.sid
};
functionDiv.LoadFunctionDiv();
functionDiv.OrderEvent = OrderEvent;
functionListView.AddChidren(functionDiv);
}
functionListView.AddChidren(new Button() { Height = Application.GetRealHeight(10) });
}
if (showList.Count > showCount)
{
var btnAppend = new Button()
{
Height = Application.GetRealHeight(60),
TextAlignment = TextAlignment.Center,
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.FirstLevelTitleColor,
TextID = StringId.LoadMore,
};
functionListView.AddChidren(btnAppend);
btnAppend.MouseUpEventHandler = (sender, e) =>
{
btnAppend.RemoveFromParent();
ShowFunctionRow(showList, true);
};
}
});
}
catch (Exception ex)
{
MainPage.Log("ShowFunctionRowError : " + ex.Message);
}
finally
{
Application.RunOnMainThread(() =>
{
if (waitPage != null)
{
waitPage.RemoveFromParent();
waitPage = null;
}
});
}
})
{ IsBackground = true }.Start();
}
///
/// 排序事件
///
void OrderEvent()
{
Action action = () =>
{
functionList = functionList.OrderBy(o => o.FunctionOrderNumber).ToList();
ShowFunctionRow(functionList);
};
var skipView = new OrderFunctionPage();
MainPage.BasePageView.AddChidren(skipView);
skipView.LoadPage(functionList, action);
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
/////
///// 加载功能类型控制卡片
/////
//public void LoadSceneRow(Scene scene)
//{
// var bodyDiv = new FrameLayout()
// {
// Gravity = Gravity.CenterHorizontal,
// Width = Application.GetRealWidth(343),
// Height = Application.GetRealHeight(116),
// Radius = (uint)Application.GetMinRealAverage(12),
// BorderColor = 0x00FFFFFF,
// BorderWidth = 1,
// BackgroundColor = CSS_Color.MainBackgroundColor,
// Tag = "Scene-" + scene.sid
// };
// functionListView.AddChidren(bodyDiv);
// var btnIcon = new Button()
// {
// X = Application.GetRealWidth(10),
// Y = Application.GetRealHeight(15),
// Width = Application.GetRealWidth(32),
// Height = Application.GetRealWidth(32),
// };
// bodyDiv.AddChidren(btnIcon);
// var btnName = new Button()
// {
// X = Application.GetRealWidth(8 + 10 + 32),
// Y = Application.GetRealHeight(10),
// Width = Application.GetRealWidth(200),
// Height = Application.GetRealHeight(24),
// Text = scene.name,
// TextAlignment = TextAlignment.CenterLeft,
// TextColor = CSS_Color.FirstLevelTitleColor,
// TextSize = CSS_FontSize.TextFontSize,
// };
// bodyDiv.AddChidren(btnName);
// var btnFromFloor = new Button()
// {
// X = Application.GetRealWidth(8 + 10 + 32),
// Y = Application.GetRealHeight(10 + 24),
// Width = Application.GetRealWidth(200),
// Height = Application.GetRealHeight(18),
// Text = scene.GetRoomListName(),
// TextAlignment = TextAlignment.CenterLeft,
// TextColor = CSS_Color.PromptingColor1,
// TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
// };
// bodyDiv.AddChidren(btnFromFloor);
// var btnCollectionIcon = new Button()
// {
// X = Application.GetRealWidth(299),
// Y = Application.GetRealHeight(10),
// Width = Application.GetMinRealAverage(40),
// Height = Application.GetMinRealAverage(40),
// SelectedImagePath = "Collection/CollectionIcon.png",
// UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
// IsSelected = scene.collect
// };
// bodyDiv.AddChidren(btnCollectionIcon);
// btnIcon.UnSelectedImagePath = "FunctionIcon/Scene/SceneIcon.png";
// if (scene.sceneType == SceneType.MovieScene)
// {
// var movieIcon = new Button()
// {
// X = Application.GetRealWidth(52),
// Y = Application.GetRealHeight(14),
// Width = Application.GetRealWidth(16),
// Height = Application.GetRealWidth(16),
// UnSelectedImagePath = "FunctionIcon/Scene/MovieMark.png",
// };
// bodyDiv.AddChidren(movieIcon);
// btnName.X = Application.GetRealWidth(52 + 16);
// }
// //加载场景控制事件
// LoadEvent_ControlScene(btnName, btnFromFloor, bodyDiv, scene);
// LoadEvent_FunctionCollection(btnCollectionIcon, scene);
//}
/////
///// 加载功能收藏按钮事件
/////
//void LoadEvent_FunctionCollection(Button btnCollectionIcon, Scene scene)
//{
// btnCollectionIcon.MouseUpEventHandler += (sender, e) =>
// {
// btnCollectionIcon.IsSelected = scene.collect = !btnCollectionIcon.IsSelected;
// scene.CollectScene();
// };
//}
/////
///// 加载场景控制事件
/////
//void LoadEvent_ControlScene(Button btnName, Button btnFromFloor, FrameLayout bodyDiv, Scene scene)
//{
// EventHandler upEvent = (sender, e) => {
// DriverLayer.Control.Ins.ControlScene(scene);
// string msg = scene.name + Language.StringByID(StringId.AlreadyOpened);
// new PublicAssmebly().TipMsgAutoClose(msg, false);
// };
// btnName.MouseUpEventHandler = upEvent;
// btnFromFloor.MouseUpEventHandler = upEvent;
// bodyDiv.MouseUpEventHandler = upEvent;
//}
///
/// 住宅列表点击事件
///
void LoadDialog_ChangeFloor()
{
string nowSelectId = null;
btnFloor.MouseUpEventHandler += (sender, e) =>
{
//显示下拉列表
var form = new FloorRoomSelectPopupView();
form.ShowDeviceFunctionView(btnFloor, this.functionList, (selectId, listFunc) =>
{
nowSelectId = selectId;
//重新加载界面
ShowFunctionRow(listFunc);
}, nowSelectId);
};
}
}
}