Upload Handler.
Change-Id: Ia6ed884ac558f4f5371c227bad992f3efc0feaee
diff --git a/src/com/android/browser/UploadDialog.java b/src/com/android/browser/UploadDialog.java
new file mode 100644
index 0000000..d96c486
--- /dev/null
+++ b/src/com/android/browser/UploadDialog.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+package com.android.browser;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ResolveInfo;
+import android.content.pm.PackageManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UploadDialog extends AppItem {
+ public List<ResolveInfo> apps;
+ private Activity activity;
+ private List<Intent> uploadIntents;
+
+ public UploadDialog(Activity activity) {
+ super(null);
+ this.activity = activity;
+ this.apps = null;
+ }
+
+ public void getUploadableApps(List<Intent> intents) {
+
+ ArrayList<ResolveInfo> uploadApps = new ArrayList<ResolveInfo>();
+
+ PackageManager pm = activity.getPackageManager();
+
+ for (Intent currentIntent: intents) {
+ List<ResolveInfo> appsList = pm.queryIntentActivities(currentIntent,
+ PackageManager.MATCH_DEFAULT_ONLY);
+ for (ResolveInfo res : appsList) {
+ uploadApps.add(res);
+ }
+ }
+
+ this.apps = uploadApps;
+ this.uploadIntents = intents;
+ }
+
+ public void loadView(final UploadHandler uploadHandler) {
+
+ final AppAdapter adapter = new AppAdapter(activity, activity.getPackageManager(),
+ R.layout.app_row, this.apps);
+
+
+ AlertDialog.Builder builderSingle = new AlertDialog.Builder(activity);
+ builderSingle.setIcon(R.mipmap.ic_launcher_browser_swe);
+ builderSingle.setTitle(activity.getString(R.string.choose_upload));
+
+ builderSingle.setAdapter(adapter, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int position) {
+ dialog.dismiss();
+ Intent chooserIntent = Intent.createChooser(uploadIntents.get(position), "Upload Via");
+ uploadHandler.initiateActivity(chooserIntent);
+ }
+ });
+
+
+ builderSingle.setOnCancelListener(new DialogInterface.OnCancelListener()
+ {
+ @Override
+ public void onCancel(DialogInterface dialog)
+ {
+ uploadHandler.setHandled(false);
+ dialog.dismiss();
+ }
+ });
+
+ builderSingle.show();
+
+ }
+}
\ No newline at end of file