/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.car.usb.handler; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.preference.Preference; /** * Setting preference used for USB devices. */ public final class UsbDevicePreference extends Preference implements Preference.OnPreferenceClickListener { /** * Callbacks to handle preference changes. */ public interface UsbDevicePreferenceCallback { /** Preference deleted */ void onUsbDevicePreferenceDelete(Preference preference, UsbDeviceSettings settings); } private final UsbDeviceSettings mUsbDeviceSettings; private final UsbDevicePreferenceCallback mCallback; public UsbDevicePreference(Context context, UsbDeviceSettings usbDeviceSettings, UsbDevicePreferenceCallback callback) { super(context); mCallback = callback; mUsbDeviceSettings = usbDeviceSettings; setTitle(usbDeviceSettings.getDeviceName()); if (usbDeviceSettings.getHandler() != null) { setSummary(usbDeviceSettings.getHandler().flattenToShortString()); } setOnPreferenceClickListener(this); } @Override public boolean onPreferenceClick(final Preference preference) { new AlertDialog.Builder(getContext()) .setTitle(R.string.usb_pref_delete_title) .setMessage(String.format( getContext().getResources().getString(R.string.usb_pref_delete_message), mUsbDeviceSettings.getDeviceName())) .setIcon(android.R.drawable.ic_dialog_alert) .setPositiveButton(R.string.usb_pref_delete_yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { mCallback.onUsbDevicePreferenceDelete( preference, mUsbDeviceSettings); }}) .setNegativeButton(R.string.usb_pref_delete_cancel, null) .show(); return true; } }