summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorParménides GV <parmegv@sdf.org>2013-07-30 18:46:53 +0200
committerParménides GV <parmegv@sdf.org>2013-07-30 18:46:53 +0200
commitde28df6f62949e6142f8bc1b5363137906a6d7a3 (patch)
treea754856c1597d08be6724e61d38bbe5d4c439799
parenta1a03615cb9c4f978142b234f028e718eb91a103 (diff)
Retains username if login process failed.
New login dialog shows the original username, so that if the user failed writing his/her password, s/he does not have to write again the username.
-rw-r--r--src/se/leap/leapclient/Dashboard.java13
-rw-r--r--src/se/leap/leapclient/LogInDialog.java8
-rw-r--r--src/se/leap/leapclient/ProviderAPI.java12
3 files changed, 24 insertions, 9 deletions
diff --git a/src/se/leap/leapclient/Dashboard.java b/src/se/leap/leapclient/Dashboard.java
index 063cd3c..6dba4eb 100644
--- a/src/se/leap/leapclient/Dashboard.java
+++ b/src/se/leap/leapclient/Dashboard.java
@@ -90,7 +90,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
buildDashboard();
if(data != null && data.hasExtra(ConfigHelper.LOG_IN)) {
View view = ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);
- logInDialog(view, "");
+ logInDialog(view, Bundle.EMPTY);
}
} else if(resultCode == RESULT_CANCELED && data.hasExtra(ConfigHelper.QUIT)) {
finish();
@@ -195,7 +195,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
return true;
case R.id.login_button:
View view = ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);
- logInDialog(view, "");
+ logInDialog(view, Bundle.EMPTY);
return true;
case R.id.logout_button:
logOut();
@@ -265,7 +265,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
* Shows the log in dialog.
* @param view from which the dialog is created.
*/
- public void logInDialog(View view, String user_message) {
+ public void logInDialog(View view, Bundle resultData) {
FragmentTransaction fragment_transaction = getFragmentManager().beginTransaction();
Fragment previous_log_in_dialog = getFragmentManager().findFragmentByTag(ConfigHelper.LOG_IN_DIALOG);
if (previous_log_in_dialog != null) {
@@ -274,9 +274,12 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
fragment_transaction.addToBackStack(null);
DialogFragment newFragment = LogInDialog.newInstance();
- if(user_message != null && !user_message.isEmpty()) {
+ if(resultData != null && !resultData.isEmpty()) {
Bundle user_message_bundle = new Bundle();
+ String user_message = resultData.getString(getResources().getString(R.string.user_message));
+ String username = resultData.getString(ConfigHelper.USERNAME_KEY);
user_message_bundle.putString(getResources().getString(R.string.user_message), user_message);
+ user_message_bundle.putString(ConfigHelper.USERNAME_KEY, username);
newFragment.setArguments(user_message_bundle);
}
newFragment.show(fragment_transaction, ConfigHelper.LOG_IN_DIALOG);
@@ -316,7 +319,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf
downloadAuthedUserCertificate(session_id);
} else if(resultCode == ConfigHelper.SRP_AUTHENTICATION_FAILED) {
mProgressDialog.dismiss();
- logInDialog(getCurrentFocus(), resultData.getString(getResources().getString(R.string.user_message)));
+ logInDialog(getCurrentFocus(), resultData);
} else if(resultCode == ConfigHelper.LOGOUT_SUCCESSFUL) {
authed = false;
invalidateOptionsMenu();
diff --git a/src/se/leap/leapclient/LogInDialog.java b/src/se/leap/leapclient/LogInDialog.java
index 8b3f9e8..8e8bb65 100644
--- a/src/se/leap/leapclient/LogInDialog.java
+++ b/src/se/leap/leapclient/LogInDialog.java
@@ -48,8 +48,16 @@ public class LogInDialog extends DialogFragment {
if(getArguments() != null && getArguments().containsKey(getResources().getString(R.string.user_message))) {
user_message.setText(getArguments().getString(getResources().getString(R.string.user_message)));
} else user_message.setVisibility(View.GONE);
+
final EditText username_field = (EditText)log_in_dialog_view.findViewById(R.id.username_entered);
+ if(getArguments() != null && getArguments().containsKey(getResources().getString(R.string.user_message))) {
+ String username = getArguments().getString(ConfigHelper.USERNAME_KEY);
+ username_field.setText(username);
+ username_field.setHint("");
+ }
final EditText password_field = (EditText)log_in_dialog_view.findViewById(R.id.password_entered);
+ if(!username_field.getText().toString().isEmpty() && password_field.isFocusable())
+ password_field.requestFocus();
builder.setView(log_in_dialog_view)
.setPositiveButton(R.string.login_button, new DialogInterface.OnClickListener() {
diff --git a/src/se/leap/leapclient/ProviderAPI.java b/src/se/leap/leapclient/ProviderAPI.java
index 944a0e7..d92b48f 100644
--- a/src/se/leap/leapclient/ProviderAPI.java
+++ b/src/se/leap/leapclient/ProviderAPI.java
@@ -142,10 +142,7 @@ public class ProviderAPI extends IntentService {
if(session_id_bundle.getBoolean(ConfigHelper.RESULT_KEY)) {
receiver.send(ConfigHelper.SRP_AUTHENTICATION_SUCCESSFUL, session_id_bundle);
} else {
- Bundle user_message_bundle = new Bundle();
- String user_message_key = getResources().getString(R.string.user_message);
- user_message_bundle.putString(user_message_key, session_id_bundle.getString(user_message_key));
- receiver.send(ConfigHelper.SRP_AUTHENTICATION_FAILED, user_message_bundle);
+ receiver.send(ConfigHelper.SRP_AUTHENTICATION_FAILED, session_id_bundle);
}
}
else if ((task = task_for.getBundleExtra(ConfigHelper.LOG_OUT)) != null) {
@@ -215,27 +212,34 @@ public class ProviderAPI extends IntentService {
} else {
session_id_bundle.putBoolean(ConfigHelper.RESULT_KEY, false);
session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_bad_user_password_user_message));
+ session_id_bundle.putString(ConfigHelper.USERNAME_KEY, username);
}
} else {
session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_bad_user_password_user_message));
+ session_id_bundle.putString(ConfigHelper.USERNAME_KEY, username);
session_id_bundle.putBoolean(ConfigHelper.RESULT_KEY, false);
}
} catch (ClientProtocolException e) {
session_id_bundle.putBoolean(ConfigHelper.RESULT_KEY, false);
session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_client_http_user_message));
+ session_id_bundle.putString(ConfigHelper.USERNAME_KEY, username);
} catch (IOException e) {
session_id_bundle.putBoolean(ConfigHelper.RESULT_KEY, false);
session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_io_exception_user_message));
+ session_id_bundle.putString(ConfigHelper.USERNAME_KEY, username);
} catch (JSONException e) {
session_id_bundle.putBoolean(ConfigHelper.RESULT_KEY, false);
session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_json_exception_user_message));
+ session_id_bundle.putString(ConfigHelper.USERNAME_KEY, username);
} catch (NoSuchAlgorithmException e) {
session_id_bundle.putBoolean(ConfigHelper.RESULT_KEY, false);
session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_no_such_algorithm_exception_user_message));
+ session_id_bundle.putString(ConfigHelper.USERNAME_KEY, username);
}
} else {
session_id_bundle.putBoolean(ConfigHelper.RESULT_KEY, false);
session_id_bundle.putString(getResources().getString(R.string.user_message), getResources().getString(R.string.error_not_valid_password_user_message));
+ session_id_bundle.putString(ConfigHelper.USERNAME_KEY, username);
}
return session_id_bundle;