sdk: Extract base class for lineage base feature
So that it can be shared in multiple components Change-Id: I96d1a5772b7185bf7c3d394a1b2c8f143d48e0c8
This commit is contained in:
committed by
Michael Bestas
parent
0e290483f3
commit
89941a9622
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (C) 2023 The LineageOS 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.lineageos.platform.internal;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.UserHandle;
|
||||
|
||||
import org.lineageos.platform.internal.common.UserContentObserver;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import lineageos.providers.LineageSettings;
|
||||
|
||||
public abstract class LineageBaseFeature {
|
||||
protected final Context mContext;
|
||||
protected final Handler mHandler;
|
||||
protected SettingsObserver mSettingsObserver;
|
||||
|
||||
public LineageBaseFeature(Context context, Handler handler) {
|
||||
mContext = context;
|
||||
mHandler = handler;
|
||||
}
|
||||
|
||||
public abstract void onStart();
|
||||
|
||||
protected abstract void onSettingsChanged(Uri uri);
|
||||
|
||||
public abstract void dump(PrintWriter pw);
|
||||
|
||||
public void start() {
|
||||
if (mSettingsObserver == null) {
|
||||
mSettingsObserver = new SettingsObserver(mHandler);
|
||||
onStart();
|
||||
}
|
||||
}
|
||||
|
||||
protected final void registerSettings(Uri... settings) {
|
||||
mSettingsObserver.register(settings);
|
||||
}
|
||||
|
||||
protected final boolean getBoolean(String setting, boolean defaultValue) {
|
||||
return LineageSettings.System.getIntForUser(mContext.getContentResolver(),
|
||||
setting, (defaultValue ? 1 : 0), UserHandle.USER_CURRENT) == 1;
|
||||
}
|
||||
|
||||
protected final void putBoolean(String setting, boolean value) {
|
||||
LineageSettings.System.putIntForUser(mContext.getContentResolver(),
|
||||
setting, (value ? 1 : 0), UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
protected final int getInt(String setting, int defaultValue) {
|
||||
return LineageSettings.System.getIntForUser(mContext.getContentResolver(),
|
||||
setting, defaultValue, UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
protected final void putInt(String setting, int value) {
|
||||
LineageSettings.System.putIntForUser(mContext.getContentResolver(),
|
||||
setting, value, UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
protected final String getString(String setting) {
|
||||
return LineageSettings.System.getStringForUser(mContext.getContentResolver(),
|
||||
setting, UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
protected final void putString(String setting, String value) {
|
||||
LineageSettings.System.putStringForUser(mContext.getContentResolver(),
|
||||
setting, value, UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
public void onDestroy() {
|
||||
mSettingsObserver.unregister();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,52 +16,36 @@
|
||||
*/
|
||||
package org.lineageos.platform.internal.display;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.hardware.display.ColorDisplayManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
|
||||
import org.lineageos.platform.internal.common.UserContentObserver;
|
||||
import org.lineageos.platform.internal.LineageBaseFeature;
|
||||
import org.lineageos.platform.internal.display.LiveDisplayService.State;
|
||||
import org.lineageos.platform.internal.display.TwilightTracker.TwilightState;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.BitSet;
|
||||
|
||||
import lineageos.providers.LineageSettings;
|
||||
|
||||
import static org.lineageos.platform.internal.display.LiveDisplayService.ALL_CHANGED;
|
||||
import static org.lineageos.platform.internal.display.LiveDisplayService.DISPLAY_CHANGED;
|
||||
import static org.lineageos.platform.internal.display.LiveDisplayService.MODE_CHANGED;
|
||||
import static org.lineageos.platform.internal.display.LiveDisplayService.TWILIGHT_CHANGED;
|
||||
|
||||
public abstract class LiveDisplayFeature {
|
||||
public abstract class LiveDisplayFeature extends LineageBaseFeature {
|
||||
|
||||
protected static final String TAG = "LiveDisplay";
|
||||
protected static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||
|
||||
protected final Context mContext;
|
||||
protected final Handler mHandler;
|
||||
protected final boolean mNightDisplayAvailable;
|
||||
|
||||
private SettingsObserver mSettingsObserver;
|
||||
private State mState;
|
||||
|
||||
public LiveDisplayFeature(Context context, Handler handler) {
|
||||
mContext = context;
|
||||
mHandler = handler;
|
||||
super(context, handler);
|
||||
mNightDisplayAvailable = ColorDisplayManager.isNightDisplayAvailable(mContext);
|
||||
}
|
||||
|
||||
public abstract void onStart();
|
||||
|
||||
protected abstract void onSettingsChanged(Uri uri);
|
||||
|
||||
public abstract void dump(PrintWriter pw);
|
||||
|
||||
public abstract boolean getCapabilities(final BitSet caps);
|
||||
|
||||
protected abstract void onUpdate();
|
||||
@@ -82,55 +66,10 @@ public abstract class LiveDisplayFeature {
|
||||
}
|
||||
}
|
||||
|
||||
void start() {
|
||||
if (mSettingsObserver == null) {
|
||||
mSettingsObserver = new SettingsObserver(mHandler);
|
||||
onStart();
|
||||
}
|
||||
}
|
||||
|
||||
public void onDestroy() {
|
||||
mSettingsObserver.unregister();
|
||||
}
|
||||
|
||||
protected void onScreenStateChanged() { }
|
||||
|
||||
protected void onTwilightUpdated() { }
|
||||
|
||||
protected final void registerSettings(Uri... settings) {
|
||||
mSettingsObserver.register(settings);
|
||||
}
|
||||
|
||||
protected final boolean getBoolean(String setting, boolean defaultValue) {
|
||||
return LineageSettings.System.getIntForUser(mContext.getContentResolver(),
|
||||
setting, (defaultValue ? 1 : 0), UserHandle.USER_CURRENT) == 1;
|
||||
}
|
||||
|
||||
protected final void putBoolean(String setting, boolean value) {
|
||||
LineageSettings.System.putIntForUser(mContext.getContentResolver(),
|
||||
setting, (value ? 1 : 0), UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
protected final int getInt(String setting, int defaultValue) {
|
||||
return LineageSettings.System.getIntForUser(mContext.getContentResolver(),
|
||||
setting, defaultValue, UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
protected final void putInt(String setting, int value) {
|
||||
LineageSettings.System.putIntForUser(mContext.getContentResolver(),
|
||||
setting, value, UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
protected final String getString(String setting) {
|
||||
return LineageSettings.System.getStringForUser(mContext.getContentResolver(),
|
||||
setting, UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
protected final void putString(String setting, String value) {
|
||||
LineageSettings.System.putStringForUser(mContext.getContentResolver(),
|
||||
setting, value, UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
protected final boolean isLowPowerMode() {
|
||||
return mState.mLowPowerMode;
|
||||
}
|
||||
@@ -150,36 +89,4 @@ public abstract class LiveDisplayFeature {
|
||||
public final boolean isNight() {
|
||||
return mState.mTwilight != null && mState.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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user