--- /dev/null
+package org.openintents.filemanager;\r
+\r
+import android.app.Activity;\r
+import android.app.Dialog;\r
+import android.view.Menu;\r
+import android.view.MenuItem;\r
+\r
+public class DistributionLibrary {\r
+\r
+ public static final int OFFSET_ABOUT = 0;\r
+ public static final int OFFSET_UPDATE = 1;\r
+ \r
+ /** Number of menu IDs that should be reserved\r
+ * for DistributionLibrary.\r
+ */\r
+ public static final int MENU_COUNT = 2;\r
+ public static final int DIALOG_COUNT = MENU_COUNT;\r
+ \r
+ \r
+ Activity mActivity;\r
+ int mFirstMenuId = 0;\r
+ int mFirstDialogId = 0;\r
+ \r
+ public DistributionLibrary(Activity activity, int firstMenuId, int firstDialogId) {\r
+ mActivity = activity;\r
+ mFirstMenuId = firstMenuId;\r
+ mFirstDialogId = firstDialogId;\r
+ }\r
+ \r
+ public void setFirst(int firstMenuId, int firstDialogId) {\r
+ mFirstMenuId = firstMenuId;\r
+ mFirstDialogId = firstDialogId;\r
+ }\r
+ \r
+ /**\r
+ * Typical usage:\r
+ * Put this code in the beginning of onCreate().\r
+ * <pre>\r
+ * if (DistributionLibrary.showEulaOrNewVersion(this)) {\r
+ return;\r
+ }\r
+ * </pre>\r
+ * \r
+ * If one of the two activities is shown, they make\r
+ * sure that the calling intent is called again afterwards.\r
+ * \r
+ * @param activity\r
+ * @return true if one of the dialogs is being shown.\r
+ * In this case, onCreate() should be aborted by\r
+ * returning.\r
+ */\r
+ public boolean showEulaOrNewVersion() {\r
+ return EulaOrNewVersion.showEula(mActivity) \r
+ || EulaOrNewVersion.showNewVersion(mActivity);\r
+ }\r
+ \r
+ public void onCreateOptionsMenu(Menu menu) {\r
+ // Remove items first so that they don't appear twice:\r
+ menu.removeItem(mFirstMenuId + OFFSET_UPDATE);\r
+ menu.removeItem(mFirstMenuId + OFFSET_ABOUT);\r
+ \r
+ if (UpdateDialog.isUpdateMenuNecessary(mActivity)) {\r
+ menu.add(0, mFirstMenuId + OFFSET_UPDATE, 0, R.string.oi_distribution_menu_update).setIcon(\r
+ android.R.drawable.ic_menu_info_details).setShortcut('9', 'u');\r
+ }\r
+ menu.add(0, mFirstMenuId + OFFSET_ABOUT, 0, R.string.oi_distribution_about).setIcon(\r
+ android.R.drawable.ic_menu_info_details).setShortcut('0', 'a');\r
+ }\r
+ \r
+ public boolean onOptionsItemSelected(MenuItem item) {\r
+ int id = item.getItemId();\r
+ switch (id - mFirstMenuId) {\r
+ case OFFSET_UPDATE:\r
+ mActivity.showDialog(mFirstDialogId + OFFSET_UPDATE);\r
+ return true;\r
+ case OFFSET_ABOUT:\r
+ AboutDialog.showDialogOrStartActivity(mActivity, \r
+ mFirstDialogId + OFFSET_ABOUT);\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+\r
+ public Dialog onCreateDialog(int id) {\r
+ switch (id - mFirstDialogId) {\r
+ case OFFSET_ABOUT:\r
+ return new AboutDialog(mActivity);\r
+ case OFFSET_UPDATE:\r
+ return new UpdateDialog(mActivity);\r
+ }\r
+ return null;\r
+ }\r
+ \r
+ public void onPrepareDialog(int id, Dialog dialog) {\r
+ switch (id - mFirstDialogId) {\r
+ case OFFSET_ABOUT:\r
+ AboutDialog.onPrepareDialog(mActivity, dialog);\r
+ break;\r
+ }\r
+ }\r
+}\r