17b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang/* 27b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * Copyright (C) 2017 The Android Open Source Project 37b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * 47b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 57b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * you may not use this file except in compliance with the License. 67b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * You may obtain a copy of the License at 77b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * 87b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * http://www.apache.org/licenses/LICENSE-2.0 97b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * 107b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * Unless required by applicable law or agreed to in writing, software 117b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 127b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * See the License for the specific language governing permissions and 147b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang * limitations under the License. 157b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang */ 167b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 177b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhangpackage com.android.settings.bluetooth; 187b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 197b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhangimport android.app.Fragment; 207b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhangimport android.content.Context; 217b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhangimport android.support.annotation.VisibleForTesting; 227b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhangimport android.support.v7.preference.Preference; 23be555e2dad5cc7b0a01142d7658d9ce5e0c48867jackqdyuleiimport android.text.TextUtils; 247b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 257190797b733898644136fc9cbb080ce3262afd9cjackqdyuleiimport com.android.internal.logging.nano.MetricsProto; 267190797b733898644136fc9cbb080ce3262afd9cjackqdyuleiimport com.android.settings.overlay.FeatureFactory; 277b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhangimport com.android.settingslib.bluetooth.LocalBluetoothAdapter; 2828dee1f08640c66febadf0354555f032e8b0a3bdLeif Hendrik Wildenimport com.android.settingslib.core.instrumentation.MetricsFeatureProvider; 297b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 307b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhangpublic class BluetoothDeviceRenamePreferenceController extends 317b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang BluetoothDeviceNamePreferenceController { 327b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 33211d49f28c31e16c8161b807e16ce25a58d941f2hughchen private Fragment mFragment; 347190797b733898644136fc9cbb080ce3262afd9cjackqdyulei private MetricsFeatureProvider mMetricsFeatureProvider; 357b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 36be555e2dad5cc7b0a01142d7658d9ce5e0c48867jackqdyulei /** 37be555e2dad5cc7b0a01142d7658d9ce5e0c48867jackqdyulei * Constructor exclusively used for Slice. 38be555e2dad5cc7b0a01142d7658d9ce5e0c48867jackqdyulei */ 39211d49f28c31e16c8161b807e16ce25a58d941f2hughchen public BluetoothDeviceRenamePreferenceController(Context context, String preferenceKey) { 40211d49f28c31e16c8161b807e16ce25a58d941f2hughchen super(context, preferenceKey); 41211d49f28c31e16c8161b807e16ce25a58d941f2hughchen mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); 42be555e2dad5cc7b0a01142d7658d9ce5e0c48867jackqdyulei } 43be555e2dad5cc7b0a01142d7658d9ce5e0c48867jackqdyulei 447b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang @VisibleForTesting 45211d49f28c31e16c8161b807e16ce25a58d941f2hughchen BluetoothDeviceRenamePreferenceController(Context context, LocalBluetoothAdapter localAdapter, 46211d49f28c31e16c8161b807e16ce25a58d941f2hughchen String preferenceKey) { 47211d49f28c31e16c8161b807e16ce25a58d941f2hughchen super(context, localAdapter, preferenceKey); 487190797b733898644136fc9cbb080ce3262afd9cjackqdyulei mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); 497b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang } 507b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 51211d49f28c31e16c8161b807e16ce25a58d941f2hughchen /** 52211d49f28c31e16c8161b807e16ce25a58d941f2hughchen * Set the {@link Fragment} that used to show {@link LocalDeviceNameDialogFragment} 53211d49f28c31e16c8161b807e16ce25a58d941f2hughchen * in {@code handlePreferenceTreeClick} 54211d49f28c31e16c8161b807e16ce25a58d941f2hughchen */ 55211d49f28c31e16c8161b807e16ce25a58d941f2hughchen @VisibleForTesting 56211d49f28c31e16c8161b807e16ce25a58d941f2hughchen public void setFragment(Fragment fragment) { 57211d49f28c31e16c8161b807e16ce25a58d941f2hughchen mFragment = fragment; 587b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang } 597b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 607b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang @Override 614e2160904dbe3a592eed345047232a46b20887fchughchen protected void updatePreferenceState(final Preference preference) { 62c69f73f4d156fad10b5a30731e46b08e7ae0114dMatthew Fritze preference.setSummary(getSummary()); 634e2160904dbe3a592eed345047232a46b20887fchughchen preference.setVisible(mLocalAdapter != null && mLocalAdapter.isEnabled()); 64c69f73f4d156fad10b5a30731e46b08e7ae0114dMatthew Fritze } 65c69f73f4d156fad10b5a30731e46b08e7ae0114dMatthew Fritze 66c69f73f4d156fad10b5a30731e46b08e7ae0114dMatthew Fritze @Override 67906572b127e57aac01bfe1a45ddcc7f053883f47Fan Zhang public CharSequence getSummary() { 68c69f73f4d156fad10b5a30731e46b08e7ae0114dMatthew Fritze return getDeviceName(); 697b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang } 707b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 717b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang @Override 727b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang public boolean handlePreferenceTreeClick(Preference preference) { 73211d49f28c31e16c8161b807e16ce25a58d941f2hughchen if (TextUtils.equals(getPreferenceKey(), preference.getKey()) && mFragment != null) { 747190797b733898644136fc9cbb080ce3262afd9cjackqdyulei mMetricsFeatureProvider.action(mContext, 757190797b733898644136fc9cbb080ce3262afd9cjackqdyulei MetricsProto.MetricsEvent.ACTION_BLUETOOTH_RENAME); 767b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang LocalDeviceNameDialogFragment.newInstance() 777b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang .show(mFragment.getFragmentManager(), LocalDeviceNameDialogFragment.TAG); 787b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang return true; 797b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang } 807b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang 817b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang return false; 827b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang } 837b9568c10d18f91e34a24fe9e11503bb1513b7e1Fan Zhang} 84