diff --git a/res/xml/power_usage_advanced.xml b/res/xml/power_usage_advanced.xml index 2a1a23c78fe..0d8925250c6 100644 --- a/res/xml/power_usage_advanced.xml +++ b/res/xml/power_usage_advanced.xml @@ -38,7 +38,7 @@ - - + diff --git a/src/com/android/settings/fuelgauge/batteryusage/AccessibilityFocusablePreferenceCategory.java b/src/com/android/settings/fuelgauge/batteryusage/AccessibilityFocusablePreferenceCategory.java new file mode 100644 index 00000000000..f215aae7dc2 --- /dev/null +++ b/src/com/android/settings/fuelgauge/batteryusage/AccessibilityFocusablePreferenceCategory.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2023 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.fuelgauge.batteryusage; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.accessibility.AccessibilityManager; + +import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceViewHolder; + +/** + * Preference category that supports requesting accessibility focus. + */ +public class AccessibilityFocusablePreferenceCategory extends PreferenceCategory { + private PreferenceViewHolder mView; + + public AccessibilityFocusablePreferenceCategory(Context context, AttributeSet attrs, + int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + public AccessibilityFocusablePreferenceCategory(Context context, AttributeSet attrs, + int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public AccessibilityFocusablePreferenceCategory(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AccessibilityFocusablePreferenceCategory(Context context) { + super(context); + } + + @Override + public void onBindViewHolder(PreferenceViewHolder view) { + super.onBindViewHolder(view); + mView = view; + } + + /** + * Call this to try to give accessibility focus to the category title. + */ + public void requestAccessibilityFocus() { + if (mView == null || mView.itemView == null) { + return; + } + if (!AccessibilityManager.getInstance(getContext()).isEnabled()) { + return; + } + mView.itemView.requestAccessibilityFocus(); + } +} diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java index 587fd6448f5..67402382464 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java @@ -27,7 +27,6 @@ import android.view.View; import android.widget.AdapterView; import androidx.preference.Preference; -import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; @@ -75,7 +74,7 @@ public class BatteryUsageBreakdownController extends BasePreferenceController @VisibleForTesting Context mPrefContext; @VisibleForTesting - PreferenceCategory mRootPreference; + AccessibilityFocusablePreferenceCategory mRootPreference; @VisibleForTesting SpinnerPreference mSpinnerPreference; @VisibleForTesting @@ -193,7 +192,6 @@ public class BatteryUsageBreakdownController extends BasePreferenceController showFooterPreference(isAllUsageDataEmpty, slotTimestamp); } - // TODO: request accessibility focus on category title when slot selection updated. private void showCategoryTitle(String slotTimestamp) { mRootPreference.setTitle(slotTimestamp == null ? mPrefContext.getString( @@ -201,6 +199,7 @@ public class BatteryUsageBreakdownController extends BasePreferenceController : mPrefContext.getString( R.string.battery_usage_breakdown_title_for_slot, slotTimestamp)); mRootPreference.setVisible(true); + mRootPreference.requestAccessibilityFocus(); } private void showFooterPreference(boolean isAllBatteryUsageEmpty, String slotTimestamp) {