diff options
Diffstat (limited to 'src')
7 files changed, 96 insertions, 6 deletions
diff --git a/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java new file mode 100644 index 0000000000..2ecaf503fe --- /dev/null +++ b/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2019 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 com.android.settings.bluetooth; + +import android.content.Context; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.drawable.Drawable; +import android.widget.TextView; + +import androidx.annotation.VisibleForTesting; +import androidx.preference.PreferenceScreen; + +import com.android.settings.R; +import com.android.settings.Utils; +import com.android.settings.core.BasePreferenceController; +import com.android.settings.fuelgauge.BatteryMeterView; +import com.android.settingslib.bluetooth.CachedBluetoothDevice; +import com.android.settingslib.widget.LayoutPreference; + +/** + * This class adds a header with device name and status (connected/disconnected, etc.). + */ +public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceController { + + private LayoutPreference mLayoutPreference; + private CachedBluetoothDevice mCachedDevice; + + public AdvancedBluetoothDetailsHeaderController(Context context, String prefKey) { + super(context, prefKey); + } + + @Override + public int getAvailabilityStatus() { + //TODO(b/122460277): decide whether it is available by {@code bluetoothDevice} + return CONDITIONALLY_UNAVAILABLE; + } + + @Override + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + mLayoutPreference = screen.findPreference(getPreferenceKey()); + mLayoutPreference.setVisible(isAvailable()); + refresh(); + } + + public void init(CachedBluetoothDevice cachedBluetoothDevice) { + mCachedDevice = cachedBluetoothDevice; + } + + private void refresh() { + if (mLayoutPreference != null && mCachedDevice != null) { + final TextView title = mLayoutPreference.findViewById(R.id.entity_header_title); + title.setText(mCachedDevice.getName()); + final TextView summary = mLayoutPreference.findViewById(R.id.entity_header_summary); + summary.setText(mCachedDevice.getConnectionSummary()); + } + } + + @VisibleForTesting + Drawable createBtBatteryIcon(Context context, int level) { + final BatteryMeterView.BatteryMeterDrawable drawable = + new BatteryMeterView.BatteryMeterDrawable(context, + context.getColor(R.color.meter_background_color)); + drawable.setBatteryLevel(level); + drawable.setShowPercent(false); + drawable.setBatteryColorFilter(new PorterDuffColorFilter( + Utils.getColorAttrDefaultColor(context, android.R.attr.colorControlNormal), + PorterDuff.Mode.SRC_IN)); + + return drawable; + } + +} diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java b/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java index a438f09f1d..a7fae1441f 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java @@ -90,4 +90,4 @@ public class BluetoothDetailsButtonsController extends BluetoothDetailsControlle return KEY_ACTION_BUTTONS; } -} +}
\ No newline at end of file diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsController.java b/src/com/android/settings/bluetooth/BluetoothDetailsController.java index af5a6289af..bb489044f8 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsController.java @@ -89,4 +89,4 @@ public abstract class BluetoothDetailsController extends AbstractPreferenceContr * should update the preferences it manages based on the new state. */ protected abstract void refresh(); -} +}
\ No newline at end of file diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java index a41b7917c2..95b16b9d64 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java @@ -62,7 +62,8 @@ public class BluetoothDetailsHeaderController extends BluetoothDetailsController protected void setHeaderProperties() { final Pair<Drawable, String> pair = BluetoothUtils .getBtClassDrawableWithDescription(mContext, mCachedDevice, - mContext.getResources().getFraction(R.fraction.bt_battery_scale_fraction, 1, 1)); + mContext.getResources().getFraction(R.fraction.bt_battery_scale_fraction, 1, + 1)); String summaryText = mCachedDevice.getConnectionSummary(); // If both the hearing aids are connected, two device status should be shown. // If Second Summary is unavailable, to set it to null. @@ -84,4 +85,4 @@ public class BluetoothDetailsHeaderController extends BluetoothDetailsController public String getPreferenceKey() { return KEY_DEVICE_HEADER; } -} +}
\ No newline at end of file diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java b/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java index 987dbe4f05..835961dee5 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java @@ -62,4 +62,4 @@ public class BluetoothDetailsMacAddressController extends BluetoothDetailsContro } return mFooterPreference.getKey(); } -} +}
\ No newline at end of file diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java index 88cebcb331..5c609e69c4 100644 --- a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java +++ b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java @@ -264,4 +264,4 @@ public class BluetoothDetailsProfilesController extends BluetoothDetailsControll public String getPreferenceKey() { return KEY_PROFILES_GROUP; } -} +}
\ No newline at end of file diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java index 6ff4309a4f..1ddad7be26 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java @@ -108,6 +108,7 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment mManager = getLocalBluetoothManager(context); mCachedDevice = getCachedDevice(mDeviceAddress); super.onAttach(context); + use(AdvancedBluetoothDetailsHeaderController.class).init(mCachedDevice); final BluetoothFeatureProvider featureProvider = FeatureFactory.getFactory( context).getBluetoothFeatureProvider(context); |