Statistics
| Branch: | Revision:

root / src / com / rackspacecloud / android / AddAccountActivity.java @ ffd154e6

History | View | Annotate | Download (5.1 kB)

1 441d5327 Adam Menz
package com.rackspacecloud.android;
2 441d5327 Adam Menz
3 441d5327 Adam Menz
import android.app.Activity;
4 441d5327 Adam Menz
import android.app.AlertDialog;
5 441d5327 Adam Menz
import android.content.DialogInterface;
6 441d5327 Adam Menz
import android.content.Intent;
7 441d5327 Adam Menz
import android.os.Bundle;
8 441d5327 Adam Menz
import android.text.method.PasswordTransformationMethod;
9 441d5327 Adam Menz
import android.text.method.SingleLineTransformationMethod;
10 441d5327 Adam Menz
import android.view.View;
11 441d5327 Adam Menz
import android.view.View.OnClickListener;
12 441d5327 Adam Menz
import android.widget.AdapterView;
13 441d5327 Adam Menz
import android.widget.ArrayAdapter;
14 441d5327 Adam Menz
import android.widget.Button;
15 441d5327 Adam Menz
import android.widget.CheckBox;
16 441d5327 Adam Menz
import android.widget.EditText;
17 441d5327 Adam Menz
import android.widget.Spinner;
18 441d5327 Adam Menz
19 730daee8 Adam Menz
public class AddAccountActivity extends Activity implements OnClickListener{
20 441d5327 Adam Menz
        
21 1b82ddb3 Adam Menz
        private final String[] PROVIDERS = {"Rackspace Cloud (US)", "Rackspace Cloud (UK)", "Custom"};
22 1b82ddb3 Adam Menz
        private EditText usernameText;
23 1b82ddb3 Adam Menz
        private EditText apiKeyText;
24 1b82ddb3 Adam Menz
        private EditText customServer;
25 1b82ddb3 Adam Menz
        private Spinner providerSpinner;
26 1b82ddb3 Adam Menz
        private String authServer;
27 fea03400 Adam Menz
        boolean isHidden;
28 441d5327 Adam Menz
        
29 441d5327 Adam Menz
        public void onCreate(Bundle savedInstanceState) {
30 441d5327 Adam Menz
        super.onCreate(savedInstanceState);
31 441d5327 Adam Menz
        setContentView(R.layout.createaccount);
32 441d5327 Adam Menz
        usernameText = (EditText) findViewById(R.id.username);
33 fea03400 Adam Menz
        apiKeyText = (EditText) findViewById(R.id.addaccount_apikey);
34 d88d3ae1 Adam Menz
        customServer = (EditText) findViewById(R.id.custom_auth_server_edit);
35 441d5327 Adam Menz
        ((Button) findViewById(R.id.submit_new_account)).setOnClickListener(this);
36 fea03400 Adam Menz
        isHidden = true;
37 d88d3ae1 Adam Menz
        customServer.setEnabled(false);
38 fea03400 Adam Menz
        if(savedInstanceState != null)
39 fea03400 Adam Menz
                isHidden = savedInstanceState.containsKey("isHidden") && savedInstanceState.getBoolean("isHidden");
40 fea03400 Adam Menz
        setUpApiText(savedInstanceState);
41 fea03400 Adam Menz
        setUpCheckBox();
42 fea03400 Adam Menz
        loadProviderSpinner();
43 fea03400 Adam Menz
    } 
44 fea03400 Adam Menz
        
45 fea03400 Adam Menz
        protected void onSaveInstanceState(Bundle outState) {
46 fea03400 Adam Menz
                super.onSaveInstanceState(outState);
47 fea03400 Adam Menz
                outState.putBoolean("isHidden", isHidden);
48 fea03400 Adam Menz
        }
49 fea03400 Adam Menz
        
50 fea03400 Adam Menz
        //setup the API textedit to be password dots or regular text
51 fea03400 Adam Menz
        private void setUpApiText(Bundle state){
52 fea03400 Adam Menz
        isHidden = true;
53 fea03400 Adam Menz
        if(state != null)
54 fea03400 Adam Menz
                isHidden = state.containsKey("isHidden") && state.getBoolean("isHidden");
55 fea03400 Adam Menz
                if(isHidden){
56 fea03400 Adam Menz
                apiKeyText.setTransformationMethod(new PasswordTransformationMethod());
57 fea03400 Adam Menz
                }
58 fea03400 Adam Menz
                else{
59 fea03400 Adam Menz
                apiKeyText.setTransformationMethod(new SingleLineTransformationMethod());
60 fea03400 Adam Menz
                }
61 fea03400 Adam Menz
        }
62 fea03400 Adam Menz
        
63 fea03400 Adam Menz
        private void setUpCheckBox(){
64 fea03400 Adam Menz
                final CheckBox show_clear = (CheckBox) findViewById(R.id.show_clear);
65 fea03400 Adam Menz
                show_clear.setChecked(!isHidden);
66 441d5327 Adam Menz
        show_clear.setOnClickListener(new OnClickListener() {
67 441d5327 Adam Menz
                @Override 
68 441d5327 Adam Menz
                        public void onClick(View v) {
69 441d5327 Adam Menz
                        if (((CheckBox) v).isChecked()) {
70 441d5327 Adam Menz
                                apiKeyText.setTransformationMethod(new SingleLineTransformationMethod());
71 fea03400 Adam Menz
                                isHidden = false;
72 441d5327 Adam Menz
                        } else {
73 fea03400 Adam Menz
                                apiKeyText.setTransformationMethod(new PasswordTransformationMethod());
74 fea03400 Adam Menz
                                isHidden = true;
75 441d5327 Adam Menz
                        }
76 441d5327 Adam Menz
                        apiKeyText.requestFocus();
77 441d5327 Adam Menz
                    }        
78 441d5327 Adam Menz
                });
79 fea03400 Adam Menz
        }
80 441d5327 Adam Menz
        
81 441d5327 Adam Menz
        private void loadProviderSpinner(){
82 441d5327 Adam Menz
                //set the auth server default to us
83 441d5327 Adam Menz
                authServer = "https://auth.api.rackspacecloud.com/v1.0";
84 441d5327 Adam Menz
                providerSpinner = (Spinner) findViewById(R.id.provider_spinner);
85 1b82ddb3 Adam Menz
                ArrayAdapter<String> imageAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, PROVIDERS);
86 441d5327 Adam Menz
                imageAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
87 441d5327 Adam Menz
                providerSpinner.setAdapter(imageAdapter);
88 730daee8 Adam Menz
                providerSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
89 730daee8 Adam Menz
                    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
90 730daee8 Adam Menz
                            if(pos == 0){
91 d88d3ae1 Adam Menz
                                        authServer = Preferences.COUNTRY_US_AUTH_SERVER;
92 d88d3ae1 Adam Menz
                                customServer.setEnabled(false);
93 730daee8 Adam Menz
                                }
94 730daee8 Adam Menz
                                else if(pos == 1){
95 d88d3ae1 Adam Menz
                                        authServer = Preferences.COUNTRY_UK_AUTH_SERVER;
96 d88d3ae1 Adam Menz
                                customServer.setEnabled(false);
97 d88d3ae1 Adam Menz
                                }
98 d88d3ae1 Adam Menz
                                else{
99 d88d3ae1 Adam Menz
                                customServer.setEnabled(true);
100 730daee8 Adam Menz
                                }
101 730daee8 Adam Menz
                    }
102 730daee8 Adam Menz
                    public void onNothingSelected(AdapterView<?> parent) {
103 730daee8 Adam Menz
                    }
104 730daee8 Adam Menz
                });
105 441d5327 Adam Menz
        }
106 441d5327 Adam Menz
        
107 441d5327 Adam Menz
        public void onClick(View arg0) {
108 d88d3ae1 Adam Menz
109 441d5327 Adam Menz
                if (hasValidInput()) {
110 441d5327 Adam Menz
                        //showActivityIndicators();
111 441d5327 Adam Menz
                        Intent result = new Intent();
112 441d5327 Adam Menz
                        Bundle b = new Bundle();
113 441d5327 Adam Menz
                        b.putString("username", usernameText.getText().toString());
114 441d5327 Adam Menz
                        b.putString("apiKey", apiKeyText.getText().toString());
115 d88d3ae1 Adam Menz
                        b.putString("server", getAuthServer());
116 441d5327 Adam Menz
                        result.putExtra("accountInfo", b);
117 441d5327 Adam Menz
                        setResult(RESULT_OK, result);
118 441d5327 Adam Menz
                        finish();
119 441d5327 Adam Menz
                } else {
120 441d5327 Adam Menz
                        showAlert("Required Fields Missing", "Username and API Key are required.");
121 441d5327 Adam Menz
                }
122 441d5327 Adam Menz
                
123 441d5327 Adam Menz
        }
124 441d5327 Adam Menz
        
125 d88d3ae1 Adam Menz
        private String getAuthServer(){
126 d88d3ae1 Adam Menz
                if(customServer.isEnabled()){
127 d88d3ae1 Adam Menz
                        authServer = customServer.getText().toString();
128 d88d3ae1 Adam Menz
                }
129 d88d3ae1 Adam Menz
                return authServer;
130 d88d3ae1 Adam Menz
        }
131 d88d3ae1 Adam Menz
        
132 441d5327 Adam Menz
        private void showAlert(String title, String message) {
133 441d5327 Adam Menz
            try {
134 441d5327 Adam Menz
                AlertDialog alert = new AlertDialog.Builder(this).create();
135 441d5327 Adam Menz
                alert.setTitle(title);
136 441d5327 Adam Menz
                alert.setMessage(message);
137 441d5327 Adam Menz
                alert.setButton("OK", new DialogInterface.OnClickListener() {
138 441d5327 Adam Menz
              public void onClick(DialogInterface dialog, int which) {
139 441d5327 Adam Menz
                return;
140 441d5327 Adam Menz
            } }); 
141 441d5327 Adam Menz
                alert.show();
142 441d5327 Adam Menz
            } catch (Exception e) {
143 441d5327 Adam Menz
                    e.printStackTrace();
144 441d5327 Adam Menz
            }
145 441d5327 Adam Menz
    }
146 441d5327 Adam Menz
        
147 441d5327 Adam Menz
        private boolean hasValidInput() {
148 441d5327 Adam Menz
            String username = usernameText.getText().toString();
149 441d5327 Adam Menz
            String apiKey = apiKeyText.getText().toString();
150 441d5327 Adam Menz
            return !"".equals(username) && !"".equals(apiKey);
151 441d5327 Adam Menz
    }
152 441d5327 Adam Menz
153 441d5327 Adam Menz
}