X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/dc8c32fb3f7033d6fdfa7e1b64eaa77884da678a..6e43d84b17a15b934989d0b71c1ac795186f26b4:/src/eu/alefzero/owncloud/ui/activity/AuthenticatorActivity.java diff --git a/src/eu/alefzero/owncloud/ui/activity/AuthenticatorActivity.java b/src/eu/alefzero/owncloud/ui/activity/AuthenticatorActivity.java index 79781f3e..b6c9ddab 100644 --- a/src/eu/alefzero/owncloud/ui/activity/AuthenticatorActivity.java +++ b/src/eu/alefzero/owncloud/ui/activity/AuthenticatorActivity.java @@ -29,12 +29,16 @@ import android.app.ProgressDialog; import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; +import android.preference.PreferenceManager; +import android.text.InputType; import android.util.Log; import android.view.View; import android.view.Window; +import android.widget.CheckBox; import android.widget.TextView; import android.widget.Toast; import eu.alefzero.owncloud.R; @@ -50,10 +54,15 @@ import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta; public class AuthenticatorActivity extends AccountAuthenticatorActivity { private Thread mAuthThread; private final Handler mHandler = new Handler(); + private boolean mUseSSLConnection; public static final String PARAM_USERNAME = "param_Username"; public static final String PARAM_HOSTNAME = "param_Hostname"; + public AuthenticatorActivity() { + mUseSSLConnection = false; + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -96,15 +105,24 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity { try { url = new URL(message); } catch (MalformedURLException e) { - // should never happend + // should never happen Log.e(getClass().getName(), "Malformed URL: " + message); return; } String username = username_text.getText().toString().trim(); - Account account = new Account(username + "@" + url.getHost(), AccountAuthenticator.ACCOUNT_TYPE); + String accountName = username + "@" + url.getHost(); + Account account = new Account(accountName, AccountAuthenticator.ACCOUNT_TYPE); AccountManager accManager = AccountManager.get(this); accManager.addAccountExplicitly(account, password_text.getText().toString(), null); + + // Add this account as default in the preferences, if there is none already + Account defaultAccount = AuthUtils.getCurrentOwnCloudAccount(this); + if(defaultAccount == null){ + SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit(); + editor.putString("select_oc_account", accountName); + editor.commit(); + } final Intent intent = new Intent(); intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, AccountAuthenticator.ACCOUNT_TYPE); @@ -112,7 +130,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity { intent.putExtra(AccountManager.KEY_AUTHTOKEN, AccountAuthenticator.ACCOUNT_TYPE); accManager.setUserData(account, AccountAuthenticator.KEY_OC_URL, url.toString()); - // TODO prepare this URL during a central service + // TODO prepare this URL using a central service intent.putExtra(AccountManager.KEY_USERDATA, username); accManager.setUserData(account, AccountAuthenticator.KEY_CONTACT_URL, url.toString().replace(AuthUtils.WEBDAV_PATH_2_0, AuthUtils.CARDDAV_PATH_2_0) @@ -149,12 +167,15 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity { url_text.setTextColor(Color.RED); hasErrors = true; } else { - url_text.setTextColor(Color.BLACK); + url_text.setTextColor(android.R.color.primary_text_light); } try { String url_str = url_text.getText().toString(); if (!url_str.startsWith("http://") && !url_str.startsWith("https://")) { + if (mUseSSLConnection) + url_str = "https://" + url_str; + else url_str = "http://" + url_str; } uri = new URL(url_str); @@ -169,18 +190,33 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity { username_text.setTextColor(Color.RED); hasErrors = true; } else { - username_text.setTextColor(Color.BLACK); + username_text.setTextColor(android.R.color.primary_text_light); } if (password_text.getText().toString().trim().length() == 0) { password_text.setTextColor(Color.RED); hasErrors = true; } else { - password_text.setTextColor(Color.BLACK); + password_text.setTextColor(android.R.color.primary_text_light); } if (hasErrors) { return; } + + int new_port = uri.getPort(); + if (new_port == -1) { + if (mUseSSLConnection) + new_port = 443; + else + new_port = 80; + } + + try { + uri = new URL(uri.getProtocol(), uri.getHost(), new_port, uri.getPath()); + } catch (MalformedURLException e) { + e.printStackTrace(); // should not happend + } + showDialog(0); mAuthThread = AuthUtils.attemptAuth(uri, username_text.getText().toString(), @@ -188,4 +224,30 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity { mHandler, AuthenticatorActivity.this); } + + /** + * Handles the show password checkbox + * @author robstar + * @author aqu + * @param view + */ + public void onCheckboxClick(View view) { + switch (view.getId()) { + case R.id.show_password: + TextView password_text = (TextView) findViewById(R.id.account_password); + + if(((CheckBox)view).isChecked()) { + password_text.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); + } else { + password_text.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + } + break; + case R.id.use_ssl: + mUseSSLConnection = ((CheckBox)view).isChecked(); + break; + default: + Log.d("AuthActivity", "Clicked invalid view with id: " + view.getId()); + } + + } }