From daef80ecaf03b79a4c152eb1f51aad651365b837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timi=20Rautam=C3=A4ki?= Date: Sat, 15 Jan 2022 09:25:02 +0000 Subject: [PATCH] SUW: improve navigation on D-pad devices * Set the initial focus on a usable view instead of a whole layout. * Set the next focus of the locale selector to next-button. Change-Id: I4a16127c24e87b52e38892882e44b3a8d24b779b --- .../setupwizard/BaseSetupWizardActivity.java | 6 +++++- .../setupwizard/LineageSettingsActivity.java | 1 + src/org/lineageos/setupwizard/LocaleActivity.java | 4 +++- .../lineageos/setupwizard/widget/LocalePicker.java | 11 +++++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java index 3788669f..0c63506a 100644 --- a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java +++ b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java @@ -1,6 +1,6 @@ /* * Copyright (C) 2016 The CyanogenMod Project - * Copyright (C) 2017-2021 The LineageOS Project + * 2017-2022 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -247,6 +247,10 @@ public abstract class BaseSetupWizardActivity extends Activity implements Naviga } } + public Button getNextButton() { + return mNavigationBar.getNextButton(); + } + protected void setSkipText(int resId) { if (mNavigationBar != null) { mNavigationBar.getSkipButton().setText(resId); diff --git a/src/org/lineageos/setupwizard/LineageSettingsActivity.java b/src/org/lineageos/setupwizard/LineageSettingsActivity.java index c40b56d4..ace417f7 100644 --- a/src/org/lineageos/setupwizard/LineageSettingsActivity.java +++ b/src/org/lineageos/setupwizard/LineageSettingsActivity.java @@ -82,6 +82,7 @@ public class LineageSettingsActivity extends BaseSetupWizardActivity { View metricsRow = findViewById(R.id.metrics); metricsRow.setOnClickListener(mMetricsClickListener); + metricsRow.requestFocus(); String metricsHelpImproveLineage = getString(R.string.services_help_improve_cm, os_name); String metricsSummary = getString(R.string.services_metrics_label, diff --git a/src/org/lineageos/setupwizard/LocaleActivity.java b/src/org/lineageos/setupwizard/LocaleActivity.java index 08b0b173..8d4f86dd 100644 --- a/src/org/lineageos/setupwizard/LocaleActivity.java +++ b/src/org/lineageos/setupwizard/LocaleActivity.java @@ -1,6 +1,6 @@ /* * Copyright (C) 2016 The CyanogenMod Project - * Copyright (C) 2017-2021 The LineageOS Project + * 2017-2022 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -81,6 +81,8 @@ public class LocaleActivity extends BaseSetupWizardActivity { SystemBarHelper.setBackButtonVisible(getWindow(), true); setNextText(R.string.next); mLanguagePicker = (LocalePicker) findViewById(R.id.locale_list); + mLanguagePicker.setNextRight(getNextButton().getId()); + mLanguagePicker.requestFocus(); loadLanguages(); } diff --git a/src/org/lineageos/setupwizard/widget/LocalePicker.java b/src/org/lineageos/setupwizard/widget/LocalePicker.java index 6e8e2ab4..db54a0b6 100644 --- a/src/org/lineageos/setupwizard/widget/LocalePicker.java +++ b/src/org/lineageos/setupwizard/widget/LocalePicker.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2008 The Android Open Source Project + * 2022 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -56,6 +57,8 @@ import android.widget.LinearLayout; import android.widget.Scroller; import android.widget.TextView; +import androidx.annotation.IdRes; + import org.lineageos.setupwizard.R; import java.util.ArrayList; @@ -1175,6 +1178,14 @@ public class LocalePicker extends LinearLayout { setValueInternal(value, false); } + /** + * Sets the next focused item for a remote D-pad key right. + * @param id The ID of the next view. + */ + public void setNextRight(@IdRes int id) { + setNextFocusRightId(id); + } + /** * Shows the soft input for its input text. */