xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
@@ -1,6 +1,8 @@
using System;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Newtonsoft.Json.Linq;
using Shared;
namespace HDL_ON.UI
@@ -9,35 +11,62 @@
    {
        #region 控件列表
        FrameLayout bodyView;
        /// <summary>
        /// 功能名称显示按钮
        /// </summary>
        Button btnFunctionName;
        /// <summary>
        /// 功能名称编辑按钮
        /// </summary>
        Button btnEditName;
        /// <summary>
        /// 位置信息显示按钮
        /// </summary>
        Button btnLocationValues;
        /// <summary>
        /// 位置信息跳转编辑按钮
        /// </summary>
        Button btnLocationInfoRight;
        #endregion
        #region 局部变量
        Function function;
        /// <summary>
        /// 后退时,刷新之前界面的显示信息
        /// </summary>
        Action actionRefresh;
        #endregion
        public FunctionBaseInfoSetPage(Function func)
        public FunctionBaseInfoSetPage(Function func, Action action)
        {
            bodyView = this;
            function = func;
            actionRefresh = action;
        }
        /// <summary>
        /// 加载界面
        /// </summary>
        public void LoadPage()
        public void LoadPage(bool locationSetting = true)
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            new PublicAssmebly().LoadTopView(bodyView, Language.StringByID(StringId.Setting));
            new TopViewDiv(bodyView, Language.StringByID(StringId.Setting)).LoadTopView(actionRefresh);
            var contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(600),
                ScrollEnabled = false,
            };
            bodyView.AddChidren(contentView);
            #region name view
            var nameView = new FrameLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(50),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            bodyView.AddChidren(nameView);
            contentView.AddChidren(nameView);
            var btnNameText = new Button()
            {
@@ -50,18 +79,18 @@
            };
            nameView.AddChidren(btnNameText);
            var btnNameValues = new Button()
            btnFunctionName = new Button()
            {
                X = Application.GetRealWidth(186),
                Width = Application.GetRealWidth(137),
                X = Application.GetRealWidth(86),
                Width = Application.GetRealWidth(237),
                TextAlignment = TextAlignment.CenterRight,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.TextFontSize,
                Text = function.name,
            };
            nameView.AddChidren(btnNameValues);
            nameView.AddChidren(btnFunctionName);
            var btnEditName = new Button()
            btnEditName = new Button()
            {
                X = Application.GetRealWidth(333),
                Gravity = Gravity.CenterVertical,
@@ -81,119 +110,108 @@
                    Height = Application.GetRealHeight(1)
                });
            btnEditName.MouseUpEventHandler += (sender, e) => {
                LoadEditFunctionNameView();
            };
            #endregion
            #region 位置管理
            var locationMagtView = new FrameLayout()
            if (locationSetting)
            {
                Y = nameView.Bottom,
                Height = Application.GetRealHeight(55),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            bodyView.AddChidren(locationMagtView);
            var btnLocationMagtText = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(160),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.LocationManagement,
            };
            locationMagtView.AddChidren(btnLocationMagtText);
            var btnLocationValues = new Button()
            {
                X = Application.GetRealWidth(186),
                Width = Application.GetRealWidth(137),
                TextAlignment = TextAlignment.CenterRight,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.TextFontSize,
                Text = function.GetRoomListName(),
            };
            locationMagtView.AddChidren(btnLocationValues);
            var btnLocationMagtRight = new Button()
            {
                X = Application.GetRealWidth(339),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/RightIcon.png",
            };
            locationMagtView.AddChidren(btnLocationMagtRight);
            locationMagtView.AddChidren(
                new Button()
                #region 位置管理
                var locationMagtView = new FrameLayout()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Y = Application.GetRealHeight(54),
                    BackgroundColor = CSS_Color.DividingLineColor,
                    Width = Application.GetRealWidth(343),
                    Height = Application.GetRealHeight(1)
                });
            btnLocationMagtRight.MouseUpEventHandler += (sender, e) =>
            {
                SkipChooseRoomPage();
            };
            #endregion
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(locationMagtView);
                var btnLocationMagtTitle = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(160),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.LocationManagement,
                };
                locationMagtView.AddChidren(btnLocationMagtTitle);
                btnLocationValues = new Button()
                {
                    X = Application.GetRealWidth(86),
                    Width = Application.GetRealWidth(237),
                    TextAlignment = TextAlignment.CenterRight,
                    TextColor = CSS_Color.PromptingColor1,
                    TextSize = CSS_FontSize.TextFontSize,
                    Text = function.GetRoomListName(),
                };
                locationMagtView.AddChidren(btnLocationValues);
                btnLocationInfoRight = new Button()
                {
                    X = Application.GetRealWidth(339),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
                    UnSelectedImagePath = "Public/RightIcon.png",
                };
                locationMagtView.AddChidren(btnLocationInfoRight);
                locationMagtView.AddChidren(
                    new Button()
                    {
                        Gravity = Gravity.CenterHorizontal,
                        Y = Application.GetRealHeight(54),
                        BackgroundColor = CSS_Color.DividingLineColor,
                        Width = Application.GetRealWidth(343),
                        Height = Application.GetRealHeight(1)
                    });
                #endregion
            }
            #region 共享
            var sharedView = new FrameLayout()
            {
                Y = locationMagtView.Bottom,
                Height = Application.GetRealHeight(55),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            bodyView.AddChidren(sharedView);
            //var sharedView = new FrameLayout()
            //{
            //    Height = Application.GetRealHeight(55),
            //    BackgroundColor = CSS_Color.MainBackgroundColor,
            //};
            //contentView.AddChidren(sharedView);
            var btnSharedText = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(160),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.Shared,
            };
            sharedView.AddChidren(btnSharedText);
            //var btnSharedText = new Button()
            //{
            //    X = Application.GetRealWidth(16),
            //    Width = Application.GetRealWidth(160),
            //    TextAlignment = TextAlignment.CenterLeft,
            //    TextColor = CSS_Color.FirstLevelTitleColor,
            //    TextSize = CSS_FontSize.SubheadingFontSize,
            //    TextID = StringId.Shared,
            //};
            //sharedView.AddChidren(btnSharedText);
            var btnSharedRight = new Button()
            {
                X = Application.GetRealWidth(339),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/RightIcon.png",
            };
            sharedView.AddChidren(btnSharedRight);
            //var btnSharedRight = new Button()
            //{
            //    X = Application.GetRealWidth(339),
            //    Gravity = Gravity.CenterVertical,
            //    Width = Application.GetMinRealAverage(16),
            //    Height = Application.GetMinRealAverage(16),
            //    UnSelectedImagePath = "Public/RightIcon.png",
            //};
            //sharedView.AddChidren(btnSharedRight);
            sharedView.AddChidren(
                new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Y = Application.GetRealHeight(54),
                    BackgroundColor = CSS_Color.DividingLineColor,
                    Width = Application.GetRealWidth(343),
                    Height = Application.GetRealHeight(1)
                });
            //sharedView.AddChidren(
            //    new Button()
            //    {
            //        Gravity = Gravity.CenterHorizontal,
            //        Y = Application.GetRealHeight(54),
            //        BackgroundColor = CSS_Color.DividingLineColor,
            //        Width = Application.GetRealWidth(343),
            //        Height = Application.GetRealHeight(1)
            //    });
            #endregion
#if stage2
            #region 添加到桌面
            var addToDesktopView = new FrameLayout()
            {
                Y = sharedView.Bottom,
                Height = Application.GetRealHeight(55),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            bodyView.AddChidren(addToDesktopView);
            contentView.AddChidren(addToDesktopView);
            var btnAddToDesktopText = new Button()
            {
@@ -217,132 +235,132 @@
            addToDesktopView.AddChidren(btnAddToDesktopRight);
            #endregion
#endif
            if (function.spk == SPK.ElectricEnergy)
            {
                #region 能源数据
                var energyView1 = new FrameLayout()
                {
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(energyView1);
                var btnEnergyText1 = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(160),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.RealTimeEnergyConsumption,
                };
                energyView1.AddChidren(btnEnergyText1);
                double realTimePower = 0;
                double.TryParse(function.GetAttrState(FunctionAttributeKey.Power), out realTimePower);
                realTimePower /= 1000;
                var energyValue1 = new Button()
                {
                    Width = Application.GetRealWidth(355),
                    TextAlignment = TextAlignment.CenterRight,
                    TextSize = CSS_FontSize.TextFontSize,
                    TextColor = CSS_Color.PromptingColor1,
                    Text = realTimePower + "kW",
                };
                energyView1.AddChidren(energyValue1);
                energyView1.AddChidren(
                    new Button()
                    {
                        Gravity = Gravity.CenterHorizontal,
                        Y = Application.GetRealHeight(54),
                        BackgroundColor = CSS_Color.DividingLineColor,
                        Width = Application.GetRealWidth(343),
                        Height = Application.GetRealHeight(1)
                    });
                //-----------------
                var energyView2 = new FrameLayout()
                {
                    Height = Application.GetRealHeight(55),
                    BackgroundColor = CSS_Color.MainBackgroundColor,
                };
                contentView.AddChidren(energyView2);
                var btnEnergyText2 = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(160),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = StringId.EnergyConsumptionOfThisMonth,
                };
                energyView2.AddChidren(btnEnergyText2);
                var btnEnergyValue2 = new Button()
                {
                    Width = Application.GetRealWidth(355),
                    TextAlignment = TextAlignment.CenterRight,
                    TextSize = CSS_FontSize.TextFontSize,
                    TextColor = CSS_Color.PromptingColor1,
                    Text = "--kW",
                };
                energyView2.AddChidren(btnEnergyValue2);
                energyView2.AddChidren(
                    new Button()
                    {
                        Gravity = Gravity.CenterHorizontal,
                        Y = Application.GetRealHeight(54),
                        BackgroundColor = CSS_Color.DividingLineColor,
                        Width = Application.GetRealWidth(343),
                        Height = Application.GetRealHeight(1)
                    });
                new System.Threading.Thread(() =>
                {
                    var pm = new HttpServerRequest();
                    var data = pm.GetLastMonthHistory(function.deviceId, FunctionAttributeKey.TotalElectricity);
                    if (data != null)
                    {
                        if (data.Code == StateCode.SUCCESS)
                        {
                            var dataPack = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(data.Data.ToString());
                            if (dataPack != null)
                            {
                                try
                                {
                                    var dataValue = dataPack.GetValue("monthDiff").ToString();
                                    if (!string.IsNullOrEmpty(dataValue))
                                    {
                                        Application.RunOnMainThread(() =>
                                        {
                                            btnEnergyValue2.Text = dataValue + "kW‧h";
                                        });
                                    }
                                }
                                catch
                                {
                                }
                            }
                        }
                    }
                })
                { IsBackground = true }.Start();
                #endregion
            }
            LoadEventList();
        }
        void LoadEditFunctionNameView()
        {
            Dialog dialog = new Dialog()
            {
                BackgroundColor = 0x99000000,
            };
            FrameLayout dialogView = new FrameLayout()
            {
                Gravity = Gravity.Center,
                Width = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(172),
                BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
                BorderColor = 0x00000000,
                BorderWidth = 0,
                Radius = (uint)Application.GetMinRealAverage(10),
            };
            dialog.AddChidren(dialogView);
            Button btnTitle = new Button()
            {
                Y = Application.GetRealHeight(10),
                Height = Application.GetRealHeight(42),
                TextColor = CSS.CSS_Color.MainColor,
                TextSize = CSS.CSS_FontSize.SubheadingFontSize,
                TextAlignment = TextAlignment.Center,
                IsBold = true,
                TextID = StringId.ChangeName,
            };
            dialogView.AddChidren(btnTitle);
            FrameLayout editView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = btnTitle.Bottom + Application.GetRealHeight(6),
                Width = Application.GetRealWidth(222),
                Height = Application.GetRealHeight(44),
                BackgroundColor = CSS.CSS_Color.BackgroundColor,
                BorderColor = 0x00000000,
                BorderWidth = 0,
                Radius = (uint)Application.GetMinRealAverage(4),
            };
            dialogView.AddChidren(editView);
            EditText etName = new EditText()
            {
                X = Application.GetRealWidth(12),
                Width = Application.GetRealWidth(182),
                Text = function.name,
                TextColor = CSS.CSS_Color.FirstLevelTitleColor,
                TextSize = CSS.CSS_FontSize.TextFontSize,
            };
            editView.AddChidren(etName);
            Button btnLine = new Button()
            {
                Y = Application.GetRealHeight(128),
                Height = Application.GetRealHeight(1),
                BackgroundColor = CSS.CSS_Color.DividingLineColor,
            };
            dialogView.AddChidren(btnLine);
            Button btnCancel = new Button()
            {
                Y = btnLine.Bottom,
                Width = Application.GetRealWidth(134),
                Height = Application.GetRealHeight(43),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS.CSS_Color.TextualColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                SelectedTextColor = CSS_Color.MainBackgroundColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                TextID = StringId.Cancel,
            };
            dialogView.AddChidren(btnCancel);
            Button btnBottomLine = new Button()
            {
                X = btnCancel.Right,
                Y = btnLine.Bottom,
                Height = Application.GetRealHeight(43),
                Width = Application.GetRealWidth(1),
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            dialogView.AddChidren(btnBottomLine);
            Button btnConfirm = new Button()
            {
                X = btnBottomLine.Right,
                Y = btnLine.Bottom,
                Width = Application.GetRealWidth(135),
                Height = Application.GetRealHeight(43),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS.CSS_Color.TextualColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                SelectedTextColor = CSS_Color.MainBackgroundColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                TextID = StringId.Confirm,
            };
            dialogView.AddChidren(btnConfirm);
            dialog.Show();
            btnCancel.MouseDownEventHandler += (sender, e) => {
                btnCancel.IsSelected = true;
            };
            btnCancel.MouseUpEventHandler += (sender, e) => {
                btnCancel.IsSelected = false;
                dialog.Close();
            };
            btnConfirm.MouseDownEventHandler += (sender, e) => {
                btnConfirm.IsSelected = true;
            };
            btnConfirm.MouseUpEventHandler += (sender, e) => {
                btnConfirm.IsSelected = false;
                function.name = etName.Text.Trim();
                DB_ResidenceData.residenceData.SaveResidenceData();
                dialog.Close();
            };
        }
    }
}