27a4fda1 |
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 |