aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-12-19 16:36:34 +0100
committerBananeweizen <bananeweizen@gmx.de>2013-12-19 16:36:34 +0100
commitd017aa9a3b7fc53f4801096d8ba87021f4e7e056 (patch)
tree991da53cad139655cdbac76b4bcd244891e8b3d5
parent82661d89ea3159000ae42fbbc0d45d663776dbee (diff)
downloadcgeo-d017aa9a3b7fc53f4801096d8ba87021f4e7e056.zip
cgeo-d017aa9a3b7fc53f4801096d8ba87021f4e7e056.tar.gz
cgeo-d017aa9a3b7fc53f4801096d8ba87021f4e7e056.tar.bz2
refactoring: simplify confirmation dialogs, remove duplicate code
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java48
-rw-r--r--main/src/cgeo/geocaching/CacheListActivity.java55
-rw-r--r--main/src/cgeo/geocaching/CacheMenuHandler.java35
-rw-r--r--main/src/cgeo/geocaching/CgeoApplication.java4
-rw-r--r--main/src/cgeo/geocaching/EditWaypointActivity.java5
-rw-r--r--main/src/cgeo/geocaching/MainActivity.java7
-rw-r--r--main/src/cgeo/geocaching/NavigateAnyPointActivity.java3
-rw-r--r--main/src/cgeo/geocaching/SearchActivity.java13
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractActivity.java10
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractListActivity.java10
-rw-r--r--main/src/cgeo/geocaching/activity/ActivityMixin.java29
-rw-r--r--main/src/cgeo/geocaching/activity/IAbstractActivity.java2
-rw-r--r--main/src/cgeo/geocaching/files/GPXImporter.java9
-rw-r--r--main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java9
-rw-r--r--main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java8
-rw-r--r--main/src/cgeo/geocaching/ui/GPXListAdapter.java28
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/Dialogs.java291
-rw-r--r--main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java12
18 files changed, 362 insertions, 216 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index a51729c..079562e 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -35,6 +35,7 @@ import cgeo.geocaching.ui.IndexOutOfBoundsAvoidingTextView;
import cgeo.geocaching.ui.LoggingUI;
import cgeo.geocaching.ui.OwnerActionsClickListener;
import cgeo.geocaching.ui.WeakReferenceHandler;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.ui.logs.CacheLogsViewCreator;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.ClipboardUtils;
@@ -1615,18 +1616,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
private void warnPersonalNoteNeedsStoring() {
- final AlertDialog.Builder builder = new AlertDialog.Builder(CacheDetailActivity.this);
- builder.setTitle(R.string.cache_personal_note_unstored);
- builder.setMessage(R.string.cache_personal_note_store);
- builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // do nothing
- }
- });
-
- builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ Dialogs.confirm(CacheDetailActivity.this, R.string.cache_personal_note_unstored, R.string.cache_personal_note_store,
+ new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
@@ -1635,36 +1626,19 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
});
- final AlertDialog dialog = builder.create();
- dialog.setOwnerActivity(CacheDetailActivity.this);
- dialog.show();
}
private void warnPersonalNoteExceedsLimit() {
- final AlertDialog.Builder builder = new AlertDialog.Builder(CacheDetailActivity.this);
- builder.setTitle(R.string.cache_personal_note_limit);
- String lang = getString(R.string.cache_personal_note_truncation, GCConstants.PERSONAL_NOTE_MAX_CHARS);
- builder.setMessage(lang);
- builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // do nothing
- }
- });
+ Dialogs.confirm(CacheDetailActivity.this, R.string.cache_personal_note_limit, getString(R.string.cache_personal_note_truncation, GCConstants.PERSONAL_NOTE_MAX_CHARS),
+ new DialogInterface.OnClickListener() {
- builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- uploadPersonalNote();
- }
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ uploadPersonalNote();
+ }
- });
- final AlertDialog dialog = builder.create();
- dialog.setOwnerActivity(CacheDetailActivity.this);
- dialog.show();
+ });
}
}
diff --git a/main/src/cgeo/geocaching/CacheListActivity.java b/main/src/cgeo/geocaching/CacheListActivity.java
index 575c0ba..c5c79ed 100644
--- a/main/src/cgeo/geocaching/CacheListActivity.java
+++ b/main/src/cgeo/geocaching/CacheListActivity.java
@@ -39,6 +39,7 @@ import cgeo.geocaching.sorting.ComparatorUserInterface;
import cgeo.geocaching.ui.CacheListAdapter;
import cgeo.geocaching.ui.LoggingUI;
import cgeo.geocaching.ui.WeakReferenceHandler;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.AsyncTaskWithProgress;
import cgeo.geocaching.utils.DateUtils;
import cgeo.geocaching.utils.GeoDirHandler;
@@ -1027,27 +1028,15 @@ public class CacheListActivity extends AbstractListActivity implements FilteredA
}
public void removeFromHistoryCheck() {
- final AlertDialog.Builder dialog = new AlertDialog.Builder(this);
- dialog.setCancelable(true);
- dialog.setTitle(res.getString(R.string.caches_removing_from_history));
- dialog.setMessage((adapter != null && adapter.getCheckedCount() > 0) ? res.getString(R.string.cache_remove_from_history)
- : res.getString(R.string.cache_clear_history));
- dialog.setPositiveButton(getString(android.R.string.yes), new DialogInterface.OnClickListener() {
+ int message = (adapter != null && adapter.getCheckedCount() > 0) ? R.string.cache_remove_from_history
+ : R.string.cache_clear_history;
+ Dialogs.confirmYesNo(this, R.string.caches_removing_from_history, message, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
removeFromHistory();
dialog.cancel();
}
});
- dialog.setNegativeButton(getString(android.R.string.no), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- dialog.cancel();
- }
- });
-
- final AlertDialog alert = dialog.create();
- alert.show();
}
public void removeFromHistory() {
@@ -1072,16 +1061,8 @@ public class CacheListActivity extends AbstractListActivity implements FilteredA
}
public void dropStored(final boolean removeListAfterwards) {
- final AlertDialog.Builder dialog = new AlertDialog.Builder(this);
- dialog.setCancelable(true);
- dialog.setTitle(res.getString(R.string.caches_drop_stored));
-
- if (adapter.getCheckedCount() > 0) {
- dialog.setMessage(res.getString(R.string.caches_drop_selected_ask));
- } else {
- dialog.setMessage(res.getString(R.string.caches_drop_all_ask));
- }
- dialog.setPositiveButton(getString(android.R.string.yes), new DialogInterface.OnClickListener() {
+ int message = (adapter.getCheckedCount() > 0) ? R.string.caches_drop_selected_ask : R.string.caches_drop_all_ask;
+ Dialogs.confirmYesNo(this, R.string.caches_drop_stored, message, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
@@ -1089,16 +1070,6 @@ public class CacheListActivity extends AbstractListActivity implements FilteredA
dialog.cancel();
}
});
- dialog.setNegativeButton(getString(android.R.string.no), new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int id) {
- dialog.cancel();
- }
- });
-
- final AlertDialog alert = dialog.create();
- alert.show();
}
public void dropSelected(boolean removeListAfterwards) {
@@ -1407,24 +1378,12 @@ public class CacheListActivity extends AbstractListActivity implements FilteredA
}
// ask him, if there are caches on the list
- final AlertDialog.Builder alert = new AlertDialog.Builder(this);
-
- alert.setTitle(R.string.list_dialog_remove_title);
- alert.setMessage(R.string.list_dialog_remove_description);
- alert.setPositiveButton(R.string.list_dialog_remove, new DialogInterface.OnClickListener() {
+ Dialogs.confirm(this, R.string.list_dialog_remove_title, R.string.list_dialog_remove_description, R.string.list_dialog_remove, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
removeListInternal();
}
});
- alert.setNegativeButton(res.getString(R.string.list_dialog_cancel), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int whichButton) {
- dialog.dismiss();
- }
- });
-
- alert.show();
}
/**
diff --git a/main/src/cgeo/geocaching/CacheMenuHandler.java b/main/src/cgeo/geocaching/CacheMenuHandler.java
index 887f6cf..84a08f5 100644
--- a/main/src/cgeo/geocaching/CacheMenuHandler.java
+++ b/main/src/cgeo/geocaching/CacheMenuHandler.java
@@ -5,12 +5,12 @@ import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.geopoint.GeopointFormatter;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.ui.AbstractUIFactory;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.ProcessUtils;
import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
-import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
@@ -101,28 +101,17 @@ public class CacheMenuHandler extends AbstractUIFactory {
Uri.parse(ICalendar.URI_SCHEME + "://" + ICalendar.URI_HOST + "?" + params.toString())));
} else {
// Inform user the calendar add-on is not installed and let them get it from Google Play
- new AlertDialog.Builder(activity)
- .setTitle(res.getString(R.string.addon_missing_title))
- .setMessage(new StringBuilder(res.getString(R.string.helper_calendar_missing))
- .append(' ')
- .append(res.getString(R.string.addon_download_prompt))
- .toString())
- .setPositiveButton(activity.getString(android.R.string.yes), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- final Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setData(Uri.parse(ICalendar.CALENDAR_ADDON_URI));
- activity.startActivity(intent);
- }
- })
- .setNegativeButton(activity.getString(android.R.string.no), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- dialog.cancel();
- }
- })
- .create()
- .show();
+ Dialogs.confirmYesNo(activity, R.string.addon_missing_title, new StringBuilder(res.getString(R.string.helper_calendar_missing))
+ .append(' ')
+ .append(res.getString(R.string.addon_download_prompt))
+ .toString(), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ final Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse(ICalendar.CALENDAR_ADDON_URI));
+ activity.startActivity(intent);
+ }
+ });
}
}
diff --git a/main/src/cgeo/geocaching/CgeoApplication.java b/main/src/cgeo/geocaching/CgeoApplication.java
index 0af8117..3d2f758 100644
--- a/main/src/cgeo/geocaching/CgeoApplication.java
+++ b/main/src/cgeo/geocaching/CgeoApplication.java
@@ -1,7 +1,7 @@
package cgeo.geocaching;
-import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.network.StatusUpdater;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.IObserver;
import cgeo.geocaching.utils.Log;
@@ -75,7 +75,7 @@ public class CgeoApplication extends Application {
dialog.dismiss();
boolean success = atomic.get();
String message = success ? res.getString(R.string.init_dbmove_success) : res.getString(R.string.init_dbmove_failed);
- ActivityMixin.helpDialog(fromActivity, res.getString(R.string.init_dbmove_dbmove), message);
+ Dialogs.message(fromActivity, R.string.init_dbmove_dbmove, message);
}
});
}
diff --git a/main/src/cgeo/geocaching/EditWaypointActivity.java b/main/src/cgeo/geocaching/EditWaypointActivity.java
index c31ad40..6d0f822 100644
--- a/main/src/cgeo/geocaching/EditWaypointActivity.java
+++ b/main/src/cgeo/geocaching/EditWaypointActivity.java
@@ -12,6 +12,7 @@ import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.ui.dialog.CoordinatesInputDialog;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.GeoDirHandler;
import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.TextUtils;
@@ -331,7 +332,7 @@ public class EditWaypointActivity extends AbstractActivity {
if (StringUtils.isBlank(bearingText) && StringUtils.isBlank(distanceText)
&& StringUtils.isBlank(latText) && StringUtils.isBlank(lonText)) {
- helpDialog(res.getString(R.string.err_point_no_position_given_title), res.getString(R.string.err_point_no_position_given));
+ Dialogs.message(EditWaypointActivity.this, R.string.err_point_no_position_given_title, R.string.err_point_no_position_given);
return;
}
@@ -359,7 +360,7 @@ public class EditWaypointActivity extends AbstractActivity {
try {
bearing = Double.parseDouble(bearingText);
} catch (NumberFormatException e) {
- helpDialog(res.getString(R.string.err_point_bear_and_dist_title), res.getString(R.string.err_point_bear_and_dist));
+ Dialogs.message(EditWaypointActivity.this, R.string.err_point_bear_and_dist_title, R.string.err_point_bear_and_dist);
return;
}
diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java
index 4233d1f..4010888 100644
--- a/main/src/cgeo/geocaching/MainActivity.java
+++ b/main/src/cgeo/geocaching/MainActivity.java
@@ -15,6 +15,7 @@ import cgeo.geocaching.maps.CGeoMap;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.settings.SettingsActivity;
import cgeo.geocaching.ui.Formatter;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.DatabaseBackupUtils;
import cgeo.geocaching.utils.GeoDirHandler;
import cgeo.geocaching.utils.Log;
@@ -330,11 +331,7 @@ public class MainActivity extends AbstractActivity {
if (query == null) {
query = "";
}
- new AlertDialog.Builder(this)
- .setMessage(res.getString(R.string.unknown_scan) + "\n\n" + query)
- .setPositiveButton(getString(android.R.string.ok), null)
- .create()
- .show();
+ Dialogs.message(this, res.getString(R.string.unknown_scan) + "\n\n" + query);
}
}
}
diff --git a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
index c68c979..f24e86e 100644
--- a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
+++ b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
@@ -13,6 +13,7 @@ import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.ui.AbstractViewHolder;
import cgeo.geocaching.ui.Formatter;
import cgeo.geocaching.ui.dialog.CoordinatesInputDialog;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.GeoDirHandler;
import cgeo.geocaching.utils.Log;
@@ -518,7 +519,7 @@ public class NavigateAnyPointActivity extends AbstractActivity {
try {
bearing = Double.parseDouble(bearingText);
} catch (NumberFormatException e) {
- helpDialog(res.getString(R.string.err_point_bear_and_dist_title), res.getString(R.string.err_point_bear_and_dist));
+ Dialogs.message(this, R.string.err_point_bear_and_dist_title, R.string.err_point_bear_and_dist);
return null;
}
diff --git a/main/src/cgeo/geocaching/SearchActivity.java b/main/src/cgeo/geocaching/SearchActivity.java
index 334d99a..9952e18 100644
--- a/main/src/cgeo/geocaching/SearchActivity.java
+++ b/main/src/cgeo/geocaching/SearchActivity.java
@@ -12,6 +12,7 @@ import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.ui.dialog.CoordinatesInputDialog;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.EditUtils;
import org.apache.commons.lang3.StringUtils;
@@ -276,7 +277,7 @@ public class SearchActivity extends AbstractActivity {
final String keyText = StringUtils.trim(keywordEditText.getText().toString());
if (StringUtils.isBlank(keyText)) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_keyword));
+ Dialogs.message(this, R.string.warn_search_help_title, R.string.warn_search_help_keyword);
return;
}
@@ -287,7 +288,7 @@ public class SearchActivity extends AbstractActivity {
final String addText = StringUtils.trim(addressEditText.getText().toString());
if (StringUtils.isBlank(addText)) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_address));
+ Dialogs.message(this, R.string.warn_search_help_title, R.string.warn_search_help_address);
return;
}
@@ -300,7 +301,7 @@ public class SearchActivity extends AbstractActivity {
final String usernameText = StringUtils.trim(userNameEditText.getText().toString());
if (StringUtils.isBlank(usernameText)) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_user));
+ Dialogs.message(this, R.string.warn_search_help_title, R.string.warn_search_help_user);
return;
}
@@ -315,7 +316,7 @@ public class SearchActivity extends AbstractActivity {
final String usernameText = StringUtils.trimToEmpty(userName);
if (StringUtils.isBlank(usernameText)) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_user));
+ Dialogs.message(this, R.string.warn_search_help_title, R.string.warn_search_help_user);
return;
}
@@ -326,7 +327,7 @@ public class SearchActivity extends AbstractActivity {
final String geocodeText = StringUtils.trim(geocodeEditText.getText().toString());
if (StringUtils.isBlank(geocodeText) || geocodeText.equalsIgnoreCase("GC")) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_gccode));
+ Dialogs.message(this, R.string.warn_search_help_title, R.string.warn_search_help_gccode);
return;
}
@@ -337,7 +338,7 @@ public class SearchActivity extends AbstractActivity {
final String trackableText = StringUtils.trim(trackableEditText.getText().toString());
if (StringUtils.isBlank(trackableText) || trackableText.equalsIgnoreCase("TB")) {
- helpDialog(res.getString(R.string.warn_search_help_title), res.getString(R.string.warn_search_help_tb));
+ Dialogs.message(this, R.string.warn_search_help_title, R.string.warn_search_help_tb);
return;
}
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java
index 1f44536..df21a8c 100644
--- a/main/src/cgeo/geocaching/activity/AbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java
@@ -9,7 +9,6 @@ import cgeo.geocaching.settings.Settings;
import android.content.Context;
import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
@@ -58,15 +57,6 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst
}
@Override
- public final void helpDialog(final String title, final String message) {
- ActivityMixin.helpDialog(this, title, message);
- }
-
- protected final void helpDialog(final String title, final String message, final Drawable icon) {
- ActivityMixin.helpDialog(this, title, message, icon);
- }
-
- @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initializeCommonFields();
diff --git a/main/src/cgeo/geocaching/activity/AbstractListActivity.java b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
index d2bc0b4..a5d5c14 100644
--- a/main/src/cgeo/geocaching/activity/AbstractListActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
@@ -3,7 +3,6 @@ package cgeo.geocaching.activity;
import cgeo.geocaching.CgeoApplication;
import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.FragmentListActivity;
import android.view.View;
@@ -48,15 +47,6 @@ public abstract class AbstractListActivity extends FragmentListActivity implemen
}
@Override
- public final void helpDialog(final String title, final String message) {
- ActivityMixin.helpDialog(this, title, message, null);
- }
-
- public final void helpDialog(final String title, final String message, final Drawable icon) {
- ActivityMixin.helpDialog(this, title, message, icon);
- }
-
- @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initializeCommonFields();
diff --git a/main/src/cgeo/geocaching/activity/ActivityMixin.java b/main/src/cgeo/geocaching/activity/ActivityMixin.java
index 9b1e433..c1a2678 100644
--- a/main/src/cgeo/geocaching/activity/ActivityMixin.java
+++ b/main/src/cgeo/geocaching/activity/ActivityMixin.java
@@ -8,10 +8,7 @@ import cgeo.geocaching.settings.Settings;
import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
import android.content.Intent;
-import android.graphics.drawable.Drawable;
import android.os.Build;
import android.view.Gravity;
import android.view.View;
@@ -94,30 +91,6 @@ public final class ActivityMixin {
}
}
- public static void helpDialog(final Activity activity, final String title, final String message, final Drawable icon) {
- if (StringUtils.isBlank(message)) {
- return;
- }
-
- AlertDialog.Builder dialog = new AlertDialog.Builder(activity).setTitle(title).setMessage(message).setCancelable(true);
- dialog.setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- dialog.cancel();
- }
- });
- if (icon != null) {
- dialog.setIcon(icon);
- }
-
- AlertDialog alert = dialog.create();
- alert.show();
- }
-
- public static void helpDialog(Activity activity, String title, String message) {
- helpDialog(activity, title, message, null);
- }
-
public static void keepScreenOn(final Activity abstractActivity, boolean keepScreenOn) {
if (keepScreenOn) {
abstractActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
@@ -130,7 +103,7 @@ public final class ActivityMixin {
/**
* insert text into the EditText at the current cursor position
- *
+ *
* @param editText
* @param insertText
* @param moveCursor
diff --git a/main/src/cgeo/geocaching/activity/IAbstractActivity.java b/main/src/cgeo/geocaching/activity/IAbstractActivity.java
index 61c218b..7ca2322 100644
--- a/main/src/cgeo/geocaching/activity/IAbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/IAbstractActivity.java
@@ -10,7 +10,5 @@ public interface IAbstractActivity {
public void showShortToast(String text);
- public void helpDialog(String title, String message);
-
public void invalidateOptionsMenuCompatible();
}
diff --git a/main/src/cgeo/geocaching/files/GPXImporter.java b/main/src/cgeo/geocaching/files/GPXImporter.java
index bf0aa72..07ef285 100644
--- a/main/src/cgeo/geocaching/files/GPXImporter.java
+++ b/main/src/cgeo/geocaching/files/GPXImporter.java
@@ -1,14 +1,15 @@
package cgeo.geocaching.files;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.SearchResult;
import cgeo.geocaching.StaticMapsProvider;
-import cgeo.geocaching.DataStore;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.activity.Progress;
import cgeo.geocaching.enumerations.LoadFlags;
import cgeo.geocaching.settings.Settings;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.CancellableHandler;
import cgeo.geocaching.utils.Log;
@@ -417,19 +418,19 @@ public class GPXImporter {
progressHandler.cancel();
final StringBuilder bufferSkipped = new StringBuilder(20);
bufferSkipped.append(res.getString(R.string.gpx_import_static_maps_skipped)).append(", ").append(msg.arg1).append(' ').append(res.getString(R.string.gpx_import_caches_imported));
- ActivityMixin.helpDialog(fromActivity, res.getString(R.string.gpx_import_title_caches_imported), bufferSkipped.toString());
+ Dialogs.message(fromActivity, R.string.gpx_import_title_caches_imported, bufferSkipped.toString());
importFinished();
break;
case IMPORT_STEP_FINISHED:
progress.dismiss();
- ActivityMixin.helpDialog(fromActivity, res.getString(R.string.gpx_import_title_caches_imported), msg.arg1 + " " + res.getString(R.string.gpx_import_caches_imported));
+ Dialogs.message(fromActivity, R.string.gpx_import_title_caches_imported, msg.arg1 + " " + res.getString(R.string.gpx_import_caches_imported));
importFinished();
break;
case IMPORT_STEP_FINISHED_WITH_ERROR:
progress.dismiss();
- ActivityMixin.helpDialog(fromActivity, res.getString(R.string.gpx_import_title_caches_import_failed), res.getString(msg.arg1) + "\n\n" + msg.obj);
+ Dialogs.message(fromActivity, R.string.gpx_import_title_caches_import_failed, res.getString(msg.arg1) + "\n\n" + msg.obj);
importFinished();
break;
diff --git a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java
index 69f6188..d3aae5c 100644
--- a/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java
+++ b/main/src/cgeo/geocaching/settings/AbstractCheckCredentialsPreference.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.R;
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;
@@ -60,13 +61,9 @@ public abstract class AbstractCheckCredentialsPreference extends Preference {
}
if (msg.obj == null || (msg.obj instanceof Drawable)) {
- ActivityMixin.helpDialog(activity,
- res.getString(R.string.init_login_popup),
- res.getString(R.string.init_login_popup_ok),
- (Drawable) msg.obj);
+ Dialogs.message(activity, R.string.init_login_popup, R.string.init_login_popup_ok, (Drawable) msg.obj);
} else {
- ActivityMixin.helpDialog(activity,
- res.getString(R.string.init_login_popup),
+ Dialogs.message(activity, R.string.init_login_popup,
res.getString(R.string.init_login_popup_failed_reason)
+ " "
+ ((StatusCode) msg.obj).getErrorString(res)
diff --git a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
index fbf08fa..094b8f5 100644
--- a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
+++ b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
@@ -4,6 +4,7 @@ import cgeo.geocaching.R;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.network.Parameters;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.Log;
import ch.boye.httpclientandroidlib.HttpResponse;
@@ -45,14 +46,11 @@ public class RegisterSend2CgeoPreference extends Preference {
}
if (msg.what > 0) {
- ActivityMixin.helpDialog(activity,
- activity.getString(R.string.init_sendToCgeo),
+ Dialogs.message(activity, R.string.init_sendToCgeo,
activity.getString(R.string.init_sendToCgeo_register_ok)
.replace("####", String.valueOf(msg.what)));
} else {
- ActivityMixin.helpDialog(activity,
- activity.getString(R.string.init_sendToCgeo),
- activity.getString(R.string.init_sendToCgeo_register_fail));
+ Dialogs.message(activity, R.string.init_sendToCgeo, R.string.init_sendToCgeo_register_fail);
}
} catch (Exception e) {
ActivityMixin.showToast(activity, R.string.init_sendToCgeo_register_fail);
diff --git a/main/src/cgeo/geocaching/ui/GPXListAdapter.java b/main/src/cgeo/geocaching/ui/GPXListAdapter.java
index 988bb81..ae18ab4 100644
--- a/main/src/cgeo/geocaching/ui/GPXListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/GPXListAdapter.java
@@ -5,11 +5,11 @@ import butterknife.InjectView;
import cgeo.geocaching.GpxFileListActivity;
import cgeo.geocaching.R;
import cgeo.geocaching.files.GPXImporter;
+import cgeo.geocaching.ui.dialog.Dialogs;
import cgeo.geocaching.utils.FileUtils;
import cgeo.geocaching.utils.Log;
import android.app.Activity;
-import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
@@ -74,25 +74,13 @@ public class GPXListAdapter extends ArrayAdapter<File> {
@Override
public boolean onLongClick(View v) {
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
- builder.setTitle(R.string.gpx_import_delete_title)
- .setMessage(activity.getString(R.string.gpx_import_delete_message, file.getName()))
- .setCancelable(false)
- .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- FileUtils.deleteIgnoringFailure(file);
- GPXListAdapter.this.remove(file);
- }
- })
- .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- dialog.cancel();
- }
- });
- AlertDialog alert = builder.create();
- alert.show();
+ Dialogs.confirmYesNo(activity, R.string.gpx_import_delete_title, activity.getString(R.string.gpx_import_delete_message, file.getName()), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ FileUtils.deleteIgnoringFailure(file);
+ GPXListAdapter.this.remove(file);
+ }
+ });
return true;
}
});
diff --git a/main/src/cgeo/geocaching/ui/dialog/Dialogs.java b/main/src/cgeo/geocaching/ui/dialog/Dialogs.java
new file mode 100644
index 0000000..6064c41
--- /dev/null
+++ b/main/src/cgeo/geocaching/ui/dialog/Dialogs.java
@@ -0,0 +1,291 @@
+package cgeo.geocaching.ui.dialog;
+
+import cgeo.geocaching.CgeoApplication;
+
+import org.eclipse.jdt.annotation.Nullable;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.AlertDialog.Builder;
+import android.content.DialogInterface.OnClickListener;
+import android.graphics.drawable.Drawable;
+
+/**
+ * Wrapper for {@link AlertDialog}. If you want to show a simple text, use one of the
+ * {@link #message(Activity, String, String, Drawable)} variants. If you want the user to confirm using Okay/Cancel or
+ * Yes/No, select one of the {@link #confirm(Activity, String, String, String, OnClickListener)} or
+ * {@link #confirmYesNo(Activity, String, String, OnClickListener)} variants.
+ *
+ */
+public final class Dialogs {
+ private Dialogs() {
+ // utility class
+ }
+
+ /**
+ * Confirm using two buttons "yourText" and "Cancel", where "Cancel" just closes the dialog.
+ *
+ * @param context
+ * activity hosting the dialog
+ * @param title
+ * dialog title
+ * @param msg
+ * dialog message
+ * @param positiveButton
+ * text of the positive button (which would typically be the OK button)
+ * @param okayListener
+ * listener of the positive button
+ */
+ public static AlertDialog.Builder confirm(final Activity context, final String title, final String msg, final String positiveButton, final OnClickListener okayListener) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ AlertDialog dialog = builder.setTitle(title)
+ .setCancelable(true)
+ .setMessage(msg)
+ .setPositiveButton(positiveButton, okayListener)
+ .setNegativeButton(android.R.string.cancel, null)
+ .create();
+ dialog.setOwnerActivity(context);
+ dialog.show();
+ return builder;
+ }
+
+ /**
+ * Confirm using two buttons "yourText" and "Cancel", where "Cancel" just closes the dialog.
+ *
+ * @param context
+ * activity hosting the dialog
+ * @param title
+ * dialog title
+ * @param msg
+ * dialog message
+ * @param positiveButton
+ * text of the positive button (which would typically be the OK button)
+ * @param okayListener
+ * listener of the positive button
+ */
+ public static AlertDialog.Builder confirm(final Activity context, final int title, final int msg, final int positiveButton, final OnClickListener okayListener) {
+ return confirm(context, getString(title), getString(msg), getString(positiveButton), okayListener);
+ }
+
+ /**
+ * Confirm using two buttons "Yes" and "No", where "No" just closes the dialog.
+ *
+ * @param context
+ * activity hosting the dialog
+ * @param title
+ * dialog title
+ * @param msg
+ * dialog message
+ * @param yesListener
+ * listener of the positive button
+ */
+ public static AlertDialog.Builder confirmYesNo(final Activity context, final String title, final String msg, final OnClickListener yesListener) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ AlertDialog dialog = builder.setTitle(title)
+ .setCancelable(true)
+ .setMessage(msg)
+ .setPositiveButton(android.R.string.yes, yesListener)
+ .setNegativeButton(android.R.string.no, null)
+ .create();
+ dialog.setOwnerActivity(context);
+ dialog.show();
+ return builder;
+ }
+
+ /**
+ * Confirm using two buttons "Yes" and "No", where "No" just closes the dialog.
+ *
+ * @param context
+ * activity hosting the dialog
+ * @param title
+ * dialog title
+ * @param msg
+ * dialog message
+ * @param yesListener
+ * listener of the positive button
+ */
+ public static AlertDialog.Builder confirmYesNo(final Activity context, final String title, final int msg, final OnClickListener yesListener) {
+ return confirmYesNo(context, title, getString(msg), yesListener);
+ }
+
+ /**
+ * Confirm using two buttons "Yes" and "No", where "No" just closes the dialog.
+ *
+ * @param context
+ * activity hosting the dialog
+ * @param title
+ * dialog title
+ * @param msg
+ * dialog message
+ * @param yesListener
+ * listener of the positive button
+ */
+ public static AlertDialog.Builder confirmYesNo(final Activity context, final int title, final String msg, final OnClickListener yesListener) {
+ return confirmYesNo(context, getString(title), msg, yesListener);
+ }
+
+ /**
+ * Confirm using two buttons "Yes" and "No", where "No" just closes the dialog.
+ *
+ * @param context
+ * activity hosting the dialog
+ * @param title
+ * dialog title
+ * @param msg
+ * dialog message
+ * @param yesListener
+ * listener of the positive button
+ */
+ public static AlertDialog.Builder confirmYesNo(final Activity context, final int title, final int msg, final OnClickListener yesListener) {
+ return confirmYesNo(context, getString(title), getString(msg), yesListener);
+ }
+
+ /**
+ * Confirm using two buttons "OK" and "Cancel", where "Cancel" just closes the dialog.
+ *
+ * @param context
+ * activity hosting the dialog
+ * @param title
+ * dialog title
+ * @param msg
+ * dialog message
+ * @param okayListener
+ * listener of the positive button
+ */
+ public static AlertDialog.Builder confirm(final Activity context, final String title, final String msg, final OnClickListener okayListener) {
+ return confirm(context, title, msg, getString(android.R.string.ok), okayListener);
+ }
+
+ /**
+ * Confirm using two buttons "OK" and "Cancel", where "Cancel" just closes the dialog.
+ *
+ * @param context
+ * activity hosting the dialog
+ * @param title
+ * dialog title
+ * @param msg
+ * dialog message
+ * @param okayListener
+ * listener of the positive button
+ */
+ public static AlertDialog.Builder confirm(final Activity context, final int title, final String msg, final OnClickListener okayListener) {
+ return confirm(context, getString(title), msg, okayListener);
+ }
+
+ /**
+ * Confirm using two buttons "OK" and "Cancel", where "Cancel" just closes the dialog.
+ *
+ * @param context
+ * activity hosting the dialog
+ * @param title
+ * dialog title
+ * @param msg
+ * dialog message
+ * @param okayListener
+ * listener of the positive button
+ */
+ public static AlertDialog.Builder confirm(final Activity context, final int title, final int msg, final OnClickListener okayListener) {
+ return confirm(context, getString(title), getString(msg), okayListener);
+ }
+
+ private static String getString(int resourceId) {
+ return CgeoApplication.getInstance().getString(resourceId);
+ }
+
+ /**
+ * Show a message dialog with a single "OK" button.
+ *
+ * @param context
+ * activity owning the dialog
+ * @param message
+ * message dialog content
+ */
+ public static void message(final Activity context, final String message) {
+ message(context, null, message);
+ }
+
+ /**
+ * Show a message dialog with a single "OK" button.
+ *
+ * @param context
+ * activity owning the dialog
+ * @param title
+ * message dialog title
+ * @param message
+ * message dialog content
+ */
+ public static void message(final Activity context, final @Nullable String title, final String message) {
+ message(context, title, message, null);
+ }
+
+ /**
+ * Show a message dialog with a single "OK" button and an icon.
+ *
+ * @param context
+ * activity owning the dialog
+ * @param title
+ * message dialog title
+ * @param message
+ * message dialog content
+ * @param icon
+ * message dialog title icon
+ */
+ public static void message(final Activity context, final @Nullable String title, final String message, final @Nullable Drawable icon) {
+ Builder builder = new AlertDialog.Builder(context)
+ .setMessage(message)
+ .setCancelable(true)
+ .setPositiveButton(getString(android.R.string.ok), null);
+ if (title != null) {
+ builder.setTitle(title);
+ }
+ if (icon != null) {
+ builder.setIcon(icon);
+ }
+ builder.create().show();
+ }
+
+ /**
+ * Show a message dialog with a single "OK" button and an icon.
+ *
+ * @param context
+ * activity owning the dialog
+ * @param title
+ * message dialog title
+ * @param message
+ * message dialog content
+ */
+ public static void message(final Activity context, final int title, final String message) {
+ message(context, getString(title), message);
+ }
+
+ /**
+ * Show a message dialog with a single "OK" button and an icon.
+ *
+ * @param context
+ * activity owning the dialog
+ * @param title
+ * message dialog title
+ * @param message
+ * message dialog content
+ */
+ public static void message(final Activity context, final int title, final int message) {
+ message(context, getString(title), getString(message));
+ }
+
+ /**
+ * Show a message dialog with a single "OK" button and an icon.
+ *
+ * @param context
+ * activity owning the dialog
+ * @param title
+ * message dialog title
+ * @param message
+ * message dialog content
+ * @param icon
+ * message dialog title icon
+ */
+ public static void message(final Activity context, final int title, final int message, final @Nullable Drawable icon) {
+ message(context, getString(title), getString(message), icon);
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java b/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java
index b291a8a..4ce2e0c 100644
--- a/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java
+++ b/main/src/cgeo/geocaching/utils/DatabaseBackupUtils.java
@@ -3,8 +3,8 @@ package cgeo.geocaching.utils;
import cgeo.geocaching.DataStore;
import cgeo.geocaching.MainActivity;
import cgeo.geocaching.R;
-import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.ui.Formatter;
+import cgeo.geocaching.ui.dialog.Dialogs;
import org.apache.commons.lang3.StringUtils;
@@ -42,7 +42,7 @@ public class DatabaseBackupUtils {
dialog.dismiss();
boolean restored = restoreSuccessful.get();
String message = restored ? res.getString(R.string.init_restore_success) : res.getString(R.string.init_restore_failed);
- ActivityMixin.helpDialog(activity, res.getString(R.string.init_backup_restore), message);
+ Dialogs.message(activity, R.string.init_backup_restore, message);
if (activity instanceof MainActivity) {
((MainActivity) activity).updateCacheCounter();
}
@@ -57,9 +57,7 @@ public class DatabaseBackupUtils {
// avoid overwriting an existing backup with an empty database
// (can happen directly after reinstalling the app)
if (DataStore.getAllCachesCount() == 0) {
- ActivityMixin.helpDialog(activity,
- context.getString(R.string.init_backup),
- context.getString(R.string.init_backup_unnecessary));
+ Dialogs.message(activity, R.string.init_backup, R.string.init_backup_unnecessary);
return false;
}
@@ -74,8 +72,8 @@ public class DatabaseBackupUtils {
@Override
public void run() {
dialog.dismiss();
- ActivityMixin.helpDialog(activity,
- context.getString(R.string.init_backup_backup),
+ Dialogs.message(activity,
+ R.string.init_backup_backup,
backupFileName != null
? context.getString(R.string.init_backup_success)
+ "\n" + backupFileName