aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/ui/logs
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2015-02-15 13:29:06 +0100
committerBananeweizen <bananeweizen@gmx.de>2015-02-15 13:29:06 +0100
commitecce9bc407f87027dd3c1d7b0e10ac74cf54c3bd (patch)
treefa0b20848459437d4ec206b1911a56e82a6ffb85 /main/src/cgeo/geocaching/ui/logs
parentffb66061848fdf78b1cae3452e24f74228ac5d6a (diff)
downloadcgeo-ecce9bc407f87027dd3c1d7b0e10ac74cf54c3bd.zip
cgeo-ecce9bc407f87027dd3c1d7b0e10ac74cf54c3bd.tar.gz
cgeo-ecce9bc407f87027dd3c1d7b0e10ac74cf54c3bd.tar.bz2
fix #4679: show stored log as first in logbook
Diffstat (limited to 'main/src/cgeo/geocaching/ui/logs')
-rw-r--r--main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java42
-rw-r--r--main/src/cgeo/geocaching/ui/logs/EditOfflineLogListener.java25
2 files changed, 57 insertions, 10 deletions
diff --git a/main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java b/main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java
index 6855aab..e52003d 100644
--- a/main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java
+++ b/main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java
@@ -2,6 +2,7 @@ package cgeo.geocaching.ui.logs;
import cgeo.geocaching.CacheDetailActivity;
import cgeo.geocaching.CgeoApplication;
+import cgeo.geocaching.DataStore;
import cgeo.geocaching.Geocache;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
@@ -24,27 +25,33 @@ import java.util.Map.Entry;
public class CacheLogsViewCreator extends LogsViewCreator {
private final boolean allLogs;
private final Resources res = CgeoApplication.getInstance().getResources();
+ private final CacheDetailActivity cacheDetailActivity;
public CacheLogsViewCreator(final CacheDetailActivity cacheDetailActivity, final boolean allLogs) {
super(cacheDetailActivity);
+ this.cacheDetailActivity = cacheDetailActivity;
this.allLogs = allLogs;
}
- /**
- * May return null!
- *
- */
private Geocache getCache() {
- if (this.activity instanceof CacheDetailActivity) {
- final CacheDetailActivity details = (CacheDetailActivity) this.activity;
- return details.getCache();
- }
- return null;
+ return cacheDetailActivity.getCache();
}
@Override
protected List<LogEntry> getLogs() {
- return allLogs ? getCache().getLogs() : getCache().getFriendsLogs();
+ final Geocache cache = getCache();
+ final List<LogEntry> logs = allLogs ? cache.getLogs() : cache.getFriendsLogs();
+ return addOwnOfflineLog(cache, logs);
+ }
+
+ private List<LogEntry> addOwnOfflineLog(final Geocache cache, final List<LogEntry> logsIn) {
+ final LogEntry log = DataStore.loadLogOffline(cache.getGeocode());
+ final ArrayList<LogEntry> logs = new ArrayList<>(logsIn);
+ if (log != null) {
+ log.author = res.getString(R.string.log_your_saved_log);
+ logs.add(0, log);
+ }
+ return logs;
}
@Override
@@ -94,6 +101,21 @@ public class CacheLogsViewCreator extends LogsViewCreator {
}
@Override
+ protected void fillViewHolder(final View convertView, final LogViewHolder holder, final LogEntry log) {
+ super.fillViewHolder(convertView, holder, log);
+ if (null == convertView) {
+ if (isOfflineLog(log)) {
+ holder.author.setOnClickListener(new EditOfflineLogListener(getCache(), cacheDetailActivity));
+ holder.text.setOnClickListener(new EditOfflineLogListener(getCache(), cacheDetailActivity));
+ }
+ }
+ }
+
+ private boolean isOfflineLog(final LogEntry log) {
+ return log.author.equals(activity.getString(R.string.log_your_saved_log));
+ }
+
+ @Override
protected boolean isValid() {
return getCache() != null;
}
diff --git a/main/src/cgeo/geocaching/ui/logs/EditOfflineLogListener.java b/main/src/cgeo/geocaching/ui/logs/EditOfflineLogListener.java
new file mode 100644
index 0000000..2e0f154
--- /dev/null
+++ b/main/src/cgeo/geocaching/ui/logs/EditOfflineLogListener.java
@@ -0,0 +1,25 @@
+package cgeo.geocaching.ui.logs;
+
+import cgeo.geocaching.CacheDetailActivity;
+import cgeo.geocaching.Geocache;
+
+import android.view.View;
+import android.view.View.OnClickListener;
+
+class EditOfflineLogListener implements OnClickListener {
+
+ private final Geocache cache;
+ private final CacheDetailActivity activity;
+
+ public EditOfflineLogListener(final Geocache cache, final CacheDetailActivity activity) {
+ this.cache = cache;
+ this.activity = activity;
+ }
+
+ @Override
+ public void onClick(final View v) {
+ activity.setNeedsRefresh();
+ cache.logVisit(activity);
+ }
+
+}