From 31fcfc44b593556c24177c0cc4d77ec59ec116f5 Mon Sep 17 00:00:00 2001 From: Goooler Date: Thu, 25 Aug 2022 11:08:27 +0800 Subject: [PATCH 1/6] Convert OverlayCallbackImpl to Kotlin --- .../nexuslauncher/OverlayCallbackImpl.java | 177 ------------------ .../nexuslauncher/OverlayCallbackImpl.kt | 140 ++++++++++++++ 2 files changed, 140 insertions(+), 177 deletions(-) delete mode 100644 lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.java create mode 100644 lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt diff --git a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.java b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.java deleted file mode 100644 index dc5708c132..0000000000 --- a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.java +++ /dev/null @@ -1,177 +0,0 @@ -package app.lawnchair.nexuslauncher; - -import static android.content.pm.ApplicationInfo.FLAG_DEBUGGABLE; -import static android.content.pm.ApplicationInfo.FLAG_SYSTEM; - -import android.app.Activity; -import android.content.Context; -import android.os.Bundle; - -import com.android.launcher3.Launcher; -import com.android.launcher3.Utilities; -import com.android.systemui.plugins.shared.LauncherOverlayManager; -import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlay; -import com.google.android.libraries.launcherclient.ISerializableScrollCallback; -import com.google.android.libraries.launcherclient.LauncherClient; -import com.google.android.libraries.launcherclient.LauncherClientCallbacks; -import com.google.android.libraries.launcherclient.StaticInteger; -import com.patrykmichalik.opto.core.PreferenceExtensionsKt; - -import app.lawnchair.FeedBridge; -import app.lawnchair.LawnchairLauncher; -import app.lawnchair.preferences2.PreferenceManager2; - -/** - * Implements {@link LauncherOverlay} and passes all the corresponding events to {@link - * LauncherClient}. {@see setClient} - * - *

Implements {@link LauncherClientCallbacks} and sends all the corresponding callbacks to {@link - * Launcher}. - */ -public class OverlayCallbackImpl - implements LauncherOverlay, LauncherClientCallbacks, LauncherOverlayManager, - ISerializableScrollCallback { - - final static String PREF_PERSIST_FLAGS = "pref_persistent_flags"; - - private final Launcher mLauncher; - private final LauncherClient mClient; - boolean mFlagsChanged = false; - private LauncherOverlayCallbacks mLauncherOverlayCallbacks; - private boolean mWasOverlayAttached = false; - private int mFlags; - - public OverlayCallbackImpl(LawnchairLauncher launcher) { - PreferenceManager2 preferenceManager2 = PreferenceManager2.getInstance(launcher); - Boolean enableFeed = PreferenceExtensionsKt.firstBlocking(preferenceManager2.getEnableFeed()); - - mLauncher = launcher; - mClient = new LauncherClient(mLauncher, this, new StaticInteger( - (enableFeed ? 1 : 0) | 2 | 4 | 8)); - } - - public static boolean minusOneAvailable(Context context) { - return FeedBridge.useBridge(context) - || ((context.getApplicationInfo().flags & (FLAG_DEBUGGABLE | FLAG_SYSTEM)) != 0); - } - - @Override - public void onDeviceProvideChanged() { - mClient.redraw(); - } - - @Override - public void onAttachedToWindow() { - mClient.onAttachedToWindow(); - } - - @Override - public void onDetachedFromWindow() { - mClient.onDetachedFromWindow(); - } - - @Override - public void openOverlay() { - mClient.showOverlay(true); - } - - @Override - public void hideOverlay(boolean animate) { - mClient.hideOverlay(animate); - } - - @Override - public void hideOverlay(int duration) { - mClient.hideOverlay(duration); - } - - @Override - public boolean startSearch(byte[] config, Bundle extras) { - return false; - } - - @Override - public void onActivityCreated(Activity activity, Bundle bundle) { - // Not called - } - - @Override - public void onActivityStarted(Activity activity) { - mClient.onStart(); - } - - @Override - public void onActivityResumed(Activity activity) { - mClient.onResume(); - } - - @Override - public void onActivityPaused(Activity activity) { - mClient.onPause(); - } - - @Override - public void onActivityStopped(Activity activity) { - mClient.onStop(); - } - - @Override - public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { - } - - @Override - public void onActivityDestroyed(Activity activity) { - mClient.onDestroy(); - mClient.mDestroyed = true; - } - - @Override - public void onOverlayScrollChanged(float progress) { - if (mLauncherOverlayCallbacks != null) { - mLauncherOverlayCallbacks.onScrollChanged(progress); - } - } - - @Override - public void onServiceStateChanged(boolean overlayAttached, boolean hotwordActive) { - this.onServiceStateChanged(overlayAttached); - } - - @Override - public void onServiceStateChanged(boolean overlayAttached) { - if (overlayAttached != mWasOverlayAttached) { - mWasOverlayAttached = overlayAttached; - mLauncher.setLauncherOverlay(overlayAttached ? this : null); - } - } - - @Override - public void onScrollInteractionBegin() { - mClient.startScroll(); - } - - @Override - public void onScrollInteractionEnd() { - mClient.endScroll(); - } - - @Override - public void onScrollChange(float progress, boolean rtl) { - mClient.setScroll(progress); - } - - @Override - public void setOverlayCallbacks(LauncherOverlayCallbacks callbacks) { - mLauncherOverlayCallbacks = callbacks; - } - - @Override - public void setPersistentFlags(int flags) { - flags &= (8 | 16); - if (flags != mFlags) { - mFlagsChanged = true; - mFlags = flags; - Utilities.getDevicePrefs(mLauncher).edit().putInt(PREF_PERSIST_FLAGS, flags).apply(); - } - } -} \ No newline at end of file diff --git a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt new file mode 100644 index 0000000000..c18219a0e3 --- /dev/null +++ b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt @@ -0,0 +1,140 @@ +package app.lawnchair.nexuslauncher + +import android.app.Activity +import android.content.Context +import android.content.pm.ApplicationInfo +import android.os.Bundle +import app.lawnchair.FeedBridge +import app.lawnchair.LawnchairLauncher +import app.lawnchair.preferences2.PreferenceManager2 +import com.android.launcher3.Utilities +import com.android.systemui.plugins.shared.LauncherOverlayManager +import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlayCallbacks +import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlay +import com.google.android.libraries.launcherclient.ISerializableScrollCallback +import com.google.android.libraries.launcherclient.LauncherClient +import com.google.android.libraries.launcherclient.LauncherClientCallbacks +import com.google.android.libraries.launcherclient.StaticInteger + +/** + * Implements [LauncherOverlay] and passes all the corresponding events to [ ]. {@see setClient} + * + * + * Implements [LauncherClientCallbacks] and sends all the corresponding callbacks to [ ]. + */ +class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOverlay, + LauncherClientCallbacks, LauncherOverlayManager, ISerializableScrollCallback { + private val mClient: LauncherClient + var mFlagsChanged = false + private var mLauncherOverlayCallbacks: LauncherOverlayCallbacks? = null + private var mWasOverlayAttached = false + private var mFlags = 0 + + init { + val enableFeed: Boolean = PreferenceManager2.getInstance(mLauncher).enableFeed.firstBlocking() + mClient = LauncherClient( + mLauncher, this, StaticInteger((if (enableFeed) 1 else 0) or 2 or 4 or 8) + ) + } + + override fun onDeviceProvideChanged() { + mClient.redraw() + } + + override fun onAttachedToWindow() { + mClient.onAttachedToWindow() + } + + override fun onDetachedFromWindow() { + mClient.onDetachedFromWindow() + } + + override fun openOverlay() { + mClient.showOverlay(true) + } + + override fun hideOverlay(animate: Boolean) { + mClient.hideOverlay(animate) + } + + override fun hideOverlay(duration: Int) { + mClient.hideOverlay(duration) + } + + override fun startSearch(config: ByteArray?, extras: Bundle?): Boolean = false + + override fun onActivityCreated(activity: Activity, bundle: Bundle?) = Unit + + override fun onActivityStarted(activity: Activity) { + mClient.onStart() + } + + override fun onActivityResumed(activity: Activity) { + mClient.onResume() + } + + override fun onActivityPaused(activity: Activity) { + mClient.onPause() + } + + override fun onActivityStopped(activity: Activity) { + mClient.onStop() + } + + override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle?) = Unit + + override fun onActivityDestroyed(activity: Activity) { + mClient.onDestroy() + mClient.mDestroyed = true + } + + override fun onOverlayScrollChanged(progress: Float) { + mLauncherOverlayCallbacks?.onScrollChanged(progress) + } + + override fun onServiceStateChanged(overlayAttached: Boolean, hotwordActive: Boolean) { + this.onServiceStateChanged(overlayAttached) + } + + override fun onServiceStateChanged(overlayAttached: Boolean) { + if (overlayAttached != mWasOverlayAttached) { + mWasOverlayAttached = overlayAttached + mLauncher.setLauncherOverlay(if (overlayAttached) this else null) + } + } + + override fun onScrollInteractionBegin() { + mClient.startScroll() + } + + override fun onScrollInteractionEnd() { + mClient.endScroll() + } + + override fun onScrollChange(progress: Float, rtl: Boolean) { + mClient.setScroll(progress) + } + + override fun setOverlayCallbacks(callbacks: LauncherOverlayCallbacks?) { + mLauncherOverlayCallbacks = callbacks + } + + override fun setPersistentFlags(flags: Int) { + val newFlags = flags and (8 or 16) + if (newFlags != mFlags) { + mFlagsChanged = true + mFlags = newFlags + Utilities.getDevicePrefs(mLauncher).edit().putInt(PREF_PERSIST_FLAGS, newFlags).apply() + } + } + + companion object { + const val PREF_PERSIST_FLAGS = "pref_persistent_flags" + + fun minusOneAvailable(context: Context): Boolean { + return FeedBridge.useBridge(context) || + context.applicationInfo.flags and + (ApplicationInfo.FLAG_DEBUGGABLE or ApplicationInfo.FLAG_SYSTEM) != 0 + } + } +} From d084eddb6cc0a3cab292906ae1b32ce2587e4809 Mon Sep 17 00:00:00 2001 From: Goooler Date: Thu, 25 Aug 2022 11:16:06 +0800 Subject: [PATCH 2/6] Cleanups --- .../nexuslauncher/OverlayCallbackImpl.kt | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt index c18219a0e3..407275ac33 100644 --- a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt +++ b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt @@ -9,29 +9,31 @@ import app.lawnchair.LawnchairLauncher import app.lawnchair.preferences2.PreferenceManager2 import com.android.launcher3.Utilities import com.android.systemui.plugins.shared.LauncherOverlayManager -import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlayCallbacks import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlay +import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlayCallbacks import com.google.android.libraries.launcherclient.ISerializableScrollCallback import com.google.android.libraries.launcherclient.LauncherClient import com.google.android.libraries.launcherclient.LauncherClientCallbacks +import com.google.android.libraries.launcherclient.LauncherClientService import com.google.android.libraries.launcherclient.StaticInteger +import com.patrykmichalik.opto.core.firstBlocking /** - * Implements [LauncherOverlay] and passes all the corresponding events to [ ]. {@see setClient} - * + * Implements [LauncherOverlay] and passes all the corresponding events to [LauncherClient], + * see [LauncherClientService.setClient]. * * Implements [LauncherClientCallbacks] and sends all the corresponding callbacks to [ ]. */ class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOverlay, LauncherClientCallbacks, LauncherOverlayManager, ISerializableScrollCallback { private val mClient: LauncherClient - var mFlagsChanged = false + private var mFlagsChanged = false private var mLauncherOverlayCallbacks: LauncherOverlayCallbacks? = null private var mWasOverlayAttached = false private var mFlags = 0 init { - val enableFeed: Boolean = PreferenceManager2.getInstance(mLauncher).enableFeed.firstBlocking() + val enableFeed = PreferenceManager2.getInstance(mLauncher).enableFeed.firstBlocking() mClient = LauncherClient( mLauncher, this, StaticInteger((if (enableFeed) 1 else 0) or 2 or 4 or 8) ) @@ -61,10 +63,6 @@ class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOv mClient.hideOverlay(duration) } - override fun startSearch(config: ByteArray?, extras: Bundle?): Boolean = false - - override fun onActivityCreated(activity: Activity, bundle: Bundle?) = Unit - override fun onActivityStarted(activity: Activity) { mClient.onStart() } @@ -81,8 +79,6 @@ class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOv mClient.onStop() } - override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle?) = Unit - override fun onActivityDestroyed(activity: Activity) { mClient.onDestroy() mClient.mDestroyed = true @@ -93,7 +89,7 @@ class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOv } override fun onServiceStateChanged(overlayAttached: Boolean, hotwordActive: Boolean) { - this.onServiceStateChanged(overlayAttached) + onServiceStateChanged(overlayAttached) } override fun onServiceStateChanged(overlayAttached: Boolean) { @@ -129,7 +125,7 @@ class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOv } companion object { - const val PREF_PERSIST_FLAGS = "pref_persistent_flags" + private const val PREF_PERSIST_FLAGS = "pref_persistent_flags" fun minusOneAvailable(context: Context): Boolean { return FeedBridge.useBridge(context) || From 146fc0481198e6af086359203f4df66db129543d Mon Sep 17 00:00:00 2001 From: Goooler Date: Sun, 28 Aug 2022 15:33:58 +0800 Subject: [PATCH 3/6] Update lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt Co-authored-by: Yasan --- .../src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt index 407275ac33..e60f918286 100644 --- a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt +++ b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt @@ -7,6 +7,7 @@ import android.os.Bundle import app.lawnchair.FeedBridge import app.lawnchair.LawnchairLauncher import app.lawnchair.preferences2.PreferenceManager2 +import com.android.launcher3.Launcher import com.android.launcher3.Utilities import com.android.systemui.plugins.shared.LauncherOverlayManager import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlay @@ -22,7 +23,7 @@ import com.patrykmichalik.opto.core.firstBlocking * Implements [LauncherOverlay] and passes all the corresponding events to [LauncherClient], * see [LauncherClientService.setClient]. * - * Implements [LauncherClientCallbacks] and sends all the corresponding callbacks to [ ]. + * Implements [LauncherClientCallbacks] and sends all the corresponding callbacks to [Launcher]. */ class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOverlay, LauncherClientCallbacks, LauncherOverlayManager, ISerializableScrollCallback { From be1bdf847d6593257490dc28d8c63f9dfcf36b87 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sun, 28 Aug 2022 15:43:01 +0800 Subject: [PATCH 4/6] Add overrides back --- .../src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt index e60f918286..bf8edae6f2 100644 --- a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt +++ b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt @@ -64,6 +64,10 @@ class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOv mClient.hideOverlay(duration) } + override fun startSearch(config: ByteArray?, extras: Bundle?): Boolean = false + + override fun onActivityCreated(activity: Activity, bundle: Bundle?) = Unit + override fun onActivityStarted(activity: Activity) { mClient.onStart() } From d0fbd9dc7023b2de24020c91977636fa8be6c34e Mon Sep 17 00:00:00 2001 From: Goooler Date: Sun, 28 Aug 2022 15:58:25 +0800 Subject: [PATCH 5/6] Add `onActivitySaveInstanceState` back --- .../src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt index bf8edae6f2..20e5c281fc 100644 --- a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt +++ b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt @@ -84,6 +84,8 @@ class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOv mClient.onStop() } + override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle?) = Unit + override fun onActivityDestroyed(activity: Activity) { mClient.onDestroy() mClient.mDestroyed = true From 3c873a3dd77cdeb526652f2be652b7209c46f1ce Mon Sep 17 00:00:00 2001 From: Goooler Date: Sun, 28 Aug 2022 16:05:42 +0800 Subject: [PATCH 6/6] NonNull --- .../src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt index 20e5c281fc..cb14d2bb00 100644 --- a/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt +++ b/lawnchair/src/app/lawnchair/nexuslauncher/OverlayCallbackImpl.kt @@ -84,7 +84,7 @@ class OverlayCallbackImpl(private val mLauncher: LawnchairLauncher) : LauncherOv mClient.onStop() } - override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle?) = Unit + override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle) = Unit override fun onActivityDestroyed(activity: Activity) { mClient.onDestroy()