using System; using System.Collections.Generic; using System.IO; using System.Threading; using HDL_ON.DAL.Server; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Newtonsoft.Json.Linq; using Shared; namespace HDL_ON.UI { public class ChooseShareMemberTargetListPage : FrameLayout { ChooseShareMemberTargetListPage bodyView; VerticalScrolViewLayout contentView; Loading waitPage; byte[] sharedBytes; List residenceMemberInfos; public ChooseShareMemberTargetListPage(byte[] sd) { residenceMemberInfos = new List(); sharedBytes = sd; bodyView = this; } /// /// 调用获取住宅子账号信息 /// bool LoadMethod_GetResidenceMemberAccount() { var result = false; ResponsePack responePack = new HttpServerRequest().GetResidenceMemberAccount(); if (responePack.StateCode.ToUpper() == "SUCCESS") { var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject>(responePack.ResponseData.ToString()); foreach (var mInfo in responeObj) { ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.Account); var dataStr = JObject.FromObject(memberInfoResponePack.ResponseData); FileStream fs = null; try { var headImageString = dataStr.GetValue("HeadImage").ToString(); var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString); var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString); var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", mInfo.DistributedMark + ".png"); fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); fs.Write(headImageBytes, 0, headImageBytes.Length); fs.Flush(); mInfo.headImagePagePath = filePath; } catch (Exception ex) { MainPage.Log($"download headImage error : {ex.Message}"); } finally { if (fs != null) { fs.Close(); } } residenceMemberInfos.Add(mInfo); } result = true; } //失败 else { string tipStr = "Sever erorr"; switch (responePack.StateCode) { case "ValidCodeAndPhoneNoEqual": tipStr = Language.StringByID(StringId.VerificationCodeError); break; case "USERNAMEORPWDERROR": tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError); break; case "ACCOUNTNOEXISTS": tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS); break; case "NoRecord": tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode); break; case "Self:Net_Error": tipStr = Language.StringByID(StringId.NetworkAnomaly); break; } //账号或者密码错误 Application.RunOnMainThread(() => { waitPage.Hide(); //提示原因 var tip = new Tip() { Text = tipStr, CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); }); } Application.RunOnMainThread(() => { waitPage?.Hide(); }); return result; } /// /// 加载获取住宅子账号信息线程 /// Thread LoadThread_GetResidenceMemberAccount() { var thread = new Thread(() => { try { residenceMemberInfos.Clear(); var loginResult = LoadMethod_GetResidenceMemberAccount(); if (loginResult) { Application.RunOnMainThread(() => { LoadMemberRow(); }); } } catch (Exception ex) { MainPage.Log($"LoadThread_GetResidenceMemberAccount : {ex.Message}"); } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }; return thread; } public void LoadPage() { //创建读取成员账号线程 var thread = LoadThread_GetResidenceMemberAccount(); waitPage = new Loading(); new PublicAssmebly().LoadPage_WaitPage(thread, bodyView, waitPage); bodyView.BackgroundColor = CSS_Color.BackgroundColor; new TopViewDiv(bodyView, Language.StringByID(StringId.Shared)).LoadTopView(); #region title view FrameLayout titleView = new FrameLayout() { Y = Application.GetRealHeight(72), Height = Application.GetRealHeight(44), BackgroundColor = CSS_Color.MainBackgroundColor, }; bodyView.AddChidren(titleView); Button btnTitle = new Button() { X = Application.GetRealWidth(16), TextColor = CSS_Color.FirstLevelTitleColor, TextID = StringId.SharedTo, TextSize = CSS_FontSize.SubheadingFontSize, TextAlignment = TextAlignment.CenterLeft, IsBold = true, }; titleView.AddChidren(btnTitle); titleView.AddChidren(new Button() { X = Application.GetRealWidth(16), Y = Application.GetRealHeight(43), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor, }); #endregion contentView = new VerticalScrolViewLayout() { Y = titleView.Bottom, Height = Application.GetRealHeight(420), //BackgroundColor = CSS_Color.MainBackgroundColor, }; bodyView.AddChidren(contentView); LoadMemberRow(); 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.ConfirmShared, TextSize = CSS_FontSize.SubheadingFontSize, IsBold = true, Radius = (uint)Application.GetRealWidth(22), BorderColor = 0x00000000, BorderWidth = 0, }; bodyView.AddChidren(btnOption); } Button btnOption; /// /// 加载成员列表区域 /// void LoadMemberRow() { contentView.RemoveAll(); //List residenceMemberInfos = new List(); int index = 1; foreach (var mInfo in residenceMemberInfos) { FrameLayout memberRow = new FrameLayout() { Height = Application.GetRealWidth(65), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(memberRow); var memberHeadImageView = new ImageView() { X = Application.GetRealWidth(16), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(36), Height = Application.GetMinRealAverage(36), Radius = (uint)Application.GetMinRealAverage(24), ImagePath = mInfo.headImagePagePath, }; memberRow.AddChidren(memberHeadImageView); Button btnMemberName = new Button() { X = Application.GetRealWidth(64), Y = Application.GetRealWidth(10), Width = Application.GetRealWidth(300), Height = Application.GetRealWidth(24), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, Text = mInfo.UserName, }; memberRow.AddChidren(btnMemberName); Button btnMemberMail = new Button() { X = Application.GetRealWidth(64), Y = btnMemberName.Bottom, Width = Application.GetRealWidth(300), Height = Application.GetRealWidth(21), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, Text = mInfo.Account, }; memberRow.AddChidren(btnMemberMail); Button btnChoose = new Button() { X = Application.GetRealWidth(331), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(28), Height = Application.GetMinRealAverage(28), UnSelectedImagePath = "Public/ChooseIcon.png", SelectedImagePath = "Public/ChooseOnIcon.png", IsSelected = true, }; memberRow.AddChidren(btnChoose); if (residenceMemberInfos.Count > index) { memberRow.AddChidren(new Button() { Y = Application.GetRealHeight(64), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor, }); } index++; } } void LoadEvent_SharedFunction() { //btnOption } } }