aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java70
-rw-r--r--main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java4
-rw-r--r--main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java4
3 files changed, 26 insertions, 52 deletions
diff --git a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java
index 9508c26..bcc6942 100644
--- a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java
+++ b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java
@@ -5,18 +5,19 @@ import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.network.Cookies;
import cgeo.geocaching.ui.dialog.Dialogs;
-import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import rx.Observable;
+import rx.android.observables.AndroidObservable;
+import rx.functions.Action1;
+import rx.functions.Func0;
+import rx.schedulers.Schedulers;
-import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Message;
import android.preference.Preference;
import android.util.AttributeSet;
@@ -40,48 +41,15 @@ public abstract class AbstractCheckCredentialsPreference extends AbstractClickab
protected abstract Object login();
private class LoginCheckClickListener implements OnPreferenceClickListener {
- final private Resources res;
final private SettingsActivity activity;
LoginCheckClickListener(final SettingsActivity activity) {
this.activity = activity;
- this.res = activity.getResources();
}
- private ProgressDialog loginDialog;
- @SuppressLint("HandlerLeak")
- private Handler logInHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- try {
- if (loginDialog != null && loginDialog.isShowing()) {
- loginDialog.dismiss();
- }
-
- if (msg.obj == null || (msg.obj instanceof Drawable)) {
- Dialogs.message(activity, R.string.init_login_popup, R.string.init_login_popup_ok, (Drawable) msg.obj);
- } else {
- Dialogs.message(activity, R.string.init_login_popup,
- res.getString(R.string.init_login_popup_failed_reason)
- + " "
- + ((StatusCode) msg.obj).getErrorString(res)
- + ".");
- }
- } catch (Exception e) {
- ActivityMixin.showToast(activity, R.string.err_login_failed);
- Log.e("SettingsActivity.logInHandler", e);
- } finally {
- if (loginDialog != null && loginDialog.isShowing()) {
- loginDialog.dismiss();
- }
- // enable/disable basic member preferences
- activity.initBasicMemberPreferences();
- }
- }
- };
-
@Override
public boolean onPreferenceClick(Preference preference) {
+ final Resources res = activity.getResources();
final ImmutablePair<String, String> credentials = getCredentials();
// check credentials for validity
@@ -91,19 +59,33 @@ public abstract class AbstractCheckCredentialsPreference extends AbstractClickab
return false;
}
- loginDialog = ProgressDialog.show(activity,
+ final ProgressDialog loginDialog = ProgressDialog.show(activity,
res.getString(R.string.init_login_popup),
res.getString(R.string.init_login_popup_working), true);
loginDialog.setCancelable(false);
Cookies.clearCookies();
- (new Thread() {
+ AndroidObservable.fromActivity(activity, Observable.defer(new Func0<Observable<?>>() {
+ @Override
+ public Observable<?> call() {
+ return Observable.from(login());
+ }
+ }).subscribeOn(Schedulers.io())).subscribe(new Action1<Object>() {
@Override
- public void run() {
- Object payload = login();
- logInHandler.obtainMessage(0, payload).sendToTarget();
+ public void call(final Object obj) {
+ loginDialog.dismiss();
+ if (obj == null || obj instanceof Drawable) {
+ Dialogs.message(activity, R.string.init_login_popup, R.string.init_login_popup_ok, (Drawable) obj);
+ } else {
+ Dialogs.message(activity, R.string.init_login_popup,
+ res.getString(R.string.init_login_popup_failed_reason)
+ + " "
+ + ((StatusCode) obj).getErrorString(res)
+ + ".");
+ }
+ activity.initBasicMemberPreferences();
}
- }).start();
+ });
return false; // no shared preference has to be changed
}
diff --git a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java
index 46a3661..661e111 100644
--- a/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java
+++ b/main/src/cgeo/geocaching/settings/CheckECCredentialsPreference.java
@@ -11,10 +11,6 @@ import android.util.AttributeSet;
public class CheckECCredentialsPreference extends AbstractCheckCredentialsPreference {
- public CheckECCredentialsPreference(Context context) {
- super(context);
- }
-
public CheckECCredentialsPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
diff --git a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java
index 12c8b24..f65ba1b 100644
--- a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java
+++ b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java
@@ -10,10 +10,6 @@ import android.util.AttributeSet;
public class CheckGcCredentialsPreference extends AbstractCheckCredentialsPreference {
- public CheckGcCredentialsPreference(Context context) {
- super(context);
- }
-
public CheckGcCredentialsPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}