diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-02-20 11:08:19 +0100 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-02-22 12:46:59 +0100 |
| commit | 9f11130b9f15ef8c3036248d056c658d90bedabb (patch) | |
| tree | d2bdf5d8fba08009340fe0ec830bc016a134455b /main/src/cgeo | |
| parent | 6e4235b1304060dce66d72dc9621e22929de0773 (diff) | |
| download | cgeo-9f11130b9f15ef8c3036248d056c658d90bedabb.zip cgeo-9f11130b9f15ef8c3036248d056c658d90bedabb.tar.gz cgeo-9f11130b9f15ef8c3036248d056c658d90bedabb.tar.bz2 | |
refactoring: factor out common code in preferences
Diffstat (limited to 'main/src/cgeo')
4 files changed, 50 insertions, 44 deletions
diff --git a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java index d3aae5c..9508c26 100644 --- a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java +++ b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java @@ -19,14 +19,8 @@ import android.os.Handler; import android.os.Message; import android.preference.Preference; import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -public abstract class AbstractCheckCredentialsPreference extends Preference { - - public AbstractCheckCredentialsPreference(Context context) { - super(context); - } +public abstract class AbstractCheckCredentialsPreference extends AbstractClickablePreference { public AbstractCheckCredentialsPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -37,9 +31,8 @@ public abstract class AbstractCheckCredentialsPreference extends Preference { } @Override - protected View onCreateView(ViewGroup parent) { - setOnPreferenceClickListener(new LoginCheckClickListener()); - return super.onCreateView(parent); + protected OnPreferenceClickListener getOnPreferenceClickListener(final SettingsActivity activity) { + return new LoginCheckClickListener(activity); } protected abstract ImmutablePair<String, String> getCredentials(); @@ -47,8 +40,13 @@ public abstract class AbstractCheckCredentialsPreference extends Preference { protected abstract Object login(); private class LoginCheckClickListener implements OnPreferenceClickListener { - private Resources res; - private SettingsActivity activity; + final private Resources res; + final private SettingsActivity activity; + + LoginCheckClickListener(final SettingsActivity activity) { + this.activity = activity; + this.res = activity.getResources(); + } private ProgressDialog loginDialog; @SuppressLint("HandlerLeak") @@ -84,10 +82,7 @@ public abstract class AbstractCheckCredentialsPreference extends Preference { @Override public boolean onPreferenceClick(Preference preference) { - this.activity = (SettingsActivity) AbstractCheckCredentialsPreference.this.getContext(); - this.res = activity.getResources(); - - ImmutablePair<String, String> credentials = getCredentials(); + final ImmutablePair<String, String> credentials = getCredentials(); // check credentials for validity if (StringUtils.isBlank(credentials.getLeft()) diff --git a/main/src/cgeo/geocaching/settings/AbstractClickablePreference.java b/main/src/cgeo/geocaching/settings/AbstractClickablePreference.java new file mode 100644 index 0000000..f4080cd --- /dev/null +++ b/main/src/cgeo/geocaching/settings/AbstractClickablePreference.java @@ -0,0 +1,30 @@ +package cgeo.geocaching.settings; + +import android.content.Context; +import android.preference.Preference; +import android.util.AttributeSet; +import android.view.View; +import android.view.ViewGroup; + +abstract class AbstractClickablePreference extends Preference { + + final SettingsActivity activity; + + public AbstractClickablePreference(Context context, AttributeSet attrs) { + super(context, attrs); + activity = (SettingsActivity) context; + } + + public AbstractClickablePreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + activity = (SettingsActivity) context; + } + + @Override + protected View onCreateView(ViewGroup parent) { + setOnPreferenceClickListener(getOnPreferenceClickListener(activity)); + return super.onCreateView(parent); + } + + abstract protected OnPreferenceClickListener getOnPreferenceClickListener(final SettingsActivity activity); +} diff --git a/main/src/cgeo/geocaching/settings/OAuthPreference.java b/main/src/cgeo/geocaching/settings/OAuthPreference.java index 06982f5..df77197 100644 --- a/main/src/cgeo/geocaching/settings/OAuthPreference.java +++ b/main/src/cgeo/geocaching/settings/OAuthPreference.java @@ -10,10 +10,8 @@ import android.content.Context; import android.content.Intent; import android.preference.Preference; import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -public class OAuthPreference extends Preference { +public class OAuthPreference extends AbstractClickablePreference { private static final int NO_KEY = -1; @@ -44,11 +42,6 @@ public class OAuthPreference extends Preference { return OAuthActivityMapping.NONE; } - public OAuthPreference(Context context) { - super(context); - this.oAuthMapping = getAuthorization(); - } - public OAuthPreference(Context context, AttributeSet attrs) { super(context, attrs); this.oAuthMapping = getAuthorization(); @@ -60,10 +53,9 @@ public class OAuthPreference extends Preference { } @Override - protected View onCreateView(ViewGroup parent) { - final SettingsActivity activity = (SettingsActivity) getContext(); - - setOnPreferenceClickListener(new OnPreferenceClickListener() { + protected OnPreferenceClickListener getOnPreferenceClickListener(final SettingsActivity activity) { + activity.setOcAuthTitle(oAuthMapping.prefKeyId); + return new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { if (oAuthMapping.authActivity != null) { @@ -74,9 +66,7 @@ public class OAuthPreference extends Preference { } return false; // no shared preference has to be changed } - }); + }; - activity.setOcAuthTitle(oAuthMapping.prefKeyId); - return super.onCreateView(parent); } } diff --git a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java index bfa5583..a1ab215 100644 --- a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java +++ b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java @@ -19,14 +19,8 @@ import android.app.ProgressDialog; import android.content.Context; import android.preference.Preference; import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -public class RegisterSend2CgeoPreference extends Preference { - - public RegisterSend2CgeoPreference(Context context) { - super(context); - } +public class RegisterSend2CgeoPreference extends AbstractClickablePreference { public RegisterSend2CgeoPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -37,10 +31,8 @@ public class RegisterSend2CgeoPreference extends Preference { } @Override - protected View onCreateView(ViewGroup parent) { - final SettingsActivity activity = (SettingsActivity) getContext(); - - setOnPreferenceClickListener(new OnPreferenceClickListener() { + protected OnPreferenceClickListener getOnPreferenceClickListener(final SettingsActivity activity) { + return new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { // satisfy static code analysis @@ -100,8 +92,7 @@ public class RegisterSend2CgeoPreference extends Preference { return true; } - }); - return super.onCreateView(parent); + }; } } |
