root / src / com / rackspacecloud / android / ListAccountsActivity.java @ c476482b
History | View | Annotate | Download (14.6 kB)
1 | 441d5327 | Adam Menz | package com.rackspacecloud.android; |
---|---|---|---|
2 | 441d5327 | Adam Menz | |
3 | 441d5327 | Adam Menz | import java.io.FileInputStream; |
4 | 441d5327 | Adam Menz | import java.io.FileNotFoundException; |
5 | 441d5327 | Adam Menz | import java.io.FileOutputStream; |
6 | 441d5327 | Adam Menz | import java.io.IOException; |
7 | 441d5327 | Adam Menz | import java.io.ObjectInputStream; |
8 | 441d5327 | Adam Menz | import java.io.ObjectOutputStream; |
9 | 441d5327 | Adam Menz | import java.io.StreamCorruptedException; |
10 | 441d5327 | Adam Menz | import java.util.ArrayList; |
11 | 441d5327 | Adam Menz | import java.util.TreeMap; |
12 | 441d5327 | Adam Menz | |
13 | 441d5327 | Adam Menz | import com.rackspace.cloud.servers.api.client.Account; |
14 | 441d5327 | Adam Menz | import com.rackspace.cloud.servers.api.client.Flavor; |
15 | 441d5327 | Adam Menz | import com.rackspace.cloud.servers.api.client.FlavorManager; |
16 | 441d5327 | Adam Menz | import com.rackspace.cloud.servers.api.client.Image; |
17 | 441d5327 | Adam Menz | import com.rackspace.cloud.servers.api.client.ImageManager; |
18 | 441d5327 | Adam Menz | import com.rackspace.cloud.servers.api.client.http.Authentication; |
19 | 441d5327 | Adam Menz | |
20 | 441d5327 | Adam Menz | import android.app.AlertDialog; |
21 | 0ae79b26 | Adam Menz | import android.app.Dialog; |
22 | f2020b69 | Adam Menz | import android.app.ProgressDialog; |
23 | 441d5327 | Adam Menz | import android.content.Context; |
24 | 441d5327 | Adam Menz | import android.content.DialogInterface; |
25 | 441d5327 | Adam Menz | import android.content.Intent; |
26 | 441d5327 | Adam Menz | import android.os.AsyncTask; |
27 | 441d5327 | Adam Menz | import android.os.Bundle; |
28 | 3e180b04 | Adam Menz | import android.util.Log; |
29 | fea03400 | Adam Menz | import android.view.ContextMenu; |
30 | fea03400 | Adam Menz | import android.view.ContextMenu.ContextMenuInfo; |
31 | 441d5327 | Adam Menz | import android.view.LayoutInflater; |
32 | 441d5327 | Adam Menz | import android.view.Menu; |
33 | 441d5327 | Adam Menz | import android.view.MenuInflater; |
34 | 441d5327 | Adam Menz | import android.view.MenuItem; |
35 | 441d5327 | Adam Menz | import android.view.View; |
36 | 0ae79b26 | Adam Menz | import android.view.View.OnClickListener; |
37 | 441d5327 | Adam Menz | import android.view.ViewGroup; |
38 | fea03400 | Adam Menz | import android.widget.AdapterView.AdapterContextMenuInfo; |
39 | 441d5327 | Adam Menz | import android.widget.ArrayAdapter; |
40 | 0ae79b26 | Adam Menz | import android.widget.Button; |
41 | 0ae79b26 | Adam Menz | import android.widget.EditText; |
42 | 441d5327 | Adam Menz | import android.widget.ImageView; |
43 | 441d5327 | Adam Menz | import android.widget.ListView; |
44 | 441d5327 | Adam Menz | import android.widget.TextView; |
45 | 0ae79b26 | Adam Menz | import android.widget.Toast; |
46 | 441d5327 | Adam Menz | |
47 | 0edf6b39 | Adam Menz | public class ListAccountsActivity extends GaListActivity{ |
48 | 441d5327 | Adam Menz | |
49 | 006434d8 | Adam Menz | private final int PASSWORD_PROMPT = 123; |
50 | 730daee8 | Adam Menz | private final String FILENAME = "accounts.data"; |
51 | 0edf6b39 | Adam Menz | private static final String PAGE_ROOT = "/Root"; |
52 | 0edf6b39 | Adam Menz | |
53 | 441d5327 | Adam Menz | private boolean authenticating; |
54 | 006434d8 | Adam Menz | private ArrayList<Account> accounts; |
55 | 006434d8 | Adam Menz | private Intent tabViewIntent;
|
56 | e7534f91 | Adam Menz | private ProgressDialog dialog;
|
57 | e7534f91 | Adam Menz | private Context context; |
58 | 006434d8 | Adam Menz | //need to store if the user has successfully logged in
|
59 | 006434d8 | Adam Menz | private boolean loggedIn; |
60 | f00e3176 | Adam Menz | |
61 | 441d5327 | Adam Menz | public void onCreate(Bundle savedInstanceState) { |
62 | 0edf6b39 | Adam Menz | super.onCreate(savedInstanceState);
|
63 | 0edf6b39 | Adam Menz | trackPageView(PAGE_ROOT); |
64 | 0edf6b39 | Adam Menz | onRestoreInstanceState(savedInstanceState); |
65 | 0edf6b39 | Adam Menz | registerForContextMenu(getListView()); |
66 | 0edf6b39 | Adam Menz | context = getApplicationContext(); |
67 | 0edf6b39 | Adam Menz | tabViewIntent = new Intent(this, TabViewActivity.class); |
68 | 0edf6b39 | Adam Menz | verifyPassword(); |
69 | 0edf6b39 | Adam Menz | } |
70 | e7534f91 | Adam Menz | |
71 | 441d5327 | Adam Menz | @Override
|
72 | 441d5327 | Adam Menz | protected void onSaveInstanceState(Bundle outState) { |
73 | 441d5327 | Adam Menz | super.onSaveInstanceState(outState);
|
74 | 441d5327 | Adam Menz | outState.putBoolean("authenticating", authenticating);
|
75 | 006434d8 | Adam Menz | outState.putBoolean("loggedIn", loggedIn);
|
76 | 0edf6b39 | Adam Menz | |
77 | e7534f91 | Adam Menz | //need to set authenticating back to true because it is set to false
|
78 | e7534f91 | Adam Menz | //in hideDialog()
|
79 | e7534f91 | Adam Menz | if(authenticating){
|
80 | e7534f91 | Adam Menz | hideDialog(); |
81 | e7534f91 | Adam Menz | authenticating = true;
|
82 | e7534f91 | Adam Menz | } |
83 | 441d5327 | Adam Menz | writeAccounts(); |
84 | 441d5327 | Adam Menz | } |
85 | 0edf6b39 | Adam Menz | |
86 | e7534f91 | Adam Menz | @Override
|
87 | 0edf6b39 | Adam Menz | protected void onRestoreInstanceState(Bundle state) { |
88 | 006434d8 | Adam Menz | if (state != null && state.containsKey("loggedIn")){ |
89 | 006434d8 | Adam Menz | loggedIn = state.getBoolean("loggedIn");
|
90 | 006434d8 | Adam Menz | } |
91 | 006434d8 | Adam Menz | else{
|
92 | 006434d8 | Adam Menz | loggedIn = false;
|
93 | 006434d8 | Adam Menz | } |
94 | 441d5327 | Adam Menz | if (state != null && state.containsKey("authenticating") && state.getBoolean("authenticating")) { |
95 | 3e180b04 | Adam Menz | Log.d("info", "captin on restore show"); |
96 | 0edf6b39 | Adam Menz | showDialog(); |
97 | 0edf6b39 | Adam Menz | } else {
|
98 | 0edf6b39 | Adam Menz | hideDialog(); |
99 | 0edf6b39 | Adam Menz | } |
100 | 441d5327 | Adam Menz | if (state != null && state.containsKey("accounts")) { |
101 | 0edf6b39 | Adam Menz | accounts = readAccounts(); |
102 | 0edf6b39 | Adam Menz | if (accounts.size() == 0) { |
103 | 0edf6b39 | Adam Menz | displayNoAccountsCell(); |
104 | 0edf6b39 | Adam Menz | } else {
|
105 | 0edf6b39 | Adam Menz | getListView().setDividerHeight(1); // restore divider lines |
106 | 0edf6b39 | Adam Menz | setListAdapter(new AccountAdapter());
|
107 | 0edf6b39 | Adam Menz | } |
108 | 0edf6b39 | Adam Menz | } else {
|
109 | 0edf6b39 | Adam Menz | loadAccounts(); |
110 | 0edf6b39 | Adam Menz | } |
111 | 0edf6b39 | Adam Menz | } |
112 | 3e180b04 | Adam Menz | |
113 | e7534f91 | Adam Menz | @Override
|
114 | e7534f91 | Adam Menz | protected void onStart(){ |
115 | e7534f91 | Adam Menz | super.onStart();
|
116 | e7534f91 | Adam Menz | if(authenticating){
|
117 | e7534f91 | Adam Menz | showDialog(); |
118 | e7534f91 | Adam Menz | } |
119 | e7534f91 | Adam Menz | } |
120 | 0edf6b39 | Adam Menz | |
121 | e7534f91 | Adam Menz | @Override
|
122 | e7534f91 | Adam Menz | protected void onStop(){ |
123 | e7534f91 | Adam Menz | super.onStop();
|
124 | e7534f91 | Adam Menz | if(authenticating){
|
125 | 3e180b04 | Adam Menz | Log.d("info", "captin onstop called"); |
126 | e7534f91 | Adam Menz | hideDialog(); |
127 | e7534f91 | Adam Menz | authenticating = true;
|
128 | e7534f91 | Adam Menz | } |
129 | e7534f91 | Adam Menz | } |
130 | 0edf6b39 | Adam Menz | |
131 | f00e3176 | Adam Menz | |
132 | 0ae79b26 | Adam Menz | /*
|
133 | 0ae79b26 | Adam Menz | * if the application is password protected,
|
134 | 0ae79b26 | Adam Menz | * the user must provide the password before
|
135 | 0ae79b26 | Adam Menz | * gaining access
|
136 | 0ae79b26 | Adam Menz | */
|
137 | 0ae79b26 | Adam Menz | private void verifyPassword(){ |
138 | 0ae79b26 | Adam Menz | PasswordManager pwManager = new PasswordManager(getSharedPreferences(
|
139 | 0ae79b26 | Adam Menz | Preferences.SHARED_PREFERENCES_NAME, MODE_PRIVATE));
|
140 | 006434d8 | Adam Menz | if(pwManager.hasPassword() && !loggedIn){
|
141 | 0ae79b26 | Adam Menz | createCustomDialog(PASSWORD_PROMPT); |
142 | 0ae79b26 | Adam Menz | } |
143 | 0ae79b26 | Adam Menz | } |
144 | 0edf6b39 | Adam Menz | |
145 | 0ae79b26 | Adam Menz | private boolean rightPassword(String password){ |
146 | 0ae79b26 | Adam Menz | PasswordManager pwManager = new PasswordManager(getSharedPreferences(
|
147 | 0ae79b26 | Adam Menz | Preferences.SHARED_PREFERENCES_NAME, MODE_PRIVATE));
|
148 | 0ae79b26 | Adam Menz | return pwManager.verifyEnteredPassword(password);
|
149 | 0ae79b26 | Adam Menz | } |
150 | 0edf6b39 | Adam Menz | |
151 | 0edf6b39 | Adam Menz | |
152 | 0ae79b26 | Adam Menz | /*
|
153 | 0ae79b26 | Adam Menz | * forces the user to enter a correct password
|
154 | 0ae79b26 | Adam Menz | * before they gain access to application data
|
155 | 0ae79b26 | Adam Menz | */
|
156 | 0ae79b26 | Adam Menz | private void createCustomDialog(int id) { |
157 | 0ae79b26 | Adam Menz | final Dialog dialog = new Dialog(ListAccountsActivity.this); |
158 | 0ae79b26 | Adam Menz | switch (id) {
|
159 | 0ae79b26 | Adam Menz | case PASSWORD_PROMPT:
|
160 | 0ae79b26 | Adam Menz | dialog.setContentView(R.layout.passworddialog); |
161 | 0ae79b26 | Adam Menz | dialog.setTitle("Enter your password:");
|
162 | 0ae79b26 | Adam Menz | dialog.setCancelable(false);
|
163 | 0ae79b26 | Adam Menz | Button button = (Button) dialog.findViewById(R.id.submit_password); |
164 | 0ae79b26 | Adam Menz | button.setOnClickListener(new OnClickListener() {
|
165 | 0ae79b26 | Adam Menz | public void onClick(View v){ |
166 | 0ae79b26 | Adam Menz | EditText passwordText = ((EditText)dialog.findViewById(R.id.submit_password_text)); |
167 | 0ae79b26 | Adam Menz | if(!rightPassword(passwordText.getText().toString())){
|
168 | 0ae79b26 | Adam Menz | passwordText.setText("");
|
169 | 0ae79b26 | Adam Menz | showToast("Password was incorrect.");
|
170 | 006434d8 | Adam Menz | loggedIn = false;
|
171 | 0ae79b26 | Adam Menz | } |
172 | 0ae79b26 | Adam Menz | else{
|
173 | 0ae79b26 | Adam Menz | dialog.dismiss(); |
174 | 006434d8 | Adam Menz | loggedIn = true;
|
175 | 0ae79b26 | Adam Menz | } |
176 | 0ae79b26 | Adam Menz | } |
177 | 0edf6b39 | Adam Menz | |
178 | 0ae79b26 | Adam Menz | }); |
179 | 0ae79b26 | Adam Menz | dialog.show(); |
180 | 0ae79b26 | Adam Menz | } |
181 | 0ae79b26 | Adam Menz | } |
182 | 0edf6b39 | Adam Menz | |
183 | 441d5327 | Adam Menz | private void loadAccounts() { |
184 | fea03400 | Adam Menz | //check and see if there are any in memory
|
185 | 441d5327 | Adam Menz | if(accounts == null){ |
186 | 441d5327 | Adam Menz | accounts = readAccounts(); |
187 | 441d5327 | Adam Menz | } |
188 | 441d5327 | Adam Menz | //if nothing was written before accounts will still be null
|
189 | 441d5327 | Adam Menz | if(accounts == null){ |
190 | 441d5327 | Adam Menz | accounts = new ArrayList<Account>(); |
191 | 441d5327 | Adam Menz | } |
192 | fea03400 | Adam Menz | |
193 | 441d5327 | Adam Menz | setAccountList(); |
194 | 441d5327 | Adam Menz | } |
195 | 441d5327 | Adam Menz | |
196 | 441d5327 | Adam Menz | private void setAccountList() { |
197 | 0edf6b39 | Adam Menz | |
198 | 441d5327 | Adam Menz | if (accounts.size() == 0) { |
199 | 441d5327 | Adam Menz | displayNoAccountsCell(); |
200 | 441d5327 | Adam Menz | } else {
|
201 | 441d5327 | Adam Menz | getListView().setDividerHeight(1); // restore divider lines |
202 | 441d5327 | Adam Menz | this.setListAdapter(new AccountAdapter()); |
203 | 441d5327 | Adam Menz | } |
204 | 441d5327 | Adam Menz | } |
205 | 441d5327 | Adam Menz | |
206 | 441d5327 | Adam Menz | private void writeAccounts(){ |
207 | 441d5327 | Adam Menz | FileOutputStream fos;
|
208 | 730daee8 | Adam Menz | ObjectOutputStream out = null; |
209 | 441d5327 | Adam Menz | try{
|
210 | 441d5327 | Adam Menz | fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
|
211 | 441d5327 | Adam Menz | out = new ObjectOutputStream(fos); |
212 | 441d5327 | Adam Menz | out.writeObject(accounts); |
213 | 441d5327 | Adam Menz | out.flush(); |
214 | 441d5327 | Adam Menz | out.close(); |
215 | 441d5327 | Adam Menz | } catch (FileNotFoundException e) { |
216 | d88d3ae1 | Adam Menz | showAlert("Error", "Could not save accounts."); |
217 | 441d5327 | Adam Menz | e.printStackTrace(); |
218 | 441d5327 | Adam Menz | } catch (IOException e) { |
219 | d88d3ae1 | Adam Menz | showAlert("Error", "Could not save accounts."); |
220 | 441d5327 | Adam Menz | e.printStackTrace(); |
221 | 441d5327 | Adam Menz | } |
222 | 441d5327 | Adam Menz | } |
223 | 441d5327 | Adam Menz | |
224 | 441d5327 | Adam Menz | private ArrayList<Account> readAccounts(){ |
225 | 441d5327 | Adam Menz | FileInputStream fis;
|
226 | 441d5327 | Adam Menz | ObjectInputStream in;
|
227 | 441d5327 | Adam Menz | try {
|
228 | 441d5327 | Adam Menz | fis = openFileInput(FILENAME); |
229 | 441d5327 | Adam Menz | in = new ObjectInputStream(fis); |
230 | bf03b262 | Adam Menz | @SuppressWarnings("unchecked") |
231 | 441d5327 | Adam Menz | ArrayList<Account> file = (ArrayList<Account>)in.readObject(); |
232 | 441d5327 | Adam Menz | in.close(); |
233 | 441d5327 | Adam Menz | return file;
|
234 | 441d5327 | Adam Menz | } catch (FileNotFoundException e) { |
235 | d88d3ae1 | Adam Menz | //showAlert("Error", "Could not load accounts.");
|
236 | 441d5327 | Adam Menz | e.printStackTrace(); |
237 | 441d5327 | Adam Menz | return null; |
238 | 441d5327 | Adam Menz | } catch (StreamCorruptedException e) { |
239 | d88d3ae1 | Adam Menz | showAlert("Error", "Could not load accounts."); |
240 | 441d5327 | Adam Menz | e.printStackTrace(); |
241 | 441d5327 | Adam Menz | } catch (IOException e) { |
242 | d88d3ae1 | Adam Menz | showAlert("Error", "Could not load accounts."); |
243 | 441d5327 | Adam Menz | e.printStackTrace(); |
244 | 441d5327 | Adam Menz | } catch (ClassNotFoundException e) { |
245 | d88d3ae1 | Adam Menz | showAlert("Error", "Could not load accounts."); |
246 | 441d5327 | Adam Menz | e.printStackTrace(); |
247 | 441d5327 | Adam Menz | } |
248 | 441d5327 | Adam Menz | return null; |
249 | 0edf6b39 | Adam Menz | |
250 | 441d5327 | Adam Menz | } |
251 | 441d5327 | Adam Menz | |
252 | 441d5327 | Adam Menz | private void displayNoAccountsCell() { |
253 | 0edf6b39 | Adam Menz | String a[] = new String[1]; |
254 | 0edf6b39 | Adam Menz | a[0] = "No Accounts"; |
255 | 0edf6b39 | Adam Menz | setListAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.noaccountscell, R.id.no_accounts_label, a)); |
256 | 0edf6b39 | Adam Menz | getListView().setTextFilterEnabled(true);
|
257 | 0edf6b39 | Adam Menz | getListView().setDividerHeight(0); // hide the dividers so it won't look like a list row |
258 | 0edf6b39 | Adam Menz | getListView().setItemsCanFocus(false);
|
259 | 0edf6b39 | Adam Menz | } |
260 | 0edf6b39 | Adam Menz | |
261 | 441d5327 | Adam Menz | protected void onListItemClick(ListView l, View v, int position, long id) { |
262 | 730daee8 | Adam Menz | if (accounts != null && accounts.size() > 0) { |
263 | e7534f91 | Adam Menz | //setActivityIndicatorsVisibility(View.VISIBLE, v);
|
264 | 730daee8 | Adam Menz | Account.setAccount(accounts.get(position)); |
265 | 730daee8 | Adam Menz | login(); |
266 | 730daee8 | Adam Menz | } |
267 | 0edf6b39 | Adam Menz | } |
268 | 0edf6b39 | Adam Menz | |
269 | 441d5327 | Adam Menz | public void login() { |
270 | 0edf6b39 | Adam Menz | //showActivityIndicators();
|
271 | 0edf6b39 | Adam Menz | //setLoginPreferences();
|
272 | 0edf6b39 | Adam Menz | new AuthenticateTask().execute((Void[]) null); |
273 | 0edf6b39 | Adam Menz | } |
274 | 0edf6b39 | Adam Menz | |
275 | fea03400 | Adam Menz | //setup menu for when menu button is pressed
|
276 | 441d5327 | Adam Menz | public boolean onCreateOptionsMenu(Menu menu) { |
277 | 441d5327 | Adam Menz | super.onCreateOptionsMenu(menu);
|
278 | 441d5327 | Adam Menz | MenuInflater inflater = getMenuInflater(); |
279 | 441d5327 | Adam Menz | inflater.inflate(R.menu.accounts_list_menu, menu); |
280 | 441d5327 | Adam Menz | return true; |
281 | 441d5327 | Adam Menz | } |
282 | 0edf6b39 | Adam Menz | |
283 | 0edf6b39 | Adam Menz | @Override
|
284 | 0edf6b39 | Adam Menz | //in options menu, when add account is selected go to add account activity
|
285 | 0edf6b39 | Adam Menz | public boolean onOptionsItemSelected(MenuItem item) { |
286 | 0edf6b39 | Adam Menz | switch (item.getItemId()) {
|
287 | 0edf6b39 | Adam Menz | case R.id.add_account:
|
288 | 0edf6b39 | Adam Menz | startActivityForResult(new Intent(this, AddAccountActivity.class), 78); // arbitrary number; never used again |
289 | 0edf6b39 | Adam Menz | return true; |
290 | 0edf6b39 | Adam Menz | |
291 | 0edf6b39 | Adam Menz | case R.id.contact_rackspace:
|
292 | 0edf6b39 | Adam Menz | startActivity(new Intent(this, ContactActivity.class)); |
293 | 0edf6b39 | Adam Menz | return true; |
294 | 0edf6b39 | Adam Menz | |
295 | 0edf6b39 | Adam Menz | case R.id.add_password:
|
296 | 0edf6b39 | Adam Menz | startActivity(new Intent(this, CreatePasswordActivity.class)); |
297 | 0edf6b39 | Adam Menz | return true; |
298 | 0edf6b39 | Adam Menz | } |
299 | 0edf6b39 | Adam Menz | return false; |
300 | 0edf6b39 | Adam Menz | } |
301 | 0edf6b39 | Adam Menz | |
302 | 0edf6b39 | Adam Menz | //the context menu for a long press on an account
|
303 | fea03400 | Adam Menz | public void onCreateContextMenu(ContextMenu menu, View v, |
304 | fea03400 | Adam Menz | ContextMenuInfo menuInfo) { |
305 | fea03400 | Adam Menz | super.onCreateContextMenu(menu, v, menuInfo);
|
306 | fea03400 | Adam Menz | MenuInflater inflater = getMenuInflater(); |
307 | fea03400 | Adam Menz | inflater.inflate(R.menu.account_context_menu, menu); |
308 | fea03400 | Adam Menz | } |
309 | fea03400 | Adam Menz | |
310 | fea03400 | Adam Menz | //removes the selected account from account list if remove is clicked
|
311 | fea03400 | Adam Menz | public boolean onContextItemSelected(MenuItem item) { |
312 | fea03400 | Adam Menz | AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); |
313 | fea03400 | Adam Menz | accounts.remove(info.position); |
314 | fea03400 | Adam Menz | writeAccounts(); |
315 | fea03400 | Adam Menz | loadAccounts(); |
316 | fea03400 | Adam Menz | return true; |
317 | fea03400 | Adam Menz | } |
318 | fea03400 | Adam Menz | |
319 | 441d5327 | Adam Menz | class AccountAdapter extends ArrayAdapter<Account> { |
320 | 441d5327 | Adam Menz | |
321 | 441d5327 | Adam Menz | AccountAdapter() { |
322 | 441d5327 | Adam Menz | super(ListAccountsActivity.this, R.layout.listaccountcell, accounts);
|
323 | 441d5327 | Adam Menz | } |
324 | 0edf6b39 | Adam Menz | |
325 | 441d5327 | Adam Menz | public View getView(int position, View convertView, ViewGroup parent) { |
326 | 0edf6b39 | Adam Menz | |
327 | 441d5327 | Adam Menz | LayoutInflater inflater = getLayoutInflater(); |
328 | 441d5327 | Adam Menz | View row = inflater.inflate(R.layout.listaccountcell, parent, false); |
329 | 441d5327 | Adam Menz | |
330 | 441d5327 | Adam Menz | TextView label = (TextView) row.findViewById(R.id.label); |
331 | 441d5327 | Adam Menz | label.setText(accounts.get(position).getUsername()); |
332 | 0edf6b39 | Adam Menz | |
333 | 441d5327 | Adam Menz | TextView sublabel = (TextView) row.findViewById(R.id.sublabel); |
334 | 441d5327 | Adam Menz | sublabel.setText(getAccountServer(accounts.get(position))); |
335 | 0edf6b39 | Adam Menz | |
336 | 441d5327 | Adam Menz | ImageView icon = (ImageView) row.findViewById(R.id.account_type_icon); |
337 | d88d3ae1 | Adam Menz | icon.setImageResource(setAccountIcon(accounts.get(position))); |
338 | 0edf6b39 | Adam Menz | |
339 | 441d5327 | Adam Menz | return row;
|
340 | 441d5327 | Adam Menz | } |
341 | 441d5327 | Adam Menz | } |
342 | 0edf6b39 | Adam Menz | |
343 | 441d5327 | Adam Menz | public String getAccountServer(Account account){ |
344 | 441d5327 | Adam Menz | String authServer = account.getAuthServer();
|
345 | d88d3ae1 | Adam Menz | String result;
|
346 | d88d3ae1 | Adam Menz | if(authServer.equals(Preferences.COUNTRY_UK_AUTH_SERVER)){ |
347 | d88d3ae1 | Adam Menz | result = "Rackspace Cloud (UK)";
|
348 | d88d3ae1 | Adam Menz | } |
349 | d88d3ae1 | Adam Menz | else if(authServer.equals(Preferences.COUNTRY_US_AUTH_SERVER)){ |
350 | d88d3ae1 | Adam Menz | result = "Rackspace Cloud (US)";
|
351 | 441d5327 | Adam Menz | } |
352 | 441d5327 | Adam Menz | else{
|
353 | d88d3ae1 | Adam Menz | result = "Custom";
|
354 | d88d3ae1 | Adam Menz | //setCustomIcon();
|
355 | 441d5327 | Adam Menz | } |
356 | 441d5327 | Adam Menz | return result;
|
357 | 441d5327 | Adam Menz | } |
358 | 0edf6b39 | Adam Menz | |
359 | d88d3ae1 | Adam Menz | //display rackspace logo for cloud accounts and openstack logo for others
|
360 | d88d3ae1 | Adam Menz | private int setAccountIcon(Account account){ |
361 | d88d3ae1 | Adam Menz | if(account.getAuthServer().equals(Preferences.COUNTRY_UK_AUTH_SERVER) |
362 | d88d3ae1 | Adam Menz | || account.getAuthServer().equals(Preferences.COUNTRY_US_AUTH_SERVER)){
|
363 | d88d3ae1 | Adam Menz | return R.drawable.rackspacecloud_icon;
|
364 | d88d3ae1 | Adam Menz | } |
365 | d88d3ae1 | Adam Menz | else{
|
366 | d88d3ae1 | Adam Menz | return R.drawable.openstack_icon;
|
367 | d88d3ae1 | Adam Menz | } |
368 | d88d3ae1 | Adam Menz | } |
369 | 441d5327 | Adam Menz | |
370 | 441d5327 | Adam Menz | public void onActivityResult(int requestCode, int resultCode, Intent data) { |
371 | 730daee8 | Adam Menz | super.onActivityResult(requestCode, resultCode, data);
|
372 | 0edf6b39 | Adam Menz | |
373 | 3e180b04 | Adam Menz | if(requestCode == 187){ |
374 | 3e180b04 | Adam Menz | hideDialog(); |
375 | 3e180b04 | Adam Menz | } |
376 | 0edf6b39 | Adam Menz | |
377 | 730daee8 | Adam Menz | if (resultCode == RESULT_OK && requestCode == 78) { |
378 | 730daee8 | Adam Menz | Account acc = new Account();
|
379 | 730daee8 | Adam Menz | Bundle b = data.getBundleExtra("accountInfo");
|
380 | 730daee8 | Adam Menz | acc.setApiKey(b.getString("apiKey"));
|
381 | 730daee8 | Adam Menz | acc.setUsername(b.getString("username"));
|
382 | 730daee8 | Adam Menz | acc.setAuthServer(b.getString("server"));
|
383 | 730daee8 | Adam Menz | accounts.add(acc); |
384 | 730daee8 | Adam Menz | writeAccounts(); |
385 | 730daee8 | Adam Menz | loadAccounts(); |
386 | 730daee8 | Adam Menz | } |
387 | 441d5327 | Adam Menz | } |
388 | 0edf6b39 | Adam Menz | /*
|
389 | 441d5327 | Adam Menz | private void setActivityIndicatorsVisibility(int visibility) {
|
390 | 441d5327 | Adam Menz | //FINISH THIS TO LET USER KNOW PROGRAM IS STILL WORKING
|
391 | 0edf6b39 | Adam Menz | |
392 | 7b55f1ec | Adam Menz | //ProgressBar pb = new ProgressBar();
|
393 | 7b55f1ec | Adam Menz | //TextView tv = (TextView) findViewById(R.id.login_authenticating_label);
|
394 | 7b55f1ec | Adam Menz | //pb.setVisibility(visibility);
|
395 | 7b55f1ec | Adam Menz | //tv.setVisibility(visibility);
|
396 | 7b55f1ec | Adam Menz | }
|
397 | 0edf6b39 | Adam Menz | |
398 | 7b55f1ec | Adam Menz | private void setActivityIndicatorsVisibility(int visibility, View v) {
|
399 | 7b55f1ec | Adam Menz | //FINISH THIS TO LET USER KNOW PROGRAM IS STILL WORKING
|
400 | 0edf6b39 | Adam Menz | |
401 | 441d5327 | Adam Menz | //ProgressBar pb = new ProgressBar();
|
402 | 441d5327 | Adam Menz | //TextView tv = (TextView) findViewById(R.id.login_authenticating_label);
|
403 | 441d5327 | Adam Menz | //pb.setVisibility(visibility);
|
404 | 441d5327 | Adam Menz | //tv.setVisibility(visibility);
|
405 | 441d5327 | Adam Menz | }
|
406 | 0edf6b39 | Adam Menz | */
|
407 | 0edf6b39 | Adam Menz | |
408 | e7534f91 | Adam Menz | private void showDialog() { |
409 | e7534f91 | Adam Menz | authenticating = true;
|
410 | 3e180b04 | Adam Menz | if(dialog == null || !dialog.isShowing()){ |
411 | 3e180b04 | Adam Menz | dialog = ProgressDialog.show(ListAccountsActivity.this, "", "Authenticating...", true); |
412 | 3e180b04 | Adam Menz | } |
413 | 441d5327 | Adam Menz | } |
414 | 441d5327 | Adam Menz | |
415 | e7534f91 | Adam Menz | private void hideDialog() { |
416 | e7534f91 | Adam Menz | if(dialog != null){ |
417 | e7534f91 | Adam Menz | dialog.dismiss(); |
418 | e7534f91 | Adam Menz | } |
419 | e7534f91 | Adam Menz | authenticating = false;
|
420 | 441d5327 | Adam Menz | } |
421 | e7534f91 | Adam Menz | |
422 | 441d5327 | Adam Menz | private class AuthenticateTask extends AsyncTask<Void, Void, Boolean> { |
423 | 0edf6b39 | Adam Menz | |
424 | 441d5327 | Adam Menz | @Override
|
425 | e7534f91 | Adam Menz | protected void onPreExecute(){ |
426 | e7534f91 | Adam Menz | showDialog(); |
427 | e7534f91 | Adam Menz | } |
428 | 0edf6b39 | Adam Menz | |
429 | e7534f91 | Adam Menz | @Override
|
430 | 441d5327 | Adam Menz | protected Boolean doInBackground(Void... arg0) { |
431 | 37b4d44e | Adam Menz | return new Boolean(Authentication.authenticate(context)); |
432 | 441d5327 | Adam Menz | //return true;
|
433 | 441d5327 | Adam Menz | } |
434 | 0edf6b39 | Adam Menz | |
435 | 441d5327 | Adam Menz | @Override
|
436 | 441d5327 | Adam Menz | protected void onPostExecute(Boolean result) { |
437 | 441d5327 | Adam Menz | if (result.booleanValue()) {
|
438 | 441d5327 | Adam Menz | //startActivity(tabViewIntent);
|
439 | 0edf6b39 | Adam Menz | new LoadImagesTask().execute((Void[]) null); |
440 | 441d5327 | Adam Menz | } else {
|
441 | e7534f91 | Adam Menz | hideDialog(); |
442 | 441d5327 | Adam Menz | showAlert("Login Failure", "Authentication failed. Please check your User Name and API Key."); |
443 | 441d5327 | Adam Menz | } |
444 | 441d5327 | Adam Menz | } |
445 | 0edf6b39 | Adam Menz | } |
446 | 0edf6b39 | Adam Menz | |
447 | 0edf6b39 | Adam Menz | private class LoadFlavorsTask extends AsyncTask<Void, Void, ArrayList<Flavor>> { |
448 | 441d5327 | Adam Menz | |
449 | 441d5327 | Adam Menz | @Override
|
450 | 441d5327 | Adam Menz | protected ArrayList<Flavor> doInBackground(Void... arg0) { |
451 | 37b4d44e | Adam Menz | return (new FlavorManager()).createList(true, context); |
452 | 441d5327 | Adam Menz | } |
453 | 0edf6b39 | Adam Menz | |
454 | 441d5327 | Adam Menz | @Override
|
455 | 441d5327 | Adam Menz | protected void onPostExecute(ArrayList<Flavor> result) { |
456 | 441d5327 | Adam Menz | if (result != null && result.size() > 0) { |
457 | 441d5327 | Adam Menz | TreeMap<String, Flavor> flavorMap = new TreeMap<String, Flavor>(); |
458 | 441d5327 | Adam Menz | for (int i = 0; i < result.size(); i++) { |
459 | 441d5327 | Adam Menz | Flavor flavor = result.get(i); |
460 | 441d5327 | Adam Menz | flavorMap.put(flavor.getId(), flavor); |
461 | 441d5327 | Adam Menz | } |
462 | 441d5327 | Adam Menz | Flavor.setFlavors(flavorMap); |
463 | e7534f91 | Adam Menz | hideDialog(); |
464 | 3e180b04 | Adam Menz | startActivityForResult(tabViewIntent, 187);
|
465 | 441d5327 | Adam Menz | } else {
|
466 | e7534f91 | Adam Menz | hideDialog(); |
467 | 441d5327 | Adam Menz | showAlert("Login Failure", "There was a problem loading server flavors. Please try again."); |
468 | 441d5327 | Adam Menz | } |
469 | 441d5327 | Adam Menz | } |
470 | 0edf6b39 | Adam Menz | } |
471 | 0edf6b39 | Adam Menz | |
472 | 0edf6b39 | Adam Menz | private class LoadImagesTask extends AsyncTask<Void, Void, ArrayList<Image>> { |
473 | 441d5327 | Adam Menz | |
474 | 441d5327 | Adam Menz | @Override
|
475 | 441d5327 | Adam Menz | protected ArrayList<Image> doInBackground(Void... arg0) { |
476 | 37b4d44e | Adam Menz | return (new ImageManager()).createList(true, context); |
477 | 441d5327 | Adam Menz | } |
478 | 0edf6b39 | Adam Menz | |
479 | 441d5327 | Adam Menz | @Override
|
480 | 441d5327 | Adam Menz | protected void onPostExecute(ArrayList<Image> result) { |
481 | 441d5327 | Adam Menz | if (result != null && result.size() > 0) { |
482 | 441d5327 | Adam Menz | TreeMap<String, Image> imageMap = new TreeMap<String, Image>(); |
483 | 441d5327 | Adam Menz | for (int i = 0; i < result.size(); i++) { |
484 | 441d5327 | Adam Menz | Image image = result.get(i);
|
485 | 441d5327 | Adam Menz | imageMap.put(image.getId(), image); |
486 | 441d5327 | Adam Menz | } |
487 | 441d5327 | Adam Menz | Image.setImages(imageMap);
|
488 | 441d5327 | Adam Menz | new LoadFlavorsTask().execute((Void[]) null); |
489 | 441d5327 | Adam Menz | //startActivity(tabViewIntent);
|
490 | 441d5327 | Adam Menz | } else {
|
491 | e7534f91 | Adam Menz | hideDialog(); |
492 | 441d5327 | Adam Menz | showAlert("Login Failure", "There was a problem loading server images. Please try again."); |
493 | 441d5327 | Adam Menz | } |
494 | 441d5327 | Adam Menz | } |
495 | 0edf6b39 | Adam Menz | } |
496 | 0edf6b39 | Adam Menz | |
497 | 0edf6b39 | Adam Menz | private void showAlert(String title, String message) { |
498 | 441d5327 | Adam Menz | AlertDialog alert = new AlertDialog.Builder(this).create(); |
499 | 441d5327 | Adam Menz | alert.setTitle(title); |
500 | 441d5327 | Adam Menz | alert.setMessage(message); |
501 | 441d5327 | Adam Menz | alert.setButton("OK", new DialogInterface.OnClickListener() { |
502 | 0edf6b39 | Adam Menz | public void onClick(DialogInterface dialog, int which) { |
503 | 0edf6b39 | Adam Menz | return;
|
504 | 0edf6b39 | Adam Menz | } }); |
505 | 441d5327 | Adam Menz | alert.show(); |
506 | 0edf6b39 | Adam Menz | } |
507 | 0edf6b39 | Adam Menz | |
508 | 0edf6b39 | Adam Menz | private void showToast(String message) { |
509 | 0ae79b26 | Adam Menz | Context context = getApplicationContext();
|
510 | 0ae79b26 | Adam Menz | int duration = Toast.LENGTH_SHORT;
|
511 | 0ae79b26 | Adam Menz | Toast toast = Toast.makeText(context, message, duration); |
512 | 0ae79b26 | Adam Menz | toast.show(); |
513 | 0edf6b39 | Adam Menz | } |
514 | 0edf6b39 | Adam Menz | |
515 | 0edf6b39 | Adam Menz | |
516 | 0edf6b39 | Adam Menz | |
517 | 0edf6b39 | Adam Menz | |
518 | 441d5327 | Adam Menz | } |