using System; using System.Collections.Generic; using HDL_ON.Entity; using Shared; namespace HDL_ON.UI { public partial class HomePage : FrameLayout { #region 控件列表 static FrameLayout bodyView; /// /// 顶部信息区域 /// FrameLayout topView; /// ///住宅名称显示 /// Button btnResidenceName; /// /// 环境质量显示区域 /// FrameLayout environmentalView; /// /// 当前温度信息 /// Button btnTempValues; /// /// 当前湿度信息 /// Button btnHumidityValues; /// /// 当前pm2.5状态 /// Button btnPm25Values; /// /// 灯光区域集合 /// static Dictionary LightViews; /// /// 空调区域集合 /// static Dictionary AcViews; /// /// 窗帘区域集合 /// static Dictionary CurtainViews; #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), }; topView.AddChidren(msgView); var btngb = new Button() { BackgroundColor = CSS.CSS_Color.MainColor,//0x3F4484F4,// Alpha = 0.4f, }; msgView.AddChidren(btngb); 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 = 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, IsBold = true }; changeView.AddChidren(btnChangeFunction); Button btnLine = new Button() { X = btnChangeFunction.Right, Gravity = Gravity.CenterVertical, Width = Application.GetRealWidth(1), 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 = StringId.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(310 + 30), //20为超出部分 }; bodyView.AddChidren(contextView); LightViews = new Dictionary(); AcViews = new Dictionary(); CurtainViews = new Dictionary(); var rowView = new FrameLayout(); try { int index = 0; foreach (var function in DB_ResidenceData.residenceData.functions.functions) { if (!function.collection) continue; if (index % 2 == 0) { rowView = new FrameLayout() { Height = Application.GetRealHeight(140), }; contextView.AddChidren(rowView); } var functionView_X = Application.GetRealWidth((182 + 7) * (index % 2)); if (index % 2 == 0) { functionView_X += 7; } var functionView = new FrameLayout() { X = functionView_X, Width = Application.GetRealWidth(182), Height = Application.GetRealHeight(140), Tag = function.sid }; rowView.AddChidren(functionView); var btnbg = new Button() { UnSelectedImagePath = "Collection/Functionbg.png", SelectedImagePath = "Collection/FunctionOnbg.png", }; functionView.AddChidren(btnbg); switch (function.functionCategory) { 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); index++; } } catch (Exception ex) { MainPage.Log("homepage erorr : " + ex.Message); } contextView.AddChidren(new Button { Height = Application.GetRealHeight(30) }); #endregion DB_ResidenceData.residenceData.RefreshResidenceFunctionStatus(); } /// /// 加载控制卡片 /// void LoadControlView(FrameLayout view,Function function) { try { 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.FirstLevelTitleColor, 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); if (room != null) { btnZone.Text = room.floor + " " + room.name; } else { btnZone.Text = ""; } } Button btnState; btnState = new Button() { X = Application.GetRealWidth(21), Y = btnZone.Bottom, Height = Application.GetRealHeight(18), Width = Application.GetRealWidth(113), SelectedTextColor = CSS.CSS_Color.MainBackgroundColor, TextColor = 0x00000000, TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel, TextAlignment = TextAlignment.CenterLeft, Tag = "state", Text = function.lastState }; view.AddChidren(btnState); Button btnCollection; btnCollection = new Button() { X = Application.GetRealWidth(130), Y = Application.GetRealHeight(16), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), SelectedImagePath = "Collection/CollectionWhiteIcon.png", UnSelectedImagePath = "Collection/CollectionIcon.png", }; view.AddChidren(btnCollection); btnCollection.MouseUpEventHandler += (sender, e) => { //btnCollection.IsSelected = !btnCollection.IsSelected; }; Button btnSwitch; btnSwitch = new Button() { X = Application.GetRealWidth(122), Y = Application.GetRealHeight(92), Width = Application.GetMinRealAverage(48), Height = Application.GetMinRealAverage(36), UnSelectedImagePath = "Collection/Switch.png", SelectedImagePath = "Collection/SwitchOn.png", }; view.AddChidren(btnSwitch); switch (function.functionCategory) { case FunctionType.Light: #region 灯光 Light btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightIcon.png"; btnIcon.SelectedImagePath = "FunctionIcon/Light/LightOnIcon.png"; LoadSwitchEvent(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) => //{ // var curState = !btnSwitch.IsSelected; // for (int i = 0; i < view.ChildrenCount; i++) // { // if (view.GetChildren(i).GetType() == typeof(Button)) // { // var btn = view.GetChildren(i) as Button; // btn.IsSelected = curState; // } // } // new System.Threading.Thread(() => // { // var light = function as Light; // light.state = btnSwitch.IsSelected ? 1 : 0; // Control.Send("write", function, 3); // }) // { IsBackground = true }.Start(); //}; #endregion break; case FunctionType.Curtain: #region 窗帘 btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png"; btnIcon.SelectedImagePath = "FunctionIcon/Curtain/CurtainOnIcon.png"; #endregion break; case FunctionType.AC: #region 空调 AC btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png"; btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png"; #endregion break; case FunctionType.FloorHeating: #region 地热 btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png"; btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png"; #endregion break; } }catch(Exception ex) { MainPage.Log("homepage LoadControlView error : " + ex.Message); } } } }