blob: d96c4864cece783c63a7e794e76b564396edb250 [file] [log] [blame]
Axesh R. Ajmera3aae1012014-07-03 16:37:53 -07001/*
2 * Copyright (c) 2014, The Linux Foundation. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution.
13 * * Neither the name of The Linux Foundation nor the names of its
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 *
29 */
30
31package com.android.browser;
32
33import android.app.Activity;
34import android.app.AlertDialog;
35import android.content.ComponentName;
36import android.content.Context;
37import android.content.DialogInterface;
38import android.content.DialogInterface.OnClickListener;
39import android.content.Intent;
40import android.content.pm.ActivityInfo;
41import android.content.pm.ResolveInfo;
42import android.content.pm.PackageManager;
43
44import java.util.ArrayList;
45import java.util.List;
46
47public class UploadDialog extends AppItem {
48 public List<ResolveInfo> apps;
49 private Activity activity;
50 private List<Intent> uploadIntents;
51
52 public UploadDialog(Activity activity) {
53 super(null);
54 this.activity = activity;
55 this.apps = null;
56 }
57
58 public void getUploadableApps(List<Intent> intents) {
59
60 ArrayList<ResolveInfo> uploadApps = new ArrayList<ResolveInfo>();
61
62 PackageManager pm = activity.getPackageManager();
63
64 for (Intent currentIntent: intents) {
65 List<ResolveInfo> appsList = pm.queryIntentActivities(currentIntent,
66 PackageManager.MATCH_DEFAULT_ONLY);
67 for (ResolveInfo res : appsList) {
68 uploadApps.add(res);
69 }
70 }
71
72 this.apps = uploadApps;
73 this.uploadIntents = intents;
74 }
75
76 public void loadView(final UploadHandler uploadHandler) {
77
78 final AppAdapter adapter = new AppAdapter(activity, activity.getPackageManager(),
79 R.layout.app_row, this.apps);
80
81
82 AlertDialog.Builder builderSingle = new AlertDialog.Builder(activity);
83 builderSingle.setIcon(R.mipmap.ic_launcher_browser_swe);
84 builderSingle.setTitle(activity.getString(R.string.choose_upload));
85
86 builderSingle.setAdapter(adapter, new DialogInterface.OnClickListener() {
87 @Override
88 public void onClick(DialogInterface dialog, int position) {
89 dialog.dismiss();
90 Intent chooserIntent = Intent.createChooser(uploadIntents.get(position), "Upload Via");
91 uploadHandler.initiateActivity(chooserIntent);
92 }
93 });
94
95
96 builderSingle.setOnCancelListener(new DialogInterface.OnCancelListener()
97 {
98 @Override
99 public void onCancel(DialogInterface dialog)
100 {
101 uploadHandler.setHandled(false);
102 dialog.dismiss();
103 }
104 });
105
106 builderSingle.show();
107
108 }
109}