aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Jacob <mjacob@union06.de>2013-07-24 11:59:41 +0200
committerMarco Jacob <mjacob@union06.de>2013-07-24 12:17:24 +0200
commit526d9100bd3d91e3e1c0022d96f6e64ca1909c1f (patch)
treef977dc6acf085af1bad9a88381a72cd0489102b4
parent86275e79571702fb5b7535f5bf2504bee6d1a753 (diff)
downloadcgeo-526d9100bd3d91e3e1c0022d96f6e64ca1909c1f.zip
cgeo-526d9100bd3d91e3e1c0022d96f6e64ca1909c1f.tar.gz
cgeo-526d9100bd3d91e3e1c0022d96f6e64ca1909c1f.tar.bz2
fixes #3018 - show progress storing cache for edit personal note
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java160
-rw-r--r--main/src/cgeo/geocaching/ui/EditNoteDialog.java7
2 files changed, 91 insertions, 76 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index ac9b156..9f403254 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -121,8 +121,7 @@ import java.util.regex.Pattern;
*
* e.g. details, description, logs, waypoints, inventory...
*/
-public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailActivity.Page>
- implements EditNoteDialogListener {
+public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailActivity.Page> {
private static final int MENU_FIELD_COPY = 1;
private static final int MENU_FIELD_TRANSLATE = 2;
@@ -156,8 +155,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
private SearchResult search;
- private EditNoteDialogListener editNoteDialogListener;
-
private final GeoDirHandler locationUpdater = new GeoDirHandler() {
@Override
public void updateGeoData(final IGeoData geo) {
@@ -1061,7 +1058,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
private LinearLayout detailsList;
// TODO Do we need this thread-references?
- private StoreCacheThread storeThread;
private RefreshCacheThread refreshThread;
private Thread watchlistThread;
@@ -1208,26 +1204,14 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
new RunnableWithArgument<Integer>() {
@Override
public void run(final Integer selectedListId) {
- storeCache(selectedListId);
+ storeCache(selectedListId, new StoreCacheHandler(CacheDetailActivity.this, progress));
}
}, true, StoredList.TEMPORARY_LIST_ID);
} else {
- storeCache(StoredList.TEMPORARY_LIST_ID);
+ storeCache(StoredList.TEMPORARY_LIST_ID, new StoreCacheHandler(CacheDetailActivity.this, progress));
}
}
- protected void storeCache(int listId) {
- final StoreCacheHandler storeCacheHandler = new StoreCacheHandler(CacheDetailActivity.this, progress);
-
- progress.show(CacheDetailActivity.this, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true, storeCacheHandler.cancelMessage());
-
- if (storeThread != null) {
- storeThread.interrupt();
- }
-
- storeThread = new StoreCacheThread(listId, storeCacheHandler);
- storeThread.start();
- }
}
private class RefreshCacheClickListener implements View.OnClickListener {
@@ -1256,22 +1240,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
}
- private class StoreCacheThread extends Thread {
- final private int listId;
- final private CancellableHandler handler;
-
- public StoreCacheThread(final int listId, final CancellableHandler handler) {
- this.listId = listId;
- this.handler = handler;
- }
-
- @Override
- public void run() {
- cache.store(listId, handler);
- storeThread = null;
- }
- }
-
private class RefreshCacheThread extends Thread {
final private CancellableHandler handler;
@@ -1649,7 +1617,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
// cache personal note
- setPersonalNote();
+ setPersonalNote(personalNoteView, cache.getPersonalNote());
personalNoteView.setMovementMethod(AnchorAwareLinkMovementMethod.getInstance());
registerForContextMenu(personalNoteView);
final Button personalNoteEdit = (Button) view.findViewById(R.id.edit_personalnote);
@@ -1657,7 +1625,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
@Override
public void onClick(View v) {
if (cache.isOffline()) {
- editPersonalNote();
+ editPersonalNote(cache, CacheDetailActivity.this);
} else {
warnPersonalNoteNeedsStoring();
}
@@ -1727,24 +1695,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
return view;
}
- private void editPersonalNote() {
- if (cache.isOffline()) {
- editNoteDialogListener = new EditNoteDialogListener() {
- @Override
- public void onFinishEditNoteDialog(final String note) {
- cache.setPersonalNote(note);
- cache.parseWaypointsFromNote();
- setPersonalNote();
- cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
- CacheDetailActivity.this.notifyDataSetChanged();
- }
- };
- final FragmentManager fm = getSupportFragmentManager();
- final EditNoteDialog dialog = EditNoteDialog.newInstance(cache.getPersonalNote());
- dialog.show(fm, "fragment_edit_note");
- }
- }
-
Thread currentThread;
private void uploadPersonalNote() {
@@ -1760,16 +1710,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
currentThread.start();
}
- private void setPersonalNote() {
- final String personalNote = cache.getPersonalNote();
- personalNoteView.setText(personalNote, TextView.BufferType.SPANNABLE);
- if (StringUtils.isNotBlank(personalNote)) {
- personalNoteView.setVisibility(View.VISIBLE);
- } else {
- personalNoteView.setVisibility(View.GONE);
- }
- }
-
private void loadLongDescription() {
final Button showDesc = (Button) view.findViewById(R.id.show_description);
showDesc.setVisibility(View.GONE);
@@ -1796,8 +1736,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
- cache.store(null);
- editPersonalNote();
+ storeCache(StoredList.STANDARD_LIST_ID, new StoreCachePersonalNoteHandler(CacheDetailActivity.this, progress));
}
});
@@ -1808,11 +1747,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
- @Override
- public void onFinishEditNoteDialog(final String note) {
- editNoteDialogListener.onFinishEditNoteDialog(note);
- }
-
/**
* Loads the description in background. <br />
* <br />
@@ -2389,7 +2323,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
return search;
}
- private static final class StoreCacheHandler extends SimpleCancellableHandler {
+ private static class StoreCacheHandler extends SimpleCancellableHandler {
public StoreCacheHandler(CacheDetailActivity activity, Progress progress) {
super(activity, progress);
@@ -2476,4 +2410,84 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
activity.notifyDataSetChanged();
}
}
+
+ private StoreCacheThread storeThread;
+
+ private class StoreCacheThread extends Thread {
+ final private int listId;
+ final private CancellableHandler handler;
+
+ public StoreCacheThread(final int listId, final CancellableHandler handler) {
+ this.listId = listId;
+ this.handler = handler;
+ }
+
+ @Override
+ public void run() {
+ cache.store(listId, handler);
+ storeThread = null;
+ }
+ }
+
+ protected void storeCache(final int listId, final StoreCacheHandler storeCacheHandler) {
+ progress.show(CacheDetailActivity.this, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true, storeCacheHandler.cancelMessage());
+
+ if (storeThread != null) {
+ storeThread.interrupt();
+ }
+
+ storeThread = new StoreCacheThread(listId, storeCacheHandler);
+ storeThread.start();
+ }
+
+ private static final class StoreCachePersonalNoteHandler extends StoreCacheHandler {
+
+ public StoreCachePersonalNoteHandler(CacheDetailActivity activity, Progress progress) {
+ super(activity, progress);
+ }
+
+ @Override
+ public void handleRegularMessage(Message msg) {
+ if (UPDATE_LOAD_PROGRESS_DETAIL == msg.what && msg.obj instanceof String) {
+ updateStatusMsg(R.string.cache_dialog_offline_save_message, (String) msg.obj);
+ } else {
+ Progress progress = progressDialogRef.get();
+ if (progress != null) {
+ progress.dismiss();
+ }
+ CacheDetailActivity activity = (CacheDetailActivity) activityRef.get();
+ if (activity != null) {
+ editPersonalNote(activity.getCache(), activity);
+ }
+ }
+ }
+ }
+
+ public static void editPersonalNote(final Geocache cache, final CacheDetailActivity activity) {
+ if (cache.isOffline()) {
+ EditNoteDialogListener editNoteDialogListener = new EditNoteDialogListener() {
+ @Override
+ public void onFinishEditNoteDialog(final String note) {
+ cache.setPersonalNote(note);
+ cache.parseWaypointsFromNote();
+ TextView personalNoteView = (TextView) activity.findViewById(R.id.personalnote);
+ setPersonalNote(personalNoteView, note);
+ cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB));
+ activity.notifyDataSetChanged();
+ }
+ };
+ final FragmentManager fm = activity.getSupportFragmentManager();
+ final EditNoteDialog dialog = EditNoteDialog.newInstance(cache.getPersonalNote(), editNoteDialogListener);
+ dialog.show(fm, "fragment_edit_note");
+ }
+ }
+
+ private static void setPersonalNote(final TextView personalNoteView, final String personalNote) {
+ personalNoteView.setText(personalNote, TextView.BufferType.SPANNABLE);
+ if (StringUtils.isNotBlank(personalNote)) {
+ personalNoteView.setVisibility(View.VISIBLE);
+ } else {
+ personalNoteView.setVisibility(View.GONE);
+ }
+ }
}
diff --git a/main/src/cgeo/geocaching/ui/EditNoteDialog.java b/main/src/cgeo/geocaching/ui/EditNoteDialog.java
index 9a122e2..50cf57a 100644
--- a/main/src/cgeo/geocaching/ui/EditNoteDialog.java
+++ b/main/src/cgeo/geocaching/ui/EditNoteDialog.java
@@ -20,13 +20,15 @@ public class EditNoteDialog extends DialogFragment {
public static final String ARGUMENT_INITIAL_NOTE = "initialNote";
private EditText mEditText;
+ private EditNoteDialogListener listener;
- public static EditNoteDialog newInstance(final String initialNote) {
+ public static EditNoteDialog newInstance(final String initialNote, EditNoteDialogListener listener) {
EditNoteDialog dialog = new EditNoteDialog();
Bundle arguments = new Bundle();
arguments.putString(EditNoteDialog.ARGUMENT_INITIAL_NOTE, initialNote);
dialog.setArguments(arguments);
+ dialog.listener = listener;
return dialog;
}
@@ -49,8 +51,7 @@ public class EditNoteDialog extends DialogFragment {
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
- final EditNoteDialogListener activity = (EditNoteDialogListener) getActivity();
- activity.onFinishEditNoteDialog(mEditText.getText().toString());
+ listener.onFinishEditNoteDialog(mEditText.getText().toString());
dialog.dismiss();
}
});