merge in OI distribution
[android_pandora.git] / apps / oi-filemanager / FileManager / src / org / openintents / filemanager / DistributionLibrary.java
diff --git a/apps/oi-filemanager/FileManager/src/org/openintents/filemanager/DistributionLibrary.java b/apps/oi-filemanager/FileManager/src/org/openintents/filemanager/DistributionLibrary.java
new file mode 100644 (file)
index 0000000..fda8748
--- /dev/null
@@ -0,0 +1,101 @@
+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