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

Commit 8f531dd9 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

resolved conflicts for merge of 20884fdc to ub-launcher3-master

Change-Id: I31b49ed83bf6fa966ad68b587e6fa472e87bc0e3
parents 0e31c31d 20884fdc
Loading
Loading
Loading
Loading
+20 −17
Original line number Diff line number Diff line
@@ -287,6 +287,8 @@ public class Launcher extends Activity
    private boolean mHasFocus = false;
    private boolean mAttached = false;

    private LauncherClings mClings;

    private static LongArrayMap<FolderInfo> sFolders = new LongArrayMap<>();

    private View.OnTouchListener mHapticFeedbackTouchListener;
@@ -630,7 +632,7 @@ public class Launcher extends Activity
    public boolean isDraggingEnabled() {
        // We prevent dragging when we are loading the workspace as it is possible to pick up a view
        // that is subsequently removed from the workspace in startBinding().
        return !mModel.isLoadingWorkspace();
        return !isWorkspaceLoading();
    }

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
@@ -3710,11 +3712,12 @@ public class Launcher extends Activity
                continue;
            }

            final View view;
            switch (item.itemType) {
                case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
                case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
                    ShortcutInfo info = (ShortcutInfo) item;
                    View shortcut = createShortcut(info);
                    view = createShortcut(info);

                    /*
                     * TODO: FIX collision case
@@ -3733,28 +3736,26 @@ public class Launcher extends Activity
                            }
                        }
                    }

                    workspace.addInScreenFromBind(shortcut, item.container, item.screenId, item.cellX,
                            item.cellY, 1, 1);
                    if (animateIcons) {
                        // Animate all the applications up now
                        shortcut.setAlpha(0f);
                        shortcut.setScaleX(0f);
                        shortcut.setScaleY(0f);
                        bounceAnims.add(createNewAppBounceAnimation(shortcut, i));
                        newShortcutsScreenId = item.screenId;
                    }
                    break;
                case LauncherSettings.Favorites.ITEM_TYPE_FOLDER:
                    FolderIcon newFolder = FolderIcon.fromXml(R.layout.folder_icon, this,
                    view = FolderIcon.fromXml(R.layout.folder_icon, this,
                            (ViewGroup) workspace.getChildAt(workspace.getCurrentPage()),
                            (FolderInfo) item, mIconCache);
                    workspace.addInScreenFromBind(newFolder, item.container, item.screenId, item.cellX,
                            item.cellY, 1, 1);
                    break;
                default:
                    throw new RuntimeException("Invalid Item Type");
            }

            workspace.addInScreenFromBind(view, item.container, item.screenId, item.cellX,
                    item.cellY, 1, 1);
            if (animateIcons) {
                // Animate all the applications up now
                view.setAlpha(0f);
                view.setScaleX(0f);
                view.setScaleY(0f);
                bounceAnims.add(createNewAppBounceAnimation(view, i));
                newShortcutsScreenId = item.screenId;
            }
        }

        if (animateIcons) {
@@ -4019,7 +4020,8 @@ public class Launcher extends Activity

    private boolean canRunNewAppsAnimation() {
        long diff = System.currentTimeMillis() - mDragController.getLastGestureUpTime();
        return diff > (NEW_APPS_ANIMATION_INACTIVE_TIMEOUT_SECONDS * 1000);
        return diff > (NEW_APPS_ANIMATION_INACTIVE_TIMEOUT_SECONDS * 1000)
                && (mClings == null || !mClings.isVisible());
    }

    private ValueAnimator createNewAppBounceAnimation(View v, int i) {
@@ -4443,6 +4445,7 @@ public class Launcher extends Activity
        // launcher2). Otherwise, we prompt the user upon started for migration
        LauncherClings launcherClings = new LauncherClings(this);
        if (launcherClings.shouldShowFirstRunOrMigrationClings()) {
            mClings = launcherClings;
            if (mModel.canMigrateFromOldLauncherDb(this)) {
                launcherClings.showMigrationCling();
            } else {
+8 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ class LauncherClings implements OnClickListener, OnKeyListener {

    @Thunk Launcher mLauncher;
    private LayoutInflater mInflater;
    @Thunk boolean mIsVisible;

    /** Ctor */
    public LauncherClings(Launcher launcher) {
@@ -108,6 +109,7 @@ class LauncherClings implements OnClickListener, OnKeyListener {
     */
    public void showMigrationCling() {
        mLauncher.onLauncherClingShown();
        mIsVisible = true;
        mLauncher.hideWorkspaceSearchAndHotseat();

        ViewGroup root = (ViewGroup) mLauncher.findViewById(R.id.launcher);
@@ -134,6 +136,7 @@ class LauncherClings implements OnClickListener, OnKeyListener {
    }

    public void showLongPressCling(boolean showWelcome) {
        mIsVisible = true;
        ViewGroup root = (ViewGroup) mLauncher.findViewById(R.id.launcher);
        View cling = mInflater.inflate(R.layout.longpress_cling, root, false);

@@ -221,6 +224,7 @@ class LauncherClings implements OnClickListener, OnKeyListener {
                    mLauncher.getSharedPrefs().edit()
                        .putBoolean(flag, true)
                        .apply();
                    mIsVisible = false;
                    if (postAnimationCb != null) {
                        postAnimationCb.run();
                    }
@@ -234,6 +238,10 @@ class LauncherClings implements OnClickListener, OnKeyListener {
        }
    }

    public boolean isVisible() {
        return mIsVisible;
    }

    /** Returns whether the clings are enabled or should be shown */
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
    private boolean areClingsEnabled() {
+36 −41
Original line number Diff line number Diff line
@@ -259,7 +259,7 @@ public class LauncherModel extends BroadcastReceiver

    /** Runs the specified runnable immediately if called from the worker thread, otherwise it is
     * posted on the worker thread handler. */
    private static void runOnWorkerThread(Runnable r) {
    @Thunk static void runOnWorkerThread(Runnable r) {
        if (sWorkerThread.getThreadId() == Process.myTid()) {
            r.run();
        } else {
@@ -268,19 +268,6 @@ public class LauncherModel extends BroadcastReceiver
        }
    }

    /**
     * Runs the specified runnable after the loader is complete
     */
    @Thunk void runAfterBindCompletes(Runnable r) {
        if (isLoadingWorkspace() || !mHasLoaderCompletedOnce) {
            synchronized (mBindCompleteRunnables) {
                mBindCompleteRunnables.add(r);
            }
        } else {
            runOnWorkerThread(r);
        }
    }

    boolean canMigrateFromOldLauncherDb(Launcher launcher) {
        return mOldContentProviderExists && !launcher.isLauncherPreinstalled() ;
    }
@@ -889,10 +876,15 @@ public class LauncherModel extends BroadcastReceiver
    }

    private void assertWorkspaceLoaded() {
        if (ProviderConfig.IS_DOGFOOD_BUILD && (isLoadingWorkspace() || !mHasLoaderCompletedOnce)) {
        if (ProviderConfig.IS_DOGFOOD_BUILD) {
            synchronized (mLock) {
                if (!mHasLoaderCompletedOnce ||
                        (mLoaderTask != null && mLoaderTask.mIsLoadingAndBindingWorkspace)) {
                    throw new RuntimeException("Trying to add shortcut while loader is running");
                }
            }
        }
    }

    /**
     * Returns true if the shortcuts already exists on the workspace. This must be called after
@@ -1385,16 +1377,6 @@ public class LauncherModel extends BroadcastReceiver
                mHandler.post(r);
            }
        }

        // Run all the bind complete runnables after workspace is bound.
        if (!mBindCompleteRunnables.isEmpty()) {
            synchronized (mBindCompleteRunnables) {
                for (final Runnable r : mBindCompleteRunnables) {
                    runOnWorkerThread(r);
                }
                mBindCompleteRunnables.clear();
            }
        }
    }

    public void stopLoader() {
@@ -1436,15 +1418,6 @@ public class LauncherModel extends BroadcastReceiver
        return mAllAppsLoaded;
    }

    boolean isLoadingWorkspace() {
        synchronized (mLock) {
            if (mLoaderTask != null) {
                return mLoaderTask.isLoadingWorkspace();
            }
        }
        return false;
    }

    /**
     * Runnable for the thread that loads the contents of the launcher:
     *   - workspace icons
@@ -1463,10 +1436,6 @@ public class LauncherModel extends BroadcastReceiver
            mFlags = flags;
        }

        boolean isLoadingWorkspace() {
            return mIsLoadingAndBindingWorkspace;
        }

        private void loadAndBindWorkspace() {
            mIsLoadingAndBindingWorkspace = true;

@@ -2708,13 +2677,24 @@ public class LauncherModel extends BroadcastReceiver
                        callbacks.finishBindingItems();
                    }

                    mIsLoadingAndBindingWorkspace = false;

                    // Run all the bind complete runnables after workspace is bound.
                    if (!mBindCompleteRunnables.isEmpty()) {
                        synchronized (mBindCompleteRunnables) {
                            for (final Runnable r : mBindCompleteRunnables) {
                                runOnWorkerThread(r);
                            }
                            mBindCompleteRunnables.clear();
                        }
                    }

                    // If we're profiling, ensure this is the last thing in the queue.
                    if (DEBUG_LOADERS) {
                        Log.d(TAG, "bound workspace in "
                            + (SystemClock.uptimeMillis()-t) + "ms");
                    }

                    mIsLoadingAndBindingWorkspace = false;
                }
            };
            if (isLoadingSynchronously) {
@@ -2843,12 +2823,27 @@ public class LauncherModel extends BroadcastReceiver

                final ManagedProfileHeuristic heuristic = ManagedProfileHeuristic.get(mContext, user);
                if (heuristic != null) {
                    runAfterBindCompletes(new Runnable() {
                    final Runnable r = new Runnable() {

                        @Override
                        public void run() {
                            heuristic.processUserApps(apps);
                        }
                    };
                    runOnMainThread(new Runnable() {

                        @Override
                        public void run() {
                            // Check isLoadingWorkspace on the UI thread, as it is updated on
                            // the UI thread.
                            if (mIsLoadingAndBindingWorkspace) {
                                synchronized (mBindCompleteRunnables) {
                                    mBindCompleteRunnables.add(r);
                                }
                            } else {
                                runOnWorkerThread(r);
                            }
                        }
                    });
                }
            }