Add Night display settings conditional

Bug: 30043281
Change-Id: I2464cd90f1f7f379aabf123f602e6150a87120cf
This commit is contained in:
Justin Klaassen
2016-07-18 21:39:03 -07:00
parent 69ce586155
commit d60f09edaf
5 changed files with 124 additions and 1 deletions

View File

@@ -0,0 +1,27 @@
<!--
Copyright (C) 2016 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?android:attr/colorAccent">
<path
android:fillColor="#FFF"
android:pathData="M6,12c0,5.5,4.5,10,10,10c1,0,2-0.2,3-0.5c-4.1-1.3-7-5.1-7-9.5s2.9-8.3,7-9.5C18.1,2.2,17.1,2,16,2C10.5,2,6,6.5,6,12z" />
</vector>

View File

@@ -7266,6 +7266,12 @@
<!-- Summary of condition that work mode is off [CHAR LIMIT=NONE] --> <!-- Summary of condition that work mode is off [CHAR LIMIT=NONE] -->
<string name="condition_work_summary">Apps, background sync, and other features related to your work profile are turned off.</string> <string name="condition_work_summary">Apps, background sync, and other features related to your work profile are turned off.</string>
<!-- Title of condition that night display is on (renamed "Night Light" with title caps) [CHAR LIMIT=30] -->
<string name="condition_night_display_title">Night Light is on</string>
<!-- Summary of condition that night display is on (renamed "Night Light" with title caps) [CHAR LIMIT=NONE] -->
<string name="condition_night_display_summary">Screen is tinted red. This may help you fall asleep.</string>
<!-- Title for the suggestions section on the dashboard [CHAR LIMIT=30] --> <!-- Title for the suggestions section on the dashboard [CHAR LIMIT=30] -->
<string name="suggestions_title">Suggestions</string> <string name="suggestions_title">Suggestions</string>

View File

@@ -142,6 +142,7 @@ public class ConditionManager {
addIfMissing(CellularDataCondition.class, conditions); addIfMissing(CellularDataCondition.class, conditions);
addIfMissing(BackgroundDataCondition.class, conditions); addIfMissing(BackgroundDataCondition.class, conditions);
addIfMissing(WorkModeCondition.class, conditions); addIfMissing(WorkModeCondition.class, conditions);
addIfMissing(NightDisplayCondition.class, conditions);
Collections.sort(conditions, CONDITION_COMPARATOR); Collections.sort(conditions, CONDITION_COMPARATOR);
} }
@@ -167,6 +168,8 @@ public class ConditionManager {
return new BackgroundDataCondition(this); return new BackgroundDataCondition(this);
} else if (WorkModeCondition.class == clz) { } else if (WorkModeCondition.class == clz) {
return new WorkModeCondition(this); return new WorkModeCondition(this);
} else if (NightDisplayCondition.class == clz) {
return new NightDisplayCondition(this);
} }
throw new RuntimeException("Unexpected Condition " + clz); throw new RuntimeException("Unexpected Condition " + clz);
} }

View File

@@ -0,0 +1,87 @@
/*
* Copyright (C) 2016 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.dashboard.conditional;
import android.graphics.drawable.Icon;
import com.android.internal.app.NightDisplayController;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.display.NightDisplaySettings;
public final class NightDisplayCondition extends Condition
implements NightDisplayController.Callback {
private NightDisplayController mController;
NightDisplayCondition(ConditionManager manager) {
super(manager);
mController = new NightDisplayController(manager.getContext());
mController.setListener(this);
}
@Override
public int getMetricsConstant() {
return MetricsEvent.SETTINGS_CONDITION_NIGHT_DISPLAY;
}
@Override
public Icon getIcon() {
return Icon.createWithResource(mManager.getContext(), R.drawable.ic_settings_night_display);
}
@Override
public CharSequence getTitle() {
return mManager.getContext().getString(R.string.condition_night_display_title);
}
@Override
public CharSequence getSummary() {
return mManager.getContext().getString(R.string.condition_night_display_summary);
}
@Override
public CharSequence[] getActions() {
return new CharSequence[] { mManager.getContext().getString(R.string.condition_turn_off) };
}
@Override
public void onPrimaryClick() {
Utils.startWithFragment(mManager.getContext(), NightDisplaySettings.class.getName(), null,
null, 0, R.string.night_display_title, null);
}
@Override
public void onActionClick(int index) {
if (index == 0) {
mController.setActivated(false);
} else {
throw new IllegalArgumentException("Unexpected index " + index);
}
}
@Override
public void refreshState() {
setActive(mController.isActivated());
}
@Override
public void onActivated(boolean activated) {
refreshState();
}
}

View File

@@ -1,4 +1,4 @@
/** /*
* Copyright (C) 2016 The Android Open Source Project * Copyright (C) 2016 The Android Open Source Project
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");