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

Commit 9c4dba40 authored by Lucas Silva's avatar Lucas Silva
Browse files

Add posturing dream trigger to Settings UI

Adds ability for users to select posturing as the trigger for when
dreams will be shown.

Bug: 383208131
Test: locally - mp droid and verified posturing option is displayed in
Settings
Flag: android.service.dreams.allow_dream_when_postured

Change-Id: Iae69b9e488181b1e2af7474e3e9879a92b51274c
parent e28dcd02
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -3170,6 +3170,10 @@
    <string name="screensaver_settings_summary_dock">While docked</string>
    <!-- Display settings screen, summary fragment for screen saver options, activated never [CHAR LIMIT=35] -->
    <string name="screensaver_settings_summary_never">Never</string>
    <!-- Summary for when screensaver is enabled, only while stationary and upright [CHAR LIMIT=35] -->
    <string name="screensaver_settings_summary_postured">While postured</string>
    <!-- Summary for when screensaver is enabled, only while stationary and upright and charging [CHAR LIMIT=35] -->
    <string name="screensaver_settings_summary_postured_and_charging">While postured and charging</string>
    <!-- Display settings screen, summary for screen saver options, screen saver is turned on [CHAR LIMIT=50] -->
    <string name="screensaver_settings_summary_on">
        On / <xliff:g id="screen_saver" example="Art gallery">%1$s</xliff:g>
+20 −16
Original line number Diff line number Diff line
@@ -17,10 +17,6 @@
package com.android.settings.dream;

import static com.android.settings.dream.DreamMainSwitchPreferenceController.MAIN_SWITCH_PREF_KEY;
import static com.android.settingslib.dream.DreamBackend.EITHER;
import static com.android.settingslib.dream.DreamBackend.NEVER;
import static com.android.settingslib.dream.DreamBackend.WHILE_CHARGING;
import static com.android.settingslib.dream.DreamBackend.WHILE_DOCKED;

import android.app.settings.SettingsEnums;
import android.content.Context;
@@ -57,6 +53,7 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
    static final String WHILE_CHARGING_ONLY = "while_charging_only";
    static final String WHILE_DOCKED_ONLY = "while_docked_only";
    static final String EITHER_CHARGING_OR_DOCKED = "either_charging_or_docked";
    static final String WHILE_POSTURED_ONLY = "while_postured_only";
    static final String NEVER_DREAM = "never";

    private MainSwitchPreference mMainSwitchPreference;
@@ -75,26 +72,30 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
    static int getSettingFromPrefKey(String key) {
        switch (key) {
            case WHILE_CHARGING_ONLY:
                return WHILE_CHARGING;
                return DreamBackend.WHILE_CHARGING;
            case WHILE_DOCKED_ONLY:
                return WHILE_DOCKED;
                return DreamBackend.WHILE_DOCKED;
            case EITHER_CHARGING_OR_DOCKED:
                return EITHER;
                return DreamBackend.WHILE_CHARGING_OR_DOCKED;
            case WHILE_POSTURED_ONLY:
                return DreamBackend.WHILE_POSTURED;
            case NEVER_DREAM:
            default:
                return NEVER;
                return DreamBackend.NEVER;
        }
    }

    static String getKeyFromSetting(@WhenToDream int dreamSetting) {
        switch (dreamSetting) {
            case WHILE_CHARGING:
            case DreamBackend.WHILE_CHARGING:
                return WHILE_CHARGING_ONLY;
            case WHILE_DOCKED:
            case DreamBackend.WHILE_DOCKED:
                return WHILE_DOCKED_ONLY;
            case EITHER:
            case DreamBackend.WHILE_CHARGING_OR_DOCKED:
                return EITHER_CHARGING_OR_DOCKED;
            case NEVER:
            case DreamBackend.WHILE_POSTURED:
                return WHILE_POSTURED_ONLY;
            case DreamBackend.NEVER:
            default:
                return NEVER_DREAM;
        }
@@ -103,14 +104,17 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
    static int getDreamSettingDescriptionResId(@WhenToDream int dreamSetting,
            boolean enabledOnBattery) {
        switch (dreamSetting) {
            case WHILE_CHARGING:
            case DreamBackend.WHILE_CHARGING:
                return R.string.screensaver_settings_summary_sleep;
            case WHILE_DOCKED:
            case DreamBackend.WHILE_DOCKED:
                return enabledOnBattery ? R.string.screensaver_settings_summary_dock
                        : R.string.screensaver_settings_summary_dock_and_charging;
            case EITHER:
            case DreamBackend.WHILE_CHARGING_OR_DOCKED:
                return R.string.screensaver_settings_summary_either_long;
            case NEVER:
            case DreamBackend.WHILE_POSTURED:
                return enabledOnBattery ? R.string.screensaver_settings_summary_postured
                        : R.string.screensaver_settings_summary_postured_and_charging;
            case DreamBackend.NEVER:
            default:
                return R.string.screensaver_settings_summary_never;
        }
+7 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.settings.dream;

import static android.service.dreams.Flags.allowDreamWhenPostured;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.graphics.drawable.Drawable;
@@ -65,7 +67,11 @@ public class WhenToDreamPicker extends RadioButtonPickerFragment {
        }

        for (int i = 0; i < entries.length; i++) {
            candidates.add(new WhenToDreamCandidateInfo(entries[i], values[i]));
            final String key = values[i];
            if (DreamSettings.WHILE_POSTURED_ONLY.equals(key) && !allowDreamWhenPostured()) {
                continue;
            }
            candidates.add(new WhenToDreamCandidateInfo(entries[i], key));
        }

        return candidates;
+5 −1
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ public class DreamSettingsTest {
            DreamSettings.WHILE_CHARGING_ONLY,
            DreamSettings.WHILE_DOCKED_ONLY,
            DreamSettings.EITHER_CHARGING_OR_DOCKED,
            DreamSettings.WHILE_POSTURED_ONLY,
            DreamSettings.NEVER_DREAM
    );

@@ -66,7 +67,8 @@ public class DreamSettingsTest {
    private static final int[] SETTINGS = {
            DreamBackend.WHILE_CHARGING,
            DreamBackend.WHILE_DOCKED,
            DreamBackend.EITHER,
            DreamBackend.WHILE_CHARGING_OR_DOCKED,
            DreamBackend.WHILE_POSTURED,
            DreamBackend.NEVER,
    };

@@ -74,6 +76,7 @@ public class DreamSettingsTest {
            R.string.screensaver_settings_summary_sleep,
            R.string.screensaver_settings_summary_dock,
            R.string.screensaver_settings_summary_either_long,
            R.string.screensaver_settings_summary_postured,
            R.string.screensaver_settings_summary_never
    };

@@ -81,6 +84,7 @@ public class DreamSettingsTest {
            R.string.screensaver_settings_summary_sleep,
            R.string.screensaver_settings_summary_dock_and_charging,
            R.string.screensaver_settings_summary_either_long,
            R.string.screensaver_settings_summary_postured_and_charging,
            R.string.screensaver_settings_summary_never
    };

+15 −4
Original line number Diff line number Diff line
@@ -80,9 +80,13 @@ public class WhenToDreamPickerTest {
        assertThat(mPicker.getDefaultKey())
                .isEqualTo(DreamSettings.getKeyFromSetting(DreamBackend.WHILE_DOCKED));

        when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.EITHER);
        when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.WHILE_CHARGING_OR_DOCKED);
        assertThat(mPicker.getDefaultKey())
                .isEqualTo(DreamSettings.getKeyFromSetting(DreamBackend.EITHER));
                .isEqualTo(DreamSettings.getKeyFromSetting(DreamBackend.WHILE_CHARGING_OR_DOCKED));

        when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.WHILE_POSTURED);
        assertThat(mPicker.getDefaultKey())
                .isEqualTo(DreamSettings.getKeyFromSetting(DreamBackend.WHILE_POSTURED));

        when(mBackend.getWhenToDreamSetting()).thenReturn(DreamBackend.NEVER);
        assertThat(mPicker.getDefaultKey())
@@ -105,9 +109,16 @@ public class WhenToDreamPickerTest {

    @Test
    public void setDreamWhileChargingOrDocked() {
        final String key = DreamSettings.getKeyFromSetting(DreamBackend.EITHER);
        final String key = DreamSettings.getKeyFromSetting(DreamBackend.WHILE_CHARGING_OR_DOCKED);
        mPicker.setDefaultKey(key);
        verify(mBackend).setWhenToDream(DreamBackend.WHILE_CHARGING_OR_DOCKED);
    }

    @Test
    public void setDreamWhilePostured() {
        final String key = DreamSettings.getKeyFromSetting(DreamBackend.WHILE_POSTURED);
        mPicker.setDefaultKey(key);
        verify(mBackend).setWhenToDream(DreamBackend.EITHER);
        verify(mBackend).setWhenToDream(DreamBackend.WHILE_POSTURED);
    }

    @Test