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

Commit 99d6c2ff authored by Samuel Fufa's avatar Samuel Fufa
Browse files

Update hero app shortcuts with icon

- set appropriate click handler for recycled app icons

Bug: 168810843
Bug: 168733655
Test: Manual
Change-Id: Ic644deb4ac6c7a1cb9a2c3b75f7e2ac86380a9d0
parent e718381b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -495,6 +495,10 @@ public class AllAppsGridAdapter extends
                    });
                    withPayload.setSelectionHandler(selectionHandler);
                }
                else {
                    icon.setOnClickListener(mOnIconClickListener);
                    icon.setOnLongClickListener(mOnIconLongClickListener);
                }
                break;
            case VIEW_TYPE_EMPTY_SEARCH:
                TextView emptyViewText = (TextView) holder.itemView;
+22 −7
Original line number Diff line number Diff line
@@ -16,12 +16,16 @@
package com.android.launcher3.views;

import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_ALL_APPS;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;

import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.graphics.Point;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Pair;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
@@ -31,9 +35,10 @@ import com.android.launcher3.DeviceProfile;
import com.android.launcher3.DragSource;
import com.android.launcher3.DropTarget;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.R;
import com.android.launcher3.allapps.AllAppsGridAdapter.AdapterItemWithPayload;
import com.android.launcher3.allapps.search.AllAppsSearchBarController;
import com.android.launcher3.allapps.search.AllAppsSearchBarController.PayloadResultHandler;
import com.android.launcher3.dragndrop.DragOptions;
import com.android.launcher3.dragndrop.DraggableView;
import com.android.launcher3.graphics.DragPreviewProvider;
@@ -53,7 +58,7 @@ import java.util.List;
 * A view representing a high confidence app search result that includes shortcuts
 */
public class HeroSearchResultView extends LinearLayout implements DragSource,
        AllAppsSearchBarController.PayloadResultHandler<List<ItemInfoWithIcon>> {
        PayloadResultHandler<List<Pair<ShortcutInfo, ItemInfoWithIcon>>> {

    public static final int MAX_SHORTCUTS_COUNT = 2;
    BubbleTextView mBubbleTextView;
@@ -119,15 +124,25 @@ public class HeroSearchResultView extends LinearLayout implements DragSource,
     * Apply {@link ItemInfo} for appIcon and shortcut Icons
     */
    @Override
    public void applyAdapterInfo(AdapterItemWithPayload<List<ItemInfoWithIcon>> adapterItem) {
    public void applyAdapterInfo(
            AdapterItemWithPayload<List<Pair<ShortcutInfo, ItemInfoWithIcon>>> adapterItem) {
        mBubbleTextView.applyFromApplicationInfo(adapterItem.appInfo);
        mIconView.setBackground(mBubbleTextView.getIcon());
        mIconView.setTag(adapterItem.appInfo);
        List<ItemInfoWithIcon> shorcutInfos = adapterItem.getPayload();
        List<Pair<ShortcutInfo, ItemInfoWithIcon>> shortcutDetails = adapterItem.getPayload();
        LauncherAppState appState = LauncherAppState.getInstance(getContext());
        for (int i = 0; i < mDeepShortcutTextViews.length; i++) {
            mDeepShortcutTextViews[i].setVisibility(shorcutInfos.size() > i ? VISIBLE : GONE);
            if (i < shorcutInfos.size()) {
                mDeepShortcutTextViews[i].applyFromItemInfoWithIcon(shorcutInfos.get(i));
            BubbleTextView shortcutView = mDeepShortcutTextViews[i];
            mDeepShortcutTextViews[i].setVisibility(shortcutDetails.size() > i ? VISIBLE : GONE);
            if (i < shortcutDetails.size()) {
                Pair<ShortcutInfo, ItemInfoWithIcon> p = shortcutDetails.get(i);
                //apply ItemInfo and prepare view
                shortcutView.applyFromItemInfoWithIcon(p.second);
                MODEL_EXECUTOR.execute(() -> {
                    // load unbadged shortcut in background and update view when icon ready
                    appState.getIconCache().getUnbadgedShortcutIcon(p.second, p.first);
                    MAIN_EXECUTOR.post(() -> shortcutView.reapplyItemInfo(p.second));
                });
            }
        }
        mPlugin = adapterItem.getPlugin();