Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6b08cb1 authored by Edward Cross's avatar Edward Cross Committed by Bruno Martins
Browse files

Trebuchet: update feed lib

Change-Id: I75dffd93536c3827404d8a3feda741b79c08e337
parent 4cc9599a
Loading
Loading
Loading
Loading
+26 KiB (49.7 KiB)

File changed.

No diff preview for this file type.

+8 −1
Original line number Diff line number Diff line
@@ -19,7 +19,14 @@ import com.android.launcher3.Launcher;

public class LineageLauncher extends Launcher {

    private final LineageLauncherCallbacks mCallbacks;

    public LineageLauncher() {
        setLauncherCallbacks(new LineageLauncherCallbacks(this));
        mCallbacks = new LineageLauncherCallbacks(this);
        setLauncherCallbacks(mCallbacks);
    }

    public LineageLauncherCallbacks getCallbacks() {
        return mCallbacks;
    }
}
+94 −58
Original line number Diff line number Diff line
@@ -17,11 +17,15 @@ package com.android.launcher3.lineage;

import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.os.Handler;

import com.android.launcher3.AppInfo;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherCallbacks;
import com.android.launcher3.settings.SettingsActivity;
import com.android.launcher3.Utilities;

import com.google.android.libraries.gsa.launcherclient.LauncherClient;
@@ -31,22 +35,28 @@ import java.io.PrintWriter;
import java.util.ArrayList;

public class LineageLauncherCallbacks implements LauncherCallbacks,
        SharedPreferences.OnSharedPreferenceChangeListener {
        OnSharedPreferenceChangeListener, OnDeviceProfileChangeListener {
        public static final String KEY_ENABLE_MINUS_ONE = "pref_enable_minus_one";
        public static final String SEARCH_PACKAGE = "com.google.android.googlequicksearchbox";

    private final LineageLauncher mLauncher;

    private OverlayCallbackImpl mOverlayCallbacks;
    private LauncherClient mLauncherClient;

    private boolean mStarted;
    private boolean mResumed;
    private boolean mAlreadyOnHome;
    private boolean mDeferCallbacks;

    public LineageLauncherCallbacks(LineageLauncher launcher) {
        mLauncher = launcher;
    }

    public void deferCallbacksUntilNextResumeOrStop() {
        mDeferCallbacks = true;
    }

    public LauncherClient getLauncherClient() {
        return mLauncherClient;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        SharedPreferences prefs = Utilities.getPrefs(mLauncher);
@@ -54,80 +64,118 @@ public class LineageLauncherCallbacks implements LauncherCallbacks,
        mLauncherClient = new LauncherClient(mLauncher, mOverlayCallbacks, getClientOptions(prefs));
        mOverlayCallbacks.setClient(mLauncherClient);
        prefs.registerOnSharedPreferenceChangeListener(this);

        mLauncher.addOnDeviceProfileChangeListener(this);
    }

    @Override
    public void onResume() {
        mResumed = true;
        if (mStarted) {
            mAlreadyOnHome = true;
    public void onDetachedFromWindow() {
        mLauncherClient.onDetachedFromWindow();
    }

        mLauncherClient.onResume();
    @Override
    public void onAttachedToWindow() {
        mLauncherClient.onAttachedToWindow();
    }

    @Override
    public void onStart() {
        mStarted = true;
        mLauncherClient.onStart();
    public void onHomeIntent(boolean internalStateHandled) {
        mLauncherClient.hideOverlay(mLauncher.isStarted() && !mLauncher.isForceInvisible());
    }

    @Override
    public void onStop() {
        mStarted = false;
        if (!mResumed) {
            mAlreadyOnHome = false;
    public void onResume() {
        Handler handler = mLauncher.getDragLayer().getHandler();
        if (mDeferCallbacks) {
            if (handler == null) {
                // Finish defer if we are not attached to window.
                checkIfStillDeferred();
            } else {
                // Wait one frame before checking as we can get multiple resume-pause events
                // in the same frame.
                handler.post(this::checkIfStillDeferred);
            }
        } else {
            mLauncherClient.onResume();
        }

        mLauncherClient.onStop();
    }

    @Override
    public void onPause() {
        mResumed = false;
        if (!mDeferCallbacks) {
            mLauncherClient.onPause();
        }
    }

    @Override
    public void onDestroy() {
        mLauncherClient.onDestroy();

        Utilities.getPrefs(mLauncher).unregisterOnSharedPreferenceChangeListener(this);
    public void onStart() {
        if (!mDeferCallbacks) {
            mLauncherClient.onStart();
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {

    public void onStop() {
        if (mDeferCallbacks) {
            checkIfStillDeferred();
        } else {
            mLauncherClient.onStop();
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    public void onDeviceProfileChanged(DeviceProfile dp) {
        mLauncherClient.reattachOverlay();
    }

    private void checkIfStillDeferred() {
        if (!mDeferCallbacks) {
            return;
        }
        if (!mLauncher.hasBeenResumed() && mLauncher.isStarted()) {
            return;
        }
        mDeferCallbacks = false;

        // Move the client to the correct state. Calling the same method twice is no-op.
        if (mLauncher.isStarted()) {
            mLauncherClient.onStart();
        }
        if (mLauncher.hasBeenResumed()) {
            mLauncherClient.onResume();
        } else {
            mLauncherClient.onPause();
        }
        if (!mLauncher.isStarted()) {
            mLauncherClient.onStop();
        }
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

    public void onDestroy() {
        mLauncherClient.onDestroy();
        Utilities.getPrefs(mLauncher).unregisterOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onAttachedToWindow() {
        mLauncherClient.onAttachedToWindow();
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
        if (KEY_ENABLE_MINUS_ONE.equals(key)) {
            mLauncherClient.setClientOptions(getClientOptions(prefs));
        }
    }

    @Override
    public void onDetachedFromWindow() {
        mLauncherClient.onDetachedFromWindow();
    }
    public void onSaveInstanceState(Bundle outState) { }

    @Override
    public void dump(String prefix, FileDescriptor fd, PrintWriter w, String[] args) {
    public void onActivityResult(int requestCode, int resultCode, Intent data) { }

    }
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { }

    @Override
    public void onHomeIntent(boolean internalStateHandled) {
        mLauncherClient.hideOverlay(mAlreadyOnHome);
    public void dump(String prefix, FileDescriptor fd, PrintWriter w, String[] args) {
        mLauncherClient.dump(prefix, w);
    }

    @Override
@@ -136,31 +184,19 @@ public class LineageLauncherCallbacks implements LauncherCallbacks,
    }

    @Override
    public void onTrimMemory(int level) {

    }
    public void onTrimMemory(int level) { }

    @Override
    public void onLauncherProviderChange() {

    }
    public void onLauncherProviderChange() { }

    @Override
    public boolean startSearch(String initialQuery, boolean selectInitialQuery, Bundle appSearchData) {
        return false;
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (SettingsActivity.KEY_MINUS_ONE.equals(key)) {
            mLauncherClient.setClientOptions(getClientOptions(sharedPreferences));
        }
    }

    private LauncherClient.ClientOptions getClientOptions(SharedPreferences prefs) {
        boolean hasPackage = LineageUtils.hasPackageInstalled(mLauncher, SEARCH_PACKAGE);
        boolean isEnabled = prefs.getBoolean(SettingsActivity.KEY_MINUS_ONE, true);
        return new LauncherClient.ClientOptions(hasPackage && isEnabled,
        return new LauncherClient.ClientOptions(
                prefs.getBoolean(KEY_ENABLE_MINUS_ONE, true),
                true, /* enableHotword */
                true /* enablePrewarming */
        );