using System;
using System.Collections.Generic;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
public partial class IntelligencePage : FrameLayout
{
FrameLayout bodyView;
///
/// 场景/自动化分页区域
///
PageLayout contentPageView;
Button btnAutomationTitle;
#region 场景区域
FrameLayout scenePageView;
///
/// 场景内容显示区域
///
FrameLayout floorChangeView;
///
/// 楼层房间选择的下拉对象
///
FloorRoomSelectPopupView floorRoomSelectView = null;
Button btnSceneTilte;
#region 场景底部切换显示区域
FrameLayout topView;
///
/// 楼层选择下拉图标
///
Button btnFloorDownIcon;
///
/// 楼层显示
///
Button btnFloor;
///
/// 添加场景按钮
///
Button btnAddIcon;
#endregion
///
/// 场景功能控制区域
///
VerticalScrolViewLayout sceneFunctionView;
#endregion
#region 自动化区域
///
/// 自动化内容显示区域
///
FrameLayout automationPage;
#endregion
public IntelligencePage()
{
bodyView = this;
}
public void LoadPage()
{
MainPage.CurPageIndex = 2;
bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
#region top
topView = new FrameLayout()
{
Height = Application.GetRealHeight(64),
BackgroundColor = CSS_Color.TopViewColor,
};
bodyView.AddChidren(topView);
//不是A网关或者是成员 只允许添加场景隐藏自动化
var HideAutoPage = DB_ResidenceData.Instance.CurrentRegion.isOtherShare;
//判断是否需要隐藏自动化
if (HideAutoPage)
{
btnSceneTilte = new Button()
{
Y = Application.GetRealHeight(30),
//Width = Application.GetRealWidth(170),
Height = Application.GetRealHeight(25),
TextAlignment = TextAlignment.Center,
TextSize = CSS_FontSize.HeadlineFontSize,
TextColor = CSS_Color.PromptingColor1,
SelectedTextColor = CSS_Color.MainColor,
TextID = StringId.Scenes,
IsSelected = true
};
topView.AddChidren(btnSceneTilte);
btnAutomationTitle = new Button();
}
else
{
btnSceneTilte = new Button()
{
Y = Application.GetRealHeight(30),
Width = Application.GetRealWidth(170),
Height = Application.GetRealHeight(25),
TextAlignment = TextAlignment.CenterRight,
TextSize = CSS_FontSize.HeadlineFontSize,
TextColor = CSS_Color.PromptingColor1,
SelectedTextColor = CSS_Color.MainColor,
TextID = StringId.Scenes,
IsSelected = true
};
topView.AddChidren(btnSceneTilte);
btnAutomationTitle = new Button()
{
X = Application.GetRealWidth(209),
Y = Application.GetRealHeight(30),
Width = Application.GetRealWidth(170),
Height = Application.GetRealHeight(25),
TextAlignment = TextAlignment.CenterLeft,
TextSize = CSS_FontSize.TextFontSize,
TextColor = CSS_Color.PromptingColor1,
SelectedTextColor = CSS_Color.MainColor,
TextID = StringId.Automation,
};
topView.AddChidren(btnAutomationTitle);
}
var btnAddIconBg = new Button()
{
X = Application.GetRealWidth(337),
Y = Application.GetRealHeight(29),
Width = Application.GetMinRealAverage(28),
Height = Application.GetMinRealAverage(28),
UnSelectedImagePath = "Public/AddIcon.png",
};
//if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
{
topView.AddChidren(btnAddIconBg);
}
btnAddIcon = new Button()
{
X = Application.GetRealWidth(337-20),
Width = Application.GetMinRealAverage(28+30),
Height = Application.GetMinRealAverage(28+29),
};
//if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
{
topView.AddChidren(btnAddIcon);
}
#endregion
contentPageView = new PageLayout()
{
Y = Application.GetRealHeight(64),
Height = Application.GetRealHeight(667 - 64 - 49 + 30),
BackgroundColor = CSS_Color.BackgroundColor,
IsShowPoint = false
};
bodyView.AddChidren(contentPageView);
LoadScenePageView();
//判断是否需要隐藏自动化
if (!HideAutoPage)
{
LoadAutomationPageView();
}
LoadEventList();
}
#region 场景部分
///
/// 加载场景列表界面
///
void LoadScenePageView()
{
scenePageView = new FrameLayout();
contentPageView.AddChidren(scenePageView);
///
/// 场景内容显示区域
///
floorChangeView = new FrameLayout()
{
Height = Application.GetRealHeight(53),
};
scenePageView.AddChidren(floorChangeView);
#region 场景底部切换显示区域
///
/// 楼层选择下拉图标
///
btnFloorDownIcon = new Button()
{
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
X = Application.GetRealWidth(16),
Gravity = Gravity.CenterVertical,
UnSelectedImagePath = "Public/DownIcon.png",
};
floorChangeView.AddChidren(btnFloorDownIcon);
///
/// 楼层显示
///
btnFloor = new Button()
{
X = btnFloorDownIcon.Right,
Gravity = Gravity.CenterVertical,
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,
};
floorChangeView.AddChidren(btnFloor);
string nowSelectId = null;
btnFloor.MouseUpEventHandler += (sender, e) =>
{
if (this.floorRoomSelectView == null)
{
//先初始化
this.floorRoomSelectView = new FloorRoomSelectPopupView();
}
//显示下拉列表
this.floorRoomSelectView.ShowSceneView(btnFloor, (selectId, listScene) =>
{
nowSelectId = selectId;
//重新刷新场景列表
this.LoadSceneFunctionControlZone(listScene);
}, nowSelectId);
};
#endregion
sceneFunctionView = new VerticalScrolViewLayout()
{
Y = Application.GetRealHeight(53),
Height = Application.GetRealHeight(667 - 64 - 49 - 52 + 30),
};
scenePageView.AddChidren(sceneFunctionView);
LoadSceneFunctionControlZone(null);
}
///
/// 加载场景功能显示区域
///
void LoadSceneFunctionControlZone(List listScene)
{
//topView.AddChidren(btnAddIcon);
sceneFunctionView.RemoveAll();
var rowView = new FrameLayout();
try
{
int index = 0;
//获取能够显示的场景
if (listScene == null)
{
//初始值
if (this.floorRoomSelectView == null)
{
//先初始化
this.floorRoomSelectView = new FloorRoomSelectPopupView();
}
listScene = this.floorRoomSelectView.GetCanShowListScene();
}
foreach (var scene in listScene)
{
//if (scene.roomIds.Count == 0)//如何在房间已经移除了这个功能,则收藏界面也不会再显示
//{
// scene.collect = false;
// continue;
//}
if (index % 2 == 0)
{
rowView = new FrameLayout()
{
Height = Application.GetRealWidth(122),
};
sceneFunctionView.AddChidren(rowView);
sceneFunctionView.AddChidren(new Button()
{
Height = Application.GetRealHeight(7 + 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 as 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(120),
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.TipNoScene,
};
view.AddChidren(btnNoCollectionTip);
}
}
catch (Exception ex)
{
MainPage.Log("homepage erorr : " + ex.Message);
}
sceneFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
}
///
/// 加载场景控制卡片
///
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 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 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 btnCollection;
btnCollection = new Button()
{
X = Application.GetRealWidth(116),
Y = Application.GetRealWidth(8),
Width = Application.GetMinRealAverage(32),
Height = Application.GetMinRealAverage(32),
UnSelectedImagePath = "Collection/CollectionWhiteIcon.png",
SelectedImagePath = "Collection/CollectionIcon.png",
IsSelected = scene.collect,
};
view.AddChidren(btnCollection);
//2020-12-16 如果是成员隐藏收藏功能
//if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
//{
// view.AddChidren(btnCollection);
//}
btnCollection.MouseUpEventHandler = (sender, e) => {
scene.collect = btnCollection.IsSelected = !btnCollection.IsSelected;
scene.CollectScene();
};
LoadEvent_ControlScene(btnCoverd, btnName, btnZone, btnShowDelay, scene);
btnSettingIcon.MouseUpEventHandler = (sender, e) => {
Action backAction = () => {
LoadSceneFunctionControlZone(null);
};
Action refreshAction = () => {
btnName.Text = scene.name;
btnZone.Text = scene.GetRoomListName();
//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);
//if (scene.LastExecutionTime == "" || Convert.ToDouble(scene.LastExecutionTime) + Convert.ToDouble(scene.delay) < Convert.ToDouble(Utlis.GetTimestamp(false)))
//{
// int time = 0;
// int.TryParse(Convert.ToInt32(
// Convert.ToDouble(scene.LastExecutionTime) + Convert.ToDouble(scene.delay) - Convert.ToDouble(Utlis.GetTimestamp(false))
// ).ToString(),out time);
// if (time > 0)
// {
// new System.Threading.Thread(() =>
// {
// //int time = Convert.ToInt32(scene.delay);
// if (time > 0)
// {
// while (time > 0)
// {
// Application.RunOnMainThread(() =>
// {
// if (time / 60 > 1)
// {
// btnShowDelay.Text = (time / 60).ToString() + "min";
// }
// else
// {
// btnShowDelay.Text = (time--).ToString() + "s";
// }
// });
// if (time / 60 > 1)
// {
// System.Threading.Thread.Sleep(time / 60 * 60000);
// }
// else
// {
// System.Threading.Thread.Sleep(1000);
// }
// }
// Application.RunOnMainThread(() =>
// {
// btnShowDelay.Text = "";
// });
// }
// })
// { IsBackground = true, Priority = System.Threading.ThreadPriority.BelowNormal }.Start();
// }
//}
}
catch (Exception ex)
{
MainPage.Log("homepage LoadControlView error : " + ex.Message);
}
}
#endregion
#region 自动化部分
///
/// 加载自动化列表界面
///
void LoadAutomationPageView()
{
automationPage = new FrameLayout();
contentPageView.AddChidren(automationPage);
UI2.Intelligence.Automation.MainView.automationPage = automationPage;
UI2.Intelligence.Automation.MainView.MainShow();
}
#endregion
}
//-------------
public partial class IntelligencePage
{
void LoadEventList()
{
LoadEvent_SkipAddScenePage();
LoadEvent_ShowedChange();
}
#region 顶部导航栏事件
///
/// 显示界面切换
///
void LoadEvent_ShowedChange()
{
contentPageView.PageChange = (sender, e) =>
{
if (contentPageView.PageIndex == 0)
{
btnSceneTilte.IsSelected = true;
btnSceneTilte.TextSize = CSS_FontSize.HeadlineFontSize;
btnSceneTilte.IsBold = true;
btnAutomationTitle.IsSelected = false;
btnAutomationTitle.TextSize = CSS_FontSize.TextFontSize;
btnAutomationTitle.IsBold = false;
}
else
{
btnAutomationTitle.IsSelected = true;
btnAutomationTitle.TextSize = CSS_FontSize.HeadlineFontSize;
btnAutomationTitle.IsBold = true;
btnSceneTilte.IsSelected = false;
btnSceneTilte.TextSize = CSS_FontSize.TextFontSize;
btnSceneTilte.IsBold = false;
}
};
btnSceneTilte.MouseUpEventHandler = (sender, e) =>
{
if (btnSceneTilte.IsSelected)
{
return;
}
btnSceneTilte.IsSelected = true;
btnSceneTilte.TextSize = CSS_FontSize.HeadlineFontSize;
btnAutomationTitle.IsSelected = false;
btnAutomationTitle.TextSize = CSS_FontSize.TextFontSize;
contentPageView.PageIndex = 0;
};
//逻辑点击事件
btnAutomationTitle.MouseUpEventHandler = (sender, e) => {
if (btnAutomationTitle.IsSelected)
{
return;
}
btnAutomationTitle.IsSelected = true;
btnAutomationTitle.TextSize = CSS_FontSize.HeadlineFontSize;
btnSceneTilte.IsSelected = false;
btnSceneTilte.TextSize = CSS_FontSize.TextFontSize;
contentPageView.PageIndex = 1;
};
}
#endregion
///
/// 跳转至添加场景的界面
///
void LoadEvent_SkipAddScenePage()
{
btnAddIcon.MouseUpEventHandler = (sender, e) =>
{
if (!btnAutomationTitle.IsSelected)
{
//如果是成员
if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
{
//如果没有场景权限
if (!DB_ResidenceData.Instance.CurrentRegion.isAllowCreateScene)
{
//提示没有场景的创建权限
Utlis.ShowTip(Language.StringByID(StringId.PermissionDenied));
return;
}
}
Action action = () =>
{
LoadSceneFunctionControlZone(null);
};
var aep = new NewSceneMenuListPage(action);
MainPage.BasePageView.AddChidren(aep);
aep.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
else
{
//跳转到逻辑界面
UI2.Intelligence.Automation.MainView.SkipAddLogicPage();
}
};
}
///
/// 加载场景控制事件
///
void LoadEvent_ControlScene(Button btnCoverd, Button btnName, Button btnZone,Button btnShowDelay, Scene scene)
{
EventHandler eventHandler = (sender, e) =>
{
//场景正在倒计时执行中,不允许再点击
if (scene.LastExecutionTime == "" || Convert.ToDouble(scene.LastExecutionTime) + Convert.ToDouble(scene.delay) < Convert.ToDouble(Utlis.GetTimestamp(false)))
{
scene.LastExecutionTime = Utlis.GetTimestamp(false);
}
else
{
return;
}
string msg = scene.name + Language.StringByID(StringId.AlreadyOpened);
new PublicAssmebly().TipMsgAutoClose(msg, true);
Control.Ins.ControlScene(scene);
scene.SceneCountDown(btnShowDelay);
};
btnCoverd.MouseUpEventHandler = eventHandler;
btnName.MouseUpEventHandler = eventHandler;
btnZone.MouseUpEventHandler = eventHandler;
}
}
}