blob: ab11765973efb69cb59db20b47d74f86fdd78985 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
package cgeo.geocaching;
import cgeo.calendar.CalendarAddon;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.ui.AbstractUIFactory;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
/**
* Shared menu handling for all activities having menu items related to a cache. <br>
* TODO: replace by a fragment
*
*/
public class CacheMenuHandler extends AbstractUIFactory {
/**
* Methods to be implemented by the activity to react to the cache menu selections.
*
*/
protected interface ActivityInterface {
public void navigateTo();
public void showNavigationMenu();
public void cachesAround();
}
public static boolean onMenuItemSelected(MenuItem item, CacheMenuHandler.ActivityInterface activityInterface, Geocache cache) {
assert activityInterface instanceof Activity;
final Activity activity = (Activity) activityInterface;
switch (item.getItemId()) {
case R.id.menu_default_navigation:
activityInterface.navigateTo();
return true;
case R.id.menu_navigate:
activityInterface.showNavigationMenu();
return true;
case R.id.menu_caches_around:
activityInterface.cachesAround();
return true;
case R.id.menu_show_in_browser:
cache.openInBrowser(activity);
return true;
case R.id.menu_share:
cache.shareCache(activity, res);
return true;
case R.id.menu_calendar:
CalendarAddon.addToCalendarWithIntent(activity, cache);
return true;
default:
return false;
}
}
public static void onPrepareOptionsMenu(final Menu menu, final Geocache cache) {
final boolean hasCoords = cache.getCoords() != null;
menu.findItem(R.id.menu_default_navigation).setVisible(hasCoords);
menu.findItem(R.id.menu_navigate).setVisible(hasCoords);
menu.findItem(R.id.menu_caches_around).setVisible(hasCoords && cache.supportsCachesAround());
menu.findItem(R.id.menu_calendar).setVisible(cache.canBeAddedToCalendar());
menu.findItem(R.id.menu_show_in_browser).setVisible(cache.canOpenInBrowser());
menu.findItem(R.id.menu_default_navigation).setTitle(NavigationAppFactory.getDefaultNavigationApplication().getName());
}
public static void addMenuItems(Activity activity, Menu menu, Geocache cache) {
activity.getMenuInflater().inflate(R.menu.cache_options, menu);
onPrepareOptionsMenu(menu, cache);
}
}
|