wxr
2020-11-12 a715181089be0d31cd737a5367ffd02690b9d77f
HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPage.cs
@@ -8,36 +8,66 @@
namespace HDL_ON.UI
{
    public class MemberFunctionPermissionPage : FrameLayout
    public partial class MemberFunctionPermissionPage : FrameLayout
    {
        MemberFunctionPermissionPage bodyView;
        FrameLayout allRoomView;
        /// <summary>
        /// 全选按钮
        /// </summary>
        Button btnChooseAll;
        /// <summary>
        /// 功能显示区域
        /// </summary>
        VerticalScrolViewLayout contentView;
        /// <summary>
        /// 底部操作按钮
        /// </summary>
        Button btnOption;
        /// <summary>
        /// 页面标题ID
        /// </summary>
        int titleId;
        ResidenceMemberInfo memberInfo;
        Room room;
        List<Function> funs;
        Action<string> refreshFunctionCount;
        List<ShareData> funs;
        List<ShareData> funs_New;
        List<ShareData> funs_Del;
        public MemberFunctionPermissionPage(ResidenceMemberInfo mInfo, Room r)
        public MemberFunctionPermissionPage(ResidenceMemberInfo mInfo, Room r, Action<string> action)
        {
            bodyView = this;
            memberInfo = mInfo;
            room = r;
            funs = new List<Function>();
            if (memberInfo.CurShareData.ShareDataBytes != null)
            {
                funs = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Function>>(
                    CommonPage.MyEncodingUTF8.GetString(memberInfo.CurShareData.ShareDataBytes));
            }
        }
        public void LoadPage()
        {
            new TopViewDiv(bodyView, Language.StringByID(StringId.PermissionToUse)).LoadTopView();
            funs = new List<ShareData>();
            funs = memberInfo.CurResidenceShareDate;
            funs_New = new List<ShareData>();
            funs_Del = new List<ShareData>();
            var allRoomView = new FrameLayout()
            refreshFunctionCount = action;
        }
        public MemberFunctionPermissionPage(Room r,List<ShareData> sd)
        {
            bodyView = this;
            room = r;
            funs = new List<ShareData>();
            funs_New = sd;
            funs_Del = new List<ShareData>();
            memberInfo = new ResidenceMemberInfo();
        }
        public void LoadPage(int tId)
        {
            titleId = tId;
            new TopViewDiv(bodyView, Language.StringByID(titleId)).LoadTopView();
            allRoomView = new FrameLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(50),
@@ -49,7 +79,7 @@
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(280),
                TextID = StringId.All,
                TextID = StringId.SelectedAll,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextAlignment = TextAlignment.CenterLeft,
@@ -77,14 +107,48 @@
                BackgroundColor = CSS_Color.DividingLineColor,
            });
            var contentView = new VerticalScrolViewLayout()
            contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64+50),
                Height = Application.GetRealHeight(450),
            };
            bodyView.AddChidren(contentView);
            foreach (var function in room.functions)
            btnOption = new Button()
            {
                Y = Application.GetRealHeight(519 + 64),
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(220),
                Height = Application.GetRealHeight(44),
                BackgroundColor = CSS_Color.MainColor,
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.MainBackgroundColor,
                TextID = titleId == StringId.PermissionToUse ? StringId.Confirm : StringId.Shared,
                TextSize = CSS_FontSize.SubheadingFontSize,
                IsBold = true,
                Radius = (uint)Application.GetRealWidth(22),
                BorderColor = 0x00000000,
                BorderWidth = 0,
            };
            bodyView.AddChidren(btnOption);
            if(titleId == StringId.PermissionToUse)
            {
                LoadFunctionRow(funs);
            }
            else
            {
                LoadFunctionRow(funs_New);
            }
            LoadEventList();
        }
        /// <summary>
        /// 加载功能列表
        /// </summary>
        void LoadFunctionRow(List<ShareData>  shareDatas)
        {
            contentView.RemoveAll();
            foreach (var function in room.GetRoomFunctions(false))
            {
                var roomView = new FrameLayout()
                {
@@ -116,162 +180,27 @@
                    Tag = "ChooseIcon"
                };
                roomView.AddChidren(btnChoose);
                if (funs.Find((obj)=>obj.sid == function.sid) != null)
                if (shareDatas.Find((obj) => obj.ShareName == function.sid) != null)
                {
                    btnChoose.IsSelected = true;
                    funs.Add(function);
                }
                else
                {
                    if (btnChooseAll.IsSelected)
                        btnChooseAll.IsSelected = false;
                }
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
                    btnChoose.IsSelected = !btnChoose.IsSelected;
                    if (btnChoose.IsSelected)
                    {
                        try
                        {
                            funs.Add(function);
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"Evhaaa {ex.Message}");
                        }
                    }
                    else
                    {
                        funs.Remove(function);
                    }
                };
                btnChoose.MouseUpEventHandler = eventHandler;
                btnRoomText.MouseUpEventHandler = eventHandler;
                roomView.MouseUpEventHandler = eventHandler;
                LoadMethod_SharedDataChange(btnChoose, btnRoomText, roomView, function);
                var btnLine = new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Y = Application.GetRealHeight(49),
                    Height = Application.GetMinReal(1),
                    //Y = Application.GetRealHeight(49),
                    Height = Application.GetRealHeight(1),
                    Width = Application.GetRealWidth(343),
                    BackgroundColor = CSS_Color.DividingLineColor,
                };
                roomView.AddChidren(btnLine);
                contentView.AddChidren(btnLine);
            }
            var btnOption = new Button()
            {
                Y = Application.GetRealHeight(519+64),
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(220),
                Height = Application.GetRealHeight(44),
                BackgroundColor = CSS_Color.MainColor,
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.MainBackgroundColor,
                TextID = StringId.Confirm,
                TextSize = CSS_FontSize.SubheadingFontSize,
                IsBold = true,
                Radius = (uint) Application.GetRealWidth(22),
                BorderColor = 0x00000000,
                BorderWidth = 0,
            };
            bodyView.AddChidren(btnOption);
            btnOption.MouseUpEventHandler = (sender, e) => {
                var act = TipLoadingMsg(Language.StringByID(StringId.SavingPleaseWait));
                memberInfo.CurShareData.ShareDataBytes = CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(funs));
                EditShareData();
                act();
            };
        }
        void EditShareData()
        {
            if (memberInfo.CurShareData.ShareName == "")
            {
                var ssdd = new ShareData();
                ssdd.ShareName = DB_ResidenceData.residenceData.residecenInfo.RegionID;
                ssdd.HouseDistributedMark = DB_ResidenceData.residenceData.residecenInfo.RegionID;
                ssdd.ShareDataBytes = CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(funs));
                ssdd.SubAccountDistributedMark = memberInfo.SubAccountDistributedMark;
                ResponsePack responePack = new HttpServerRequest().AddShareData(ssdd);
                if (responePack.StateCode.ToUpper() != "SUCCESS")
                {
                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.OperationFailed), true);
                    return;
                }
                else
                {
                    ssdd.DistributedMark = responePack.ResponseData.ToString();
                }
                memberInfo.CurShareData = ssdd;
            }
            else
            {
                UpdataShareData();
            }
        }
        void UpdataShareData()
        {
            ResponsePack responePack = new HttpServerRequest().EditShareData(memberInfo.CurShareData);
            if (responePack.StateCode.ToUpper() == "SUCCESS")
            {
                new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.SavedSuccessfully), true);
            }
            else
            {
                new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.OperationFailed), true);
            }
        }
        Action TipLoadingMsg(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);
            //new System.Threading.Thread(() =>{
            //});
            dialog.Show();
            return new Action(() => {
                dialog.Close();
            });
        }
    }