170e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell/* 20abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * Copyright (C) 2013 The Android Open Source Project 370e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * 470e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 570e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * you may not use this file except in compliance with the License. 670e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * You may obtain a copy of the License at 770e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * 870e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * http://www.apache.org/licenses/LICENSE-2.0 970e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * 1070e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * Unless required by applicable law or agreed to in writing, software 1170e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * distributed under the License is distributed on an "AS IS" BASIS, 1270e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1370e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * See the License for the specific language governing permissions and 1470e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * limitations under the License. 1570e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell */ 1670e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell 1770e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powellpackage com.android.internal.app; 1870e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell 19d6d0bddee363e0c7fe61f63bd9d9864a71d887d6Adam Powellimport android.app.Dialog; 2070e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powellimport android.app.DialogFragment; 2170e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powellimport android.content.Context; 2270e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powellimport android.os.Bundle; 2370e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powellimport android.view.View; 240abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brownimport android.view.View.OnClickListener; 2570e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell 2670e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell/** 270abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * Media route chooser dialog fragment. 280abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * <p> 290abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * Creates a {@link MediaRouteChooserDialog}. The application may subclass 300abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * this dialog fragment to customize the media route chooser dialog. 310abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * </p> 3270e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell * 330abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * TODO: Move this back into the API, as in the support library media router. 3470e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell */ 3570e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powellpublic class MediaRouteChooserDialogFragment extends DialogFragment { 360abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown private final String ARGUMENT_ROUTE_TYPES = "routeTypes"; 37d6d0bddee363e0c7fe61f63bd9d9864a71d887d6Adam Powell 380abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown private View.OnClickListener mExtendedSettingsClickListener; 39d6d0bddee363e0c7fe61f63bd9d9864a71d887d6Adam Powell 400abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown /** 410abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * Creates a media route chooser dialog fragment. 420abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * <p> 430abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * All subclasses of this class must also possess a default constructor. 440abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * </p> 450abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown */ 4670e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell public MediaRouteChooserDialogFragment() { 470abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown setCancelable(true); 480abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown setStyle(STYLE_NORMAL, android.R.style.Theme_DeviceDefault_Dialog); 4970e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell } 5070e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell 510abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown public int getRouteTypes() { 520abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown Bundle args = getArguments(); 530abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown return args != null ? args.getInt(ARGUMENT_ROUTE_TYPES) : 0; 5470e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell } 5570e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell 5670e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell public void setRouteTypes(int types) { 570abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown if (types != getRouteTypes()) { 580abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown Bundle args = getArguments(); 590abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown if (args == null) { 600abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown args = new Bundle(); 6170e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell } 620abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown args.putInt(ARGUMENT_ROUTE_TYPES, types); 630abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown setArguments(args); 6470e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell 650abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown MediaRouteChooserDialog dialog = (MediaRouteChooserDialog)getDialog(); 660abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown if (dialog != null) { 670abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown dialog.setRouteTypes(types); 688e37a85bf3dc39519942698dc90a3951306b934bAdam Powell } 698e37a85bf3dc39519942698dc90a3951306b934bAdam Powell } 7070e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell } 7170e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell 720abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown public void setExtendedSettingsClickListener(View.OnClickListener listener) { 730abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown if (listener != mExtendedSettingsClickListener) { 740abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown mExtendedSettingsClickListener = listener; 758e37a85bf3dc39519942698dc90a3951306b934bAdam Powell 760abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown MediaRouteChooserDialog dialog = (MediaRouteChooserDialog)getDialog(); 770abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown if (dialog != null) { 780abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown dialog.setExtendedSettingsClickListener(listener); 798e37a85bf3dc39519942698dc90a3951306b934bAdam Powell } 808e37a85bf3dc39519942698dc90a3951306b934bAdam Powell } 814599696591f745b3a546197d2ba7e5cfc5562484Adam Powell } 824599696591f745b3a546197d2ba7e5cfc5562484Adam Powell 834599696591f745b3a546197d2ba7e5cfc5562484Adam Powell /** 840abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * Called when the chooser dialog is being created. 850abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * <p> 860abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * Subclasses may override this method to customize the dialog. 870abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown * </p> 884599696591f745b3a546197d2ba7e5cfc5562484Adam Powell */ 890abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown public MediaRouteChooserDialog onCreateChooserDialog( 900abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown Context context, Bundle savedInstanceState) { 910abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown return new MediaRouteChooserDialog(context, getTheme()); 924599696591f745b3a546197d2ba7e5cfc5562484Adam Powell } 934599696591f745b3a546197d2ba7e5cfc5562484Adam Powell 940abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown @Override 950abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown public Dialog onCreateDialog(Bundle savedInstanceState) { 960abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown MediaRouteChooserDialog dialog = onCreateChooserDialog(getActivity(), savedInstanceState); 970abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown dialog.setRouteTypes(getRouteTypes()); 980abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown dialog.setExtendedSettingsClickListener(mExtendedSettingsClickListener); 990abd3a6ce83ed23abe614155e776b600ef2a66c3Jeff Brown return dialog; 10070e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell } 10170e11e50eecfc8f1dfb76316d099e4331ebd28f7Adam Powell} 102