wxr
2020-03-13 171bf03f3664226eeff2b20ee9bd2e914b63a17d
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
@@ -35,6 +36,30 @@
        /// </summary>
        Button 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>
        static Dictionary<string, FrameLayout> LightViews;
@@ -48,10 +73,17 @@
        static Dictionary<string, FrameLayout> CurtainViews;
        #endregion
        #region 区域变量
        /// <summary>
        /// 当前显示对控制类型是否是设备功能控制
        /// </summary>
        bool CurShowTypeIsFunction = true;
        #endregion
        public HomePage()
        {
            bodyView = this;
            bodyView.BackgroundColor = CSS.CSS_Color.BackgroundColor;
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
        }
        public void LoadPage()
@@ -65,8 +97,9 @@
            bodyView.AddChidren(topView);
            Button btnTop;
            btnTop = new Button() {
                BackgroundColor = 0x33000000,
            btnTop = new Button()
            {
                BackgroundColor = CSS_Color.DialogTransparentColor2,
            };
            topView.AddChidren(btnTop);
@@ -218,9 +251,6 @@
            #region 功能场景切换
            FrameLayout changeView;
            changeView = new FrameLayout()
            {
                Y = Application.GetRealHeight(20) + topView.Bottom,
@@ -231,14 +261,12 @@
            };
            bodyView.AddChidren(changeView);
            Button btnChangeFunction;
            btnChangeFunction = new Button()
            {
                Width = Application.GetRealWidth(114),
                TextID = StringId.Functions,
                SelectedTextColor = CSS.CSS_Color.MainColor,
                TextColor = CSS.CSS_Color.PromptingColor1,
                //TextSize = CSS.CSS_FontSize.TextFontSize,
                TextSize = CSS.CSS_FontSize.HeadlineFontSize,
                TextAlignment = TextAlignment.Center,
                IsSelected = true,
@@ -256,7 +284,6 @@
            };
            changeView.AddChidren(btnLine);
            Button btnChangeScene;
            btnChangeScene = new Button()
            {
                X = btnLine.Right,
@@ -265,53 +292,81 @@
                SelectedTextColor = CSS.CSS_Color.MainColor,
                TextColor = CSS.CSS_Color.PromptingColor1,
                TextSize = CSS.CSS_FontSize.TextFontSize,
                //TextSize = CSS.CSS_FontSize.HeadlineFontSize,
                TextAlignment = TextAlignment.Center,
            };
            changeView.AddChidren(btnChangeScene);
            #endregion
            #region ContextView
            VerticalScrolViewLayout contextView;
            contextView = new VerticalScrolViewLayout()
            contentView = new PageLayout()
            {
                Y = changeView.Bottom + Application.GetRealHeight(10),
                Height = Application.GetRealHeight(310 + 30), //20为超出部分
            };
            bodyView.AddChidren(contextView);
            bodyView.AddChidren(contentView);
            LightViews = new Dictionary<string, FrameLayout>();
            AcViews = new Dictionary<string, FrameLayout>();
            CurtainViews = new Dictionary<string, FrameLayout>();
            deviceFunctionView = new VerticalScrolViewLayout();
            contentView.AddChidren(deviceFunctionView);
            LoadDeviceFunctionControlZone();
            sceneFunctionView = new VerticalScrolViewLayout();
            contentView.AddChidren(sceneFunctionView);
            LoadSceneFunctionControlZone();
            contentView.PageIndex = 0;
            #endregion
            LoadEvent_ChangeShowedFunctionType();
            //刷新功能状态
            DB_ResidenceData.residenceData.RefreshResidenceFunctionStatus();
        }
        /// <summary>
        /// 加载设备功能显示区域
        /// </summary>
        void LoadDeviceFunctionControlZone()
        {
            #region ContextView
            deviceFunctionView.RemoveAll();
            LightViews.Clear();
            AcViews.Clear();
            CurtainViews.Clear();
            var rowView = new FrameLayout();
            try
            {
                int index = 0;
                foreach (var function in DB_ResidenceData.residenceData.functions.functions)
                foreach (var function in DB_ResidenceData.residenceData.functionList.GetAllDeviceFunctionList())
                {
                    if (!function.collection)
                        continue;
                    if (function.roomIdList.Count == 0)//如何在房间已经移除了这个功能,则收藏界面也不会再显示
                    {
                        function.collection = false;
                        continue;
                    }
                    if (index % 2 == 0)
                    {
                        rowView = new FrameLayout()
                        {
                            Height = Application.GetRealWidth(140),
                        };
                        contextView.AddChidren(rowView);
                        deviceFunctionView.AddChidren(rowView);
                    }
                    var functionView_X = Application.GetRealWidth((182 + 7) * (index % 2));
                    if (index % 2 == 0)
                    {
                        functionView_X += 7;
                        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);
@@ -338,9 +393,8 @@
                            AcViews.Add(function.sid, functionView);
                            #endregion
                            break;
                    }
                    LoadControlView(functionView, function);
                    LoadDeviceFunctionDiv(functionView, function);
                    index++;
                }
            }
@@ -348,16 +402,71 @@
            {
                MainPage.Log("homepage erorr : " + ex.Message);
            }
            contextView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
            deviceFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
            #endregion
            DB_ResidenceData.residenceData.RefreshResidenceFunctionStatus();
        }
        /// <summary>
        /// 加载场景功能显示区域
        /// </summary>
        void LoadSceneFunctionControlZone()
        {
            sceneFunctionView.RemoveAll();
            var rowView = new FrameLayout();
            try
            {
                int index = 0;
                foreach (var function in DB_ResidenceData.residenceData.functionList.scenes)
                {
                    if (!function.collection)
                        continue;
                    if (function.roomIdList.Count == 0)//如何在房间已经移除了这个功能,则收藏界面也不会再显示
                    {
                        function.collection = 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 = function.sid,
                        BackgroundImagePath = (function as Scene).ImagePath,
                    };
                    rowView.AddChidren(functionView);
                    //functionView.Radius = (uint)Application.GetRealWidth(12);
                    //functionView.BorderColor = CSS_Color.BackgroundColor;
                    //functionView.BorderWidth = 1;
                    LoadSceneFunctionDiv(functionView, function);
                    index++;
                }
            }
            catch (Exception ex)
            {
                MainPage.Log("homepage erorr : " + ex.Message);
            }
            sceneFunctionView.AddChidren(new Button { Height = Application.GetRealHeight(30) });
        }
        /// <summary>
        /// 加载控制卡片
        /// </summary>
        void LoadControlView(FrameLayout view,Function function)
        void LoadDeviceFunctionDiv(FrameLayout view, Function function)
        {
            try
            {
@@ -397,21 +506,9 @@
                    TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    SelectedTextColor = CSS.CSS_Color.MainBackgroundColor,
                    Text = function.GetRoomListName()
                };
                view.AddChidren(btnZone);
                foreach (var roomId in function.roomIdList)
                {
                    var room = DB_ResidenceData.residenceData.rooms.Find((obj) => obj.sid == roomId);
                    if (room != null)
                    {
                        btnZone.Text = room.floor + " " + room.name;
                    }
                    else
                    {
                        btnZone.Text = "";
                    }
                }
                Button btnState;
                btnState = new Button()
@@ -440,9 +537,6 @@
                    UnSelectedImagePath = "Collection/CollectionIcon.png",
                };
                view.AddChidren(btnCollection);
                btnCollection.MouseUpEventHandler += (sender, e) => {
                    //btnCollection.IsSelected = !btnCollection.IsSelected;
                };
                Button btnSwitch;
                btnSwitch = new Button()
@@ -462,7 +556,7 @@
                        #region 灯光 Light
                        btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightIcon.png";
                        btnIcon.SelectedImagePath = "FunctionIcon/Light/LightOnIcon.png";
                        LoadSwitchEvent(function, btnSwitch, view);
                        LoadRelaySwitchEvent(function, btnSwitch, view);
                        //btnCollection.IsSelected = btnIcon.IsSelected = btnName.IsSelected = btnZone.IsSelected = btnSwitch.IsSelected = (function as Light).state == 1;
                        UpdataLightView(function as Light);
                        //btnSwitch.MouseUpEventHandler += (sender, e) =>
@@ -505,10 +599,98 @@
                        #endregion
                        break;
                }
            }catch(Exception ex)
            }
            catch (Exception ex)
            {
                MainPage.Log("homepage LoadControlView error : " + ex.Message);
            }
        }
        /// <summary>
        /// 加载控制卡片
        /// </summary>
        void LoadSceneFunctionDiv(FrameLayout view, Function function)
        {
            try
            {
                Button btnCoverd = new Button()
                {
                    UnSelectedImagePath = "Collection/SceneCovered.png",
                    SelectedImagePath = "Collection/SceneCoveredOn.png",
                    //Width = Application.GetRealWidth(165),
                };
                view.AddChidren(btnCoverd);
                btnCoverd.MouseDownEventHandler = (sender, e) => {
                    btnCoverd.IsSelected = true;
                };
                btnCoverd.MouseUpEventHandler = (sender, e) => {
                    new System.Threading.Thread(() => {
                        System.Threading.Thread.Sleep(200);
                        Application.RunOnMainThread(() => {
                            btnCoverd.IsSelected = false;
                        });
                    }) { IsBackground = true }.Start();
                };
                Button btnDelayIcon;
                btnDelayIcon = new Button()
                {
                    X = Application.GetRealWidth(12),
                    Y = Application.GetRealWidth(12),
                    Height = Application.GetRealWidth(24),
                    Width = Application.GetRealWidth(24),
                    UnSelectedImagePath = "FunctionIcon/Scene/DelayIcon.png"
                };
                view.AddChidren(btnDelayIcon);
                Button btnName;
                btnName = new Button()
                {
                    X = Application.GetRealWidth(12),
                    Y = Application.GetRealWidth(68),
                    Width = Application.GetRealWidth(150),
                    Height = Application.GetRealHeight(24),
                    Text = function.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.CSS_Color.MainBackgroundColor,
                    TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    SelectedTextColor = CSS.CSS_Color.MainBackgroundColor,
                    Text = function.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);
            }
            catch (Exception ex)
            {
                MainPage.Log("homepage LoadControlView error : " + ex.Message);
            }
        }
    }
}