using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace Shared.Phone.UserCenter
|
{
|
/// <summary>
|
/// 制作一个带有地区码的手机号输入控件(添加入界面后,调用InitControl()完成最后的加载)
|
/// </summary>
|
public class PhoneAreaControl : FrameLayout
|
{
|
/// <summary>
|
/// 地区代码
|
/// </summary>
|
public string AreaCode
|
{
|
get { return btnArea.Text.Replace("+", string.Empty); }
|
set { btnArea.Text = "+" + value; }
|
}
|
|
/// <summary>
|
/// 手机号码
|
/// </summary>
|
public string PhoneNumber
|
{
|
get { return txtPhone.Text.Trim(); }
|
set { txtPhone.Text = value; }
|
}
|
|
/// <summary>
|
/// 地区代码控件
|
/// </summary>
|
public ViewNormalControl btnArea = null;
|
/// <summary>
|
/// 手机号输入控件
|
/// </summary>
|
public InputTextControl txtPhone = null;
|
/// <summary>
|
/// 输入框的长度
|
/// </summary>
|
private int InputTextWidth = 0;
|
/// <summary>
|
/// 左右的空白间距
|
/// </summary>
|
private int leftRightSpace = 0;
|
/// <summary>
|
/// 全部地区的代码
|
/// </summary>
|
private List<Common.ResponseEntity.AreaCodeOBJ> AreaCodeList = null;
|
/// <summary>
|
/// 制作一个带有地区码的手机号输入控件(添加入界面后,调用InitControl()完成最后的加载)
|
/// </summary>
|
/// <param name="i_width">这个是输入框的长度</param>
|
/// <param name="i_leftRightSpace">左右的空白间距</param>
|
public PhoneAreaControl(int i_width = 770, int i_leftRightSpace = 0)
|
{
|
this.X = ControlCommonResourse.XXLeft;
|
this.InputTextWidth = i_width;
|
this.leftRightSpace = i_leftRightSpace;
|
//左右间距 + 地区代码 + 线的间距 + 输入框
|
this.Width = i_leftRightSpace * 2 + 180 + 20 + i_width;
|
}
|
|
/// <summary>
|
/// 初始化控件
|
/// </summary>
|
/// <param name="form">画面类型的FrameLayout</param>
|
public void InitControl(FrameLayout form)
|
{
|
//地区代码
|
btnArea = new ViewNormalControl(140, true);
|
btnArea.X = Application.GetRealWidth(this.leftRightSpace);
|
btnArea.Text = "+" + Common.CommonPage.PhoneZoneStr;
|
btnArea.TextColor = UserCenterColor.Current.TextGrayColor;
|
btnArea.TextAlignment = TextAlignment.CenterLeft;
|
btnArea.Gravity = Gravity.CenterVertical;
|
this.AddChidren(btnArea);
|
btnArea.MouseUpEventHandler += (sender, e) =>
|
{
|
//显示地区代码列表
|
this.ShowAreaCodeForm(form);
|
};
|
|
//线
|
var btnLine = new ViewNormalControl(1, Application.GetRealHeight(50), false);
|
btnLine.X = btnArea.Right;
|
btnLine.BackgroundColor = UserCenterColor.Current.Line;
|
btnLine.Gravity = Gravity.CenterVertical;
|
this.AddChidren(btnLine);
|
|
//请输入手机号码
|
txtPhone = new InputTextControl(this.InputTextWidth, true);
|
txtPhone.Gravity = Gravity.CenterVertical;
|
txtPhone.X = btnLine.Right + Application.GetRealWidth(60);
|
txtPhone.PlaceholderText = Language.StringByID(R.MyInternationalizationString.uPleaseInputPhoneNumber);
|
txtPhone.PlaceholderTextColor = UserCenterColor.Current.TextTipColor;
|
this.AddChidren(txtPhone);
|
}
|
|
/// <summary>
|
/// 显示地区代码列表
|
/// </summary>
|
/// <param name="frameLayout"></param>
|
private async void ShowAreaCodeForm(FrameLayout frameLayout)
|
{
|
//初始化全部的地区代码列表
|
bool flage = await this.InitAreaCodeList(frameLayout);
|
if (flage == false)
|
{
|
return;
|
}
|
Application.RunOnMainThread(() =>
|
{
|
var areaform = new PhoneAreaForm();
|
frameLayout.AddChidren(areaform);
|
areaform.InitControl(AreaCodeList);
|
areaform.AreaCodeSelectEvent += (areaCode) =>
|
{
|
btnArea.Text = "+" + areaCode;
|
};
|
});
|
}
|
|
/// <summary>
|
/// 初始化全部的地区代码列表
|
/// </summary>
|
/// <param name="frameLayout">界面</param>
|
/// <returns></returns>
|
private async System.Threading.Tasks.Task<bool> InitAreaCodeList(FrameLayout frameLayout)
|
{
|
if (this.AreaCodeList != null)
|
{
|
return true;
|
}
|
//开启进度条
|
ProgressBar.Show();
|
|
//获取全部的地区代码列表
|
var Pra = new Common.SendDataToServer.GetAreaCodeOBJ();
|
Pra.RequestVersion = Common.CommonPage.RequestVersion;
|
string result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetAreaCode", Pra);
|
//关闭进度条
|
ProgressBar.Close();
|
if (result == null)
|
{
|
return false;
|
}
|
this.AreaCodeList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Common.ResponseEntity.AreaCodeOBJ>>(result);
|
|
return true;
|
}
|
|
/// <summary>
|
/// 显示地区代码列表的控件
|
/// </summary>
|
private class PhoneAreaForm : FrameLayout
|
{
|
/// <summary>
|
/// _AreaCodeSelectEvent
|
/// </summary>
|
public delegate void _AreaCodeSelectEvent(string areaCode);
|
/// <summary>
|
/// 地区确认选择的事件
|
/// </summary>
|
public _AreaCodeSelectEvent AreaCodeSelectEvent;
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private VerticalScrolViewLayout listView = null;
|
/// <summary>
|
/// 前一次选择的地区
|
/// </summary>
|
private AreaCodeSelectRow oldRowArea = null;
|
/// <summary>
|
/// 初始化控件
|
/// </summary>
|
public void InitControl(List<Common.ResponseEntity.AreaCodeOBJ> i_AreaCodeList)
|
{
|
this.BackgroundColor = UserCenterColor.Current.DialogBackColor;
|
|
//这是一个框
|
var frameLayout = new FrameLayout();
|
frameLayout.Width = Application.GetRealWidth(700);
|
frameLayout.Height = Application.GetRealHeight(1000);
|
frameLayout.Gravity = Gravity.Center;
|
frameLayout.Radius = 5;
|
frameLayout.BackgroundColor = UserCenterColor.Current.ClickButtonColor;
|
this.AddChidren(frameLayout);
|
|
//请选择区号
|
var btnTitle = new ViewNormalControl(frameLayout.Width, Application.GetRealHeight(150));
|
btnTitle.TextAlignment = TextAlignment.Center;
|
btnTitle.TextID = R.MyInternationalizationString.PleaseSelectAreaCode;
|
frameLayout.AddChidren(btnTitle);
|
|
listView = new VerticalScrolViewLayout();
|
listView.Y = btnTitle.Bottom;
|
listView.Height = frameLayout.Height - Application.GetRealHeight(150 * 2);
|
listView.BackgroundColor = UserCenterColor.Current.BodyFrameLayout;
|
frameLayout.AddChidren(listView);
|
|
//取消
|
var btnCancel = new ViewNormalControl(frameLayout.Width / 2 - 1, Application.GetRealHeight(150));
|
btnCancel.TextColor = UserCenterColor.Current.White;
|
btnCancel.TextID = R.MyInternationalizationString.uCancel;
|
btnCancel.Gravity = Gravity.BottomLeft;
|
btnCancel.TextAlignment = TextAlignment.Center;
|
frameLayout.AddChidren(btnCancel);
|
btnCancel.MouseUpEventHandler += (sender, e) =>
|
{
|
this.RemoveFromParent();
|
};
|
|
//白线
|
var btnLine = new ViewNormalControl(1, Application.GetRealHeight(150));
|
btnLine.X = btnCancel.Right;
|
btnLine.Y = btnCancel.Y;
|
btnLine.BackgroundColor = UserCenterColor.Current.BodyFrameLayout;
|
frameLayout.AddChidren(btnLine);
|
|
//确认
|
var btnOk = new ViewNormalControl(frameLayout.Width / 2 - 1, Application.GetRealHeight(150));
|
btnOk.TextColor = UserCenterColor.Current.White;
|
btnOk.TextID = R.MyInternationalizationString.OkMsg;
|
btnOk.Gravity = Gravity.BottomRight;
|
btnOk.TextAlignment = TextAlignment.Center;
|
frameLayout.AddChidren(btnOk);
|
btnOk.MouseUpEventHandler += (sender, e) =>
|
{
|
if (this.AreaCodeSelectEvent != null && this.oldRowArea != null)
|
{
|
this.AreaCodeSelectEvent(this.oldRowArea.codeObj.Code);
|
}
|
this.RemoveFromParent();
|
};
|
|
//添加全部的地区代码行
|
this.AddAllRowlayout(i_AreaCodeList);
|
}
|
|
/// <summary>
|
/// 添加全部的地区代码行
|
/// </summary>
|
private void AddAllRowlayout(List<Common.ResponseEntity.AreaCodeOBJ> i_AreaCodeList)
|
{
|
//循环列表
|
foreach (var data in i_AreaCodeList)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
var row = new AreaCodeSelectRow(this.listView, data);
|
if (data.Code == Common.CommonPage.PhoneZoneStr)
|
{
|
row.IsSelect = true;
|
this.oldRowArea = row;
|
}
|
row.MouseUpEvent += (sender, e) =>
|
{
|
if (this.oldRowArea != null)
|
{
|
this.oldRowArea.IsSelect = false;
|
}
|
row.IsSelect = true;
|
this.oldRowArea = row;
|
};
|
});
|
}
|
}
|
}
|
}
|
}
|