Loading res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -2807,6 +2807,12 @@ <!-- Night display slice screen, subtitle of intensity setting when night light is off. [CHAR LIMIT=30] --> <string name="night_display_not_currently_on">Night Light not currently on</string> <!-- Twilight Mode --> <!-- When location mode is off, twilight scheduling does not function. [CHAR LIMIT=40] --> <string name="twilight_mode_location_off_dialog_message">Device location needed to determine you sunset to sunrise</string> <!-- When location mode is off, twilight scheduling does not function. [CHAR LIMIT=40] --> <string name="twilight_mode_launch_location">Turn on location</string> <!-- Dark ui screen--> <!-- Display settings screen, activation button action for manual mode. [CHAR LIMIT=40] --> <string name="dark_ui_activation_on_manual">Turn on now</string> Loading src/com/android/settings/display/NightDisplayAutoModePreferenceController.java +8 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.display; import android.content.Context; import android.hardware.display.ColorDisplayManager; import android.location.LocationManager; import androidx.preference.DropDownPreference; import androidx.preference.Preference; Loading @@ -29,12 +30,14 @@ import com.android.settings.core.BasePreferenceController; public class NightDisplayAutoModePreferenceController extends BasePreferenceController implements Preference.OnPreferenceChangeListener { private final LocationManager mLocationManager; private DropDownPreference mPreference; private ColorDisplayManager mColorDisplayManager; public NightDisplayAutoModePreferenceController(Context context, String key) { super(context, key); mColorDisplayManager = context.getSystemService(ColorDisplayManager.class); mLocationManager = context.getSystemService(LocationManager.class); } @Override Loading Loading @@ -68,6 +71,11 @@ public class NightDisplayAutoModePreferenceController extends BasePreferenceCont @Override public final boolean onPreferenceChange(Preference preference, Object newValue) { if (String.valueOf(ColorDisplayManager.AUTO_MODE_TWILIGHT).equals(newValue) && !mLocationManager.isLocationEnabled()) { TwilightLocationDialog.show(mContext); return false; } return mColorDisplayManager.setNightDisplayAutoMode(Integer.parseInt((String) newValue)); } } src/com/android/settings/display/TwilightLocationDialog.java 0 → 100644 +47 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.display; import android.app.AlertDialog; import android.content.Context; import android.content.Intent; import android.util.Log; import com.android.settings.R; import com.android.settings.Settings; /* * This class lauches a dialog when users try to use twilight scheduling without * turning on location services */ public class TwilightLocationDialog { public static String TAG = "TwilightLocationDialog"; public static void show(Context context) { final AlertDialog dialog = new AlertDialog.Builder(context) .setPositiveButton(R.string.twilight_mode_launch_location, ((dialog1, which) -> { Log.d(TAG, "clicked forget"); final Intent intent = new Intent(); intent.setClass(context, Settings.LocationSettingsActivity.class); context.startActivity(intent); })) .setNegativeButton(R.string.cancel, null /* listener */) .setMessage(R.string.twilight_mode_location_off_dialog_message) .create(); dialog.show(); } } src/com/android/settings/display/darkmode/DarkModeScheduleSelectorController.java +8 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.display.darkmode; import android.app.UiModeManager; import android.content.Context; import android.content.res.Configuration; import android.location.LocationManager; import android.os.PowerManager; import androidx.preference.DropDownPreference; Loading @@ -25,6 +26,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.display.TwilightLocationDialog; /** * Controller for the dark ui option dropdown Loading @@ -35,12 +37,14 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController private final UiModeManager mUiModeManager; private PowerManager mPowerManager; private DropDownPreference mPreference; private LocationManager mLocationManager; private int mCurrentMode; public DarkModeScheduleSelectorController(Context context, String key) { super(context, key); mUiModeManager = context.getSystemService(UiModeManager.class); mPowerManager = context.getSystemService(PowerManager.class); mLocationManager = context.getSystemService(LocationManager.class); } @Override Loading Loading @@ -93,6 +97,10 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController mUiModeManager.setNightMode(mode); } else if (mCurrentMode == mPreference.findIndexOfValue( mContext.getString(R.string.dark_ui_auto_mode_auto))) { if (!mLocationManager.isLocationEnabled()) { TwilightLocationDialog.show(mContext); return false; } mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_AUTO); } else if (mCurrentMode == mPreference.findIndexOfValue( mContext.getString(R.string.dark_ui_auto_mode_custom))) { Loading tests/robotests/src/com/android/settings/display/darkmode/DarkModeScheduleSelectorControllerTest.java +14 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import static org.mockito.Mockito.when; import android.app.UiModeManager; import android.content.Context; import android.location.LocationManager; import android.os.PowerManager; import androidx.preference.DropDownPreference; Loading Loading @@ -55,6 +56,8 @@ public class DarkModeScheduleSelectorControllerTest { @Mock private UiModeManager mUiService; @Mock private LocationManager mLocationManager; @Mock private PowerManager mPM; @Before Loading @@ -63,6 +66,7 @@ public class DarkModeScheduleSelectorControllerTest { mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(UiModeManager.class)).thenReturn(mUiService); when(mContext.getSystemService(PowerManager.class)).thenReturn(mPM); when(mContext.getSystemService(LocationManager.class)).thenReturn(mLocationManager); when(mContext.getString(R.string.dark_ui_auto_mode_never)).thenReturn("never"); when(mContext.getString(R.string.dark_ui_auto_mode_auto)).thenReturn("auto"); when(mContext.getString(R.string.dark_ui_auto_mode_custom)).thenReturn("custom"); Loading @@ -72,6 +76,7 @@ public class DarkModeScheduleSelectorControllerTest { mContext.getString(R.string.dark_ui_auto_mode_auto) }); doNothing().when(mPreference).setValueIndex(anyInt()); when(mLocationManager.isLocationEnabled()).thenReturn(true); when(mScreen.findPreference(anyString())).thenReturn(mPreference); when(mUiService.setNightModeActivated(anyBoolean())).thenReturn(true); mController = new DarkModeScheduleSelectorController(mContext, mPreferenceKey); Loading @@ -96,6 +101,15 @@ public class DarkModeScheduleSelectorControllerTest { verify(mPreference).setValueIndex(0); } @Test public void nightMode_selectNightMode_locationOff() { when(mLocationManager.isLocationEnabled()).thenReturn(false); mController.onPreferenceChange(mPreference, mContext.getString(R.string.dark_ui_auto_mode_never)); assertFalse(mController.onPreferenceChange(mPreference, mContext.getString(R.string.dark_ui_auto_mode_auto))); } @Test public void nightMode_updateStateNone_dropDownValueChangedToAuto() { when(mUiService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_AUTO); Loading Loading
res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -2807,6 +2807,12 @@ <!-- Night display slice screen, subtitle of intensity setting when night light is off. [CHAR LIMIT=30] --> <string name="night_display_not_currently_on">Night Light not currently on</string> <!-- Twilight Mode --> <!-- When location mode is off, twilight scheduling does not function. [CHAR LIMIT=40] --> <string name="twilight_mode_location_off_dialog_message">Device location needed to determine you sunset to sunrise</string> <!-- When location mode is off, twilight scheduling does not function. [CHAR LIMIT=40] --> <string name="twilight_mode_launch_location">Turn on location</string> <!-- Dark ui screen--> <!-- Display settings screen, activation button action for manual mode. [CHAR LIMIT=40] --> <string name="dark_ui_activation_on_manual">Turn on now</string> Loading
src/com/android/settings/display/NightDisplayAutoModePreferenceController.java +8 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.display; import android.content.Context; import android.hardware.display.ColorDisplayManager; import android.location.LocationManager; import androidx.preference.DropDownPreference; import androidx.preference.Preference; Loading @@ -29,12 +30,14 @@ import com.android.settings.core.BasePreferenceController; public class NightDisplayAutoModePreferenceController extends BasePreferenceController implements Preference.OnPreferenceChangeListener { private final LocationManager mLocationManager; private DropDownPreference mPreference; private ColorDisplayManager mColorDisplayManager; public NightDisplayAutoModePreferenceController(Context context, String key) { super(context, key); mColorDisplayManager = context.getSystemService(ColorDisplayManager.class); mLocationManager = context.getSystemService(LocationManager.class); } @Override Loading Loading @@ -68,6 +71,11 @@ public class NightDisplayAutoModePreferenceController extends BasePreferenceCont @Override public final boolean onPreferenceChange(Preference preference, Object newValue) { if (String.valueOf(ColorDisplayManager.AUTO_MODE_TWILIGHT).equals(newValue) && !mLocationManager.isLocationEnabled()) { TwilightLocationDialog.show(mContext); return false; } return mColorDisplayManager.setNightDisplayAutoMode(Integer.parseInt((String) newValue)); } }
src/com/android/settings/display/TwilightLocationDialog.java 0 → 100644 +47 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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.display; import android.app.AlertDialog; import android.content.Context; import android.content.Intent; import android.util.Log; import com.android.settings.R; import com.android.settings.Settings; /* * This class lauches a dialog when users try to use twilight scheduling without * turning on location services */ public class TwilightLocationDialog { public static String TAG = "TwilightLocationDialog"; public static void show(Context context) { final AlertDialog dialog = new AlertDialog.Builder(context) .setPositiveButton(R.string.twilight_mode_launch_location, ((dialog1, which) -> { Log.d(TAG, "clicked forget"); final Intent intent = new Intent(); intent.setClass(context, Settings.LocationSettingsActivity.class); context.startActivity(intent); })) .setNegativeButton(R.string.cancel, null /* listener */) .setMessage(R.string.twilight_mode_location_off_dialog_message) .create(); dialog.show(); } }
src/com/android/settings/display/darkmode/DarkModeScheduleSelectorController.java +8 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.display.darkmode; import android.app.UiModeManager; import android.content.Context; import android.content.res.Configuration; import android.location.LocationManager; import android.os.PowerManager; import androidx.preference.DropDownPreference; Loading @@ -25,6 +26,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.display.TwilightLocationDialog; /** * Controller for the dark ui option dropdown Loading @@ -35,12 +37,14 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController private final UiModeManager mUiModeManager; private PowerManager mPowerManager; private DropDownPreference mPreference; private LocationManager mLocationManager; private int mCurrentMode; public DarkModeScheduleSelectorController(Context context, String key) { super(context, key); mUiModeManager = context.getSystemService(UiModeManager.class); mPowerManager = context.getSystemService(PowerManager.class); mLocationManager = context.getSystemService(LocationManager.class); } @Override Loading Loading @@ -93,6 +97,10 @@ public class DarkModeScheduleSelectorController extends BasePreferenceController mUiModeManager.setNightMode(mode); } else if (mCurrentMode == mPreference.findIndexOfValue( mContext.getString(R.string.dark_ui_auto_mode_auto))) { if (!mLocationManager.isLocationEnabled()) { TwilightLocationDialog.show(mContext); return false; } mUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_AUTO); } else if (mCurrentMode == mPreference.findIndexOfValue( mContext.getString(R.string.dark_ui_auto_mode_custom))) { Loading
tests/robotests/src/com/android/settings/display/darkmode/DarkModeScheduleSelectorControllerTest.java +14 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import static org.mockito.Mockito.when; import android.app.UiModeManager; import android.content.Context; import android.location.LocationManager; import android.os.PowerManager; import androidx.preference.DropDownPreference; Loading Loading @@ -55,6 +56,8 @@ public class DarkModeScheduleSelectorControllerTest { @Mock private UiModeManager mUiService; @Mock private LocationManager mLocationManager; @Mock private PowerManager mPM; @Before Loading @@ -63,6 +66,7 @@ public class DarkModeScheduleSelectorControllerTest { mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(UiModeManager.class)).thenReturn(mUiService); when(mContext.getSystemService(PowerManager.class)).thenReturn(mPM); when(mContext.getSystemService(LocationManager.class)).thenReturn(mLocationManager); when(mContext.getString(R.string.dark_ui_auto_mode_never)).thenReturn("never"); when(mContext.getString(R.string.dark_ui_auto_mode_auto)).thenReturn("auto"); when(mContext.getString(R.string.dark_ui_auto_mode_custom)).thenReturn("custom"); Loading @@ -72,6 +76,7 @@ public class DarkModeScheduleSelectorControllerTest { mContext.getString(R.string.dark_ui_auto_mode_auto) }); doNothing().when(mPreference).setValueIndex(anyInt()); when(mLocationManager.isLocationEnabled()).thenReturn(true); when(mScreen.findPreference(anyString())).thenReturn(mPreference); when(mUiService.setNightModeActivated(anyBoolean())).thenReturn(true); mController = new DarkModeScheduleSelectorController(mContext, mPreferenceKey); Loading @@ -96,6 +101,15 @@ public class DarkModeScheduleSelectorControllerTest { verify(mPreference).setValueIndex(0); } @Test public void nightMode_selectNightMode_locationOff() { when(mLocationManager.isLocationEnabled()).thenReturn(false); mController.onPreferenceChange(mPreference, mContext.getString(R.string.dark_ui_auto_mode_never)); assertFalse(mController.onPreferenceChange(mPreference, mContext.getString(R.string.dark_ui_auto_mode_auto))); } @Test public void nightMode_updateStateNone_dropDownValueChangedToAuto() { when(mUiService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_AUTO); Loading