aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-12-19 10:12:39 +0100
committerBananeweizen <bananeweizen@gmx.de>2013-12-19 10:12:39 +0100
commit5d2037d977cb1d41d8c252b1fd5f79d464817b0f (patch)
tree3f045e22df737056ba4d4248fc7ef6c0a4768fd7
parent865049e156cfdac0d4c01367e74e243a027286ca (diff)
downloadcgeo-5d2037d977cb1d41d8c252b1fd5f79d464817b0f.zip
cgeo-5d2037d977cb1d41d8c252b1fd5f79d464817b0f.tar.gz
cgeo-5d2037d977cb1d41d8c252b1fd5f79d464817b0f.tar.bz2
refactoring: remove duplicated code
-rw-r--r--main/src/cgeo/geocaching/CachePopup.java29
-rw-r--r--main/src/cgeo/geocaching/settings/CheckBoxWithPopupPreference.java26
-rw-r--r--main/src/cgeo/geocaching/settings/InfoPreference.java50
-rw-r--r--main/src/cgeo/geocaching/ui/UrlPopup.java40
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();
+ }
+}