merge in OI distribution
[android_pandora.git] / apps / oi-filemanager / FileManager / src / org / openintents / filemanager / DownloadAppDialog.java
diff --git a/apps/oi-filemanager/FileManager/src/org/openintents/filemanager/DownloadAppDialog.java b/apps/oi-filemanager/FileManager/src/org/openintents/filemanager/DownloadAppDialog.java
new file mode 100644 (file)
index 0000000..42e232b
--- /dev/null
@@ -0,0 +1,142 @@
+/* \r
+ * Copyright (C) 2007-2011 OpenIntents.org\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package org.openintents.filemanager;\r
+\r
+import android.app.AlertDialog;\r
+import android.app.Dialog;\r
+import android.content.ActivityNotFoundException;\r
+import android.content.Context;\r
+import android.content.DialogInterface;\r
+import android.content.DialogInterface.OnClickListener;\r
+import android.content.Intent;\r
+import android.net.Uri;\r
+import android.util.Log;\r
+import android.view.View;\r
+import android.widget.Toast;\r
+\r
+/**\r
+ * @version 2009-02-04\r
+ * @version 2011-02-07: Allow for string arguments.\r
+ * @author Peli\r
+ */\r
+public class DownloadAppDialog extends AlertDialog implements OnClickListener {\r
+       private static final String TAG = "StartSaveActivity";\r
+\r
+    Context mContext;\r
+    String mDownloadAppName;\r
+    String mDownloadPackageName;\r
+    String mDownloadWebsite;\r
+    String mMessageText;\r
+    \r
+    boolean mMarketAvailable;\r
+    \r
+    public DownloadAppDialog(Context context) {\r
+        super(context);\r
+        mContext = context;\r
+    }\r
+    \r
+    public DownloadAppDialog(Context context, int message_id, int download_name_id, int download_package_id, int download_website_id) {\r
+        super(context);\r
+        mContext = context;\r
+        set(message_id, download_name_id, download_package_id, download_website_id);\r
+    }\r
+    \r
+    public DownloadAppDialog(Context context, String message, String download_name, String download_package, String download_website) {\r
+        super(context);\r
+        mContext = context;\r
+        set(message, download_name, download_package, download_website);\r
+    }\r
+\r
+       protected void set(int message_id, int download_name_id,\r
+                       int download_package_id, int download_website_id) {\r
+               String message = mContext.getString(message_id);\r
+               String download_name = mContext.getString(download_name_id);\r
+               String download_package = mContext.getString(download_package_id);\r
+               String download_website = mContext.getString(download_website_id);\r
+               set(message, download_name, download_package, download_website);\r
+       }\r
+       \r
+       protected void set(String message, String download_name,\r
+                       String download_package, String download_website) {\r
+        mDownloadAppName = download_name;\r
+        mDownloadPackageName = download_package;\r
+        mDownloadWebsite = download_website;\r
+        \r
+        mMarketAvailable = MarketUtils.isMarketAvailable(mContext, mDownloadPackageName);\r
+        \r
+        StringBuilder sb = new StringBuilder();\r
+        sb.append(message);\r
+        sb.append(" ");\r
+        if (mMarketAvailable) {\r
+               sb.append(mContext.getString(R.string.oi_distribution_download_market_message, \r
+                               mDownloadAppName));\r
+        } else {\r
+               sb.append(mContext.getString(R.string.oi_distribution_download_message, \r
+                               mDownloadAppName));\r
+        }\r
+        mMessageText = sb.toString();\r
+        setMessage(mMessageText);\r
+\r
+        setTitle(mContext.getString(R.string.oi_distribution_download_title,\r
+                       mDownloadAppName));\r
+        \r
+        setButton(mContext.getText(R.string.oi_distribution_download_market), this);\r
+       setButton2(mContext.getText(R.string.oi_distribution_download_web), this);\r
+       setButton3(mContext.getText(android.R.string.cancel), this);\r
+       }\r
+    \r
+       public void onClick(DialogInterface dialog, int which) {\r
+               Intent intent;\r
+               \r
+               if (which == BUTTON1) {\r
+                       intent = MarketUtils.getMarketDownloadIntent(mDownloadPackageName);\r
+                       startSaveActivity(intent);\r
+       } else if (which == BUTTON2) {\r
+               intent  = new Intent(Intent.ACTION_VIEW);\r
+               Uri uri= Uri.parse(mDownloadWebsite);\r
+                       intent.setData(uri);\r
+                       startSaveActivity(intent);\r
+       }\r
+       }\r
+\r
+       public static void onPrepareDialog(Context context, Dialog dialog) {\r
+               DownloadAppDialog d = (DownloadAppDialog) dialog;\r
+               \r
+               boolean has_android_market = MarketUtils.isMarketAvailable(context, d.mDownloadPackageName);\r
+\r
+               dialog.findViewById(android.R.id.button1).setVisibility(\r
+                               has_android_market ? View.VISIBLE : View.GONE);\r
+       }\r
+       \r
+       /**\r
+        * Start an activity but prompt a toast if activity is not found\r
+        * (instead of crashing).\r
+        * \r
+        * @param context\r
+        * @param intent\r
+        */\r
+       public void startSaveActivity(Intent intent) {\r
+               try {\r
+                       mContext.startActivity(intent);\r
+               } catch (ActivityNotFoundException e) {\r
+                       Toast.makeText(mContext,\r
+                                       R.string.oi_distribution_update_error,\r
+                                       Toast.LENGTH_SHORT).show();\r
+                       Log.e(TAG, "Error starting second activity.", e);\r
+               }\r
+       }\r
+}\r