diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/LineageBaseFeature.java b/lineage/lib/main/java/org/lineageos/platform/internal/LineageBaseFeature.java new file mode 100644 index 00000000..69d0eded --- /dev/null +++ b/lineage/lib/main/java/org/lineageos/platform/internal/LineageBaseFeature.java @@ -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); + } + } +} diff --git a/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayFeature.java b/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayFeature.java index 0b98631f..44f65a1e 100644 --- a/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayFeature.java +++ b/lineage/lib/main/java/org/lineageos/platform/internal/display/LiveDisplayFeature.java @@ -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); - } - } - }