1package eu.siacs.conversations.ui;
2
3import android.content.Intent;
4import android.os.Bundle;
5import android.view.View;
6import android.widget.Button;
7import android.widget.EditText;
8import android.widget.TextView;
9import android.widget.Toast;
10
11import eu.siacs.conversations.R;
12import eu.siacs.conversations.entities.Account;
13import eu.siacs.conversations.services.XmppConnectionService;
14
15public class ChangePasswordActivity extends XmppActivity implements XmppConnectionService.OnAccountPasswordChanged {
16
17 private Button mChangePasswordButton;
18 private View.OnClickListener mOnChangePasswordButtonClicked = new View.OnClickListener() {
19 @Override
20 public void onClick(View view) {
21 if (mAccount != null) {
22 final String currentPassword = mCurrentPassword.getText().toString();
23 final String newPassword = mNewPassword.getText().toString();
24 final String newPasswordConfirm = mNewPasswordConfirm.getText().toString();
25 if (!mAccount.isOptionSet(Account.OPTION_MAGIC_CREATE) && !currentPassword.equals(mAccount.getPassword())) {
26 mCurrentPassword.requestFocus();
27 mCurrentPassword.setError(getString(R.string.account_status_unauthorized));
28 } else if (!newPassword.equals(newPasswordConfirm)) {
29 mNewPasswordConfirm.requestFocus();
30 mNewPasswordConfirm.setError(getString(R.string.passwords_do_not_match));
31 } else if (newPassword.trim().isEmpty()) {
32 mNewPassword.requestFocus();
33 mNewPassword.setError(getString(R.string.password_should_not_be_empty));
34 } else {
35 mCurrentPassword.setError(null);
36 mNewPassword.setError(null);
37 mNewPasswordConfirm.setError(null);
38 xmppConnectionService.updateAccountPasswordOnServer(mAccount, newPassword, ChangePasswordActivity.this);
39 mChangePasswordButton.setEnabled(false);
40 mChangePasswordButton.setTextColor(getSecondaryTextColor());
41 mChangePasswordButton.setText(R.string.updating);
42 }
43 }
44 }
45 };
46 private TextView mCurrentPasswordLabel;
47 private EditText mCurrentPassword;
48 private EditText mNewPassword;
49 private EditText mNewPasswordConfirm;
50 private Account mAccount;
51
52 @Override
53 void onBackendConnected() {
54 this.mAccount = extractAccount(getIntent());
55 if (this.mAccount != null && this.mAccount.isOptionSet(Account.OPTION_MAGIC_CREATE)) {
56 this.mCurrentPasswordLabel.setVisibility(View.GONE);
57 this.mCurrentPassword.setVisibility(View.GONE);
58 } else {
59 this.mCurrentPasswordLabel.setVisibility(View.VISIBLE);
60 this.mCurrentPassword.setVisibility(View.VISIBLE);
61 }
62 }
63
64 @Override
65 protected void onCreate(final Bundle savedInstanceState) {
66 super.onCreate(savedInstanceState);
67 setContentView(R.layout.activity_change_password);
68 Button mCancelButton = (Button) findViewById(R.id.left_button);
69 mCancelButton.setOnClickListener(new View.OnClickListener() {
70 @Override
71 public void onClick(View view) {
72 finish();
73 }
74 });
75 this.mChangePasswordButton = (Button) findViewById(R.id.right_button);
76 this.mChangePasswordButton.setOnClickListener(this.mOnChangePasswordButtonClicked);
77 this.mCurrentPasswordLabel = (TextView) findViewById(R.id.current_password_label);
78 this.mCurrentPassword = (EditText) findViewById(R.id.current_password);
79 this.mNewPassword = (EditText) findViewById(R.id.new_password);
80 this.mNewPasswordConfirm = (EditText) findViewById(R.id.new_password_confirm);
81 }
82
83 @Override
84 protected void onStart() {
85 super.onStart();
86 Intent intent = getIntent();
87 String password = intent != null ? intent.getStringExtra("password") : null;
88 if (password != null) {
89 this.mNewPassword.getEditableText().clear();
90 this.mNewPassword.getEditableText().append(password);
91 }
92 }
93
94 @Override
95 public void onPasswordChangeSucceeded() {
96 runOnUiThread(new Runnable() {
97 @Override
98 public void run() {
99 Toast.makeText(ChangePasswordActivity.this,R.string.password_changed,Toast.LENGTH_LONG).show();
100 finish();
101 }
102 });
103 }
104
105 @Override
106 public void onPasswordChangeFailed() {
107 runOnUiThread(new Runnable() {
108 @Override
109 public void run() {
110 mNewPassword.setError(getString(R.string.could_not_change_password));
111 mChangePasswordButton.setEnabled(true);
112 mChangePasswordButton.setTextColor(getPrimaryTextColor());
113 mChangePasswordButton.setText(R.string.change_password);
114 }
115 });
116
117 }
118
119 public void refreshUiReal() {
120
121 }
122}