aboutsummaryrefslogtreecommitdiffstats
path: root/cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayFeature.java
diff options
context:
space:
mode:
Diffstat (limited to 'cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayFeature.java')
-rw-r--r--cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayFeature.java158
1 files changed, 158 insertions, 0 deletions
diff --git a/cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayFeature.java b/cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayFeature.java
new file mode 100644
index 0000000..5b1e33c
--- /dev/null
+++ b/cm/lib/main/java/org/cyanogenmod/platform/internal/display/LiveDisplayFeature.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod 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 org.cyanogenmod.platform.internal.display;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.util.Log;
+
+import com.android.server.pm.UserContentObserver;
+import com.android.server.twilight.TwilightState;
+
+import java.io.PrintWriter;
+import java.util.BitSet;
+
+import cyanogenmod.providers.CMSettings;
+
+public abstract class LiveDisplayFeature {
+
+ protected static final String TAG = "LiveDisplay";
+ protected static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+ protected final Context mContext;
+ protected final Handler mHandler;
+
+ private TwilightState mTwilight;
+ private boolean mLowPowerMode = false;
+ private boolean mScreenOn = false;
+ private int mMode = 0;
+
+ private final SettingsObserver mSettingsObserver;
+
+ public LiveDisplayFeature(Context context, Handler handler) {
+ mContext = context;
+ mHandler = handler;
+ mSettingsObserver = new SettingsObserver(handler);
+ }
+
+ public abstract boolean onStart();
+
+ public abstract void onSettingsChanged(Uri uri);
+
+ public void onModeChanged(int mode) {
+ mMode = mode;
+ }
+
+ public void onDisplayStateChanged(boolean screenOn) {
+ mScreenOn = screenOn;
+ }
+
+ public void onLowPowerModeChanged(boolean lowPowerMode) {
+ mLowPowerMode = lowPowerMode;
+ }
+
+ public void onTwilightUpdated(TwilightState twilight) {
+ mTwilight = twilight;
+ }
+
+ public void onDestroy() {
+ mSettingsObserver.unregister();
+ }
+
+ public abstract void dump(PrintWriter pw);
+
+ abstract void getCapabilities(final BitSet caps);
+
+ protected final void registerSettings(Uri... settings) {
+ mSettingsObserver.register(settings);
+ onSettingsChanged(null);
+ }
+
+ protected final int getInt(String setting, int defaultValue) {
+ return CMSettings.System.getIntForUser(mContext.getContentResolver(),
+ setting, defaultValue, UserHandle.USER_CURRENT);
+ }
+
+ protected final void putInt(String setting, int value) {
+ CMSettings.System.putIntForUser(mContext.getContentResolver(),
+ setting, value, UserHandle.USER_CURRENT);
+ }
+
+ protected final String getString(String setting) {
+ return CMSettings.System.getStringForUser(mContext.getContentResolver(),
+ setting, UserHandle.USER_CURRENT);
+ }
+
+ protected final void putString(String setting, String value) {
+ CMSettings.System.putStringForUser(mContext.getContentResolver(),
+ setting, value, UserHandle.USER_CURRENT);
+ }
+
+ protected final boolean isLowPowerMode() {
+ return mLowPowerMode;
+ }
+
+ protected final int getMode() {
+ return mMode;
+ }
+
+ protected final boolean isScreenOn() {
+ return mScreenOn;
+ }
+
+ protected final TwilightState getTwilight() {
+ return mTwilight;
+ }
+
+ protected final boolean isNight() {
+ return mTwilight != null && mTwilight.isNight();
+ }
+
+ final class SettingsObserver extends UserContentObserver {
+
+ public SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ public void register(Uri... uris) {
+ final ContentResolver cr = mContext.getContentResolver();
+ for (Uri uri : uris) {
+ cr.registerContentObserver(uri, false, this, UserHandle.USER_ALL);
+ }
+
+ observe();
+ }
+
+ public void unregister() {
+ mContext.getContentResolver().unregisterContentObserver(this);
+ unobserve();
+ }
+
+ @Override
+ protected void update() {
+ onSettingsChanged(null);
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ onSettingsChanged(uri);
+ }
+ }
+
+}