using Shared.Phone.UserCenter; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Shared.Phone { /// /// 个人中心的共通基层画面,继承于此共通的画面,请使用AddForm()函数, /// 或者AddFromAndRemoveNowForm()函数实现添加画面,然后在各自的画面中, /// 实现一个ShowForm()的函数(参数由添加画面时,使用的函数的参数指定) /// public class EditorCommonForm : CommonFormBase { #region ■ 变量声明___________________________ /// /// 返回按键的点击事件(如果实现此事件,则底层的事件将不会再触发) /// public Action BackButtonClickEvent = null; /// /// TopMenuFrameLayout /// public NormalFrameLayout topMenuFrameLayout = null; /// /// TopFrameLayout /// public NormalFrameLayout topFrameLayout = null; /// /// bodyFrameLayout /// public NormalFrameLayout bodyFrameLayout = null; /// /// 左滑使能 /// private bool m_ScrollEnabled = true; /// /// 左滑使能(界面关闭时,底层会还原,无需再处理) /// public bool ScrollEnabled { get { return m_ScrollEnabled; } set { if (UserView.HomePage.Instance.ScrollEnabled != value) { UserView.HomePage.Instance.ScrollEnabled = value; this.m_ScrollEnabled = value; } } } /// /// 缓存启动参数 /// private object[] m_parameter = null; #endregion #region ■ 初始化_____________________________ /// /// 初始化界面框架 /// public override void InitForm() { base.InitForm(); //初始化头部控件 this.InitTopFrameLayout(); //初始化中部控件 this.InitBodyFrameLayout(); //初始左滑使能可 this.ScrollEnabled = true; } /// /// 执行ShowForm()方法 /// /// 启动参数 public override void LoadShowFormMethod(params object[] parameter) { this.m_parameter = parameter; base.LoadShowFormMethod(parameter); } #endregion #region ■ 初始化界面_________________________ #region ■ Top________________________________ /// /// 初始化头部控件 /// public void InitTopFrameLayout() { if (topFrameLayout != null) { topFrameLayout.RemoveAll(); } //TopMenuFrameLayout做成 topMenuFrameLayout = new NormalFrameLayout(); topMenuFrameLayout.Height = ControlCommonResourse.TopMenuFrameHeight; topMenuFrameLayout.BackgroundColor = UserCenterColor.Current.TopFrameLayout; topMenuFrameLayout.Name = "topMenuFrameLayout"; this.AddChidren(topMenuFrameLayout); //TopFrameLayout做成 topFrameLayout = new NormalFrameLayout(); topFrameLayout.Height = ControlCommonResourse.TopFrameHeight; topFrameLayout.BackgroundColor = UserCenterColor.Current.TopFrameLayout; topFrameLayout.Y = topMenuFrameLayout.Bottom; topFrameLayout.Name = "topFrameLayout"; this.AddChidren(topFrameLayout); //线 var btnLine = new NormalViewControl(topFrameLayout.Width, 1, false); btnLine.BackgroundColor = 0x40000000; btnLine.Y = topFrameLayout.Height - 1; topFrameLayout.AddChidren(btnLine); topFrameLayout.AddTag("btnLine", btnLine); //返回键 var btnBack = new BackViewControl(); topFrameLayout.AddChidren(btnBack); btnBack.InitControl(); btnBack.ButtonClickEvent += (sender, e) => { if (this.BackButtonClickEvent != null) { //如果实现此事件,则底层的事件将不会再触发 BackButtonClickEvent(btnBack); return; } //画面关闭 this.CloseForm(); }; topFrameLayout.AddTag("btnBack", btnBack); //标题 var txttitle = new Button(); txttitle.Name = "txtTitle"; txttitle.TextSize = 17; txttitle.X = Application.GetRealWidth(161); txttitle.Height = Application.GetRealHeight(75); txttitle.Width = Application.GetRealWidth(850); txttitle.Gravity = Gravity.CenterVertical; txttitle.TextColor = UserCenterColor.Current.TopLayoutTitleText; txttitle.TextAlignment = TextAlignment.CenterLeft; txttitle.IsBold = true; topFrameLayout.AddChidren(txttitle); topFrameLayout.AddTag("txtTitle", txttitle); } #endregion #region ■ Middle_____________________________ /// /// 初始化中部控件 /// public void InitBodyFrameLayout() { if (bodyFrameLayout != null) { bodyFrameLayout.RemoveAll(); } bodyFrameLayout = new NormalFrameLayout(); bodyFrameLayout.Height = ControlCommonResourse.BodyFrameHeight; bodyFrameLayout.Y = topFrameLayout.Bottom; bodyFrameLayout.BackgroundColor = UserCenterColor.Current.BodyFrameLayout; bodyFrameLayout.Name = "bodyFrameLayout"; this.AddChidren(bodyFrameLayout); } #endregion #endregion #region ■ 添加界面___________________________ /// /// 添加画面,启动参数由指定画面的ShowForm函数所指定 /// /// 启动参数:参数由指定画面的ShowForm函数所指定 public override void AddForm(params object[] parameter) { //界面加载中 ControlCommonResourse.IsFormAdding = true; base.AddForm(parameter); //检测能否追加画面 2020.05.14舍弃 //if (UserCenterLogic.CheckCanAddForm(this) == false) //{ // return; //} UserView.HomePage.Instance.AddChidren(this); UserView.HomePage.Instance.PageIndex += 1; //初始化界面框架 this.InitForm(); //执行ShowForm()方法 this.LoadShowFormMethod(parameter); //界面加载结束 ControlCommonResourse.IsFormAdding = false; } #endregion #region ■ 关闭界面___________________________ /// /// 画面关闭 /// public override void CloseFormBefore() { base.CloseFormBefore(); //左滑使能 this.ScrollEnabled = true; this.BackButtonClickEvent = null; this.m_parameter = null; //清空bodyFrame this.ClearBodyFrame(); } #endregion #region ■ 添加帮助控件_______________________ /// /// 添加查看帮助控件 /// /// public NormalViewControl AddHelpControl() { //查看帮助 var btnHelp = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(50), false); btnHelp.Y = Application.GetRealHeight(1388); btnHelp.TextSize = 12; btnHelp.TextAlignment = TextAlignment.Center; btnHelp.TextColor = UserCenterColor.Current.TextOrangeColor; btnHelp.Text = Language.StringByID(R.MyInternationalizationString.uSearchHelp); bodyFrameLayout.AddChidren(btnHelp); //底线 int lineWidth = btnHelp.GetRealWidthByText(); var btnLine = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false); btnLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor; btnLine.Gravity = Gravity.CenterHorizontal; btnLine.Y = btnHelp.Bottom - Application.GetRealHeight(8); bodyFrameLayout.AddChidren(btnLine); return btnHelp; } #endregion #region ■ 显示重新加载_______________________ /// /// 显示重新加载的界面(主要是用在界面加载错误时,再次加载) /// public override void ShowReLoadView() { HdlThreadLogic.Current.RunMain(() => { if (bodyFrameLayout == null || bodyFrameLayout.Parent == null) { return; } //切换为重新加载模式时的事件 this.ReLoadModelEventMethod(); var frame = new FrameLayout(); frame.BackgroundColor = UserCenterColor.Current.White; bodyFrameLayout.AddChidren(frame); //重新加载 var btnReLoad = new BottomClickButton(); btnReLoad.Gravity = Gravity.Center; btnReLoad.TextID = R.MyInternationalizationString.uDoReload; frame.AddChidren(btnReLoad); btnReLoad.ButtonClickEvent += (sender, e) => { //点击重新加载时,允许再次联网 HdlWifiLogic.Current.CanAccessHttp = true; //清除全部控件 this.ClearBodyFrame(); //执行ShowForm()方法实现重新加载 this.LoadShowFormMethod(this.m_parameter); }; //清除topFrameLayout的非默认的控件 var list = new List(); for (int i = 0; i < topFrameLayout.ChildrenCount; i++) { var view = topFrameLayout.GetChildren(i); if (view.Name == "btnBack" || view.Name == "txtTitle") { //这里是默认的底层控件 continue; } list.Add(view); } foreach (var view in list) { view?.RemoveFromParent(); } }); } /// /// 切换为【重新加载模式】时的事件函数,旨在关闭所有线程信息 /// public virtual void ReLoadModelEventMethod() { } #endregion #region ■ 显示弹窗输入界面___________________ /// /// 显示一个Dialog的弹窗输入界面,它不会自动关闭,需要手动关闭 /// .CloseDialog()为关闭弹窗 /// 如果输入框的内容为空,并且设置有【i_TipText】,则不会调用回调函数,并且提示【i_TipText】的内容 /// /// 弹窗的标题信息 /// 输入框初始化值(忽略请设置为null) /// 输入框灰色字体说明(忽略请设置为null) /// 确认按钮事件 /// public void ShowDialogInputForm(string i_TitleText, string i_InputText, string i_TipText, Action i_ComfirmClickEvent) { //生成一个弹窗画面 var dialogForm = new DialogInputControl(); //标题 dialogForm.SetTitleText(i_TitleText); //输入框灰色字体说明 if (i_TipText != null) { dialogForm.SetTipText(i_TipText); } //输入框初始值 if (i_InputText != null) { dialogForm.Text = i_InputText; } //按下确认按钮 dialogForm.ComfirmClickEvent += ((textValue) => { i_ComfirmClickEvent?.Invoke(dialogForm, textValue); }); } #endregion #region ■ 显示没有数据的图像显示特效_________ /// /// 显示没有数据的图像显示特效 /// /// 容器 /// 显示文字 /// 图像地址 /// 图像宽度(非真实值) /// 图像高度(非真实值) public void ShowNotDataImage(FrameLayout frameTable, string i_Text, string Imagepath = "Item/NoFunction.png", int imageWith = 683, int imageHeight = 392) { this.ShowNotDataImage(frameTable, new string[] { i_Text }, Imagepath, imageWith, imageHeight); } /// /// 显示没有数据的图像显示特效 /// /// 容器 /// 显示文字 /// 图像地址 /// 图像宽度(非真实值) /// 图像高度(非真实值) public void ShowNotDataImage(FrameLayout frameTable, string[] listText, string Imagepath = "Item/NoFunction.png", int imageWith = 683, int imageHeight = 392) { var btnPic = new PicViewControl(imageWith, imageHeight); btnPic.UnSelectedImagePath = Imagepath; btnPic.Y = (int)(frameTable.Height * 0.382) - Application.GetRealHeight(imageHeight / 2); btnPic.Gravity = Gravity.CenterHorizontal; frameTable.AddChidren(btnPic); int yy = btnPic.Bottom + Application.GetRealHeight(32); for (int i = 0; i < listText.Length; i++) { var btnView = new NormalViewControl(frameTable.Width, Application.GetRealHeight(50), false); btnView.Y = yy; btnView.Text = listText[i]; btnView.TextAlignment = TextAlignment.Center; btnView.TextSize = 12; btnView.TextColor = UserCenterColor.Current.TextGrayColor1; frameTable.AddChidren(btnView); yy = btnView.Bottom; } } #endregion #region ■ 界面重新激活事件___________________ /// /// 自身的上层界面关闭后,它自身处于最上层时,触发的事件 /// 重写的时候返回值请返回1(返回值是给底层使用的) /// public virtual int FormActionAgainEvent() { return -1; } #endregion #region ■ 清空BodyFrame______________________ /// /// 清空BodyFrame /// public void ClearBodyFrame() { if (this.Parent == null) { return; } if (bodyFrameLayout == null || bodyFrameLayout.Parent == null) { return; } bodyFrameLayout.RemoveAll(); } #endregion #region ■ 一般的方法_________________________ /// /// 设置标题信息 /// /// Title. public void SetTitleText(string title) { //设置头部信息 var btntitle = (Button)topFrameLayout.GetTagByKey("txtTitle"); btntitle.Text = title; } /// /// 移除返回键 /// public void RemoveBackButton() { //移除返回键 var back = (BackViewControl)topFrameLayout.GetTagByKey("btnBack"); back?.RemoveFromParent(); } /// /// 获取返回键 /// public BackViewControl GetBackButton() { //移除返回键 var back = (BackViewControl)topFrameLayout.GetTagByKey("btnBack"); return back; } #endregion } }