Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd28ceef authored by Maurice Lam's avatar Maurice Lam
Browse files

Fix preferences v14 issues in lock screeen setup

Preferences support-v14 expects a RecyclerView, and cannot override
onCreateView to inflate custom views. This changes
SetupChooseLockGeneric to use suw_template_no_scroll and let
preference framework inflate its RecyclerView inside it.

Bug: 24929660
Change-Id: Icda0fed37b68d4cffb49da46a241185f32d7e467
parent 2b7592d8
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -15,12 +15,11 @@
    limitations under the License.
-->

<com.android.setupwizardlib.SetupWizardListLayout
<com.android.setupwizardlib.SetupWizardLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout="@layout/suw_no_scroll_template"
    settings:suwBackgroundTile="@drawable/setup_illustration_tile"
    settings:suwHeaderText="@string/setup_lock_settings_picker_title"
    settings:suwIllustrationHorizontalTile="@drawable/setup_illustration_horizontal_tile"
    settings:suwIllustrationImage="@drawable/setup_illustration_lock_screen" />
    settings:suwIllustrationHorizontalTile="@drawable/setup_illustration_horizontal_tile" />
+11 −3
Original line number Diff line number Diff line
@@ -29,13 +29,12 @@
    <style name="SetupWizardDisableAppStartingTheme">
        <!-- Theme to disable the app starting window. The actual theme of the activity needs to
             be then set in code via setTheme or onApplyThemeResource. -->
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.SetupWizard</item>
        <item name="android:windowBackground">@null</item>
    </style>

    <style name="SetupWizardTheme" parent="SuwThemeMaterial">
        <!-- For all Alert Dialogs -->
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
        <item name="android:alertDialogTheme">@style/ThemeOverlay.AlertDialog</item>
        <item name="android:listPreferredItemPaddingEnd">@dimen/suw_layout_margin_sides</item>
        <item name="android:listPreferredItemPaddingStart">@dimen/suw_layout_margin_sides</item>
@@ -52,6 +51,7 @@
        <item name="wifi_signal_color">@color/setup_wizard_wifi_color_dark</item>
        <item name="wifi_signal">@drawable/wifi_signal</item>
        <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.SetupWizard</item>

        <!-- LockPatternView colors -->
        <item name="@*android:regularColor">@color/setup_lock_pattern_view_regular_color_dark</item>
@@ -61,7 +61,6 @@

    <style name="SetupWizardTheme.Light" parent="SuwThemeMaterial.Light">
        <!-- For all Alert Dialogs -->
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
        <item name="android:alertDialogTheme">@style/ThemeOverlay.AlertDialog</item>
        <item name="android:listPreferredItemPaddingEnd">@dimen/suw_layout_margin_sides</item>
        <item name="android:listPreferredItemPaddingStart">@dimen/suw_layout_margin_sides</item>
@@ -78,6 +77,7 @@
        <item name="wifi_signal_color">@color/setup_wizard_wifi_color_light</item>
        <item name="wifi_signal">@drawable/wifi_signal</item>
        <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.SetupWizard</item>

        <!-- LockPatternView colors -->
        <item name="@*android:regularColor">@color/setup_lock_pattern_view_regular_color_light</item>
@@ -85,6 +85,14 @@
        <item name="@*android:errorColor">@color/setup_lock_pattern_view_error_color_light</item>
    </style>

    <style name="PreferenceThemeOverlay.SetupWizard" parent="PreferenceThemeOverlay.v14.Material">
        <item name="preferenceFragmentStyle">@style/SetupWizardPreferenceFragmentStyle</item>
    </style>

    <style name="SetupWizardPreferenceFragmentStyle" parent="PreferenceFragment.Material">
        <item name="android:layout">@layout/setup_preference</item>
    </style>

    <!-- Theme with no local references, used by AccountPreferenceBase where we have to inflate
         layouts against a remote context using our local theme colors. Due to the implementation
         details of Theme, we can't reference any local resources and MUST instead use the values
+9 −14
Original line number Diff line number Diff line
@@ -24,12 +24,10 @@ import android.content.res.Resources;
import android.os.Bundle;
import android.os.UserHandle;
import android.support.v14.preference.PreferenceFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.android.internal.widget.LockPatternUtils;
import com.android.setupwizardlib.SetupWizardListLayout;
import com.android.setupwizardlib.SetupWizardLayout;
import com.android.setupwizardlib.view.NavigationBar;

/**
@@ -63,22 +61,19 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {
        private static final String EXTRA_PASSWORD_QUALITY = ":settings:password_quality";

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            final SetupWizardListLayout layout = (SetupWizardListLayout) inflater.inflate(
                    R.layout.setup_choose_lock_generic, container, false);
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);

            SetupWizardUtils.setImmersiveMode(getActivity());

            SetupWizardLayout layout = (SetupWizardLayout) view;
            final NavigationBar navigationBar = layout.getNavigationBar();
            navigationBar.getNextButton().setEnabled(false);
            navigationBar.setNavigationBarListener(this);

            return layout;
        }

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            SetupWizardUtils.setImmersiveMode(getActivity());
            layout.setIllustration(R.drawable.setup_illustration_lock_screen,
                    R.drawable.setup_illustration_horizontal_tile);
            layout.setHeaderText(R.string.setup_lock_settings_picker_title);
        }

        @Override