Home | History | Annotate | Download | only in usb
      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 com.google.android.car.kitchensink.setting.usb;
     17 
     18 import android.app.AlertDialog;
     19 import android.content.Context;
     20 import android.content.DialogInterface;
     21 import android.preference.Preference;
     22 
     23 import com.google.android.car.kitchensink.R;
     24 
     25 /**
     26  * Setting preferabce used for USB devices.
     27  */
     28 public final class UsbDevicePreference extends Preference
     29         implements Preference.OnPreferenceClickListener {
     30 
     31     /**
     32      * Callbacks to handle preference changes.
     33      */
     34     public interface UsbDevicePreferenceCallback {
     35         /** Preference deleted */
     36         void onUsbDevicePreferenceDelete(Preference preference, UsbDeviceSettings settings);
     37     }
     38 
     39     private static final String TAG = UsbDevicePreference.class.getSimpleName();
     40 
     41     private final UsbDeviceSettings mUsbDeviceSettings;
     42     private final UsbDevicePreferenceCallback mCallback;
     43 
     44     public UsbDevicePreference(Context context, UsbDeviceSettings usbDeviceSettings,
     45             UsbDevicePreferenceCallback callback) {
     46         super(context);
     47         mCallback = callback;
     48         mUsbDeviceSettings = usbDeviceSettings;
     49         setTitle(usbDeviceSettings.getDeviceName());
     50         if (usbDeviceSettings.getHandler() != null) {
     51             setSummary(usbDeviceSettings.getHandler().flattenToShortString());
     52         }
     53         setOnPreferenceClickListener(this);
     54     }
     55 
     56     @Override
     57     public boolean onPreferenceClick(final Preference preference) {
     58         new AlertDialog.Builder(getContext())
     59                 .setTitle(R.string.usb_pref_delete_title)
     60                 .setMessage(String.format(
     61                         getContext().getResources().getString(R.string.usb_pref_delete_message),
     62                         mUsbDeviceSettings.getDeviceName()))
     63                 .setIcon(android.R.drawable.ic_dialog_alert)
     64                 .setPositiveButton(R.string.usb_pref_delete_yes,
     65                         new DialogInterface.OnClickListener() {
     66                             public void onClick(DialogInterface dialog, int whichButton) {
     67                                 mCallback.onUsbDevicePreferenceDelete(
     68                                         preference, mUsbDeviceSettings);
     69                             }})
     70                 .setNegativeButton(R.string.usb_pref_delete_cancel, null)
     71                 .show();
     72         return true;
     73     }
     74 }
     75