root / src / com / rackspacecloud / android / CreatePasswordActivity.java @ 3e180b04
History | View | Annotate | Download (6.7 kB)
1 | 0ae79b26 | Adam Menz | package com.rackspacecloud.android; |
---|---|---|---|
2 | 0ae79b26 | Adam Menz | |
3 | 0ae79b26 | Adam Menz | import android.app.Activity; |
4 | 0ae79b26 | Adam Menz | import android.app.AlertDialog; |
5 | 0ae79b26 | Adam Menz | import android.app.Dialog; |
6 | 0ae79b26 | Adam Menz | import android.content.Context; |
7 | 0ae79b26 | Adam Menz | import android.content.DialogInterface; |
8 | 0ae79b26 | Adam Menz | import android.os.Bundle; |
9 | 0ae79b26 | Adam Menz | import android.view.View; |
10 | 0ae79b26 | Adam Menz | import android.view.View.OnClickListener; |
11 | 0ae79b26 | Adam Menz | import android.widget.Button; |
12 | 0ae79b26 | Adam Menz | import android.widget.CheckBox; |
13 | 0ae79b26 | Adam Menz | import android.widget.EditText; |
14 | 0ae79b26 | Adam Menz | import android.widget.Toast; |
15 | 0ae79b26 | Adam Menz | |
16 | 0ae79b26 | Adam Menz | public class CreatePasswordActivity extends Activity { |
17 | 0ae79b26 | Adam Menz | |
18 | 0ae79b26 | Adam Menz | private PasswordManager pwManager;
|
19 | 0ae79b26 | Adam Menz | private EditText passwordText;
|
20 | 0ae79b26 | Adam Menz | private EditText confirmText;
|
21 | 0ae79b26 | Adam Menz | private Button submitPassword; |
22 | 0ae79b26 | Adam Menz | private CheckBox passwordCheckBox;
|
23 | 0ae79b26 | Adam Menz | private boolean isChecked; |
24 | 0ae79b26 | Adam Menz | |
25 | 0ae79b26 | Adam Menz | public void onCreate(Bundle savedInstanceState) { |
26 | 0ae79b26 | Adam Menz | super.onCreate(savedInstanceState);
|
27 | 0ae79b26 | Adam Menz | setContentView(R.layout.password); |
28 | 0ae79b26 | Adam Menz | pwManager = new PasswordManager(getSharedPreferences(
|
29 | 0ae79b26 | Adam Menz | Preferences.SHARED_PREFERENCES_NAME, MODE_PRIVATE));
|
30 | 0ae79b26 | Adam Menz | restoreState(savedInstanceState); |
31 | 0ae79b26 | Adam Menz | } |
32 | 0ae79b26 | Adam Menz | |
33 | 0ae79b26 | Adam Menz | private void restoreState(Bundle state) { |
34 | 0ae79b26 | Adam Menz | if (state != null && state.containsKey("isChecked")) { |
35 | 0ae79b26 | Adam Menz | isChecked = state.getBoolean("isChecked");
|
36 | 0ae79b26 | Adam Menz | } |
37 | 0ae79b26 | Adam Menz | else{
|
38 | 0ae79b26 | Adam Menz | isChecked = hadPassword(); |
39 | 0ae79b26 | Adam Menz | } |
40 | 0ae79b26 | Adam Menz | setUpWidgets(); |
41 | 0ae79b26 | Adam Menz | |
42 | 0ae79b26 | Adam Menz | } |
43 | 0ae79b26 | Adam Menz | |
44 | 0ae79b26 | Adam Menz | protected void onSaveInstanceState(Bundle outState) { |
45 | 0ae79b26 | Adam Menz | super.onSaveInstanceState(outState);
|
46 | 0ae79b26 | Adam Menz | outState.putBoolean("isChecked", passwordCheckBox.isChecked());
|
47 | 0ae79b26 | Adam Menz | } |
48 | 0ae79b26 | Adam Menz | |
49 | 0ae79b26 | Adam Menz | private void setUpWidgets() { |
50 | 0ae79b26 | Adam Menz | setUpCheckBox(); |
51 | 0ae79b26 | Adam Menz | passwordText = (EditText) findViewById(R.id.password_edittext); |
52 | 0ae79b26 | Adam Menz | confirmText = (EditText) findViewById(R.id.confirm_edittext); |
53 | 0ae79b26 | Adam Menz | if(!passwordCheckBox.isChecked()){
|
54 | 0ae79b26 | Adam Menz | passwordText.setEnabled(false);
|
55 | 0ae79b26 | Adam Menz | confirmText.setEnabled(false);
|
56 | 0ae79b26 | Adam Menz | } |
57 | 0ae79b26 | Adam Menz | setUpSubmit(); |
58 | 0ae79b26 | Adam Menz | } |
59 | 0ae79b26 | Adam Menz | |
60 | 0ae79b26 | Adam Menz | private void setUpCheckBox() { |
61 | 0ae79b26 | Adam Menz | passwordCheckBox = (CheckBox) findViewById(R.id.password_checkbox); |
62 | 0ae79b26 | Adam Menz | passwordCheckBox.setChecked(isChecked); |
63 | 0ae79b26 | Adam Menz | passwordCheckBox.setOnClickListener(new OnClickListener() {
|
64 | 0ae79b26 | Adam Menz | public void onClick(View v) { |
65 | 0ae79b26 | Adam Menz | if (((CheckBox) v).isChecked()) {
|
66 | 0ae79b26 | Adam Menz | passwordText.setEnabled(true);
|
67 | 0ae79b26 | Adam Menz | confirmText.setEnabled(true);
|
68 | 0ae79b26 | Adam Menz | } else {
|
69 | 0ae79b26 | Adam Menz | passwordText.setEnabled(false);
|
70 | 0ae79b26 | Adam Menz | confirmText.setEnabled(false);
|
71 | 0ae79b26 | Adam Menz | } |
72 | 0ae79b26 | Adam Menz | } |
73 | 0ae79b26 | Adam Menz | }); |
74 | 0ae79b26 | Adam Menz | } |
75 | 0ae79b26 | Adam Menz | |
76 | 0ae79b26 | Adam Menz | |
77 | 0ae79b26 | Adam Menz | /*
|
78 | 0ae79b26 | Adam Menz | * sets up submit button to deal with each
|
79 | 0ae79b26 | Adam Menz | * case of starting having/not having a password
|
80 | 0ae79b26 | Adam Menz | * and ending with having/not having a password
|
81 | 0ae79b26 | Adam Menz | */
|
82 | 0ae79b26 | Adam Menz | private void setUpSubmit() { |
83 | 0ae79b26 | Adam Menz | submitPassword = (Button) findViewById(R.id.create_password_button);
|
84 | 0ae79b26 | Adam Menz | submitPassword.setOnClickListener(new OnClickListener() {
|
85 | 0ae79b26 | Adam Menz | public void onClick(View v) { |
86 | 0ae79b26 | Adam Menz | // didn't have password before and still doesn't
|
87 | 0ae79b26 | Adam Menz | if (!hadPassword() && !willHavePassword()) {
|
88 | 0ae79b26 | Adam Menz | finish(); |
89 | 0ae79b26 | Adam Menz | } |
90 | 0ae79b26 | Adam Menz | // didnt have password before and does now
|
91 | 0ae79b26 | Adam Menz | else if (!hadPassword() && willHavePassword()) { |
92 | 0ae79b26 | Adam Menz | if (passwordsMatch()) {
|
93 | 0ae79b26 | Adam Menz | if(validInputs()){
|
94 | 0ae79b26 | Adam Menz | pwManager.changePassword(passwordText.getText().toString()); |
95 | 0ae79b26 | Adam Menz | showToast("Password has been enabled.");
|
96 | 0ae79b26 | Adam Menz | finish(); |
97 | 0ae79b26 | Adam Menz | } |
98 | 0ae79b26 | Adam Menz | else{
|
99 | 0ae79b26 | Adam Menz | showAlert("Missing Field",
|
100 | 0ae79b26 | Adam Menz | "Password and confirmation are required.");
|
101 | 0ae79b26 | Adam Menz | } |
102 | 0ae79b26 | Adam Menz | } else {
|
103 | 0ae79b26 | Adam Menz | showAlert("Passwords must match",
|
104 | 0ae79b26 | Adam Menz | "Password and confirmation did not match. Try again.");
|
105 | 0ae79b26 | Adam Menz | } |
106 | 0ae79b26 | Adam Menz | } else if (hadPassword()) { |
107 | 0ae79b26 | Adam Menz | showDialog(R.id.create_password_button); |
108 | 0ae79b26 | Adam Menz | |
109 | 0ae79b26 | Adam Menz | } |
110 | 0ae79b26 | Adam Menz | } |
111 | 0ae79b26 | Adam Menz | }); |
112 | 0ae79b26 | Adam Menz | } |
113 | 0ae79b26 | Adam Menz | |
114 | 0ae79b26 | Adam Menz | /*
|
115 | 0ae79b26 | Adam Menz | * handles the case where the was a password before
|
116 | 0ae79b26 | Adam Menz | * the user will need to enter the old password
|
117 | 0ae79b26 | Adam Menz | * in order to make any changes
|
118 | 0ae79b26 | Adam Menz | */
|
119 | 0ae79b26 | Adam Menz | @Override
|
120 | 0ae79b26 | Adam Menz | protected Dialog onCreateDialog(int id) { |
121 | 0ae79b26 | Adam Menz | switch (id) {
|
122 | 0ae79b26 | Adam Menz | case R.id.create_password_button:
|
123 | 0ae79b26 | Adam Menz | final EditText input = new EditText(this); |
124 | 0ae79b26 | Adam Menz | input.setInputType(android.text.InputType.TYPE_CLASS_TEXT |
125 | 0ae79b26 | Adam Menz | | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD); |
126 | 0ae79b26 | Adam Menz | input.setText("");
|
127 | 0ae79b26 | Adam Menz | input.setMaxWidth(10);
|
128 | 0ae79b26 | Adam Menz | return new AlertDialog.Builder(CreatePasswordActivity.this) |
129 | 0ae79b26 | Adam Menz | .setIcon(R.drawable.alert_dialog_icon) |
130 | 0ae79b26 | Adam Menz | .setView(input) |
131 | 0ae79b26 | Adam Menz | .setTitle("Verification Required")
|
132 | 0ae79b26 | Adam Menz | .setMessage("Enter your old password: ")
|
133 | 0ae79b26 | Adam Menz | .setPositiveButton("Submit",
|
134 | 0ae79b26 | Adam Menz | new DialogInterface.OnClickListener() {
|
135 | 0ae79b26 | Adam Menz | public void onClick(DialogInterface dialog, |
136 | 0ae79b26 | Adam Menz | int whichButton) {
|
137 | 0ae79b26 | Adam Menz | // had password before and doesnt now
|
138 | 0ae79b26 | Adam Menz | if (!willHavePassword()) {
|
139 | 0ae79b26 | Adam Menz | if (pwManager.verifyEnteredPassword(input.getText().toString())) {
|
140 | 0ae79b26 | Adam Menz | pwManager.turnOffPassword(); |
141 | 0ae79b26 | Adam Menz | showToast("Password has been disabled.");
|
142 | 0ae79b26 | Adam Menz | finish(); |
143 | 0ae79b26 | Adam Menz | } else {
|
144 | 0ae79b26 | Adam Menz | showAlert("Problem with password",
|
145 | 0ae79b26 | Adam Menz | "The entered password was incorrect");
|
146 | 0ae79b26 | Adam Menz | passwordCheckBox.setChecked(true);
|
147 | 0ae79b26 | Adam Menz | passwordText.setEnabled(true);
|
148 | 0ae79b26 | Adam Menz | confirmText.setEnabled(true);
|
149 | 0ae79b26 | Adam Menz | } |
150 | 0ae79b26 | Adam Menz | } |
151 | 0ae79b26 | Adam Menz | // had a password and still has one
|
152 | 0ae79b26 | Adam Menz | else {
|
153 | 0ae79b26 | Adam Menz | if (pwManager.verifyEnteredPassword(input.getText().toString())) {
|
154 | 0ae79b26 | Adam Menz | if (passwordsMatch()) {
|
155 | 0ae79b26 | Adam Menz | if(validInputs()){
|
156 | 0ae79b26 | Adam Menz | pwManager.changePassword(passwordText.getText().toString()); |
157 | 0ae79b26 | Adam Menz | showToast("Password has been changed.");
|
158 | 0ae79b26 | Adam Menz | finish(); |
159 | 0ae79b26 | Adam Menz | } |
160 | 0ae79b26 | Adam Menz | else{
|
161 | 0ae79b26 | Adam Menz | showAlert("Missing Field",
|
162 | 0ae79b26 | Adam Menz | "Password and confirmation are required.");
|
163 | 0ae79b26 | Adam Menz | } |
164 | 0ae79b26 | Adam Menz | } else {
|
165 | 0ae79b26 | Adam Menz | showAlert("Passwords must match",
|
166 | 0ae79b26 | Adam Menz | "Password and confirmation did not match. Try again.");
|
167 | 0ae79b26 | Adam Menz | } |
168 | 0ae79b26 | Adam Menz | |
169 | 0ae79b26 | Adam Menz | } else {
|
170 | 0ae79b26 | Adam Menz | showAlert("Problem with password",
|
171 | 0ae79b26 | Adam Menz | "The entered password was incorrect");
|
172 | 0ae79b26 | Adam Menz | passwordCheckBox.setChecked(true);
|
173 | 0ae79b26 | Adam Menz | passwordText.setEnabled(true);
|
174 | 0ae79b26 | Adam Menz | confirmText.setEnabled(true);
|
175 | 0ae79b26 | Adam Menz | } |
176 | 0ae79b26 | Adam Menz | } |
177 | 0ae79b26 | Adam Menz | } |
178 | 0ae79b26 | Adam Menz | }) |
179 | 0ae79b26 | Adam Menz | .setNegativeButton("Cancel",
|
180 | 0ae79b26 | Adam Menz | new DialogInterface.OnClickListener() {
|
181 | 0ae79b26 | Adam Menz | public void onClick(DialogInterface dialog, |
182 | 0ae79b26 | Adam Menz | int whichButton) {
|
183 | 0ae79b26 | Adam Menz | removeDialog(R.id.create_password_button); |
184 | 0ae79b26 | Adam Menz | //passwordCheckBox.setChecked(true);
|
185 | 0ae79b26 | Adam Menz | } |
186 | 0ae79b26 | Adam Menz | }).create(); |
187 | 0ae79b26 | Adam Menz | } |
188 | 0ae79b26 | Adam Menz | return null; |
189 | 0ae79b26 | Adam Menz | } |
190 | 0ae79b26 | Adam Menz | |
191 | 0ae79b26 | Adam Menz | |
192 | 0ae79b26 | Adam Menz | /*
|
193 | 0ae79b26 | Adam Menz | * must ensure that the passwords are the same before you can submit
|
194 | 0ae79b26 | Adam Menz | */
|
195 | 0ae79b26 | Adam Menz | private boolean passwordsMatch() { |
196 | 0ae79b26 | Adam Menz | return passwordText.getText().toString()
|
197 | 0ae79b26 | Adam Menz | .equals(confirmText.getText().toString()); |
198 | 0ae79b26 | Adam Menz | } |
199 | 0ae79b26 | Adam Menz | |
200 | 0ae79b26 | Adam Menz | private boolean willHavePassword() { |
201 | 0ae79b26 | Adam Menz | return passwordCheckBox.isChecked();
|
202 | 0ae79b26 | Adam Menz | } |
203 | 0ae79b26 | Adam Menz | |
204 | 0ae79b26 | Adam Menz | /*
|
205 | 0ae79b26 | Adam Menz | * returns true if application required a
|
206 | 0ae79b26 | Adam Menz | * password before current edit
|
207 | 0ae79b26 | Adam Menz | */
|
208 | 0ae79b26 | Adam Menz | private boolean hadPassword(){ |
209 | 0ae79b26 | Adam Menz | return pwManager.hasPassword();
|
210 | 0ae79b26 | Adam Menz | } |
211 | 0ae79b26 | Adam Menz | |
212 | 0ae79b26 | Adam Menz | /*
|
213 | 0ae79b26 | Adam Menz | * checks that when the user submits
|
214 | 0ae79b26 | Adam Menz | * the password fields are not empty
|
215 | 0ae79b26 | Adam Menz | */
|
216 | 0ae79b26 | Adam Menz | private boolean validInputs(){ |
217 | 0ae79b26 | Adam Menz | return !passwordText.getText().toString().equals("") |
218 | 0ae79b26 | Adam Menz | || !confirmText.getText().toString().equals("");
|
219 | 0ae79b26 | Adam Menz | } |
220 | 0ae79b26 | Adam Menz | |
221 | 0ae79b26 | Adam Menz | private void showToast(String message) { |
222 | 0ae79b26 | Adam Menz | Context context = getApplicationContext();
|
223 | 0ae79b26 | Adam Menz | int duration = Toast.LENGTH_SHORT;
|
224 | 0ae79b26 | Adam Menz | Toast toast = Toast.makeText(context, message, duration); |
225 | 0ae79b26 | Adam Menz | toast.show(); |
226 | 0ae79b26 | Adam Menz | } |
227 | 0ae79b26 | Adam Menz | |
228 | 0ae79b26 | Adam Menz | private void showAlert(String title, String message) { |
229 | 0ae79b26 | Adam Menz | AlertDialog alert = new AlertDialog.Builder(this).create(); |
230 | 0ae79b26 | Adam Menz | alert.setTitle(title); |
231 | 0ae79b26 | Adam Menz | alert.setMessage(message); |
232 | 0ae79b26 | Adam Menz | alert.setButton("OK", new DialogInterface.OnClickListener() { |
233 | 0ae79b26 | Adam Menz | public void onClick(DialogInterface dialog, int which) { |
234 | 0ae79b26 | Adam Menz | return;
|
235 | 0ae79b26 | Adam Menz | } |
236 | 0ae79b26 | Adam Menz | }); |
237 | 0ae79b26 | Adam Menz | alert.show(); |
238 | 0ae79b26 | Adam Menz | } |
239 | 0ae79b26 | Adam Menz | |
240 | 0ae79b26 | Adam Menz | } |