From 3609dc675bd4579f933275cd18769c502c1721de Mon Sep 17 00:00:00 2001 From: Bananeweizen Date: Mon, 6 Oct 2014 19:52:18 +0200 Subject: fix #4400: Insert last log text --- main/res/menu/abstract_logging_activity.xml | 5 +++++ main/res/values/changelog_master.xml | 1 + main/res/values/preference_keys.xml | 2 ++ main/res/values/strings.xml | 1 + main/src/cgeo/geocaching/AbstractLoggingActivity.java | 17 +++++++++++++++++ main/src/cgeo/geocaching/LogCacheActivity.java | 7 +++++++ main/src/cgeo/geocaching/LogTrackableActivity.java | 6 ++++++ main/src/cgeo/geocaching/settings/Settings.java | 16 ++++++++++++++++ 8 files changed, 55 insertions(+) diff --git a/main/res/menu/abstract_logging_activity.xml b/main/res/menu/abstract_logging_activity.xml index aeb6720..9c91399 100644 --- a/main/res/menu/abstract_logging_activity.xml +++ b/main/res/menu/abstract_logging_activity.xml @@ -32,6 +32,11 @@ + + changelog_last_checksum caches_history hardware_acceleration2 + last_cache_log + last_trackable_log diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index f411cc4..c7f458a 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -92,6 +92,7 @@ Clear Loading Log Page… Add + Repeat last log No rating Poor Fairly poor diff --git a/main/src/cgeo/geocaching/AbstractLoggingActivity.java b/main/src/cgeo/geocaching/AbstractLoggingActivity.java index 15e8848..de1c047 100644 --- a/main/src/cgeo/geocaching/AbstractLoggingActivity.java +++ b/main/src/cgeo/geocaching/AbstractLoggingActivity.java @@ -12,6 +12,8 @@ import cgeo.geocaching.utils.LogTemplateProvider; import cgeo.geocaching.utils.LogTemplateProvider.LogContext; import cgeo.geocaching.utils.LogTemplateProvider.LogTemplate; +import org.apache.commons.lang3.StringUtils; + import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; @@ -56,6 +58,10 @@ public abstract class AbstractLoggingActivity extends AbstractActionBarActivity @Override public boolean onOptionsItemSelected(final MenuItem item) { final int id = item.getItemId(); + if (id == R.id.menu_repeat_last) { + replaceLog(getLastLog()); + return true; + } final LogTemplate template = LogTemplateProvider.getTemplate(id); if (template != null) { @@ -72,6 +78,11 @@ public abstract class AbstractLoggingActivity extends AbstractActionBarActivity return super.onOptionsItemSelected(item); } + /** + * @return the last log text used with this logging activity + */ + protected abstract String getLastLog(); + protected abstract LogContext getLogContext(); protected final void insertIntoLog(final String newText, final boolean moveCursor) { @@ -79,6 +90,12 @@ public abstract class AbstractLoggingActivity extends AbstractActionBarActivity ActivityMixin.insertAtPosition(log, newText, moveCursor); } + private final void replaceLog(final String newText) { + final EditText log = (EditText) findViewById(R.id.log); + log.setText(StringUtils.EMPTY); + insertIntoLog(newText, true); + } + protected void requestKeyboardForLogging() { new Keyboard(this).show(findViewById(R.id.log)); } diff --git a/main/src/cgeo/geocaching/LogCacheActivity.java b/main/src/cgeo/geocaching/LogCacheActivity.java index 3558b3c..6cba23a 100644 --- a/main/src/cgeo/geocaching/LogCacheActivity.java +++ b/main/src/cgeo/geocaching/LogCacheActivity.java @@ -490,6 +490,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia // again will be easy using "Clear" while retyping the text may not be. if (force || (StringUtils.isNotEmpty(log) && !StringUtils.equals(log, text))) { cache.logOffline(this, log, date, typeSelected); + Settings.setLastCacheLog(log); } text = log; } @@ -645,6 +646,7 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia R.string.log_saving : R.string.log_saving_and_uploading); new Poster(this, message).execute(currentLogText(), currentLogPassword()); + Settings.setLastCacheLog(currentLogText()); } @Override @@ -670,4 +672,9 @@ public class LogCacheActivity extends AbstractLoggingActivity implements DateDia logVisitIntent.putExtra(Intents.EXTRA_GEOCODE, geocode); return logVisitIntent; } + + @Override + protected String getLastLog() { + return Settings.getLastCacheLog(); + } } diff --git a/main/src/cgeo/geocaching/LogTrackableActivity.java b/main/src/cgeo/geocaching/LogTrackableActivity.java index 47fc4c3..fd84173 100644 --- a/main/src/cgeo/geocaching/LogTrackableActivity.java +++ b/main/src/cgeo/geocaching/LogTrackableActivity.java @@ -387,6 +387,7 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat final String tracking = trackingEditText.getText().toString(); final String log = logEditText.getText().toString(); new PostLogThread(postLogHandler, tracking, log).start(); + Settings.setLastTrackableLog(log); } else { showToast(res.getString(R.string.err_log_load_data_still)); } @@ -403,4 +404,9 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat return result; } + @Override + protected String getLastLog() { + return Settings.getLastTrackableLog(); + } + } diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index aeaf078..3f9c0a5 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -1113,4 +1113,20 @@ public class Settings { public static boolean setUseHardwareAcceleration(final boolean useHardwareAcceleration) { return putBoolean(R.string.pref_hardware_acceleration, useHardwareAcceleration); } + + public static String getLastCacheLog() { + return getString(R.string.pref_last_cache_log, StringUtils.EMPTY); + } + + public static void setLastCacheLog(final String log) { + putString(R.string.pref_last_cache_log, log); + } + + public static String getLastTrackableLog() { + return getString(R.string.pref_last_trackable_log, StringUtils.EMPTY); + } + + public static void setLastTrackableLog(final String log) { + putString(R.string.pref_last_trackable_log, log); + } } -- cgit v1.1