diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2014-09-10 22:10:45 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2014-09-10 22:10:45 +0200 |
| commit | a3f82d1f5555f0796b4f574145ce62551a97dff4 (patch) | |
| tree | d44b4e279fd588b54843c0e129fd52a274fa69fc | |
| parent | 96d22a41eda0e260018caa42a75c40584dd7cc88 (diff) | |
| download | cgeo-a3f82d1f5555f0796b4f574145ce62551a97dff4.zip cgeo-a3f82d1f5555f0796b4f574145ce62551a97dff4.tar.gz cgeo-a3f82d1f5555f0796b4f574145ce62551a97dff4.tar.bz2 | |
fix 4340: remove "NUMBER" template from trackable log activity
4 files changed, 93 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/LogTrackableActivity.java b/main/src/cgeo/geocaching/LogTrackableActivity.java index 5c6d0f5..47fc4c3 100644 --- a/main/src/cgeo/geocaching/LogTrackableActivity.java +++ b/main/src/cgeo/geocaching/LogTrackableActivity.java @@ -16,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; @@ -29,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; @@ -347,12 +350,12 @@ public class LogTrackableActivity extends AbstractLoggingActivity implements Dat DataStore.saveTrackable(trackable); } - public static void startActivity(final Context context, final Trackable 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 @@ -389,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; + } + } diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java index 81516c3..a427ced 100644 --- a/main/src/cgeo/geocaching/TrackableActivity.java +++ b/main/src/cgeo/geocaching/TrackableActivity.java @@ -206,7 +206,7 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case R.id.menu_log_touch: - LogTrackableActivity.startActivity(this, trackable); + startActivity(LogTrackableActivity.getIntent(this, trackable)); return true; case R.id.menu_browser_trackable: startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(trackable.getUrl()))); diff --git a/tests/src/cgeo/geocaching/activity/logtrackable/AbstractLogTrackableActivityTest.java b/tests/src/cgeo/geocaching/activity/logtrackable/AbstractLogTrackableActivityTest.java new file mode 100644 index 0000000..e6597dc --- /dev/null +++ b/tests/src/cgeo/geocaching/activity/logtrackable/AbstractLogTrackableActivityTest.java @@ -0,0 +1,32 @@ +package cgeo.geocaching.activity.logtrackable; + +import cgeo.geocaching.DataStore; +import cgeo.geocaching.LogTrackableActivity; +import cgeo.geocaching.Trackable; + +import android.test.ActivityInstrumentationTestCase2; + +public abstract class AbstractLogTrackableActivityTest extends ActivityInstrumentationTestCase2<LogTrackableActivity> { + + private static Trackable trackable; + + public AbstractLogTrackableActivityTest() { + super(LogTrackableActivity.class); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + createTrackable(); + setActivityIntent(LogTrackableActivity.getIntent(getInstrumentation().getContext(), trackable)); + getActivity(); + } + + protected static void createTrackable() { + trackable = new Trackable(); + trackable.setName("Test trackable"); + trackable.setGeocode("TB4D09K"); + DataStore.saveTrackable(trackable); + } + +} diff --git a/tests/src/cgeo/geocaching/activity/logtrackable/LogTrackableActivityTest.java b/tests/src/cgeo/geocaching/activity/logtrackable/LogTrackableActivityTest.java new file mode 100644 index 0000000..c894474 --- /dev/null +++ b/tests/src/cgeo/geocaching/activity/logtrackable/LogTrackableActivityTest.java @@ -0,0 +1,44 @@ +package cgeo.geocaching.activity.logtrackable; + +import static com.google.android.apps.common.testing.ui.espresso.Espresso.onData; +import static com.google.android.apps.common.testing.ui.espresso.Espresso.onView; +import static com.google.android.apps.common.testing.ui.espresso.Espresso.openActionBarOverflowOrOptionsMenu; +import static com.google.android.apps.common.testing.ui.espresso.action.ViewActions.click; +import static com.google.android.apps.common.testing.ui.espresso.assertion.ViewAssertions.doesNotExist; +import static com.google.android.apps.common.testing.ui.espresso.assertion.ViewAssertions.matches; +import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.isDisplayed; +import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.withText; +import static org.hamcrest.Matchers.hasToString; +import static org.hamcrest.Matchers.startsWith; + +import cgeo.geocaching.R; + +public class LogTrackableActivityTest extends AbstractLogTrackableActivityTest { + + public void testInsertNameExists() throws Exception { + openActionBar(); + clickActionBarItem(R.string.log_add); + + onView(withText(getString(R.string.init_signature_template_name))).check(matches(isDisplayed())); + } + + public void testInsertNumberNotExists() throws Exception { + openActionBar(); + clickActionBarItem(R.string.log_add); + + onView(withText(getString(R.string.init_signature_template_number))).check(doesNotExist()); + } + + private void clickActionBarItem(int labelResourceId) { + onData(hasToString(startsWith(getString(labelResourceId)))).perform(click()); + } + + private void openActionBar() { + openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext()); + } + + private String getString(int resId) { + return getActivity().getString(resId); + } + +} |
