JLChen
2021-06-06 4d6c9858844d1545a9b253c1b31842fa89695c1d
HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
New file
@@ -0,0 +1,637 @@
using System;
using Shared;
using HDL_ON.UI.CSS;
using HDL_ON.Entity;
using System.Collections.Generic;
using HDL_ON.DriverLayer;
namespace HDL_ON.UI
{
    public class StbPage : FrameLayout
    {
        #region 控件集合
        StbPage bodyView;
        /// <summary>
        /// 功能名称按钮
        /// </summary>
        Button btnFunctionName;
        /// <summary>
        /// 房间楼层信息按钮
        /// </summary>
        Button btnFromFoorAndRoom;
        /// <summary>
        /// 收藏按钮
        /// </summary>
        Button btnCollection;
        Button btnMenu;
        FrameLayout topMenuView;
        Button btnTopMenuUp;
        Button btnTopMenuLeft;
        Button btnTopMenuRight;
        Button btnTopMenuDown;
        Button btnOk;
        FrameLayout channleView;
        Button btnChlReduce;
        Button btnChlPlus;
        FrameLayout volView;
        Button btnVolReduce;
        Button btnVolPlus;
        Button btnBack;
        Button btnMore;
        Button btn123;
        Button btnMute;
        Button btnPower;
        #endregion
        #region 区域变量
        Function function;
        Button btnCollection_Out;
        Button btnFunctionName_Out;
        Button btnFromFloor_Out;
        /// <summary>
        /// 刷新显示信息
        /// </summary>
        Action actionRefresh;
        #endregion
        public StbPage(Function func)
        {
            bodyView = this;
            function = func;
        }
        public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            btnCollection_Out = btnCollectionIcon;
            btnFunctionName_Out = btnFunctionNameOut;
            btnFromFloor_Out = btnFromFloorOut;
            FrameLayout controlView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(88),
                Width = Application.GetRealWidth(327),
                Height = Application.GetRealHeight(526),
                BackgroundImagePath = "Public/Fragmentbg.png",
            };
            bodyView.AddChidren(controlView);
            btnFunctionName = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealHeight(14),
                Width = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(37),
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
                Text = function.name,
            };
            controlView.AddChidren(btnFunctionName);
            btnFromFoorAndRoom = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = btnFunctionName.Bottom,
                Width = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(21),
                TextColor = CSS_Color.PromptingColor1,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = function.GetRoomListName()
            };
            controlView.AddChidren(btnFromFoorAndRoom);
            btnCollection = new Button()
            {
                X = Application.GetRealWidth(273),
                Y = Application.GetRealHeight(14),
                Width = Application.GetMinRealAverage(40),
                Height = Application.GetMinRealAverage(40),
                SelectedImagePath = "Collection/CollectionIcon.png",
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            #region 轮盘控制区域
            topMenuView = new FrameLayout()
            {
                Y = Application.GetRealHeight(88),
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(199),
                Height = Application.GetRealWidth(199),
                BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png",
            };
            controlView.AddChidren(topMenuView);
            btnTopMenuUp = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(80),
                Height = Application.GetRealWidth(50),
            };
            topMenuView.AddChidren(btnTopMenuUp);
            btnTopMenuLeft = new Button()
            {
                Gravity = Gravity.CenterVertical,
                Width = Application.GetRealWidth(50),
                Height = Application.GetRealWidth(80),
            };
            topMenuView.AddChidren(btnTopMenuLeft);
            btnTopMenuRight = new Button()
            {
                X = Application.GetRealWidth(150),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetRealWidth(50),
                Height = Application.GetRealWidth(80),
            };
            topMenuView.AddChidren(btnTopMenuRight);
            btnTopMenuDown = new Button()
            {
                Y = Application.GetRealWidth(150),
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(80),
                Height = Application.GetRealWidth(50),
            };
            topMenuView.AddChidren(btnTopMenuDown);
            btnOk = new Button()
            {
                Gravity = Gravity.Center,
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealWidth(100),
            };
            topMenuView.AddChidren(btnOk);
            #endregion
            #region 频道音量调节
            channleView = new FrameLayout()
            {
                X = Application.GetRealWidth(26),
                Y = Application.GetRealHeight(246),
                Width = Application.GetRealWidth(44),
                Height = Application.GetRealWidth(102),
                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
            };
            controlView.AddChidren(channleView);
            btnChlPlus = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(10),
                Width = Application.GetRealWidth(24),
                Height = Application.GetRealWidth(24),
                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
            };
            channleView.AddChidren(btnChlPlus);
            Button btnChlText;
            btnChlText = new Button()
            {
                Gravity = Gravity.CenterVertical,
                Height = Application.GetRealWidth(23),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextID = StringId.Chl,
            };
            channleView.AddChidren(btnChlText);
            btnChlReduce = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealWidth(66),
                Width = Application.GetRealWidth(24),
                Height = Application.GetRealWidth(24),
                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
            };
            channleView.AddChidren(btnChlReduce);
            volView = new FrameLayout()
            {
                X = Application.GetRealWidth(257),
                Y = Application.GetRealHeight(246),
                Width = Application.GetRealWidth(44),
                Height = Application.GetRealWidth(102),
                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
            };
            controlView.AddChidren(volView);
            btnVolPlus = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(10),
                Width = Application.GetRealWidth(24),
                Height = Application.GetRealWidth(24),
                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
            };
            volView.AddChidren(btnVolPlus);
            Button btnVolText;
            btnVolText = new Button()
            {
                Gravity = Gravity.CenterVertical,
                Height = Application.GetRealWidth(23),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextID = StringId.Vol,
            };
            volView.AddChidren(btnVolText);
            btnVolReduce = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealWidth(66),
                Width = Application.GetRealWidth(24),
                Height = Application.GetRealWidth(24),
                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
            };
            volView.AddChidren(btnVolReduce);
            #endregion
            #region 底部控制区域
            btnBack = new Button()
            {
                X = Application.GetRealWidth(52),
                Y = Application.GetRealHeight(402),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVBackIcon.png",
            };
            controlView.AddChidren(btnBack);
            btnMenu = new Button()
            {
                X = Application.GetRealWidth(116),
                Y = Application.GetRealHeight(402),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVMenuIcon.png",
            };
            controlView.AddChidren(btnMenu);
            btn123 = new Button()
            {
                X = Application.GetRealWidth(180),
                Y = Application.GetRealHeight(402),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealWidth(40),
                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TV123Icon.png",
            };
            controlView.AddChidren(btn123);
            btnMute = new Button()
            {
                X = Application.GetRealWidth(244),
                Y = Application.GetRealHeight(402),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVMuteIcon.png",
            };
            controlView.AddChidren(btnMute);
            btnMore = new Button()
            {
                X = Application.GetRealWidth(116),
                Y = Application.GetRealHeight(466),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
                UnSelectedImagePath = "FunctionIcon/AC/More.png",
            };
            controlView.AddChidren(btnMore);
            btnPower = new Button()
            {
                X = Application.GetRealWidth(180),
                Y = Application.GetRealHeight(466),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVPowerIcon.png",
            };
            controlView.AddChidren(btnPower);
            #endregion
            LoadEventList();
            new TopViewDiv(bodyView, Language.StringByID(StringId.STB)).LoadTopView_FunctionTop(function, actionRefresh);
            DriverLayer.Control.Ins.SendReadCommand(function);
        }
        void ShowNumberView()
        {
            Dialog dialog = new Dialog();
            FrameLayout dialogView = new FrameLayout()
            {
                AnimateSpeed = 0.3f,
                Animate = Animate.DownToUp,
            };
            dialog.AddChidren(dialogView);
            dialogView.MouseUpEventHandler = (sender, e) =>
            {
                dialog.Close();
            };
            FrameLayout numberView = new FrameLayout()
            {
                Y = Application.GetRealHeight(403),
                Height = Application.GetRealHeight(264),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            dialogView.AddChidren(numberView);
            for (int i = 0; i < 10; i++)
            {
                Button btn = new Button()
                {
                    Width = Application.GetRealWidth(98),
                    Height = Application.GetRealHeight(44),
                    Radius = (uint)Application.GetRealWidth(8),
                    BorderWidth = (uint)Application.GetRealWidth(1),
                    BorderColor = CSS_Color.PromptingColor1,
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                    SelectedBackgroundColor = CSS_Color.MainColor,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    SelectedTextColor = CSS_Color.MainBackgroundColor,
                    IsBold = true,
                    Text = i.ToString(),
                    TextAlignment = TextAlignment.Center,
                };
                if (i == 1 || i == 4 || i == 7)
                {
                    btn.X = Application.GetRealWidth(24);
                }
                else if (i == 2 || i == 5 || i == 8)
                {
                    btn.X = Application.GetRealWidth(138);
                }
                else if (i == 3 || i == 6 || i == 9)
                {
                    btn.X = Application.GetRealWidth(252);
                }
                else
                {
                    btn.X = Application.GetRealWidth(138);
                }
                if (i == 0)
                {
                    btn.Y = Application.GetRealHeight(204);
                }
                else if (i < 4)
                {
                    btn.Y = Application.GetRealHeight(24);
                }
                else if (i < 7)
                {
                    btn.Y = Application.GetRealHeight(84);
                }
                else
                {
                    btn.Y = Application.GetRealHeight(144);
                }
                numberView.AddChidren(btn);
                btn.MouseUpEventHandler = (sender, e) => {
                    string index = (sender as Button).Text;
                    btn.IsSelected = false;
                    if (DB_ResidenceData.Instance.GatewayType == 1)
                    {
                        Dictionary<string, string> d = new Dictionary<string, string>();
                        d.Add($"number_{index}", "");
                        Control.Ins.SendWriteCommand(function, d);
                    }
                };
                btn.MouseDownEventHandler = (sender, e) => {
                    btn.IsSelected = true;
                };
            }
            dialog.Show();
        }
        /// <summary>
        /// 加载事件列表
        /// </summary>
        void LoadEventList()
        {
            LoadControlEvent();
            LoadCollectionEvent();
            //回退刷新信息事件
            actionRefresh = () => {
                btnFunctionName.Text = btnFunctionName_Out.Text = function.name;
                btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName();
                function.UpdataFuncitonInfo();
            };
        }
        /// <summary>
        /// 收藏功能按钮事件
        /// </summary>
        void LoadCollectionEvent()
        {
            btnCollection.MouseUpEventHandler += (sender, e) => {
                btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
                function.CollectFunction();
            };
        }
        /// <summary>
        /// 加载控制事件
        /// </summary>
        void LoadControlEvent()
        {
            btnMenu.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("av_tv", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnChlPlus.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("ch+", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnChlReduce.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("ch-", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnVolPlus.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("volume+", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnVolReduce.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("volume-", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnBack.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("return", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnMenu.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("menu", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btn123.MouseUpEventHandler = (sender, e) =>
            {
                ShowNumberView();
            };
            btnMute.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("mute", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnPower.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("on_off", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
            };
            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
            };
            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
            };
            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
            };
            btnOk.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
            };
            btnMenu.MouseUpEventHandler = (sender, e) =>
            {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("menu", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("up", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("left", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("right", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("down", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
            btnOk.MouseUpEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add("ok", "");
                    Control.Ins.SendWriteCommand(function, d);
                }
            };
        }
    }
}