12388251fcd8def03a6bbc91382e84db085cf4253Adam Powell/* 22388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * Copyright (C) 2016 The Android Open Source Project 32388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * 42388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 52388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * you may not use this file except in compliance with the License. 62388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * You may obtain a copy of the License at 72388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * 82388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * http://www.apache.org/licenses/LICENSE-2.0 92388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * 102388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * Unless required by applicable law or agreed to in writing, software 112388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * distributed under the License is distributed on an "AS IS" BASIS, 122388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * See the License for the specific language governing permissions and 142388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * limitations under the License. 152388251fcd8def03a6bbc91382e84db085cf4253Adam Powell */ 162388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 172388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 182388251fcd8def03a6bbc91382e84db085cf4253Adam Powellpackage com.android.internal.app; 192388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 202388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.app.AlertDialog.Builder; 212388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.app.Dialog; 222388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.app.DialogFragment; 232388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.content.ComponentName; 242388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.content.DialogInterface; 252388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.content.Intent; 262388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.content.SharedPreferences; 272388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.net.Uri; 282388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.os.Bundle; 292388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport android.provider.Settings; 302388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 312388251fcd8def03a6bbc91382e84db085cf4253Adam Powellimport com.android.internal.R; 322388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 332388251fcd8def03a6bbc91382e84db085cf4253Adam Powell/** 342388251fcd8def03a6bbc91382e84db085cf4253Adam Powell * Shows a dialog with actions to take on a chooser target 352388251fcd8def03a6bbc91382e84db085cf4253Adam Powell */ 362388251fcd8def03a6bbc91382e84db085cf4253Adam Powellpublic class ResolverTargetActionsDialogFragment extends DialogFragment 372388251fcd8def03a6bbc91382e84db085cf4253Adam Powell implements DialogInterface.OnClickListener { 382388251fcd8def03a6bbc91382e84db085cf4253Adam Powell private static final String NAME_KEY = "componentName"; 392388251fcd8def03a6bbc91382e84db085cf4253Adam Powell private static final String PINNED_KEY = "pinned"; 402388251fcd8def03a6bbc91382e84db085cf4253Adam Powell private static final String TITLE_KEY = "title"; 412388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 422388251fcd8def03a6bbc91382e84db085cf4253Adam Powell // Sync with R.array.resolver_target_actions_* resources 432388251fcd8def03a6bbc91382e84db085cf4253Adam Powell private static final int TOGGLE_PIN_INDEX = 0; 442388251fcd8def03a6bbc91382e84db085cf4253Adam Powell private static final int APP_INFO_INDEX = 1; 452388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 462388251fcd8def03a6bbc91382e84db085cf4253Adam Powell public ResolverTargetActionsDialogFragment() { 472388251fcd8def03a6bbc91382e84db085cf4253Adam Powell } 482388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 492388251fcd8def03a6bbc91382e84db085cf4253Adam Powell public ResolverTargetActionsDialogFragment(CharSequence title, ComponentName name, 502388251fcd8def03a6bbc91382e84db085cf4253Adam Powell boolean pinned) { 512388251fcd8def03a6bbc91382e84db085cf4253Adam Powell Bundle args = new Bundle(); 522388251fcd8def03a6bbc91382e84db085cf4253Adam Powell args.putCharSequence(TITLE_KEY, title); 532388251fcd8def03a6bbc91382e84db085cf4253Adam Powell args.putParcelable(NAME_KEY, name); 542388251fcd8def03a6bbc91382e84db085cf4253Adam Powell args.putBoolean(PINNED_KEY, pinned); 552388251fcd8def03a6bbc91382e84db085cf4253Adam Powell setArguments(args); 562388251fcd8def03a6bbc91382e84db085cf4253Adam Powell } 572388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 582388251fcd8def03a6bbc91382e84db085cf4253Adam Powell @Override 592388251fcd8def03a6bbc91382e84db085cf4253Adam Powell public Dialog onCreateDialog(Bundle savedInstanceState) { 602388251fcd8def03a6bbc91382e84db085cf4253Adam Powell final Bundle args = getArguments(); 612388251fcd8def03a6bbc91382e84db085cf4253Adam Powell final int itemRes = args.getBoolean(PINNED_KEY, false) 622388251fcd8def03a6bbc91382e84db085cf4253Adam Powell ? R.array.resolver_target_actions_unpin 632388251fcd8def03a6bbc91382e84db085cf4253Adam Powell : R.array.resolver_target_actions_pin; 642388251fcd8def03a6bbc91382e84db085cf4253Adam Powell return new Builder(getContext()) 652388251fcd8def03a6bbc91382e84db085cf4253Adam Powell .setCancelable(true) 662388251fcd8def03a6bbc91382e84db085cf4253Adam Powell .setItems(itemRes, this) 672388251fcd8def03a6bbc91382e84db085cf4253Adam Powell .setTitle(args.getCharSequence(TITLE_KEY)) 682388251fcd8def03a6bbc91382e84db085cf4253Adam Powell .create(); 692388251fcd8def03a6bbc91382e84db085cf4253Adam Powell } 702388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 712388251fcd8def03a6bbc91382e84db085cf4253Adam Powell @Override 722388251fcd8def03a6bbc91382e84db085cf4253Adam Powell public void onClick(DialogInterface dialog, int which) { 732388251fcd8def03a6bbc91382e84db085cf4253Adam Powell final Bundle args = getArguments(); 742388251fcd8def03a6bbc91382e84db085cf4253Adam Powell ComponentName name = args.getParcelable(NAME_KEY); 752388251fcd8def03a6bbc91382e84db085cf4253Adam Powell switch (which) { 762388251fcd8def03a6bbc91382e84db085cf4253Adam Powell case TOGGLE_PIN_INDEX: 772388251fcd8def03a6bbc91382e84db085cf4253Adam Powell SharedPreferences sp = ChooserActivity.getPinnedSharedPrefs(getContext()); 782388251fcd8def03a6bbc91382e84db085cf4253Adam Powell final String key = name.flattenToString(); 792388251fcd8def03a6bbc91382e84db085cf4253Adam Powell boolean currentVal = sp.getBoolean(name.flattenToString(), false); 802388251fcd8def03a6bbc91382e84db085cf4253Adam Powell if (currentVal) { 812388251fcd8def03a6bbc91382e84db085cf4253Adam Powell sp.edit().remove(key).apply(); 822388251fcd8def03a6bbc91382e84db085cf4253Adam Powell } else { 832388251fcd8def03a6bbc91382e84db085cf4253Adam Powell sp.edit().putBoolean(key, true).apply(); 842388251fcd8def03a6bbc91382e84db085cf4253Adam Powell } 852388251fcd8def03a6bbc91382e84db085cf4253Adam Powell 862388251fcd8def03a6bbc91382e84db085cf4253Adam Powell // Force the chooser to requery and resort things 872388251fcd8def03a6bbc91382e84db085cf4253Adam Powell getActivity().recreate(); 882388251fcd8def03a6bbc91382e84db085cf4253Adam Powell break; 892388251fcd8def03a6bbc91382e84db085cf4253Adam Powell case APP_INFO_INDEX: 902388251fcd8def03a6bbc91382e84db085cf4253Adam Powell Intent in = new Intent().setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) 912388251fcd8def03a6bbc91382e84db085cf4253Adam Powell .setData(Uri.fromParts("package", name.getPackageName(), null)) 922388251fcd8def03a6bbc91382e84db085cf4253Adam Powell .addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); 932388251fcd8def03a6bbc91382e84db085cf4253Adam Powell startActivity(in); 942388251fcd8def03a6bbc91382e84db085cf4253Adam Powell break; 952388251fcd8def03a6bbc91382e84db085cf4253Adam Powell } 962388251fcd8def03a6bbc91382e84db085cf4253Adam Powell dismiss(); 972388251fcd8def03a6bbc91382e84db085cf4253Adam Powell } 982388251fcd8def03a6bbc91382e84db085cf4253Adam Powell} 99