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