using System; using System.Collections.Generic; using HDL_ON.Entity; using Newtonsoft.Json.Linq; using Shared; namespace HDL_ON.UI { public class HomePage : FrameLayout { #region 控件列表 FrameLayout bodyView; /// /// 顶部信息区域 /// FrameLayout topView; /// ///住宅名称显示 /// Button btnResidenceName; /// /// 环境质量显示区域 /// FrameLayout environmentalView; /// /// 当前温度信息 /// Button btnTempValues; /// /// 当前湿度信息 /// Button btnHumidityValues; /// /// 当前pm2.5状态 /// Button btnPm25Values; #endregion public HomePage() { bodyView = this; bodyView.BackgroundColor = CSS.CSS_Color.BackgroundColor; } public void LoadPage() { #region topView topView = new FrameLayout() { Height = Application.GetRealHeight(216), BackgroundImagePath = DB_ResidenceData.residenceData.residenceImage, }; bodyView.AddChidren(topView); Button btnTop; btnTop = new Button() { BackgroundColor = 0x33000000, }; topView.AddChidren(btnTop); btnResidenceName = new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(32), Width = Application.GetRealWidth(200), Height = Application.GetRealHeight(33), TextColor = CSS.CSS_Color.MainBackgroundColor, TextSize = CSS.CSS_FontSize.EmphasisFontSize_FirstLevel, TextAlignment = TextAlignment.CenterLeft, Text = DB_ResidenceData.residenceData.residenceName, IsBold = true }; topView.AddChidren(btnResidenceName); environmentalView = new FrameLayout() { Y = Application.GetRealHeight(1) + btnResidenceName.Bottom, Height = Application.GetRealHeight(32), }; topView.AddChidren(environmentalView); #region 环境数据 Button btnTempIcon = new Button() { X = Application.GetRealWidth(12), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/InfoIcon/TempIcon.png", }; environmentalView.AddChidren(btnTempIcon); btnTempValues = new Button() { X = btnTempIcon.Right + Application.GetRealWidth(4), Width = Application.GetRealWidth(30), Gravity = Gravity.CenterVertical, TextColor = CSS.CSS_Color.MainBackgroundColor, TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel, Text = "--°", TextAlignment = TextAlignment.CenterLeft, }; environmentalView.AddChidren(btnTempValues); Button btnHumidityIcon = new Button() { X = btnTempValues.Right + Application.GetRealWidth(2), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/InfoIcon/HumidityIcon.png", }; environmentalView.AddChidren(btnHumidityIcon); btnHumidityValues = new Button() { X = btnHumidityIcon.Right + Application.GetRealWidth(4), Width = Application.GetRealWidth(30), Gravity = Gravity.CenterVertical, TextColor = CSS.CSS_Color.MainBackgroundColor, TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel, Text = "--%", TextAlignment = TextAlignment.CenterLeft, }; environmentalView.AddChidren(btnHumidityValues); Button btnPm25Icon = new Button() { X = btnHumidityValues.Right + Application.GetRealWidth(2), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/InfoIcon/Pm25Icon.png", }; environmentalView.AddChidren(btnPm25Icon); btnPm25Values = new Button() { X = btnPm25Icon.Right + Application.GetRealWidth(4), Width = Application.GetRealWidth(30), Gravity = Gravity.CenterVertical, TextColor = CSS.CSS_Color.MainBackgroundColor, TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel, Text = "--", TextAlignment = TextAlignment.CenterLeft, }; environmentalView.AddChidren(btnPm25Values); #endregion #region msg FrameLayout msgView; msgView = new FrameLayout() { Y = Application.GetRealHeight(164), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(28), BackgroundColor = CSS.CSS_Color.MainColor,//0x3F4484F4,// Alpha = 0.4f, }; topView.AddChidren(msgView); Button btnMsgIcon; btnMsgIcon = new Button() { X = Application.GetRealWidth(12), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(24), Height = Application.GetMinRealAverage(24), UnSelectedImagePath = "Collection/MsgIcon.png", SelectedImagePath = "Collection/MsgIconTip.png", }; msgView.AddChidren(btnMsgIcon); Button btnMsg; btnMsg = new Button() { X = Application.GetRealWidth(10) + btnMsgIcon.Right, Width = Application.GetRealWidth(240), Text = "无", TextColor = CSS.CSS_Color.MainBackgroundColor, TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel, TextAlignment = TextAlignment.CenterLeft, }; msgView.AddChidren(btnMsg); Button btnMsgTime; btnMsgTime = new Button() { X = Application.GetRealWidth(299), Width = Application.GetRealWidth(44), Text = "00:00", TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel, TextAlignment = TextAlignment.CenterLeft, }; msgView.AddChidren(btnMsgTime); #endregion #endregion #region 功能场景切换 FrameLayout changeView; changeView = new FrameLayout() { Y = Application.GetRealHeight(20) + topView.Bottom, Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(230), Height = Application.GetRealHeight(62), BackgroundImagePath = "Collection/ChangeViewbg.png", }; bodyView.AddChidren(changeView); Button btnChangeFunction; btnChangeFunction = new Button() { Width = Application.GetRealWidth(114), TextID = InternationalizationString.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, IsBold = true }; changeView.AddChidren(btnChangeFunction); Button btnLine = new Button() { X = btnChangeFunction.Right, Gravity = Gravity.CenterVertical, Width = Application.GetRealWidth(2), Height = Application.GetRealHeight(14), BackgroundColor = CSS.CSS_Color.PromptingColor1, }; changeView.AddChidren(btnLine); Button btnChangeScene; btnChangeScene = new Button() { X = btnLine.Right, Width = Application.GetRealWidth(114), TextID = InternationalizationString.Scenes, 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() { Y = changeView.Bottom + Application.GetRealHeight(10), Height = Application.GetRealHeight(340 + 30), //20为超出部分 }; bodyView.AddChidren(contextView); var lightViews = new Dictionary(); var acViews = new Dictionary(); var curtainViews = new Dictionary(); FrameLayout rowView = new FrameLayout(); foreach (var function in DB_ResidenceData.residenceData.functions) { int index = DB_ResidenceData.residenceData.functions.IndexOf(function); if (index % 2 == 0) { rowView = new FrameLayout() { Height = Application.GetRealHeight(140), }; contextView.AddChidren(rowView); } var functionView = new FrameLayout() { X = Application.GetRealWidth((182 + 7) * (index % 2)), Width = Application.GetRealWidth(182), Height = Application.GetRealHeight(140), }; rowView.AddChidren(functionView); var btnbg = new Button() { UnSelectedImagePath = "Collection/Functionbg.png", SelectedImagePath = "Collection/FunctionOnbg.png", }; functionView.AddChidren(btnbg); switch (function.funcType) { case FunctionType.Light: #region 灯光 Light lightViews.Add(function.sid, functionView); #endregion break; case FunctionType.Curtain: #region 窗帘 curtainViews.Add(function.sid, functionView); #endregion break; case FunctionType.AC: #region 空调 AC acViews.Add(function.sid, functionView); #endregion break; } LoadControlView(functionView, function); } contextView.AddChidren(new Button { Height = Application.GetRealHeight(30) }); #endregion } /// /// 加载控制卡片 /// void LoadControlView(FrameLayout view,Function function) { Button btnIcon; btnIcon = new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(16), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), }; view.AddChidren(btnIcon); Button btnName; btnName = new Button() { X = Application.GetRealWidth(21), Y = Application.GetRealHeight(10) + btnIcon.Bottom, Text = function.Name, IsBold = true, TextColor = CSS.CSS_Color.PromptingColor1, TextSize = CSS.CSS_FontSize.TextFontSize, Height = Application.GetRealHeight(24), Width = Application.GetRealWidth(140), TextAlignment = TextAlignment.CenterLeft, }; view.AddChidren(btnName); Button btnZone; btnZone = new Button() { X = Application.GetRealWidth(21), Y = btnName.Bottom, Height = Application.GetRealHeight(18), Width = Application.GetRealWidth(113), TextColor = CSS.CSS_Color.PromptingColor1, TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel, TextAlignment = TextAlignment.CenterLeft, SelectedTextColor = CSS.CSS_Color.MainBackgroundColor, }; view.AddChidren(btnZone); foreach(var roomId in function.roomIdList) { var room = DB_ResidenceData.residenceData.rooms.Find((obj) => obj.sid == roomId ); btnZone.Text = room.floor + " " + room.name; } Button btnState; btnState = new Button() { X = Application.GetRealWidth(21), Y = btnZone.Bottom, Height = Application.GetRealHeight(18), Width = Application.GetRealWidth(113), TextColor = CSS.CSS_Color.PromptingColor1, SelectedTextColor = CSS.CSS_Color.MainBackgroundColor, TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel, TextAlignment = TextAlignment.CenterLeft, Text = function.lastState }; view.AddChidren(btnState); Button btnCollection; btnCollection = new Button() { X = Application.GetRealWidth(130), Y = Application.GetRealHeight(20), Width = Application.GetMinRealAverage(24), Height = Application.GetMinRealAverage(24), UnSelectedImagePath = "Collection/CollectionIcon.png", SelectedImagePath = "Collection/CollectionOnIcon.png", }; view.AddChidren(btnCollection); Button btnSwitch; btnSwitch = new Button() { X = Application.GetRealWidth(122), Y = Application.GetRealHeight(92), Width = Application.GetRealWidth(48), Height = Application.GetRealHeight(36), UnSelectedImagePath = "Collection/Switch.png", SelectedImagePath = "Collection/SwitchOn.png", }; view.AddChidren(btnSwitch); switch (function.funcType) { case FunctionType.Light: #region 灯光 Light btnIcon.UnSelectedImagePath = "Public/FunctionIcon/LightIcon.png"; btnIcon.SelectedImagePath = "Public/FunctionIcon/LightOnIcon.png"; btnSwitch.MouseUpEventHandler += (sender, e) => { var jsonString = new JObject { { "Namespace", "HDL" }, { "Command", "write" }, { "Type", "device" } }; var data = new JObject { { "Switch", 1 }, { "Dimmer", 100 }, { "sid", "0001002019101209000025670400010001" } }; jsonString.Add("objects", data); Control.Send(jsonString, function, 3); }; #endregion break; case FunctionType.Curtain: #region 窗帘 btnIcon.UnSelectedImagePath = "Public/FunctionIcon/CurtainIcon.png"; btnIcon.SelectedImagePath = "Public/FunctionIcon/CurtainOnIcon.png"; #endregion break; case FunctionType.AC: #region 空调 AC btnIcon.UnSelectedImagePath = "Public/FunctionIcon/AcIcon.png"; btnIcon.SelectedImagePath = "Public/FunctionIcon/AcOnIcon.png"; #endregion break; case FunctionType.FloorHeating: #region 地热 btnIcon.UnSelectedImagePath = "Public/FunctionIcon/FloorHeatingIcon.png"; btnIcon.SelectedImagePath = "Public/FunctionIcon/FloorHeatingOnIcon.png"; #endregion break; } } } }