diff options
author | Bananeweizen <bananeweizen@gmx.de> | 2013-12-19 10:12:39 +0100 |
---|---|---|
committer | Bananeweizen <bananeweizen@gmx.de> | 2013-12-19 10:12:39 +0100 |
commit | 5d2037d977cb1d41d8c252b1fd5f79d464817b0f (patch) | |
tree | 3f045e22df737056ba4d4248fc7ef6c0a4768fd7 | |
parent | 865049e156cfdac0d4c01367e74e243a027286ca (diff) | |
download | cgeo-5d2037d977cb1d41d8c252b1fd5f79d464817b0f.zip cgeo-5d2037d977cb1d41d8c252b1fd5f79d464817b0f.tar.gz cgeo-5d2037d977cb1d41d8c252b1fd5f79d464817b0f.tar.bz2 |
refactoring: remove duplicated code
-rw-r--r-- | main/src/cgeo/geocaching/CachePopup.java | 29 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java | 26 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/settings/InfoPreference.java | 50 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/ui/UrlPopup.java | 40 |
4 files changed, 70 insertions, 75 deletions
diff --git a/main/src/cgeo/geocaching/CachePopup.java b/main/src/cgeo/geocaching/CachePopup.java index d88000f..9186497 100644 --- a/main/src/cgeo/geocaching/CachePopup.java +++ b/main/src/cgeo/geocaching/CachePopup.java @@ -26,6 +26,12 @@ public class CachePopup extends AbstractPopupActivity { private final Progress progress = new Progress(); private class StoreCacheHandler extends CancellableHandler { + private final int progressMessage; + + public StoreCacheHandler(final int progressMessage) { + this.progressMessage = progressMessage; + } + @Override public void handleRegularMessage(Message msg) { if (UPDATE_LOAD_PROGRESS_DETAIL == msg.what && msg.obj instanceof String) { @@ -36,7 +42,7 @@ public class CachePopup extends AbstractPopupActivity { } private void updateStatusMsg(final String msg) { - progress.setMessage(res.getString(R.string.cache_dialog_offline_save_message) + progress.setMessage(res.getString(progressMessage) + "\n\n" + msg); } @@ -49,23 +55,6 @@ public class CachePopup extends AbstractPopupActivity { } } - private class RefreshCacheHandler extends CancellableHandler { - @Override - public void handleRegularMessage(Message msg) { - if (UPDATE_LOAD_PROGRESS_DETAIL == msg.what && msg.obj instanceof String) { - updateStatusMsg((String) msg.obj); - } else { - init(); - } - } - - private void updateStatusMsg(final String msg) { - progress.setMessage(res.getString(R.string.cache_dialog_refresh_message) - + "\n\n" - + msg); - } - } - public CachePopup() { super(R.layout.popup); } @@ -133,7 +122,7 @@ public class CachePopup extends AbstractPopupActivity { } protected void storeCache(final int listId) { - final StoreCacheHandler storeCacheHandler = new StoreCacheHandler(); + final StoreCacheHandler storeCacheHandler = new StoreCacheHandler(R.string.cache_dialog_offline_save_message); progress.show(CachePopup.this, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true, storeCacheHandler.cancelMessage()); new StoreCacheThread(listId, storeCacheHandler).start(); } @@ -168,7 +157,7 @@ public class CachePopup extends AbstractPopupActivity { return; } - final RefreshCacheHandler refreshCacheHandler = new RefreshCacheHandler(); + final StoreCacheHandler refreshCacheHandler = new StoreCacheHandler(R.string.cache_dialog_offline_save_message); progress.show(CachePopup.this, res.getString(R.string.cache_dialog_refresh_title), res.getString(R.string.cache_dialog_refresh_message), true, refreshCacheHandler.cancelMessage()); new RefreshCacheThread(refreshCacheHandler).start(); } diff --git a/main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java b/main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java index 4e64b9a..e36e007 100644 --- a/main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java +++ b/main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java @@ -1,13 +1,10 @@ package cgeo.geocaching.settings; import cgeo.geocaching.R; +import cgeo.geocaching.ui.UrlPopup; -import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; import android.content.res.TypedArray; -import android.net.Uri; import android.preference.CheckBoxPreference; import android.preference.Preference; import android.util.AttributeSet; @@ -63,26 +60,7 @@ public class CheckBoxWithPopupPreference extends CheckBoxPreference { if (!(Boolean) newValue) { return true; } - AlertDialog.Builder builder = new AlertDialog.Builder( - preference.getContext()); - builder.setMessage(text) - .setIcon(android.R.drawable.ic_dialog_info) - .setTitle(title) - .setPositiveButton(R.string.err_none, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }) - .setNegativeButton(urlButton, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - Intent i = new Intent(Intent.ACTION_VIEW); - i.setData(Uri.parse(url)); - preference.getContext().startActivity(i); - } - }); - builder.create().show(); + new UrlPopup(preference.getContext()).show(title, text, url, urlButton); return true; } }); diff --git a/main/src/cgeo/geocaching/settings/InfoPreference.java b/main/src/cgeo/geocaching/settings/InfoPreference.java index 3b59bcc..8040a62 100644 --- a/main/src/cgeo/geocaching/settings/InfoPreference.java +++ b/main/src/cgeo/geocaching/settings/InfoPreference.java @@ -1,14 +1,11 @@ package cgeo.geocaching.settings; import cgeo.geocaching.R; +import cgeo.geocaching.ui.UrlPopup; import android.app.Activity; -import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; import android.content.res.TypedArray; -import android.net.Uri; import android.preference.Preference; import android.util.AttributeSet; import android.view.LayoutInflater; @@ -82,39 +79,30 @@ public class InfoPreference extends AbstractAttributeBasedPrefence { @Override public boolean onPreferenceClick(final Preference preference) { - AlertDialog.Builder builder = new AlertDialog.Builder( - preference.getContext()); - builder.setMessage(text) - .setIcon(android.R.drawable.ic_dialog_info) - .setTitle(preference.getTitle()) - .setPositiveButton(R.string.err_none, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }) - .setNegativeButton(urlButton, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - Intent i = new Intent(Intent.ACTION_VIEW); - i.setData(Uri.parse(url)); - preference.getContext().startActivity(i); - } - }); - builder.create().show(); + new UrlPopup(preference.getContext()).show(preference.getTitle().toString(), text, url, urlButton); + // don't update the preference value return false; } }); - // show an Info Icon - View v = super.onCreateView(parent); + return addInfoIcon(parent); + } + + /** + * Add an info icon at the left hand side of the preference. + * + * @param parent + * @return + */ + private View addInfoIcon(ViewGroup parent) { + View preferenceView = super.onCreateView(parent); - ImageView i = (ImageView) inflater.inflate(R.layout.preference_info_icon, parent, false); - LinearLayout l = (LinearLayout) v.findViewById(android.R.id.widget_frame); - l.setVisibility(View.VISIBLE); - l.addView(i); + ImageView iconView = (ImageView) inflater.inflate(R.layout.preference_info_icon, parent, false); + LinearLayout frame = (LinearLayout) preferenceView.findViewById(android.R.id.widget_frame); + frame.setVisibility(View.VISIBLE); + frame.addView(iconView); - return v; + return preferenceView; } } diff --git a/main/src/cgeo/geocaching/ui/UrlPopup.java b/main/src/cgeo/geocaching/ui/UrlPopup.java new file mode 100644 index 0000000..5a8dba4 --- /dev/null +++ b/main/src/cgeo/geocaching/ui/UrlPopup.java @@ -0,0 +1,40 @@ +package cgeo.geocaching.ui; + +import cgeo.geocaching.R; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; + +public class UrlPopup { + + private final Context context; + + public UrlPopup(final Context context) { + this.context = context; + } + + public void show(final String title, final String message, final String url, final String urlButtonTitle) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setMessage(message) + .setIcon(android.R.drawable.ic_dialog_info) + .setTitle(title) + .setPositiveButton(R.string.err_none, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + dialog.cancel(); + } + }) + .setNegativeButton(urlButtonTitle, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + Intent i = new Intent(Intent.ACTION_VIEW); + i.setData(Uri.parse(url)); + context.startActivity(i); + } + }); + builder.create().show(); + } +} |