Code drop from //branches/cupcake/...@124589
[android/platform/packages/apps/Calendar.git] / src / com / android / calendar / MenuHelper.java
1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.android.calendar;
18
19 import static android.provider.Calendar.EVENT_BEGIN_TIME;
20 import static android.provider.Calendar.EVENT_END_TIME;
21 import android.app.Activity;
22 import android.content.Intent;
23 import android.text.format.DateUtils;
24 import android.view.Menu;
25 import android.view.MenuItem;
26
27 public class MenuHelper {
28     private static final int MENU_GROUP_AGENDA = 1;
29     private static final int MENU_GROUP_DAY = 2;
30     private static final int MENU_GROUP_WEEK = 3;
31     private static final int MENU_GROUP_MONTH = 4;
32     private static final int MENU_GROUP_EVENT_CREATE = 5;
33     private static final int MENU_GROUP_TODAY = 6;
34     private static final int MENU_GROUP_SELECT_CALENDARS = 7;
35     private static final int MENU_GROUP_PREFERENCES = 8;
36
37     public static final int MENU_GOTO_TODAY = 1;
38     public static final int MENU_AGENDA = 2;
39     public static final int MENU_DAY = 3;
40     public static final int MENU_WEEK = 4;
41     public static final int MENU_EVENT_VIEW = 5;
42     public static final int MENU_EVENT_CREATE = 6;
43     public static final int MENU_EVENT_EDIT = 7;
44     public static final int MENU_EVENT_DELETE = 8;
45     public static final int MENU_MONTH = 9;
46     public static final int MENU_SELECT_CALENDARS = 10;
47     public static final int MENU_PREFERENCES = 11;
48     
49     public static void onPrepareOptionsMenu(Activity activity, Menu menu) {
50         
51         if (activity instanceof AgendaActivity) {
52             menu.setGroupVisible(MENU_GROUP_AGENDA, false);
53             menu.setGroupEnabled(MENU_GROUP_AGENDA, false);
54         } else {
55             menu.setGroupVisible(MENU_GROUP_AGENDA, true);
56             menu.setGroupEnabled(MENU_GROUP_AGENDA, true);
57         }
58         
59         if (activity instanceof DayActivity) {
60             menu.setGroupVisible(MENU_GROUP_DAY, false);
61             menu.setGroupEnabled(MENU_GROUP_DAY, false);
62         } else {
63             menu.setGroupVisible(MENU_GROUP_DAY, true);
64             menu.setGroupEnabled(MENU_GROUP_DAY, true);
65         }
66         
67         if (activity instanceof WeekActivity) {
68             menu.setGroupVisible(MENU_GROUP_WEEK, false);
69             menu.setGroupEnabled(MENU_GROUP_WEEK, false);
70         } else {
71             menu.setGroupVisible(MENU_GROUP_WEEK, true);
72             menu.setGroupEnabled(MENU_GROUP_WEEK, true);
73         }
74         
75         if (activity instanceof MonthActivity) {
76             menu.setGroupVisible(MENU_GROUP_MONTH, false);
77             menu.setGroupEnabled(MENU_GROUP_MONTH, false);
78         } else {
79             menu.setGroupVisible(MENU_GROUP_MONTH, true);
80             menu.setGroupEnabled(MENU_GROUP_MONTH, true);
81         }
82         
83         if (activity instanceof EventInfoActivity) {
84             menu.setGroupVisible(MENU_GROUP_TODAY, false);
85             menu.setGroupEnabled(MENU_GROUP_TODAY, false);
86         } else {
87             menu.setGroupVisible(MENU_GROUP_TODAY, true);
88             menu.setGroupEnabled(MENU_GROUP_TODAY, true);
89         }
90     }
91
92     public static boolean onCreateOptionsMenu(Menu menu) {
93
94         MenuItem item;
95         item = menu.add(MENU_GROUP_AGENDA, MENU_AGENDA, 0, R.string.agenda_view);
96         item.setIcon(android.R.drawable.ic_menu_agenda);
97         item.setAlphabeticShortcut('a');
98         
99         item = menu.add(MENU_GROUP_DAY, MENU_DAY, 0, R.string.day_view);
100         item.setIcon(android.R.drawable.ic_menu_day);
101         item.setAlphabeticShortcut('d');
102         
103         item = menu.add(MENU_GROUP_WEEK, MENU_WEEK, 0, R.string.week_view);
104         item.setIcon(android.R.drawable.ic_menu_week);
105         item.setAlphabeticShortcut('w');
106         
107         item = menu.add(MENU_GROUP_MONTH, MENU_MONTH, 0, R.string.month_view);
108         item.setIcon(android.R.drawable.ic_menu_month);
109         item.setAlphabeticShortcut('m');
110         
111         item = menu.add(MENU_GROUP_EVENT_CREATE, MENU_EVENT_CREATE, 0, R.string.event_create);
112         item.setIcon(android.R.drawable.ic_menu_add);
113         item.setAlphabeticShortcut('n');
114         
115         item = menu.add(MENU_GROUP_TODAY, MENU_GOTO_TODAY, 0, R.string.goto_today);
116         item.setIcon(android.R.drawable.ic_menu_today);
117         item.setAlphabeticShortcut('t');
118         
119         item = menu.add(MENU_GROUP_SELECT_CALENDARS, MENU_SELECT_CALENDARS,
120                 0, R.string.menu_select_calendars);
121         item.setIcon(android.R.drawable.ic_menu_manage);
122         
123         item = menu.add(MENU_GROUP_PREFERENCES, MENU_PREFERENCES, 0, R.string.menu_preferences);
124         item.setIcon(android.R.drawable.ic_menu_preferences);
125         item.setAlphabeticShortcut('p');
126
127         return true;
128     }
129
130     public static boolean onOptionsItemSelected(Activity activity, MenuItem item, Navigator nav) {
131         switch (item.getItemId()) {
132         case MENU_SELECT_CALENDARS: {
133             Intent intent = new Intent(Intent.ACTION_VIEW);
134             intent.setClass(activity, SelectCalendarsActivity.class);
135             activity.startActivity(intent);
136             return true;
137         }
138         case MENU_GOTO_TODAY:
139             nav.goToToday();
140             return true;
141         case MENU_PREFERENCES:
142             switchTo(activity, CalendarPreferenceActivity.class.getName(), nav.getSelectedTime());
143             return true;
144         case MENU_AGENDA:
145             switchTo(activity, AgendaActivity.class.getName(), nav.getSelectedTime());
146             activity.finish();
147             return true;
148         case MENU_DAY:
149             switchTo(activity, DayActivity.class.getName(), nav.getSelectedTime());
150             activity.finish();
151             return true;
152         case MENU_WEEK:
153             switchTo(activity, WeekActivity.class.getName(), nav.getSelectedTime());
154             activity.finish();
155             return true;
156         case MENU_MONTH:
157             switchTo(activity, MonthActivity.class.getName(), nav.getSelectedTime());
158             activity.finish();
159             return true;
160         case MENU_EVENT_CREATE: {
161             long startMillis = nav.getSelectedTime();
162             long endMillis = startMillis + DateUtils.HOUR_IN_MILLIS;
163             Intent intent = new Intent(Intent.ACTION_EDIT);
164             intent.setClassName(activity, EditEvent.class.getName());
165             intent.putExtra(EVENT_BEGIN_TIME, startMillis);
166             intent.putExtra(EVENT_END_TIME, endMillis);
167             intent.putExtra(EditEvent.EVENT_ALL_DAY, nav.getAllDay());
168             activity.startActivity(intent);
169             return true;
170         }
171         }
172         return false;
173     }
174     
175     /* package */ static void switchTo(Activity activity, String className, long startMillis) {
176         Intent intent = new Intent(Intent.ACTION_VIEW);
177         intent.setClassName(activity, className);
178         intent.putExtra(EVENT_BEGIN_TIME, startMillis);
179         activity.startActivity(intent);
180     }
181 }