diff options
| author | Marco Jacob <mjacob@union06.de> | 2013-06-15 16:23:55 +0200 |
|---|---|---|
| committer | Marco Jacob <mjacob@union06.de> | 2013-06-26 18:08:20 +0200 |
| commit | fbc75936daaa3ea5e2596c0aa71593cbe9f33614 (patch) | |
| tree | 682973d51b4c1e1578e02ae8e690c88dbc74aeb1 /main/src/cgeo/geocaching/CacheDetailActivity.java | |
| parent | 3d41a7c9b48fea09d6cc74cd96fa1a13b777eeb2 (diff) | |
| download | cgeo-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.java | 69 |
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 |
