aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2014-08-13 19:23:32 +0200
committerBananeweizen <bananeweizen@gmx.de>2014-08-13 19:23:32 +0200
commitfc9b60674bdbd9d7ed2ce4eaa862ef58f3d312c5 (patch)
tree169b5c5083fde037645ee639a743f7e0c8d9dc81 /main/src
parent3e61416d5f91637103b2be0e8a1341ef6c7c3250 (diff)
downloadcgeo-fc9b60674bdbd9d7ed2ce4eaa862ef58f3d312c5.zip
cgeo-fc9b60674bdbd9d7ed2ce4eaa862ef58f3d312c5.tar.gz
cgeo-fc9b60674bdbd9d7ed2ce4eaa862ef58f3d312c5.tar.bz2
fix #4169: update trackable log after logging
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/LogTrackableActivity.java17
-rw-r--r--main/src/cgeo/geocaching/TrackableActivity.java16
-rw-r--r--main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java13
3 files changed, 40 insertions, 6 deletions
diff --git a/main/src/cgeo/geocaching/LogTrackableActivity.java b/main/src/cgeo/geocaching/LogTrackableActivity.java
index b16b4f4..cc3a6e6 100644
--- a/main/src/cgeo/geocaching/LogTrackableActivity.java
+++ b/main/src/cgeo/geocaching/LogTrackableActivity.java
@@ -310,6 +310,9 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat
tweetCheck.isChecked() && tweetBox.getVisibility() == View.VISIBLE) {
Twitter.postTweetTrackable(geocode, new LogEntry(0, typeSelected, log));
}
+ if (status == StatusCode.NO_ERROR) {
+ addLocalTrackableLog(log);
+ }
return status;
} catch (final Exception e) {
@@ -319,6 +322,20 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat
return StatusCode.LOG_POST_ERROR;
}
+ /**
+ * Adds the new log to the list of log entries for this trackable to be able to show it in the trackable activity.
+ *
+ *
+ * @param logText
+ */
+ private void addLocalTrackableLog(final String logText) {
+ final LogEntry logEntry = new LogEntry(Calendar.getInstance().getTimeInMillis(), typeSelected, logText);
+ final ArrayList<LogEntry> modifiedLogs = new ArrayList<>(trackable.getLogs());
+ modifiedLogs.add(0, logEntry);
+ trackable.setLogs(modifiedLogs);
+ DataStore.saveTrackable(trackable);
+ }
+
public static void startActivity(final Context context, final Trackable trackable) {
final Intent logTouchIntent = new Intent(context, LogTrackableActivity.class);
logTouchIntent.putExtra(Intents.EXTRA_GEOCODE, trackable.getGeocode());
diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java
index cd34d7f..eacbc75 100644
--- a/main/src/cgeo/geocaching/TrackableActivity.java
+++ b/main/src/cgeo/geocaching/TrackableActivity.java
@@ -342,7 +342,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
case DETAILS:
return new DetailsViewCreator();
case LOGS:
- return new TrackableLogsViewCreator(this, trackable);
+ return new TrackableLogsViewCreator(this);
}
throw new IllegalStateException(); // cannot happen as long as switch case is enum complete
}
@@ -594,4 +594,18 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi
return false;
}
+ @Override
+ protected void onResume() {
+ super.onResume();
+ // refresh the logs view after coming back from logging a trackable
+ if (trackable != null) {
+ final Trackable updatedTrackable = DataStore.loadTrackable(trackable.getGeocode());
+ trackable.setLogs(updatedTrackable.getLogs());
+ reinitializeViewPager();
+ }
+ }
+
+ public Trackable getTrackable() {
+ return trackable;
+ }
}
diff --git a/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java b/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java
index 300f510..24c8871 100644
--- a/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java
+++ b/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java
@@ -15,14 +15,16 @@ import java.util.List;
public class TrackableLogsViewCreator extends LogsViewCreator {
- private final Trackable trackable;
+ private Trackable trackable;
+ private final TrackableActivity trackableActivity;
/**
* @param trackableActivity
*/
- public TrackableLogsViewCreator(TrackableActivity trackableActivity, final Trackable trackable) {
+ public TrackableLogsViewCreator(final TrackableActivity trackableActivity) {
super(trackableActivity);
- this.trackable = trackable;
+ this.trackableActivity = trackableActivity;
+ trackable = trackableActivity.getTrackable();
}
@Override
@@ -32,6 +34,7 @@ public class TrackableLogsViewCreator extends LogsViewCreator {
@Override
protected List<LogEntry> getLogs() {
+ trackable = trackableActivity.getTrackable();
return trackable.getLogs();
}
@@ -41,7 +44,7 @@ public class TrackableLogsViewCreator extends LogsViewCreator {
}
@Override
- protected void fillCountOrLocation(LogViewHolder holder, final LogEntry log) {
+ protected void fillCountOrLocation(final LogViewHolder holder, final LogEntry log) {
if (StringUtils.isBlank(log.cacheName)) {
holder.countOrLocation.setVisibility(View.GONE);
} else {
@@ -50,7 +53,7 @@ public class TrackableLogsViewCreator extends LogsViewCreator {
final String cacheName = log.cacheName;
holder.countOrLocation.setOnClickListener(new View.OnClickListener() {
@Override
- public void onClick(View arg0) {
+ public void onClick(final View arg0) {
CacheDetailActivity.startActivityGuid(activity, cacheGuid, Html.fromHtml(cacheName).toString());
}
});