From 66c1f301245c8a21bdc84f054b284c42df4ec3fc Mon Sep 17 00:00:00 2001 From: Bananeweizen Date: Sat, 21 Sep 2013 06:36:58 +0200 Subject: refactor waypoint menu to XML resource --- main/src/cgeo/geocaching/CacheDetailActivity.java | 126 +++++++++------------- 1 file changed, 53 insertions(+), 73 deletions(-) (limited to 'main/src') diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index ce20304..f9aae24 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -130,14 +130,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity sortedWaypoints = new ArrayList(cache.getWaypoints()); Collections.sort(sortedWaypoints); - final Waypoint waypoint = sortedWaypoints.get(i); - final int index = cache.getWaypoints().indexOf(waypoint); + selectedWaypoint = sortedWaypoints.get(i); + menu.setHeaderTitle(res.getString(R.string.waypoint)); - if (waypoint.getWaypointType().equals(WaypointType.ORIGINAL)) { - menu.add(CONTEXT_MENU_WAYPOINT_RESET_ORIGINAL_CACHE_COORDINATES, index, 0, R.string.waypoint_reset_cache_coords); - } else { - menu.add(CONTEXT_MENU_WAYPOINT_EDIT, index, 0, R.string.waypoint_edit); - menu.add(CONTEXT_MENU_WAYPOINT_DUPLICATE, index, 0, R.string.waypoint_duplicate); - } - contextMenuWPIndex = index; - if (waypoint.isUserDefined() && !waypoint.getWaypointType().equals(WaypointType.ORIGINAL)) { - menu.add(CONTEXT_MENU_WAYPOINT_DELETE, index, 0, R.string.waypoint_delete); - } - if (waypoint.getCoords() != null) { - menu.add(CONTEXT_MENU_WAYPOINT_DEFAULT_NAVIGATION, index, 0, NavigationAppFactory.getDefaultNavigationApplication().getName()); - menu.add(CONTEXT_MENU_WAYPOINT_NAVIGATE, index, 0, R.string.cache_menu_navigate).setIcon(R.drawable.ic_menu_mapmode); - menu.add(CONTEXT_MENU_WAYPOINT_CACHES_AROUND, index, 0, R.string.cache_menu_around); - } + getMenuInflater().inflate(R.menu.waypoint_options, menu); + final boolean isOriginalWaypoint = selectedWaypoint.getWaypointType().equals(WaypointType.ORIGINAL); + menu.findItem(R.id.menu_waypoint_reset_cache_coords).setVisible(isOriginalWaypoint); + menu.findItem(R.id.menu_waypoint_edit).setVisible(!isOriginalWaypoint); + menu.findItem(R.id.menu_waypoint_duplicate).setVisible(!isOriginalWaypoint); + final boolean userDefined = selectedWaypoint.isUserDefined() && !selectedWaypoint.getWaypointType().equals(WaypointType.ORIGINAL); + menu.findItem(R.id.menu_waypoint_delete).setVisible(userDefined); + final boolean hasCoords = selectedWaypoint.getCoords() != null; + final MenuItem defaultNavigationMenu = menu.findItem(R.id.menu_waypoint_navigate_default); + defaultNavigationMenu.setVisible(hasCoords); + defaultNavigationMenu.setTitle(NavigationAppFactory.getDefaultNavigationApplication().getName()); + menu.findItem(R.id.menu_waypoint_navigate).setVisible(hasCoords); + menu.findItem(R.id.menu_waypoint_caches_around).setVisible(hasCoords); + break; } } @@ -448,6 +441,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity