xm
2019-07-16 b910cb79c9b5bcc204022a3cf9e6950f0a64dfbd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using System;
using System.Collections.Generic;
using System.Text;
 
namespace Shared.Phone.UserCenter.Safety
{
    /// <summary>
    /// 修改胁迫密码
    /// </summary>
    public class EdtiorCoercePasswordForm : UserCenterCommonForm
    {
        /// <summary>
        /// 信息提示控件
        /// </summary>
        private ViewNormalControl txtMsg = null;
 
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="addModel">是否是添加密码模式</param>
        public void ShowForm(bool addModel)
        {
            if (addModel == true)
            {
                //设置头部信息
                base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddPassword));
            }
            else
            {
                //设置头部信息
                base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uChangedPassword));
            }
 
            //初始化中部信息
            this.InitMiddleFrame();
        }
 
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            //请输入胁迫密码
            var btnTitle = new TitleViewControl();
            btnTitle.TextColor = UserCenterColor.Current.TextGrayColor;
            btnTitle.Y = Application.GetRealHeight(40);
            btnTitle.TextID = R.MyInternationalizationString.uPleaseInputCoercePassword;
            bodyFrameLayout.AddChidren(btnTitle);
 
            //新密码
            string placeholderText = Language.StringByID(R.MyInternationalizationString.uNewPassword);
            var rowNewPsw = new RowPasswordControl();
            rowNewPsw.Y = btnTitle.Bottom;
            bodyFrameLayout.AddChidren(rowNewPsw);
            rowNewPsw.Init(placeholderText);
 
            //确认新密码
            placeholderText = Language.StringByID(R.MyInternationalizationString.uConfirmNewPassword);
            var rowConfirmPsw = new RowPasswordControl();
            rowConfirmPsw.Y = rowNewPsw.Bottom;
            bodyFrameLayout.AddChidren(rowConfirmPsw);
            rowConfirmPsw.Init(placeholderText);
 
            //提示信息
            this.txtMsg = new ViewNormalControl(800, true);
            txtMsg.X = ControlCommonResourse.XXLeft;
            txtMsg.Y = rowConfirmPsw.Bottom + Application.GetRealHeight(5);
            txtMsg.TextColor = UserCenterColor.Current.Red;
            bodyFrameLayout.AddChidren(txtMsg);
 
            //完成
            var btnfinish = new TopLayoutFinshView();
            topFrameLayout.AddChidren(btnfinish);
            btnfinish.MouseUpEventHandler += (sender, e) =>
            {
                //执行修改胁迫密码
                this.ChangedCoercePassword(rowNewPsw.Text, rowConfirmPsw.Text);
            };
        }
 
        /// <summary>
        /// 执行修改胁迫密码
        /// </summary>
        /// <param name="pswValue1">新密码</param>
        /// <param name="pswValue2">确认密码</param>
        private async void ChangedCoercePassword(string pswValue1, string pswValue2)
        {
            //检测密码
            string msg = this.CheckPassword(pswValue1, pswValue2);
            if (msg != string.Empty)
            {
                Application.RunOnMainThread(() =>
                {
                    txtMsg.Text = msg;
                });
                return;
            }
            //执行修改
            bool result = await Common.LocalSafeguard.Current.ChangedUserPassword(5, pswValue1);
            if (result == false)
            {
                return;
            }
 
            //胁迫密码已更新
            string Refmsg = Language.StringByID(R.MyInternationalizationString.uCoercePasswordRefreshMsg);
            Application.RunOnMainThread(() =>
            {
                //刷新主界面
                this.LoadFormMethodByName("CoercePasswordMainForm", "InitMiddleFrame");
 
                var form = new PasswordRefreshMsgForm();
                this.AddFromAndRemoveNowForm(form, Refmsg);
            });
        }
 
        /// <summary>
        /// 密码检查,返回错误信息,无错误信息(空字符串)则表示成功
        /// </summary>
        /// <param name="pswValue1"></param>
        /// <param name="pswValue2"></param>
        /// <returns></returns>
        private string CheckPassword(string pswValue1, string pswValue2)
        {
            if (pswValue1 == string.Empty)
            {
                //请输入新密码
                return Language.StringByID(R.MyInternationalizationString.uPleaseInputNewPassword);
            }
            if (pswValue2 == string.Empty)
            {
                //请输入确认密码
                return Language.StringByID(R.MyInternationalizationString.PleaseInputConfirmPsw);
            }
            if (pswValue1.Length < UserCenterResourse.PasswordLength)
            {
                //密码长度不低于{0}位数
                return string.Format(Language.StringByID(R.MyInternationalizationString.PswLengthMsg), UserCenterResourse.PasswordLength);
            }
            if (pswValue1 != pswValue2)
            {
                //两次输入的密码不一致
                return Language.StringByID(R.MyInternationalizationString.SecondPswNotEqual);
            }
            return string.Empty;
        }
    }
}