aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/CacheDetailActivity.java
diff options
context:
space:
mode:
authorMarco Jacob <mjacob@union06.de>2013-06-15 16:23:55 +0200
committerMarco Jacob <mjacob@union06.de>2013-06-26 18:08:20 +0200
commitfbc75936daaa3ea5e2596c0aa71593cbe9f33614 (patch)
tree682973d51b4c1e1578e02ae8e690c88dbc74aeb1 /main/src/cgeo/geocaching/CacheDetailActivity.java
parent3d41a7c9b48fea09d6cc74cd96fa1a13b777eeb2 (diff)
downloadcgeo-fbc75936daaa3ea5e2596c0aa71593cbe9f33614.zip
cgeo-fbc75936daaa3ea5e2596c0aa71593cbe9f33614.tar.gz
cgeo-fbc75936daaa3ea5e2596c0aa71593cbe9f33614.tar.bz2
make personalNote multiline again, upload button, merge on refresh
Diffstat (limited to 'main/src/cgeo/geocaching/CacheDetailActivity.java')
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java69
1 files changed, 69 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java
index b4c7b33..7acb4ae 100644
--- a/main/src/cgeo/geocaching/CacheDetailActivity.java
+++ b/main/src/cgeo/geocaching/CacheDetailActivity.java
@@ -1815,6 +1815,18 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
}
});
+ final Button personalNoteUpload = (Button) view.findViewById(R.id.upload_personalnote);
+ if (cache.isOffline() && ConnectorFactory.getConnector(cache).supportsPersonalNote()) {
+ personalNoteUpload.setVisibility(View.VISIBLE);
+ personalNoteUpload.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ uploadPersonalNote();
+ }
+ });
+ } else {
+ personalNoteUpload.setVisibility(View.GONE);
+ }
// cache hint and spoiler images
final View hintBoxView = view.findViewById(R.id.hint_box);
@@ -1885,6 +1897,21 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
}
+ Thread currentThread;
+
+ private void uploadPersonalNote() {
+ final SimpleHandler myHandler = new SimpleHandler();
+
+ Message cancelMessage = myHandler.cancelMessage(res.getString(R.string.cache_personal_note_upload_cancelled));
+ progress.show(CacheDetailActivity.this, res.getString(R.string.cache_personal_note_uploading), res.getString(R.string.cache_personal_note_uploading), true, cancelMessage);
+
+ if (currentThread != null) {
+ currentThread.interrupt();
+ }
+ currentThread = new UploadPersonalNoteThread(cache, myHandler);
+ currentThread.start();
+ }
+
private void setPersonalNote() {
final String personalNote = cache.getPersonalNote();
personalNoteView.setText(personalNote, TextView.BufferType.SPANNABLE);
@@ -2564,6 +2591,48 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc
}
}
+ public class SimpleHandler extends CancellableHandler {
+ public static final String SUCCESS_TEXT = "success_message";
+
+ @Override
+ public void handleRegularMessage(final Message msg) {
+ if (msg.getData() != null && msg.getData().getString(SUCCESS_TEXT) != null) {
+ showToast(msg.getData().getString(SUCCESS_TEXT));
+ }
+ progress.dismiss();
+ return;
+ }
+
+ @Override
+ public void handleCancel(final Object extra) {
+ showToast((String) extra);
+ progress.dismiss();
+ }
+ }
+
+ private class UploadPersonalNoteThread extends Thread {
+ private Geocache cache = null;
+ private CancellableHandler handler = null;
+
+ public UploadPersonalNoteThread(Geocache cache, CancellableHandler handler) {
+ this.cache = cache;
+ this.handler = handler;
+ }
+
+ @Override
+ public void run() {
+ IConnector con = ConnectorFactory.getConnector(cache);
+ if (con.supportsPersonalNote()) {
+ con.uploadPersonalNote(cache);
+ }
+ Message msg = Message.obtain();
+ Bundle bundle = new Bundle();
+ bundle.putString(SimpleHandler.SUCCESS_TEXT, res.getString(R.string.cache_personal_note_upload_done));
+ msg.setData(bundle);
+ handler.sendMessage(msg);
+ }
+ }
+
@Override
protected String getTitle(Page page) {
// show number of waypoints directly in waypoint title