package com.rackspacecloud.android; import android.content.Intent; import android.os.Bundle; import android.text.method.PasswordTransformationMethod; import android.text.method.SingleLineTransformationMethod; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Spinner; import com.rackspace.cloud.android.R; public class AddAccountActivity extends CloudActivity implements OnClickListener{ private final String[] PROVIDERS = {"Rackspace Cloud (US)", "Rackspace Cloud (UK)", "Custom"}; private EditText usernameText; private EditText passwordText; private EditText customServer; private Spinner providerSpinner; private String authServer; boolean isHidden; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); trackPageView(GoogleAnalytics.PAGE_PROVIDERS); setContentView(R.layout.createaccount); usernameText = (EditText) findViewById(R.id.username); passwordText = (EditText) findViewById(R.id.addaccount_apikey); customServer = (EditText) findViewById(R.id.custom_auth_server_edit); ((Button) findViewById(R.id.submit_new_account)).setOnClickListener(this); isHidden = true; customServer.setEnabled(false); if(savedInstanceState != null) isHidden = savedInstanceState.containsKey("isHidden") && savedInstanceState.getBoolean("isHidden"); setUpApiText(savedInstanceState); setUpCheckBox(); loadProviderSpinner(); } protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putBoolean("isHidden", isHidden); } //setup the API textedit to be password dots or regular text private void setUpApiText(Bundle state){ isHidden = true; if(state != null) isHidden = state.containsKey("isHidden") && state.getBoolean("isHidden"); if(isHidden){ passwordText.setTransformationMethod(new PasswordTransformationMethod()); } else{ passwordText.setTransformationMethod(new SingleLineTransformationMethod()); } } private void setUpCheckBox(){ final CheckBox show_clear = (CheckBox) findViewById(R.id.show_clear); show_clear.setChecked(!isHidden); show_clear.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { passwordText.setTransformationMethod(new SingleLineTransformationMethod()); isHidden = false; } else { passwordText.setTransformationMethod(new PasswordTransformationMethod()); isHidden = true; } passwordText.requestFocus(); } }); } private void loadProviderSpinner(){ //set the auth server default to us authServer = "https://auth.api.rackspacecloud.com/v2.0"; providerSpinner = (Spinner) findViewById(R.id.provider_spinner); ArrayAdapter<String> imageAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, PROVIDERS); imageAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); providerSpinner.setAdapter(imageAdapter); providerSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { if(pos == 0){ authServer = Preferences.COUNTRY_US_AUTH_SERVER_V2; customServer.setEnabled(false); } else if(pos == 1){ authServer = Preferences.COUNTRY_UK_AUTH_SERVER_V2; customServer.setEnabled(false); } else{ customServer.setEnabled(true); } } public void onNothingSelected(AdapterView<?> parent) { } }); } public void onClick(View arg0) { if (hasValidInput()) { //showActivityIndicators(); Intent result = new Intent(); Bundle b = new Bundle(); b.putString("username", usernameText.getText().toString()); b.putString("apiKey", passwordText.getText().toString()); b.putString("server", getAuthServer()); result.putExtra("accountInfo", b); setResult(RESULT_OK, result); finish(); } else { showAlert("Required Fields Missing", "Username and API Key are required."); } } private String getAuthServer(){ if(customServer.isEnabled()){ authServer = customServer.getText().toString(); } return authServer; } private boolean hasValidInput() { String username = usernameText.getText().toString(); String apiKey = passwordText.getText().toString(); return !"".equals(username) && !"".equals(apiKey); } }