From dc0309e64f02227d8e1468b7326c07955f804612 Mon Sep 17 00:00:00 2001
From: chenqiyang <1406175257@qq.com>
Date: 星期三, 22 六月 2022 11:22:18 +0800
Subject: [PATCH] 修改引用路径
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/AreaCodeSelectForm.cs | 599 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 599 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/AreaCodeSelectForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/AreaCodeSelectForm.cs
new file mode 100644
index 0000000..af7a278
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/AreaCodeSelectForm.cs
@@ -0,0 +1,599 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter
+{
+ public class AreaCodeSelectForm : DialogCommonForm
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
+
+ /// <summary>
+ /// 瀹屾垚閫夋嫨鐨勪簨浠�(鍦板尯鐮�)
+ /// </summary>
+ public Action<string> FinishSelectEvent = null;
+ /// <summary>
+ /// 鍒楄〃鎺т欢
+ /// </summary>
+ private VerticalListControl listView = null;
+ /// <summary>
+ /// 鍓嶅洖閫夋嫨鐨勬帶浠�
+ /// </summary>
+ private FrameRowControl oldFrameRowControl = null;
+ /// <summary>
+ /// 閿�
+ /// </summary>
+ private object objLock = new object();
+ /// <summary>
+ /// 杩欎釜涓滆タ鏄釜闈欐��(瀹冩槸涓壒娈婄殑)
+ /// </summary>
+ private static List<AreaCodeInfo> listAreaCode = null;
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖朹____________________________
+
+ /// <summary>
+ /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+ /// </summary>
+ public void ShowForm()
+ {
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleFrame();
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+ /// </summary>
+ private void InitMiddleFrame()
+ {
+ var frameBack = new FrameLayout();
+ frameBack.Width = Application.GetRealWidth(850);
+ frameBack.Height = Application.GetRealHeight(1342);
+ frameBack.Radius = (uint)Application.GetRealHeight(17);
+ frameBack.BackgroundColor = UserCenterColor.Current.White;
+ frameBack.Gravity = Gravity.CenterHorizontal;
+ frameBack.Y = Application.GetRealHeight(328);
+ bodyFrameLayout.AddChidren(frameBack);
+
+ this.listView = new VerticalListControl(3);
+ listView.Y = Application.GetRealHeight(164 - 11);
+ listView.Height = frameBack.Height - Application.GetRealHeight(164 - 11);
+ listView.Radius = (uint)Application.GetRealHeight(17);
+ frameBack.AddChidren(listView);
+
+ //璇烽�夋嫨鍖哄彿
+ var btnTitle = new NormalViewControl(270, 60, true);
+ btnTitle.X = ControlCommonResourse.XXLeft;
+ btnTitle.Y = Application.GetRealHeight(69);
+ btnTitle.TextID = R.MyInternationalizationString.uPleaseSelectAreaCode;
+ btnTitle.TextSize = 15;
+ btnTitle.TextColor = UserCenterColor.Current.TextColor2;
+ frameBack.AddChidren(btnTitle);
+
+ //鎼滅储
+ var btnSearch = new MySearchControl(Language.StringByID(R.MyInternationalizationString.uSearch));
+ btnSearch.X = Application.GetRealWidth(334);
+ btnSearch.Y = Application.GetRealHeight(46);
+ frameBack.AddChidren(btnSearch);
+ btnSearch.BindEvent(this.SearchEvent);
+
+ //璁╄繖涓寜閽繖涓尯鍩熶笉鑳界偣鍑昏彍鍗�
+ var frameTemp = new FrameLayout();
+ frameTemp.Y = Application.GetRealHeight(1146);
+ frameTemp.Height = frameBack.Height - Application.GetRealHeight(1146);
+ frameBack.AddChidren(frameTemp);
+
+ var btnOk = new BottomClickButton(688);
+ btnOk.Y = Application.GetRealHeight(1146);
+ btnOk.TextID = R.MyInternationalizationString.uConfirm1;
+ frameBack.AddChidren(btnOk);
+ btnOk.ButtonClickEvent += (sender, e) =>
+ {
+ if (oldFrameRowControl != null)
+ {
+ this.FinishSelectEvent?.Invoke(oldFrameRowControl.MainKeys);
+ }
+ this.CloseForm();
+ };
+
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ //鍒濆鍖栧湴鍖哄垪琛�
+ this.InitAreaList();
+ });
+ }
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖栧湴鍖哄垪琛╛____________________
+
+ /// <summary>
+ /// 鍒濆鍖栧湴鍖哄垪琛�
+ /// </summary>
+ private void InitAreaList()
+ {
+ if (listAreaCode == null)
+ {
+ //绗竴娆¤幏鍙�
+ //寮�鍚繘搴︽潯
+ ProgressBar.Show();
+
+ //鑾峰彇鍏ㄩ儴鐨勫湴鍖轰唬鐮佸垪琛�
+ var Pra = new { Common.CommonPage.RequestVersion };
+ string result = UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetAreaCode", false, Pra);
+ //鍏抽棴杩涘害鏉�
+ ProgressBar.Close();
+ if (string.IsNullOrEmpty(result) == true)
+ {
+ return;
+ }
+ listAreaCode = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AreaCodeInfo>>(result);
+ for (int i = 0; i < listAreaCode.Count; i++)
+ {
+ //鑾峰彇棣栧瓧姣�
+ listAreaCode[i].First = this.GetCharSpellCode(listAreaCode[i].Name.Substring(0, 1));
+ }
+ //鎺掑簭
+ listAreaCode.Sort((obj1, obj2) =>
+ {
+ return obj1.First.CompareTo(obj2.First);
+ });
+ }
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //娣诲姞鍏ㄩ儴鏄庣粏琛�
+ this.AddAllDetailRow(listAreaCode);
+ });
+ }
+
+ /// <summary>
+ /// 娣诲姞鍏ㄩ儴鏄庣粏琛�
+ /// </summary>
+ /// <param name="listData"></param>
+ private void AddAllDetailRow(List<AreaCodeInfo> listData)
+ {
+ listView.RemoveAll();
+ string oldFirst = string.Empty;
+ int realHeight = 0;
+ for (int i = 0; i < listData.Count; i++)
+ {
+ if (oldFirst != listData[i].First)
+ {
+ oldFirst = listData[i].First;
+ //娣诲姞瀛楁瘝鏍囬
+ var frame1 = new FrameRowControl(listView.rowSpace / 2);
+ frame1.UseClickStatu = false;
+ //鍒楄〃鎺т欢鍙府鎵╁ぇ3锛岃�屽畠鐨勯棿璺濋渶瑕�11
+ frame1.Height = Application.GetRealHeight(58 + 8);
+ frame1.Width = Application.GetRealWidth(850);
+ listView.AddChidren(frame1);
+ realHeight += frame1.Height;
+
+ var btnView1 = frame1.AddLeftCaption(listData[i].First, 300);
+ btnView1.TextColor = UserCenterColor.Current.TextGrayColor2;
+ if (listData[i].First == "ZZ")
+ {
+ //鍏朵粬
+ btnView1.TextID = R.MyInternationalizationString.uOther;
+ }
+ }
+ //娣诲姞鏄庣粏琛�
+ var frameDetail = new FrameRowControl(listView.rowSpace / 2);
+ frameDetail.MainKeys = listData[i].Code;
+ frameDetail.UseClickStatu = false;
+ frameDetail.Width = Application.GetRealWidth(850);
+ frameDetail.Height = Application.GetRealHeight(118);
+ listView.AddChidren(frameDetail);
+ realHeight += frameDetail.Height;
+ //鍦板尯鍚�
+ var btnName = frameDetail.AddLeftCaption(listData[i].Name, 600);
+ btnName.TextColor = UserCenterColor.Current.TextGrayColor3;
+ //鍦板尯鐮�
+ var btnCode = frameDetail.AddMostRightView("+" + listData[i].Code, 300);
+ btnCode.TextColor = UserCenterColor.Current.TextGrayColor3;
+ frameDetail.ButtonClickEvent += (sender, e) =>
+ {
+ if (oldFrameRowControl != null)
+ {
+ if (oldFrameRowControl.MainKeys == frameDetail.MainKeys)
+ {
+ //鍚屼竴涓笢瑗�
+ return;
+ }
+ //鍙栨秷涓婁竴娆$殑閫夋嫨
+ oldFrameRowControl.BackgroundColor = UserCenterColor.Current.Transparent;
+ ((NormalViewControl)oldFrameRowControl.GetChildren(0)).TextColor = UserCenterColor.Current.TextGrayColor3;
+ ((NormalViewControl)oldFrameRowControl.GetChildren(1)).TextColor = UserCenterColor.Current.TextGrayColor3;
+ }
+
+ //閫変腑鐘舵��
+ frameDetail.BackgroundColor = 0x0ffc744b;
+ btnName.TextColor = UserCenterColor.Current.TextColor1;
+ btnCode.TextColor = UserCenterColor.Current.TextColor1;
+ oldFrameRowControl = frameDetail;
+ };
+ }
+
+ if (realHeight > listView.Height - Application.GetRealHeight(196))
+ {
+ //淇冧娇琚尅浣忕殑鑿滃崟鑳藉鍚戜笂婊戝姩
+ var frameTemp = new FrameLayout();
+ frameTemp.Height = Application.GetRealHeight(196 + 34);//闂磋窛34
+ listView.AddChidren(frameTemp);
+ }
+ }
+
+ #endregion
+
+ #region 鈻� 鎼滅储浜嬩欢___________________________
+
+ /// <summary>
+ /// 鎼滅储浜嬩欢
+ /// </summary>
+ /// <param name="changdValue"></param>
+ private void SearchEvent(string changdValue)
+ {
+ lock (objLock)
+ {
+ //濡傛灉鍙緭鍏ヤ竴浣嶇殑璇�,鍙互鍒ゆ柇棣栧瓧姣�
+ string first = changdValue.Length == 1 ? changdValue.ToUpper() : string.Empty;
+
+ var listData = new List<AreaCodeInfo>();
+ for (int i = 0; i < listAreaCode.Count; i++)
+ {
+ //濡傛灉鍙緭鍏ヤ竴浣嶇殑璇�,鍙互鍒ゆ柇棣栧瓧姣�
+ if (listAreaCode[i].First == first)
+ {
+ listData.Add(listAreaCode[i]);
+ }
+ //鍒ゆ柇鍚嶅瓧鍜屽湴鍖虹爜
+ else if (listAreaCode[i].Code.Contains(changdValue) == true || listAreaCode[i].Name.Contains(changdValue) == true)
+ {
+ listData.Add(listAreaCode[i]);
+ }
+ }
+ HdlThreadLogic.Current.RunMain(() =>
+ {
+ //娣诲姞鍏ㄩ儴鏄庣粏琛�
+ this.AddAllDetailRow(listData);
+ });
+ }
+ }
+
+ #endregion
+
+ #region 鈻� 鎼滅储鎺т欢___________________________
+
+ /// <summary>
+ /// 鍒朵綔涓�涓牴鎹敭鍊艰繘琛屾悳绱㈢殑鎺т欢
+ /// 娣诲姞鎺т欢鍚庯紝璇疯皟鐢↙oadEvent()鍑芥暟杩涜鍥炶皟鍑芥暟鐨勭粦瀹�
+ /// </summary>
+ public class MySearchControl : FrameLayout
+ {
+ #region 鈻� 鍙橀噺澹版槑__________________________
+
+ /// <summary>
+ /// 鎼滅储鎺т欢
+ /// </summary>
+ private TextInputControl txtSearch = null;
+ /// <summary>
+ /// 鍥炶皟鍑芥暟
+ /// </summary>
+ private Action<string> actionMethod = null;
+ /// <summary>
+ /// 娌℃湁杈撳叆閿�肩殑鏄剧ず鏂囨湰
+ /// </summary>
+ private string tipText = string.Empty;
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖朹___________________________
+ /// <summary>
+ /// 鍒朵綔涓�涓牴鎹敭鍊艰繘琛屾悳绱㈢殑鎺т欢
+ /// 娣诲姞鎺т欢鍒扮埗鎺т欢鍚庯紝璇疯皟鐢˙indEvent()鍑芥暟杩涜鍥炶皟鍑芥暟鐨勭粦瀹�
+ /// </summary>
+ /// <param name="i_tipText">娌℃湁杈撳叆閿�肩殑鏄剧ず鏂囨湰</param>
+ public MySearchControl(string i_tipText)
+ {
+ this.tipText = i_tipText;
+ //妗屽竷鎺т欢
+ this.Width = Application.GetRealWidth(458);
+ this.Height = Application.GetRealHeight(104);
+ this.Radius = (uint)Application.GetRealHeight(17);
+ this.BorderColor = 0xffbfc1c2;
+ this.BorderWidth = 1;
+ }
+
+ /// <summary>
+ /// 鎺т欢鍒濆鍖�
+ /// </summary>
+ private void InitControl()
+ {
+ //杈撳叆鏂囨湰
+ int textWidth = this.Width - Application.GetRealWidth(35 * 2);
+ txtSearch = new TextInputControl(textWidth, Application.GetRealHeight(58), false);
+ txtSearch.X = Application.GetRealWidth(35);
+ txtSearch.PlaceholderText = this.tipText;
+ txtSearch.Gravity = Gravity.CenterVertical;
+ this.AddChidren(txtSearch);
+
+ string oldText = string.Empty;
+ //鍊兼敼鍙樹簨浠�
+ txtSearch.TextChangeEventHandler += (sender, e) =>
+ {
+ this.nextSearchKeys = txtSearch.Text.Trim();
+ if (oldText == this.nextSearchKeys)
+ {
+ //杈撳叆鐨勫�间竴鏍�
+ return;
+ }
+ oldText = this.nextSearchKeys;
+ //鍏佽鎵ц鍥炶皟鍑芥暟
+ this.isCanSearch = true;
+ };
+ }
+ #endregion
+
+ #region 鈻� 缁戝畾浜嬩欢__________________________
+
+ /// <summary>
+ /// 缁戝畾浜嬩欢
+ /// </summary>
+ /// <param name="action">鍥炶皟鍑芥暟锛氬�兼槸杈撳叆鐨勫叧閿瓧</param>
+ public void BindEvent(Action<string> action)
+ {
+ this.actionMethod = action;
+
+ //鎺т欢鍒濆鍖�
+ this.InitControl();
+
+ //鎵撳紑鎼滅储閿�肩殑绾跨▼
+ this.StartSearchKeysThead();
+ }
+
+ #endregion
+
+ #region 鈻� 寮�鍚嚎绋媉_________________________
+
+ /// <summary>
+ /// 鑳藉惁鎵ц鎼滅储
+ /// </summary>
+ private bool isCanSearch = false;
+ /// <summary>
+ /// 涓嬩竴涓悳绱㈤敭鍊�
+ /// </summary>
+ private string nextSearchKeys = string.Empty;
+ /// <summary>
+ /// 鎵撳紑鎼滅储閿�肩殑绾跨▼
+ /// </summary>
+ private void StartSearchKeysThead()
+ {
+ HdlThreadLogic.Current.RunThread(() =>
+ {
+ while (this.Parent != null)
+ {
+ //鏍规嵁閫昏緫锛屼笉鑳藉鎼滅储鐨勮瘽锛岀瓑寰�
+ if (this.isCanSearch == false)
+ {
+ System.Threading.Thread.Sleep(1000);
+ continue;
+ }
+ //鑾峰彇褰撳墠鐬棿鐨勯敭鍊�
+ string nowSearchKeys = nextSearchKeys;
+
+ //鏍规嵁鎼滅储閿�硷紝璋冪敤鍥炶皟鍑芥暟
+ this.actionMethod(nowSearchKeys);
+
+ //澶勭悊瀹屾瘯鍚庯紝濡傛灉褰撳墠鐨勬绱㈤敭鍊间笌涓嬩竴涓绱㈤敭鍊间竴鏍风殑璇�
+ //璇存槑鐢ㄦ埛宸茬粡涓嶅啀杈撳叆閿�间簡锛岃繖涓椂鍊欙紝鍋滄鎼滅储
+ if (nowSearchKeys == nextSearchKeys)
+ {
+ this.isCanSearch = false;
+ }
+
+ //濡傛灉褰撳墠鐨勬绱㈤敭鍊间笌涓嬩竴涓绱㈤敭鍊间笉涓�鏍风殑璇�
+ //閭e氨璇存槑锛岀敤鎴峰啀娆¤緭鍏ヤ簡閿�硷紝杩欎釜鏃跺�欙紝璁╃嚎绋嬬户缁窇涓嬪幓
+ }
+ });
+ }
+ #endregion
+
+ #region 鈻� 鎺т欢鎽ф瘉__________________________
+
+ /// <summary>
+ /// 鎺т欢鎽ф瘉
+ /// </summary>
+ public override void RemoveFromParent()
+ {
+ actionMethod = null;
+ base.RemoveFromParent();
+ }
+
+ #endregion
+ }
+
+ #endregion
+
+ #region 鈻� 涓�鑸柟娉昣__________________________
+
+ /// <summary>
+ /// 鑾峰彇姹夊瓧棣栧瓧姣�
+ /// </summary>
+ /// <param name="textValue"></param>
+ /// <returns></returns>
+ private string GetCharSpellCode(string textValue)
+ {
+ long iCnChar;
+
+ byte[] ZW = Encoding.GetEncoding("gb2312").GetBytes(textValue);
+
+ //濡傛灉鏄瓧姣嶏紝鍒欑洿鎺ヨ繑鍥�
+ if (ZW.Length == 1)
+ {
+ return textValue.ToUpper();
+ }
+ else
+ {
+ // get the array of byte from the single char
+ int i1 = (short)(ZW[0]);
+ int i2 = (short)(ZW[1]);
+ iCnChar = i1 * 256 + i2;
+ }
+
+ //expresstion
+ //table of the constant list
+ // 'A'; //45217..45252
+ // 'B'; //45253..45760
+ // 'C'; //45761..46317
+ // 'D'; //46318..46825
+ // 'E'; //46826..47009
+ // 'F'; //47010..47296
+ // 'G'; //47297..47613
+
+ // 'H'; //47614..48118
+ // 'J'; //48119..49061
+ // 'K'; //49062..49323
+ // 'L'; //49324..49895
+ // 'M'; //49896..50370
+ // 'N'; //50371..50613
+ // 'O'; //50614..50621
+ // 'P'; //50622..50905
+ // 'Q'; //50906..51386
+
+ // 'R'; //51387..51445
+ // 'S'; //51446..52217
+ // 'T'; //52218..52697
+ //娌℃湁U,V
+ // 'W'; //52698..52979
+ // 'X'; //52980..53640
+ // 'Y'; //53689..54480
+ // 'Z'; //54481..55289
+
+ // iCnChar match the constant
+ if ((iCnChar >= 45217) && (iCnChar <= 45252))
+ {
+ return "A";
+ }
+ else if ((iCnChar >= 45253) && (iCnChar <= 45760))
+ {
+ return "B";
+ }
+ else if ((iCnChar >= 45761) && (iCnChar <= 46317))
+ {
+ return "C";
+ }
+ else if ((iCnChar >= 46318) && (iCnChar <= 46825))
+ {
+ return "D";
+ }
+ else if ((iCnChar >= 46826) && (iCnChar <= 47009))
+ {
+ return "E";
+ }
+ else if ((iCnChar >= 47010) && (iCnChar <= 47296))
+ {
+ return "F";
+ }
+ else if ((iCnChar >= 47297) && (iCnChar <= 47613))
+ {
+ return "G";
+ }
+ else if ((iCnChar >= 47614) && (iCnChar <= 48118))
+ {
+ return "H";
+ }
+ else if ((iCnChar >= 48119) && (iCnChar <= 49061))
+ {
+ return "J";
+ }
+ else if ((iCnChar >= 49062) && (iCnChar <= 49323))
+ {
+ return "K";
+ }
+ else if ((iCnChar >= 49324) && (iCnChar <= 49895))
+ {
+ return "L";
+ }
+ else if ((iCnChar >= 49896) && (iCnChar <= 50370))
+ {
+ return "M";
+ }
+
+ else if ((iCnChar >= 50371) && (iCnChar <= 50613))
+ {
+ return "N";
+ }
+ else if ((iCnChar >= 50614) && (iCnChar <= 50621))
+ {
+ return "O";
+ }
+ else if ((iCnChar >= 50622) && (iCnChar <= 50905))
+ {
+ return "P";
+ }
+ else if ((iCnChar >= 50906) && (iCnChar <= 51386))
+ {
+ return "Q";
+ }
+ else if ((iCnChar >= 51387) && (iCnChar <= 51445))
+ {
+ return "R";
+ }
+ else if ((iCnChar >= 51446) && (iCnChar <= 52217))
+ {
+ return "S";
+ }
+ else if ((iCnChar >= 52218) && (iCnChar <= 52697))
+ {
+ return "T";
+ }
+ else if ((iCnChar >= 52698) && (iCnChar <= 52979))
+ {
+ return "W";
+ }
+ else if ((iCnChar >= 52980) && (iCnChar <= 53640))
+ {
+ return "X";
+ }
+ else if ((iCnChar >= 53689) && (iCnChar <= 54480))
+ {
+ return "Y";
+ }
+ else if ((iCnChar >= 54481) && (iCnChar <= 55289))
+ {
+ return "Z";
+ }
+ else return ("ZZ");
+ }
+
+ #endregion
+
+ #region 鈻� 缁撴瀯浣揰____________________________
+
+ /// <summary>
+ /// 鍦板尯鐮�
+ /// </summary>
+ private class AreaCodeInfo
+ {
+ /// <summary>
+ /// 棣栧瓧姣�
+ /// </summary>
+ public string First = string.Empty;
+ /// <summary>
+ /// 鍚嶅瓧
+ /// </summary>
+ public string Name = string.Empty;
+ /// <summary>
+ /// 鍦板尯鐮�
+ /// </summary>
+ public string Code = string.Empty;
+ /// <summary>
+ /// Id
+ /// </summary>
+ public string Id = string.Empty;
+ }
+
+ #endregion
+ }
+}
--
Gitblit v1.8.0