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