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

Commit 94eb35aa authored by Matt Sziklay's avatar Matt Sziklay Committed by Automerger Merge Worker
Browse files

Merge "Use IconProvider to get application icon." into udc-dev am: 6216b56e

parents 2cad3651 6216b56e
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Point;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.util.Log;
import android.view.Choreographer;
@@ -38,6 +39,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.window.WindowContainerTransaction;

import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.DisplayController;
@@ -81,6 +83,9 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
    private final int mHandleMenuCornerRadiusId = R.dimen.caption_menu_corner_radius;
    private PointF mHandleMenuPosition = new PointF();

    private Drawable mAppIcon;
    private CharSequence mAppName;

    DesktopModeWindowDecoration(
            Context context,
            DisplayController displayController,
@@ -95,6 +100,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
        mHandler = handler;
        mChoreographer = choreographer;
        mSyncQueue = syncQueue;

        loadAppInfo();
    }

    @Override
@@ -185,7 +192,9 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
                mWindowDecorViewHolder = new DesktopModeAppControlsWindowDecorationViewHolder(
                        mResult.mRootView,
                        mOnCaptionTouchListener,
                        mOnCaptionButtonClickListener
                        mOnCaptionButtonClickListener,
                        mAppName,
                        mAppIcon
                );
            } else {
                throw new IllegalArgumentException("Unexpected layout resource id");
@@ -243,22 +252,24 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin

        final ImageView appIcon = menu.findViewById(R.id.application_icon);
        final TextView appName = menu.findViewById(R.id.application_name);
        loadAppInfo(appName, appIcon);
        appIcon.setImageDrawable(mAppIcon);
        appName.setText(mAppName);
    }

    boolean isHandleMenuActive() {
        return mHandleMenu != null;
    }

    private void loadAppInfo(TextView appNameTextView, ImageView appIconImageView) {
    private void loadAppInfo() {
        String packageName = mTaskInfo.realActivity.getPackageName();
        PackageManager pm = mContext.getApplicationContext().getPackageManager();
        try {
            // TODO(b/268363572): Use IconProvider or BaseIconCache to set drawable/name.
            IconProvider provider = new IconProvider(mContext);
            mAppIcon = provider.getIcon(pm.getActivityInfo(mTaskInfo.baseActivity,
                    PackageManager.ComponentInfoFlags.of(0)));
            ApplicationInfo applicationInfo = pm.getApplicationInfo(packageName,
                    PackageManager.ApplicationInfoFlags.of(0));
            appNameTextView.setText(pm.getApplicationLabel(applicationInfo));
            appIconImageView.setImageDrawable(pm.getApplicationIcon(applicationInfo));
            mAppName = pm.getApplicationLabel(applicationInfo);
        } catch (PackageManager.NameNotFoundException e) {
            Log.w(TAG, "Package not found: " + packageName, e);
        }
+6 −18
Original line number Diff line number Diff line
package com.android.wm.shell.windowdecor.viewholder

import android.app.ActivityManager.RunningTaskInfo
import android.content.pm.PackageManager
import android.content.res.ColorStateList
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.util.Log
import android.view.View
import android.widget.ImageButton
import android.widget.ImageView
@@ -19,7 +18,9 @@ import com.android.wm.shell.R
internal class DesktopModeAppControlsWindowDecorationViewHolder(
        rootView: View,
        onCaptionTouchListener: View.OnTouchListener,
        onCaptionButtonClickListener: View.OnClickListener
        onCaptionButtonClickListener: View.OnClickListener,
        appName: CharSequence,
        appIcon: Drawable
) : DesktopModeWindowDecorationViewHolder(rootView) {

    private val captionView: View = rootView.findViewById(R.id.desktop_mode_caption)
@@ -35,10 +36,11 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder(
        captionHandle.setOnTouchListener(onCaptionTouchListener)
        openMenuButton.setOnClickListener(onCaptionButtonClickListener)
        closeWindowButton.setOnClickListener(onCaptionButtonClickListener)
        appNameTextView.text = appName
        appIconImageView.setImageDrawable(appIcon)
    }

    override fun bindData(taskInfo: RunningTaskInfo) {
        bindAppInfo(taskInfo)

        val captionDrawable = captionView.background as GradientDrawable
        captionDrawable.setColor(taskInfo.taskDescription.statusBarColor)
@@ -50,20 +52,6 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder(
        appNameTextView.setTextColor(getCaptionAppNameTextColor(taskInfo))
    }

    private fun bindAppInfo(taskInfo: RunningTaskInfo) {
        val packageName: String = taskInfo.realActivity.packageName
        val pm: PackageManager = context.applicationContext.packageManager
        try {
            // TODO(b/268363572): Use IconProvider or BaseIconCache to set drawable/name.
            val applicationInfo = pm.getApplicationInfo(packageName,
                    PackageManager.ApplicationInfoFlags.of(0))
            appNameTextView.text = pm.getApplicationLabel(applicationInfo)
            appIconImageView.setImageDrawable(pm.getApplicationIcon(applicationInfo))
        } catch (e: PackageManager.NameNotFoundException) {
            Log.w(TAG, "Package not found: $packageName", e)
        }
    }

    private fun getCaptionAppNameTextColor(taskInfo: RunningTaskInfo): Int {
        return if (shouldUseLightCaptionColors(taskInfo)) {
            context.getColor(R.color.desktop_mode_caption_app_name_light)