using Shared; using System; using System.Collections.Generic; namespace HDL_ON.Stan { /// /// 个人中心的共通基层画面,继承于此共通的画面,请使用AddForm()函数实现添加画面 /// 然后在各自的画面中,实现一个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 object[] m_parameter = null; #endregion #region ■ 初始化_____________________________ /// /// 初始化界面框架 /// public override void InitForm() { base.InitForm(); //初始化头部控件 this.InitTopFrameLayout(); //初始化中部控件 this.InitBodyFrameLayout(); } /// /// 执行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) { return; } //TopMenuFrameLayout做成 topMenuFrameLayout = new NormalFrameLayout(); topMenuFrameLayout.Height = HdlControlResourse.TopMenuFrameHeight; topMenuFrameLayout.BackgroundColor = UI.CSS.CSS_Color.TopViewColor; topMenuFrameLayout.Name = "topMenuFrameLayout"; this.AddChidren(topMenuFrameLayout); //TopFrameLayout做成 topFrameLayout = new NormalFrameLayout(); topFrameLayout.Height = HdlControlResourse.TopFrameHeight; topFrameLayout.BackgroundColor = UI.CSS.CSS_Color.TopViewColor; topFrameLayout.Y = topMenuFrameLayout.Bottom; topFrameLayout.Name = "topFrameLayout"; this.AddChidren(topFrameLayout); //返回键 var btnBack = new PicViewControl(40, 28); btnBack.X = Application.GetRealWidth(10); btnBack.Y = Application.GetRealHeight(9); btnBack.UnSelectedImagePath = "Public/BackIcon.png"; topFrameLayout.AddChidren(btnBack); topFrameLayout.AddTag("btnBack", btnBack); //一个加大返回按键点击区域的东西 var frameBtnBack = new NormalFrameLayout(); frameBtnBack.Width = Application.GetRealWidth(100); topFrameLayout.AddChidren(frameBtnBack); topFrameLayout.AddTag("frameBtnBack", frameBtnBack); frameBtnBack.ButtonClickEvent += (sender, e) => { if (this.BackButtonClickEvent != null) { //如果实现此事件,则底层的事件将不会再触发 this.BackButtonClickEvent(); return; } //画面关闭 this.CloseForm(); }; //标题 var btnTilte = new NormalViewControl(270, 25, true); btnTilte.Gravity = Gravity.CenterHorizontal; btnTilte.Y = Application.GetRealHeight(10); btnTilte.TextAlignment = TextAlignment.Center; btnTilte.TextSize = UI.CSS.CSS_FontSize.HeadlineFontSize; btnTilte.TextColor = UI.CSS.CSS_Color.FirstLevelTitleColor; topFrameLayout.AddChidren(btnTilte); topFrameLayout.AddTag("txtTitle", btnTilte); } #endregion #region ■ Middle_____________________________ /// /// 初始化中部控件 /// public void InitBodyFrameLayout() { if (bodyFrameLayout != null) { return; } bodyFrameLayout = new NormalFrameLayout(); bodyFrameLayout.Height = HdlControlResourse.BodyFrameHeight; bodyFrameLayout.Y = topFrameLayout.Bottom; bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.BackgroundColor; bodyFrameLayout.Name = "bodyFrameLayout"; this.AddChidren(bodyFrameLayout); } #endregion #endregion #region ■ 添加界面___________________________ /// /// 添加画面,启动参数由指定画面的ShowForm函数所指定 /// /// 启动参数:参数由指定画面的ShowForm函数所指定 public override void AddForm(params object[] parameter) { base.AddForm(parameter); MainPage.BasePageView.AddChidren(this); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; //初始化界面框架 this.InitForm(); //执行ShowForm()方法 this.LoadShowFormMethod(parameter); } #endregion #region ■ 关闭界面___________________________ /// /// 画面关闭 /// public override void CloseFormBefore() { base.CloseFormBefore(); this.BackButtonClickEvent = null; this.m_parameter = null; //清空bodyFrame this.ClearBodyFrame(); } #endregion #region ■ 显示重新加载_______________________ /// /// 显示重新加载的界面(主要是用在界面加载错误时,再次加载) /// public override void ShowReLoadView() { HdlThreadLogic.Current.RunMain(() => { if (bodyFrameLayout == null || bodyFrameLayout.Parent == null) { return; } bodyFrameLayout.RemoveAll(); //切换为重新加载模式时的事件 this.ReLoadModelEventMethod(); var frame = new NormalFrameLayout(); bodyFrameLayout.AddChidren(frame); //重新加载 var btnReLoad = new BottomClickButton(); btnReLoad.Gravity = Gravity.Center; btnReLoad.TextID = StringId.DoReloadAgain; frame.AddChidren(btnReLoad); btnReLoad.ButtonClickEvent += (sender, e) => { //清除全部控件 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 ■ 界面重新激活事件___________________ /// /// 自身的上层界面关闭后,它自身处于最上层时,触发的事件 /// 重写的时候返回值请返回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 = (NormalViewControl)topFrameLayout.GetTagByKey("btnBack"); topFrameLayout.RemoveTag("btnBack"); back?.RemoveFromParent(); var back2 = (NormalFrameLayout)topFrameLayout.GetTagByKey("frameBtnBack"); topFrameLayout.RemoveTag("frameBtnBack"); back2?.RemoveFromParent(); } #endregion } }