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