Merge "Use IconProvider to get application icon." into udc-dev
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user