diff options
Diffstat (limited to 'main/src/cgeo/geocaching/AbstractLoggingActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/AbstractLoggingActivity.java | 17 |
1 files changed, 17 insertions, 0 deletions
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)); } |
