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; } } }