1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package android.car.usb.handler; 17 18 import android.app.AlertDialog; 19 import android.content.Context; 20 import android.content.DialogInterface; 21 import android.preference.Preference; 22 23 /** 24 * Setting preference used for USB devices. 25 */ 26 public final class UsbDevicePreference extends Preference 27 implements Preference.OnPreferenceClickListener { 28 29 /** 30 * Callbacks to handle preference changes. 31 */ 32 public interface UsbDevicePreferenceCallback { 33 /** Preference deleted */ onUsbDevicePreferenceDelete(Preference preference, UsbDeviceSettings settings)34 void onUsbDevicePreferenceDelete(Preference preference, UsbDeviceSettings settings); 35 } 36 37 private final UsbDeviceSettings mUsbDeviceSettings; 38 private final UsbDevicePreferenceCallback mCallback; 39 UsbDevicePreference(Context context, UsbDeviceSettings usbDeviceSettings, UsbDevicePreferenceCallback callback)40 public UsbDevicePreference(Context context, UsbDeviceSettings usbDeviceSettings, 41 UsbDevicePreferenceCallback callback) { 42 super(context); 43 mCallback = callback; 44 mUsbDeviceSettings = usbDeviceSettings; 45 setTitle(usbDeviceSettings.getDeviceName()); 46 if (usbDeviceSettings.getHandler() != null) { 47 setSummary(usbDeviceSettings.getHandler().flattenToShortString()); 48 } 49 setOnPreferenceClickListener(this); 50 } 51 52 @Override onPreferenceClick(final Preference preference)53 public boolean onPreferenceClick(final Preference preference) { 54 new AlertDialog.Builder(getContext()) 55 .setTitle(R.string.usb_pref_delete_title) 56 .setMessage(String.format( 57 getContext().getResources().getString(R.string.usb_pref_delete_message), 58 mUsbDeviceSettings.getDeviceName())) 59 .setIcon(android.R.drawable.ic_dialog_alert) 60 .setPositiveButton(R.string.usb_pref_delete_yes, 61 new DialogInterface.OnClickListener() { 62 @Override 63 public void onClick(DialogInterface dialog, int whichButton) { 64 mCallback.onUsbDevicePreferenceDelete( 65 preference, mUsbDeviceSettings); 66 }}) 67 .setNegativeButton(R.string.usb_pref_delete_cancel, null) 68 .show(); 69 return true; 70 } 71 } 72