merge in OI distribution
[android_pandora.git] / apps / oi-filemanager / FileManager / src / org / openintents / filemanager / DistributionLibrary.java
1 package org.openintents.filemanager;\r
2 \r
3 import android.app.Activity;\r
4 import android.app.Dialog;\r
5 import android.view.Menu;\r
6 import android.view.MenuItem;\r
7 \r
8 public class DistributionLibrary {\r
9 \r
10         public static final int OFFSET_ABOUT = 0;\r
11         public static final int OFFSET_UPDATE = 1;\r
12         \r
13         /** Number of menu IDs that should be reserved\r
14          * for DistributionLibrary.\r
15          */\r
16         public static final int MENU_COUNT = 2;\r
17         public static final int DIALOG_COUNT = MENU_COUNT;\r
18         \r
19         \r
20         Activity mActivity;\r
21         int mFirstMenuId = 0;\r
22         int mFirstDialogId = 0;\r
23         \r
24         public DistributionLibrary(Activity activity, int firstMenuId, int firstDialogId) {\r
25                 mActivity = activity;\r
26                 mFirstMenuId = firstMenuId;\r
27                 mFirstDialogId = firstDialogId;\r
28         }\r
29         \r
30         public void setFirst(int firstMenuId, int firstDialogId) {\r
31                 mFirstMenuId = firstMenuId;\r
32                 mFirstDialogId = firstDialogId;\r
33         }\r
34         \r
35         /**\r
36          * Typical usage:\r
37          * Put this code in the beginning of onCreate().\r
38          * <pre>\r
39          * if (DistributionLibrary.showEulaOrNewVersion(this)) {\r
40             return;\r
41        }\r
42          * </pre>\r
43          * \r
44          * If one of the two activities is shown, they make\r
45          * sure that the calling intent is called again afterwards.\r
46          * \r
47          * @param activity\r
48          * @return true if one of the dialogs is being shown.\r
49          *         In this case, onCreate() should be aborted by\r
50          *         returning.\r
51          */\r
52         public boolean showEulaOrNewVersion() {\r
53                 return EulaOrNewVersion.showEula(mActivity) \r
54                         || EulaOrNewVersion.showNewVersion(mActivity);\r
55         }\r
56         \r
57         public void onCreateOptionsMenu(Menu menu) {\r
58                 // Remove items first so that they don't appear twice:\r
59                 menu.removeItem(mFirstMenuId + OFFSET_UPDATE);\r
60                 menu.removeItem(mFirstMenuId + OFFSET_ABOUT);\r
61                 \r
62                 if (UpdateDialog.isUpdateMenuNecessary(mActivity)) {\r
63                         menu.add(0, mFirstMenuId + OFFSET_UPDATE, 0, R.string.oi_distribution_menu_update).setIcon(\r
64                                         android.R.drawable.ic_menu_info_details).setShortcut('9', 'u');\r
65                 }\r
66                 menu.add(0, mFirstMenuId + OFFSET_ABOUT, 0, R.string.oi_distribution_about).setIcon(\r
67                                 android.R.drawable.ic_menu_info_details).setShortcut('0', 'a');\r
68         }\r
69         \r
70         public boolean onOptionsItemSelected(MenuItem item) {\r
71                 int id = item.getItemId();\r
72                 switch (id - mFirstMenuId) {\r
73                 case OFFSET_UPDATE:\r
74                         mActivity.showDialog(mFirstDialogId + OFFSET_UPDATE);\r
75                         return true;\r
76                 case OFFSET_ABOUT:\r
77                         AboutDialog.showDialogOrStartActivity(mActivity, \r
78                                         mFirstDialogId + OFFSET_ABOUT);\r
79                         return true;\r
80                 }\r
81                 return false;\r
82         }\r
83 \r
84         public Dialog onCreateDialog(int id) {\r
85                 switch (id - mFirstDialogId) {\r
86                 case OFFSET_ABOUT:\r
87                         return new AboutDialog(mActivity);\r
88                 case OFFSET_UPDATE:\r
89                         return new UpdateDialog(mActivity);\r
90                 }\r
91                 return null;\r
92         }\r
93         \r
94         public void onPrepareDialog(int id, Dialog dialog) {\r
95                 switch (id - mFirstDialogId) {\r
96                 case OFFSET_ABOUT:\r
97                         AboutDialog.onPrepareDialog(mActivity, dialog);\r
98                         break;\r
99                 }\r
100         }\r
101 }\r