diff options
| -rw-r--r-- | main/res/values/changelog_master.xml | 8 | ||||
| -rw-r--r-- | main/res/values/strings.xml | 3 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 4 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/ui/logs/CacheLogsViewCreator.java | 42 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/ui/logs/EditOfflineLogListener.java | 25 |
5 files changed, 68 insertions, 14 deletions
diff --git a/main/res/values/changelog_master.xml b/main/res/values/changelog_master.xml index b20c60c..40ed5a2 100644 --- a/main/res/values/changelog_master.xml +++ b/main/res/values/changelog_master.xml @@ -4,17 +4,19 @@ <string name="changelog_master" translatable="false"> <b>Next feature release:</b>\n · New: Distance and direction shown on map\n - · New: Confirmation on backup/restore\n + · New: Show own saved log first in logbook\n + · New: Show hint in compass and map action bar\n · New: Sort events of same date by time (if recognized from cache description)\n - · New: Show rudimentary details for geocaching.com.au swaggies\n · New: Weekday shown in event lists\n + · New: Show rudimentary details for geocaching.com.au swaggies\n · New: Filter for caches with offline logs\n - · New: Show hint in compass\n · New: Allow export of waypoints without coords to Locus\n + · New: Confirmation on backup/restore\n · Fix: Don\'t allow logs in the future\n · Fix: Allow shortcut creation for All caches list\n · Fix: Some menus not available when invoking map from compass\n · Fix: Do not limit to 10 logs for OC caches\n + · Fix: Recognize more hyperlinks of opencaching caches\n \n </string> </resources> diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 2eecdf1..3990ff6 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -121,7 +121,8 @@ <string name="log_password_title">Log Password:</string> <string name="log_hint_log_password">Enter your log password</string> <string name="log_oc_team_comment">OC Team comment</string> - + <string name="log_your_saved_log">Your saved log</string> + <string-array name="log_image_scales"> <item>No scaling</item> <item>512 px</item> diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 9dc2362..d80431f 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -2187,4 +2187,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc public void cachesAround() { CacheListActivity.startActivityCoordinates(this, cache.getCoords()); } + + public void setNeedsRefresh() { + refreshOnResume = true; + } } 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); + } + +} |
