wxr
2020-08-11 2bec9c838d2d688025698de8ec1de401ffd7dd1f
HDL_ON/UI/UI0-Public/PublicAssmebly.cs
@@ -1,4 +1,6 @@
using System;
using System.Collections.Generic;
using System.Threading;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
@@ -7,281 +9,68 @@
{
    public partial class PublicAssmebly
    {
        /*
        /// <summary>
        /// 向framelayout添加顶部区域
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="tilte"></param>
        public void LoadTopView(FrameLayout frame, string tilte)
        void EditParaterEvent(Button btnConfirm, int errorId_IsNullOrEmpty, int errorId_ContainsPar, List<string> list, EditText editText, Action<string> callBackAction,
            FrameLayout contentView, Button btnLine, Button btnBottomLine, Button btnCancel, FrameLayout editView, Dialog dialog,int titleId)
        {
            FrameLayout view = new FrameLayout()
            {
                Height = Application.GetRealHeight(64),
                BackgroundColor = CSS_Color.TopViewColor,
            };
            frame.AddChidren(view);
            Button btnBack = new Button()
            var btnTip = new Button()
            {
                X = Application.GetRealWidth(10),
                Y = Application.GetRealHeight(29),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealHeight(28),
                UnSelectedImagePath = "Public/BackIcon.png",
            };
            frame.AddChidren(btnBack);
            btnBack.MouseUpEventHandler += (sender, e) =>
            {
                frame.RemoveFromParent();
                X = editView.X,
                Y = editView.Bottom,
                Width = Application.GetRealWidth(182),
                Height = Application.GetRealHeight(30),
                TextColor = CSS_Color.WarningColor,
                TextSize = CSS_FontSize.TextFontSize,
                IsMoreLines = true,
                TextAlignment = TextAlignment.CenterLeft,
            };
            Button btnTilte = new Button()
            btnConfirm.MouseUpEventHandler += (sender, e) =>
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(30),
                Width = Application.GetRealWidth(150),
                Height = Application.GetRealHeight(25),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.HeadlineFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = tilte
            };
            frame.AddChidren(btnTilte);
        }
        /// <summary>
        /// 向framelayout添加顶部区域
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="tilte"></param>
        public void LoadTopView(FrameLayout frame, string tilte ,Action action)
        {
            FrameLayout view = new FrameLayout()
            {
                Height = Application.GetRealHeight(64),
                BackgroundColor = CSS_Color.TopViewColor,
            };
            frame.AddChidren(view);
            Button btnBack = new Button()
            {
                X = Application.GetRealWidth(10),
                Y = Application.GetRealHeight(29),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealHeight(28),
                UnSelectedImagePath = "Public/BackIcon.png",
            };
            frame.AddChidren(btnBack);
            btnBack.MouseUpEventHandler += (sender, e) =>
            {
                action();
                frame.RemoveFromParent();
            };
            Button btnTilte = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(30),
                Width = Application.GetRealWidth(150),
                Height = Application.GetRealHeight(25),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.HeadlineFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = tilte
            };
            frame.AddChidren(btnTilte);
        }
        /// <summary>
        /// 向dialog添加顶部区域
        /// </summary>
        /// <param name="dialog"></param>
        /// <param name="frame"></param>
        /// <param name="tilte"></param>
        public void LoadTopView(Dialog dialog, FrameLayout frame, string tilte)
        {
            FrameLayout view = new FrameLayout()
            {
                Height = Application.GetRealHeight(64),
                BackgroundColor = CSS_Color.TopViewColor,
            };
            frame.AddChidren(view);
            Button btnBack = new Button()
            {
                X = Application.GetRealWidth(10),
                Y = Application.GetRealHeight(29),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealHeight(28),
                UnSelectedImagePath = "Public/BackIcon.png",
            };
            frame.AddChidren(btnBack);
            btnBack.MouseUpEventHandler += (sender, e) =>
            {
                dialog.Close();
            };
            Button btnTilte = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(30),
                Width = Application.GetRealWidth(150),
                Height = Application.GetRealHeight(25),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.HeadlineFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = tilte
            };
            frame.AddChidren(btnTilte);
        }
        /// <summary>
        /// 向framelayout添加顶部区域,拥有功能配置按钮
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="tilte"></param>
        public void LoadTopView(FrameLayout frame, string tilte,Function function)
        {
            FrameLayout view = new FrameLayout()
            {
                Height = Application.GetRealHeight(64),
                BackgroundColor = CSS_Color.TopViewColor,
            };
            frame.AddChidren(view);
            Button btnBack = new Button()
            {
                X = Application.GetRealWidth(10),
                Y = Application.GetRealHeight(29),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealHeight(28),
                UnSelectedImagePath = "Public/BackIcon.png",
            };
            frame.AddChidren(btnBack);
            btnBack.MouseUpEventHandler += (sender, e) =>
            {
                frame.RemoveFromParent();
            };
            Button btnTilte = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(30),
                Width = Application.GetRealWidth(150),
                Height = Application.GetRealHeight(25),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.HeadlineFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = tilte
            };
            frame.AddChidren(btnTilte);
            var btnSetting = new Button()
            {
                X = Application.GetRealWidth(337),
                Y = Application.GetRealHeight(29),
                Width = Application.GetMinRealAverage(28),
                Height = Application.GetMinRealAverage(28),
                UnSelectedImagePath = "Public/FuncInfoSetIcon.png",
            };
            frame.AddChidren(btnSetting);
            btnSetting.MouseUpEventHandler += (sender, e) => {
                var infoView = new FunctionBaseInfoSetPage(function);
                MainPage.BasePageView.AddChidren(infoView);
                infoView.LoadPage();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
        }
        /// <summary>
        /// 向framelayout添加顶部区域,拥有功能配置按钮
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="tilte"></param>
        public void LoadTopView(FrameLayout frame, string tilte, string type,Action<string,string> callBack)
        {
            FrameLayout view = new FrameLayout()
            {
                Height = Application.GetRealHeight(64),
                BackgroundColor = CSS_Color.TopViewColor,
            };
            frame.AddChidren(view);
            Button btnBack = new Button()
            {
                X = Application.GetRealWidth(10),
                Y = Application.GetRealHeight(29),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealHeight(28),
                UnSelectedImagePath = "Public/BackIcon.png",
            };
            frame.AddChidren(btnBack);
            btnBack.MouseUpEventHandler += (sender, e) =>
            {
                frame.RemoveFromParent();
            };
            Button btnTilte = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(30),
                Width = Application.GetRealWidth(150),
                Height = Application.GetRealHeight(25),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.HeadlineFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = tilte
            };
            frame.AddChidren(btnTilte);
            var btnAddIcon = new Button()
            {
                X = Application.GetRealWidth(337),
                Y = Application.GetRealHeight(29),
                Width = Application.GetMinRealAverage(28),
                Height = Application.GetMinRealAverage(28),
                UnSelectedImagePath = "Public/AddIcon.png",
            };
            frame.AddChidren(btnAddIcon);
            btnAddIcon.MouseUpEventHandler += (sender, e) => {
                switch (type)
                //btnConfirm.IsSelected = false;
                if (string.IsNullOrEmpty(editText.Text.Trim()) || list.Contains(editText.Text.Trim()))
                {
                    case "floors":
                        Action<string> callBackAction = (floorName) =>
                        {
                            if (DB_ResidenceData.residenceData.floors.Contains(floorName))
                            {
                                return;
                            }
                            else
                            {
                                DB_ResidenceData.residenceData.floors.Add(floorName);
                                DB_ResidenceData.residenceData.SaveResidenceData();
                                callBack("add", floorName);
                            }
                        };
                        LoadDialog_EditParater(StringId.AddFloors, DB_ResidenceData.residenceData.floors.Count + 1 + " F", callBackAction);
                        break;
                    case "rooms":
                        callBack("", "");
                        break;
                    if(titleId == StringId.ModifyMemberNickname)
                    {
                        return;
                    }
                    string tipMsgString = "";
                    if (string.IsNullOrEmpty(editText.Text.Trim()))
                    {
                        tipMsgString = Language.StringByID(errorId_IsNullOrEmpty);
                    }
                    else
                    {
                        tipMsgString = Language.StringByID(errorId_ContainsPar);
                    }
                    contentView.Height = Application.GetRealHeight(183);
                    btnLine.Y = Application.GetRealHeight(139);
                    btnBottomLine.Y = btnLine.Bottom;
                    btnCancel.Y = btnLine.Bottom;
                    btnConfirm.Y = btnLine.Bottom;
                    btnTip.Text = tipMsgString;
                    contentView.AddChidren(btnTip);
                    return;
                }
                callBackAction(editText.Text.Trim());
                dialog.Close();
            };
        }
        */
        /// <summary>
        /// 加载修改参数的小弹窗
        /// 保存按钮事件需要将
        /// </summary>
        /// <param name="callBackAction">回调函数</param>
        public void LoadDialog_EditParater(int titleId, string editParater, Action<string> callBackAction)
        public void LoadDialog_EditParater(int titleId, string editParater, Action<string> callBackAction, int errorId_IsNullOrEmpty, int errorId_ContainsPar, List<string> baseList,bool encryption = false)
        {
            Dialog dialog = new Dialog()
            {
@@ -330,16 +119,25 @@
                X = Application.GetRealWidth(12),
                Width = Application.GetRealWidth(182),
                Text = editParater,
                TextColor = CSS.CSS_Color.FirstLevelTitleColor,
                TextSize = CSS.CSS_FontSize.TextFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                SecureTextEntry = encryption,
                //TextAlignment = TextAlignment.CenterLeft ,
            };
            editView.AddChidren(etParater);
            etParater.TextChangeEventHandler = (sender, e) => {
                if(etParater.Text.Length > 20)
                {
                    etParater.Text = etParater.Text.Remove(20);
                }
            };
            Button btnLine = new Button()
            {
                Y = Application.GetRealHeight(128),
                Y = Application.GetRealHeight(129),
                Height = Application.GetRealHeight(1),
                BackgroundColor = CSS.CSS_Color.DividingLineColor,
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            contentView.AddChidren(btnLine);
@@ -351,8 +149,8 @@
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                SelectedTextColor = CSS_Color.MainBackgroundColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                //SelectedTextColor = CSS_Color.MainBackgroundColor,
                //SelectedBackgroundColor = CSS_Color.MainColor,
                TextID = StringId.Cancel,
            };
            contentView.AddChidren(btnCancel);
@@ -365,76 +163,37 @@
                Width = Application.GetRealWidth(1),
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            contentView.AddChidren(btnBottomLine);
            //contentView.AddChidren(btnBottomLine);
            Button btnConfirm = new Button()
            {
                X = btnBottomLine.Right,
                Y = btnLine.Bottom,
                Y = btnLine.Y,
                Width = Application.GetRealWidth(135),
                Height = Application.GetRealHeight(43),
                Height = Application.GetRealHeight(43+1),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS.CSS_Color.TextualColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                SelectedTextColor = CSS_Color.MainBackgroundColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                //TextColor = CSS_Color.TextualColor,
                //TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.MainBackgroundColor,
                BackgroundColor = CSS_Color.MainColor,
                TextID = StringId.Confirm,
            };
            contentView.AddChidren(btnConfirm);
            dialog.Show();
            btnCancel.MouseDownEventHandler += (sender, e) => {
                btnCancel.IsSelected = true;
            };
            //btnCancel.MouseDownEventHandler += (sender, e) => {
            //    btnCancel.IsSelected = true;
            //};
            btnCancel.MouseUpEventHandler += (sender, e) => {
                btnCancel.IsSelected = false;
                //btnCancel.IsSelected = false;
                dialog.Close();
            };
            btnConfirm.MouseDownEventHandler += (sender, e) => {
                btnConfirm.IsSelected = true;
            };
            btnConfirm.MouseUpEventHandler += (sender, e) =>
            {
                btnConfirm.IsSelected = false;
                if ((titleId == StringId.EditFloorName && etParater.Text.Trim() != editParater) || titleId == StringId.AddFloors)
                {
                    if (DB_ResidenceData.residenceData.floors.Contains(etParater.Text.Trim()))
                    {
                        contentView.Height = Application.GetRealHeight(183);
                        btnLine.Y = Application.GetRealHeight(139);
                        btnBottomLine.Y = btnLine.Bottom;
                        btnCancel.Y = btnLine.Bottom;
                        btnConfirm.Y = btnLine.Bottom;
                        var btnTip = new Button()
                        {
                            X = editView.X,
                            Y = editView.Bottom,
                            Width = Application.GetRealWidth(182),
                            Height = Application.GetRealHeight(30),
                            TextID = StringId.AddFloorFailed_FloorAlreadyExist,
                            TextColor = CSS_Color.WarningColor,
                            TextSize = CSS_FontSize.TextFontSize,
                        };
                        contentView.AddChidren(btnTip);
                        return;
                    }
                    callBackAction(etParater.Text.Trim());
                }
                if(titleId == StringId.RoomName || titleId == StringId.ChangeName)
                {
                    if(editParater != etParater.Text.Trim())
                    {
                        callBackAction(etParater.Text.Trim());
                    }
                }
                dialog.Close();
            };
            //btnConfirm.MouseDownEventHandler += (sender, e) => {
            //    btnConfirm.IsSelected = true;
            //};
            EditParaterEvent(btnConfirm, errorId_IsNullOrEmpty, errorId_ContainsPar, baseList, etParater, callBackAction,
                contentView, btnLine, btnBottomLine, btnCancel, editView, dialog,titleId);
        }
        /// <summary>
@@ -491,6 +250,7 @@
            {
                Y = Application.GetRealHeight(96),
                Height = Application.GetRealHeight(1),
                Width = Application.GetRealWidth(270/2),
                BackgroundColor = CSS.CSS_Color.DividingLineColor,
            };
            contentView.AddChidren(btnLine);
@@ -503,8 +263,8 @@
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                SelectedTextColor = CSS_Color.MainBackgroundColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                //SelectedTextColor = CSS_Color.MainBackgroundColor,
                //SelectedBackgroundColor = CSS_Color.MainColor,
                TextID = StringId.Cancel,
            };
            contentView.AddChidren(btnCancel);
@@ -517,47 +277,100 @@
                Width = Application.GetRealWidth(1),
                BackgroundColor = CSS_Color.DividingLineColor,
            };
            contentView.AddChidren(btnBottomLine);
            //contentView.AddChidren(btnBottomLine);
            Button btnConfirm = new Button()
            {
                X = btnBottomLine.Right,
                Y = btnLine.Bottom,
                Y = btnLine.Y,
                Width = Application.GetRealWidth(135),
                Height = Application.GetRealHeight(43),
                Height = Application.GetRealHeight(43+1),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                SelectedTextColor = CSS_Color.MainBackgroundColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                //TextColor = CSS_Color.TextualColor,
                //TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.MainBackgroundColor,
                BackgroundColor = CSS_Color.MainColor,
                TextID = StringId.Confirm,
            };
            contentView.AddChidren(btnConfirm);
            dialog.Show();
            btnCancel.MouseDownEventHandler += (sender, e) =>
            {
                btnCancel.IsSelected = true;
            };
            //btnCancel.MouseDownEventHandler += (sender, e) =>
            //{
            //    btnCancel.IsSelected = true;
            //};
            btnCancel.MouseUpEventHandler += (sender, e) =>
            {
                btnCancel.IsSelected = false;
                //btnCancel.IsSelected = false;
                dialog.Close();
            };
            btnConfirm.MouseDownEventHandler += (sender, e) =>
            {
                btnConfirm.IsSelected = true;
            };
            //btnConfirm.MouseDownEventHandler += (sender, e) =>
            //{
            //    btnConfirm.IsSelected = true;
            //};
            btnConfirm.MouseUpEventHandler += (sender, e) =>
            {
                btnConfirm.IsSelected = false;
                //btnConfirm.IsSelected = false;
                callBackAction();
                dialog.Close();
            };
        }
        /// <summary>
        /// 信息提示窗口,自动关闭
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="isWhite"></param>
        public void TipMsgAutoClose(string msg,bool isWhite,int closeTime = 1500)
        {
            Dialog dialog = new Dialog()
            {
                X = Application.GetRealWidth(89),
                Y = Application.GetRealHeight(285),
                Width = Application.GetRealWidth(198),
                Height = Application.GetRealHeight(98),
            };
            FrameLayout frame = new FrameLayout()
            {
                BackgroundColor = isWhite ? 0xE6FFFFFF : CSS_Color.DialogTransparentColor1,
                Radius = (uint)Application.GetRealWidth(12),
            };
            dialog.AddChidren(frame);
            Button btnTipIcon = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(15),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
                UnSelectedImagePath = isWhite ? "Public/MsgIcon/TipIconBlack.png" : "Public/MsgIcon/TipIconWhite.png",
            };
            frame.AddChidren(btnTipIcon);
            Button btnTipMsg = new Button()
            {
                Y = Application.GetRealHeight(47),
                Height = Application.GetRealHeight(50),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.TextFontSize,
                TextColor = isWhite ? CSS_Color.FirstLevelTitleColor : CSS_Color.MainBackgroundColor,
                Text = msg,
            };
            frame.AddChidren(btnTipMsg);
            dialog.Show();
            new Thread(() => {
                Thread.Sleep(closeTime);
                Application.RunOnMainThread(() =>
                {
                    dialog.Close();
                });
            }) { IsBackground = true }.Start();
        }
        /// <summary>
        /// 加载提示弹窗
@@ -643,6 +456,74 @@
        }
        /// <summary>
        /// 加载等待界面
        /// </summary>
        public void LoadPage_WaitPage(Thread thread, FrameLayout bodyView, Loading waitPage)
        {
            bodyView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
            var showedTime = DateTime.Now;
            //如果等待事件过长,可以允许用户取消当前操作
            waitPage.MouseUpEventHandler += (sender, e) =>
            {
                if (showedTime.AddSeconds(30) > DateTime.Now)
                {
                    thread.Abort();
                    waitPage.RemoveFromParent();
                }
            };
            thread.Start();
        }
        /// <summary>
        /// 加载显示等待窗口
        /// </summary>
        /// <param name="msg"></param>
        /// <returns>返回关闭窗口Action</returns>
        public Action TipLoadingMsgDialog(string msg)
        {
            Dialog dialog = new Dialog()
            {
                X = Application.GetRealWidth(89),
                Y = Application.GetRealHeight(285),
                Width = Application.GetRealWidth(198),
                Height = Application.GetRealHeight(98),
            };
            FrameLayout frame = new FrameLayout()
            {
                BackgroundColor = CSS_Color.DialogTransparentColor1,
                Radius = (uint)Application.GetRealWidth(12),
            };
            dialog.AddChidren(frame);
            Button btnTipIcon = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(15),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
                UnSelectedImagePath = "Public/MsgIcon/LoadingIcon.png",
            };
            frame.AddChidren(btnTipIcon);
            Button btnTipMsg = new Button()
            {
                Y = Application.GetRealHeight(47),
                Height = Application.GetRealHeight(50),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.TextFontSize,
                TextColor = CSS_Color.MainBackgroundColor,
                Text = msg,
            };
            frame.AddChidren(btnTipMsg);
            dialog.Show();
            return new Action(() => {
                dialog.Close();
            });
        }
    }
}