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