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