X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/48f13c8adc5c4b9bc4ca96bf13939a7d7cfae562..a99f74bd9e09ed9acc74b0fe276ed030b91fc85d:/src/com/owncloud/android/ui/activity/AuthenticatorActivity.java diff --git a/src/com/owncloud/android/ui/activity/AuthenticatorActivity.java b/src/com/owncloud/android/ui/activity/AuthenticatorActivity.java index 86d9c4b6..d2770406 100644 --- a/src/com/owncloud/android/ui/activity/AuthenticatorActivity.java +++ b/src/com/owncloud/android/ui/activity/AuthenticatorActivity.java @@ -1,9 +1,10 @@ /* ownCloud Android client application * Copyright (C) 2012 Bartek Przybylski + * Copyright (C) 2012-2013 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or + * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -24,12 +25,12 @@ import java.net.URL; import com.owncloud.android.AccountUtils; import com.owncloud.android.authenticator.AccountAuthenticator; import com.owncloud.android.authenticator.AuthenticationRunnable; -import com.owncloud.android.authenticator.ConnectionCheckOperation; import com.owncloud.android.authenticator.OnAuthenticationResultListener; import com.owncloud.android.authenticator.OnConnectCheckListener; import com.owncloud.android.ui.dialog.SslValidatorDialog; import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener; import com.owncloud.android.network.OwnCloudClientUtils; +import com.owncloud.android.operations.ConnectionCheckOperation; import com.owncloud.android.operations.OnRemoteOperationListener; import com.owncloud.android.operations.RemoteOperation; import com.owncloud.android.operations.RemoteOperationResult; @@ -54,6 +55,8 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.view.Window; +import android.widget.Button; +import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.owncloud.android.R; @@ -89,7 +92,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity private static final String IS_SSL_CONN = "IS_SSL_CONN"; private int mStatusText, mStatusIcon; private boolean mStatusCorrect, mIsSslConn; - private RemoteOperationResult mLastSslFailedResult; + private RemoteOperationResult mLastSslUntrustedServerResult; public static final String PARAM_USERNAME = "param_Username"; public static final String PARAM_HOSTNAME = "param_Hostname"; @@ -125,6 +128,11 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity iv2.setOnClickListener(this); tv.setOnFocusChangeListener(this); tv2.setOnFocusChangeListener(this); + + Button b = (Button) findViewById(R.id.account_register); + if (b != null) { + b.setText(String.format(getString(R.string.auth_register), getString(R.string.app_name))); + } } @Override @@ -160,10 +168,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity break; } case DIALOG_SSL_VALIDATOR: { - SslValidatorDialog sslValidator = SslValidatorDialog.newInstance(this, mLastSslFailedResult, this); - if (sslValidator != null) - dialog = sslValidator; - // else, mLastSslFailedResult is not an SSL fail recoverable by accepting the server certificate as reliable; dialog will still be null + dialog = SslValidatorDialog.newInstance(this, mLastSslUntrustedServerResult, this); break; } case DIALOG_CERT_NOT_SAVED: { @@ -192,7 +197,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity case DIALOG_CERT_NOT_SAVED: break; case DIALOG_SSL_VALIDATOR: { - ((SslValidatorDialog)dialog).updateResult(mLastSslFailedResult); + ((SslValidatorDialog)dialog).updateResult(mLastSslUntrustedServerResult); break; } default: @@ -243,8 +248,6 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity AccountAuthenticator.ACCOUNT_TYPE); intent.putExtra(AccountManager.KEY_USERDATA, username); - accManager.setUserData(account, AccountAuthenticator.KEY_OC_URL, - url.toString()); accManager.setUserData(account, AccountAuthenticator.KEY_OC_VERSION, mConnChkRunnable .getDiscoveredVersion().toString()); @@ -275,7 +278,11 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity // NOTHING TO DO ; can't find out what situation that leads to the exception in this code, but user logs signal that it happens } TextView tv = (TextView) findViewById(R.id.account_username); - tv.setError(message); + tv.setError(message + " "); // the extra spaces are a workaround for an ugly bug: + // 1. insert wrong credentials and connect + // 2. put the focus on the user name field with using hardware controls (don't touch the screen); the error is shown UNDER the field + // 3. touch the user name field; the software keyboard appears; the error popup is moved OVER the field and SHRINKED in width, losing the last word + // Seen, at least, in Android 2.x devices } } public void onCancelClick(View view) { @@ -300,7 +307,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity } public void onRegisterClick(View view) { - Intent register = new Intent(Intent.ACTION_VIEW, Uri.parse("https://owncloud.com/mobile/new")); + Intent register = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.url_account_register))); setResult(RESULT_CANCELED); startActivity(register); } @@ -480,10 +487,19 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity if (v.getId() == R.id.refreshButton) { onFocusChange(findViewById(R.id.host_URL), false); } else if (v.getId() == R.id.viewPassword) { - TextView view = (TextView) findViewById(R.id.account_password); - int input_type = InputType.TYPE_CLASS_TEXT - | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD; + EditText view = (EditText) findViewById(R.id.account_password); + int selectionStart = view.getSelectionStart(); + int selectionEnd = view.getSelectionEnd(); + int input_type = view.getInputType(); + if ((input_type & InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) { + input_type = InputType.TYPE_CLASS_TEXT + | InputType.TYPE_TEXT_VARIATION_PASSWORD; + } else { + input_type = InputType.TYPE_CLASS_TEXT + | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD; + } view.setInputType(input_type); + view.setSelection(selectionStart, selectionEnd); } } @@ -535,18 +551,18 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity mStatusText = R.string.auth_incorrect_address_title; break; - case SSL_ERROR: + case SSL_RECOVERABLE_PEER_UNVERIFIED: mStatusIcon = R.drawable.common_error; - mStatusText = R.string.auth_ssl_general_error_title; - //mStatusText = R.string.auth_ssl_unverified_server_title; - mLastSslFailedResult = result; - showDialog(DIALOG_SSL_VALIDATOR); // see onCreateDialog(); it does not always show the dialog - /*if (InteractiveSslValidatorActivity.isRecoverable(result)) { - Intent intent = new Intent(this, InteractiveSslValidatorActivity.class); - startActivityForResult(intent, REQUEST_FOR_SSL_CERT); - }*/ - break; + mStatusText = R.string.auth_ssl_unverified_server_title; + mLastSslUntrustedServerResult = result; + showDialog(DIALOG_SSL_VALIDATOR); + break; + case SSL_ERROR: + mStatusIcon = R.drawable.common_error; + mStatusText = R.string.auth_ssl_general_error_title; + break; + case HOST_NOT_AVAILABLE: mStatusIcon = R.drawable.common_error; mStatusText = R.string.auth_unknown_host_title; @@ -569,7 +585,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity mStatusText = R.string.auth_unknown_error_title; break; default: - Log.e(TAG, "Incorrect connection checker result type: " + operation); + Log.e(TAG, "Incorrect connection checker result type: " + result.getHttpCode()); } setResultIconAndText(mStatusIcon, mStatusText); if (!mStatusCorrect)