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; /// /// 功能名称按钮 /// Button btnFunctionName; /// /// 房间楼层信息按钮 /// Button btnFromFoorAndRoom; /// /// 收藏按钮 /// 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 device; Button btnCollection_Out; Button btnFunctionName_Out; Button btnFromFloor_Out; /// /// 刷新显示信息 /// Action actionRefresh; #endregion public StbPage(Function func) { bodyView = this; device = 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 = device.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 = device.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 = device.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(35), Height = Application.GetRealWidth(35), UnSelectedImagePath = "FunctionIcon/AC/More.png", }; controlView.AddChidren(btnMore); btnMore.MouseUpEventHandler = (sender, e) => { LoadDialog_IrMoreView(); }; 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(device, actionRefresh); } 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 d = new Dictionary(); d.Add($"number_{index}", ""); Control.Ins.SendWriteCommand(device, d); } }; btn.MouseDownEventHandler = (sender, e) => { btn.IsSelected = true; }; } dialog.Show(); } /// /// 加载事件列表 /// void LoadEventList() { LoadControlEvent(); LoadCollectionEvent(); //回退刷新信息事件 actionRefresh = () => { btnFunctionName.Text = btnFunctionName_Out.Text = device.name; btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = device.GetRoomListName(); device.UpdataFuncitonInfo(); }; } /// /// 收藏功能按钮事件 /// void LoadCollectionEvent() { btnCollection.MouseUpEventHandler += (sender, e) => { btnCollection.IsSelected = device.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected; device.CollectFunction(); }; } /// /// 加载控制事件 /// void LoadControlEvent() { btnMenu.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("av_tv", ""); Control.Ins.SendWriteCommand(device, d); } }; btnChlPlus.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("ch+", ""); Control.Ins.SendWriteCommand(device, d); } }; btnChlReduce.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("ch-", ""); Control.Ins.SendWriteCommand(device, d); } }; btnVolPlus.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("volume+", ""); Control.Ins.SendWriteCommand(device, d); } }; btnVolReduce.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("volume-", ""); Control.Ins.SendWriteCommand(device, d); } }; btnBack.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("return", ""); Control.Ins.SendWriteCommand(device, d); } }; btnMenu.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("menu", ""); Control.Ins.SendWriteCommand(device, d); } }; btn123.MouseUpEventHandler = (sender, e) => { ShowNumberView(); }; btnMute.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("mute", ""); Control.Ins.SendWriteCommand(device, d); } }; btnPower.MouseUpEventHandler = (sender, e) => { if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("on_off", ""); Control.Ins.SendWriteCommand(device, 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 d = new Dictionary(); d.Add("menu", ""); Control.Ins.SendWriteCommand(device, d); } }; btnTopMenuUp.MouseUpEventHandler = (sender, e) => { topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png"; if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("up", ""); Control.Ins.SendWriteCommand(device, d); } }; btnTopMenuLeft.MouseUpEventHandler = (sender, e) => { topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png"; if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("left", ""); Control.Ins.SendWriteCommand(device, d); } }; btnTopMenuRight.MouseUpEventHandler = (sender, e) => { topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png"; if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("right", ""); Control.Ins.SendWriteCommand(device, d); } }; btnTopMenuDown.MouseUpEventHandler = (sender, e) => { topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png"; if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("down", ""); Control.Ins.SendWriteCommand(device, d); } }; btnOk.MouseUpEventHandler = (sender, e) => { topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png"; if (DB_ResidenceData.Instance.GatewayType == 1) { Dictionary d = new Dictionary(); d.Add("ok", ""); Control.Ins.SendWriteCommand(device, d); } }; } /// /// 加载额外对红外按钮界面 /// void LoadDialog_IrMoreView() { Dialog dialog = new Dialog(); var div = new FrameLayout(); dialog.AddChidren(div); div.MouseUpEventHandler = (sender, e) => { dialog.Close(); }; var bodyView = new FrameLayout() { Y = Application.GetRealHeight(417),//667 Height = Application.GetRealHeight(250), BackgroundColor = CSS_Color.MainBackgroundColor, }; div.AddChidren(bodyView); var contentView = new VerticalScrolViewLayout() { Y = Application.GetRealHeight(16), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(296 + 200), Height = Application.GetRealHeight(234), }; bodyView.AddChidren(contentView); var row = new FrameLayout() { Height = Application.GetRealHeight(60), Width = Application.GetRealWidth(296), Gravity = Gravity.CenterHorizontal, }; contentView.AddChidren(row); int index = 0; List attrList = new List(); attrList.AddRange(device.attributes); attrList.Add(new FunctionAttributes() { key = "+", }); foreach (var attr in attrList) { if (attr.key == "up" || attr.key == "down" || attr.key == "right" || attr.key == "left" || attr.key == "zoom+" || attr.key == "zoom-" || attr.key == "volume+" || attr.key == "volume-" || attr.key == "back" || attr.key == "menu" || attr.key == FunctionAttributeKey.OnOff ) { continue; } if (index != 0 && index % 3 == 0) { row = new FrameLayout() { Height = Application.GetRealHeight(56), Width = Application.GetRealWidth(296), Gravity = Gravity.CenterHorizontal, }; contentView.AddChidren(row); } if (attr.key == "+") { var addView = new FrameLayout() { Gravity = Gravity.CenterVertical, Width = Application.GetRealWidth(88), Height = Application.GetRealHeight(40), Radius = (uint)Application.GetRealHeight(18), BorderColor = CSS_Color.PromptingColor1, BorderWidth = (uint)Application.GetRealWidth(2), }; if (index % 3 == 1) { addView.Gravity = Gravity.Center; } else if (index % 3 == 2) { addView.X = Application.GetRealWidth(208); } row.AddChidren(addView); var btnAdd = new Button() { Gravity = Gravity.Center, UnSelectedImagePath = "Public/PlusSignIcon.png", Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), }; addView.AddChidren(btnAdd); btnAdd.MouseUpEventHandler = (sender, e) => { dialog.Close(); Action action = () => { LoadDialog_IrMoreView(); }; var addButton = new AcControlPage_AddIrButton(action); MainPage.BasePageView.AddChidren(addButton); addButton.Show(device); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; } else { var btn = new Button() { Gravity = Gravity.CenterVertical, Width = Application.GetRealWidth(88), Height = Application.GetRealHeight(40), Radius = (uint)Application.GetRealHeight(18), BorderColor = CSS_Color.PromptingColor1, BorderWidth = (uint)Application.GetRealWidth(2), TextAlignment = TextAlignment.Center, TextSize = CSS_FontSize.TextFontSize, TextColor = CSS_Color.FirstLevelTitleColor, SelectedTextColor = CSS_Color.MainBackgroundColor, SelectedBackgroundColor = CSS_Color.MainColor, }; if (attr.value.Count > 0) { btn.Text = attr.value[0]; } if (index % 3 == 1) { btn.Gravity = Gravity.Center; } else if (index % 3 == 2) { btn.X = Application.GetRealWidth(208); } row.AddChidren(btn); btn.MouseUpEventHandler = (sender, e) => { Dictionary d = new Dictionary(); d.Add(attr.key, ""); Control.Ins.SendWriteCommand(device, d); new System.Threading.Thread(() => { System.Threading.Thread.Sleep(2000); Application.RunOnMainThread(() => { btn.IsSelected = false; }); }) { IsBackground = true }.Start(); }; } index++; } dialog.Show(); } } }