diff options
Diffstat (limited to 'main/src/cgeo/geocaching/LogTrackableActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/LogTrackableActivity.java | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/main/src/cgeo/geocaching/LogTrackableActivity.java b/main/src/cgeo/geocaching/LogTrackableActivity.java index 26f7c84..47fc4c3 100644 --- a/main/src/cgeo/geocaching/LogTrackableActivity.java +++ b/main/src/cgeo/geocaching/LogTrackableActivity.java @@ -3,6 +3,7 @@ package cgeo.geocaching; import butterknife.ButterKnife; import butterknife.InjectView; +import cgeo.geocaching.activity.Keyboard; import cgeo.geocaching.connector.gc.GCLogin; import cgeo.geocaching.connector.gc.GCParser; import cgeo.geocaching.enumerations.LogType; @@ -15,7 +16,9 @@ import cgeo.geocaching.ui.dialog.DateDialog; import cgeo.geocaching.ui.dialog.Dialogs; import cgeo.geocaching.utils.Formatter; import cgeo.geocaching.utils.Log; +import cgeo.geocaching.utils.LogTemplateProvider; import cgeo.geocaching.utils.LogTemplateProvider.LogContext; +import cgeo.geocaching.utils.LogTemplateProvider.LogTemplate; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -28,6 +31,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.ContextMenu; +import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; @@ -146,6 +150,17 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat } init(); + requestKeyboardForLogging(); + } + + @Override + protected void requestKeyboardForLogging() { + if (StringUtils.isBlank(trackingEditText.getText())) { + new Keyboard(this).show(trackingEditText); + } + else { + super.requestKeyboardForLogging(); + } } @Override @@ -309,6 +324,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) { @@ -318,12 +336,26 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat return StatusCode.LOG_POST_ERROR; } - public static void startActivity(final Context context, final Trackable trackable) { + /** + * 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 Intent getIntent(final Context context, final Trackable trackable) { final Intent logTouchIntent = new Intent(context, LogTrackableActivity.class); logTouchIntent.putExtra(Intents.EXTRA_GEOCODE, trackable.getGeocode()); logTouchIntent.putExtra(Intents.EXTRA_GUID, trackable.getGuid()); logTouchIntent.putExtra(Intents.EXTRA_TRACKING_CODE, trackable.getTrackingcode()); - context.startActivity(logTouchIntent); + return logTouchIntent; } @Override @@ -360,4 +392,15 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat } } + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + final boolean result = super.onCreateOptionsMenu(menu); + for (final LogTemplate template : LogTemplateProvider.getTemplatesWithoutSignature()) { + if (template.getTemplateString().equals("NUMBER")) { + menu.findItem(R.id.menu_templates).getSubMenu().removeItem(template.getItemId()); + } + } + return result; + } + } |
