Statistics
| Branch: | Revision:

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
}