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 Original line Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.Resources;
import android.graphics.Point;
import android.graphics.Point;
import android.graphics.PointF;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Handler;
import android.util.Log;
import android.util.Log;
import android.view.Choreographer;
import android.view.Choreographer;
@@ -38,6 +39,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TextView;
import android.window.WindowContainerTransaction;
import android.window.WindowContainerTransaction;


import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.R;
import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.DisplayController;
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 final int mHandleMenuCornerRadiusId = R.dimen.caption_menu_corner_radius;
    private PointF mHandleMenuPosition = new PointF();
    private PointF mHandleMenuPosition = new PointF();


    private Drawable mAppIcon;
    private CharSequence mAppName;

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

        loadAppInfo();
    }
    }


    @Override
    @Override
@@ -185,7 +192,9 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
                mWindowDecorViewHolder = new DesktopModeAppControlsWindowDecorationViewHolder(
                mWindowDecorViewHolder = new DesktopModeAppControlsWindowDecorationViewHolder(
                        mResult.mRootView,
                        mResult.mRootView,
                        mOnCaptionTouchListener,
                        mOnCaptionTouchListener,
                        mOnCaptionButtonClickListener
                        mOnCaptionButtonClickListener,
                        mAppName,
                        mAppIcon
                );
                );
            } else {
            } else {
                throw new IllegalArgumentException("Unexpected layout resource id");
                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 ImageView appIcon = menu.findViewById(R.id.application_icon);
        final TextView appName = menu.findViewById(R.id.application_name);
        final TextView appName = menu.findViewById(R.id.application_name);
        loadAppInfo(appName, appIcon);
        appIcon.setImageDrawable(mAppIcon);
        appName.setText(mAppName);
    }
    }


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


    private void loadAppInfo(TextView appNameTextView, ImageView appIconImageView) {
    private void loadAppInfo() {
        String packageName = mTaskInfo.realActivity.getPackageName();
        String packageName = mTaskInfo.realActivity.getPackageName();
        PackageManager pm = mContext.getApplicationContext().getPackageManager();
        PackageManager pm = mContext.getApplicationContext().getPackageManager();
        try {
        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,
            ApplicationInfo applicationInfo = pm.getApplicationInfo(packageName,
                    PackageManager.ApplicationInfoFlags.of(0));
                    PackageManager.ApplicationInfoFlags.of(0));
            appNameTextView.setText(pm.getApplicationLabel(applicationInfo));
            mAppName = pm.getApplicationLabel(applicationInfo);
            appIconImageView.setImageDrawable(pm.getApplicationIcon(applicationInfo));
        } catch (PackageManager.NameNotFoundException e) {
        } catch (PackageManager.NameNotFoundException e) {
            Log.w(TAG, "Package not found: " + packageName, e);
            Log.w(TAG, "Package not found: " + packageName, e);
        }
        }
+6 −18
Original line number Original line Diff line number Diff line
package com.android.wm.shell.windowdecor.viewholder
package com.android.wm.shell.windowdecor.viewholder


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


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


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


        val captionDrawable = captionView.background as GradientDrawable
        val captionDrawable = captionView.background as GradientDrawable
        captionDrawable.setColor(taskInfo.taskDescription.statusBarColor)
        captionDrawable.setColor(taskInfo.taskDescription.statusBarColor)
@@ -50,20 +52,6 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder(
        appNameTextView.setTextColor(getCaptionAppNameTextColor(taskInfo))
        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 {
    private fun getCaptionAppNameTextColor(taskInfo: RunningTaskInfo): Int {
        return if (shouldUseLightCaptionColors(taskInfo)) {
        return if (shouldUseLightCaptionColors(taskInfo)) {
            context.getColor(R.color.desktop_mode_caption_app_name_light)
            context.getColor(R.color.desktop_mode_caption_app_name_light)