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

Commit 28ca65cb authored by Danny Baumann's avatar Danny Baumann Committed by Gerrit Code Review
Browse files

Merge "Lockscreen targets: more unification" into cm-10.2

parents 28954c3d 17620a25
Loading
Loading
Loading
Loading
+89 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.internal.util.cm;
package com.android.internal.util.cm;


import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.Resources;
@@ -33,9 +35,12 @@ import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.graphics.drawable.InsetDrawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.PaintDrawable;
import android.graphics.drawable.StateListDrawable;
import android.graphics.drawable.StateListDrawable;
import android.text.TextUtils;
import android.util.Log;
import android.util.Log;


import com.android.internal.R;
import com.android.internal.widget.multiwaveview.GlowPadView;
import com.android.internal.widget.multiwaveview.GlowPadView;
import com.android.internal.widget.multiwaveview.TargetDrawable;
import com.android.internal.widget.multiwaveview.TargetDrawable;


@@ -137,6 +142,21 @@ public final class LockscreenTargetUtils {
                LockscreenTargetUtils.getRoundedCornerBitmap(BitmapFactory.decodeFile(fileName)));
                LockscreenTargetUtils.getRoundedCornerBitmap(BitmapFactory.decodeFile(fileName)));
    }
    }


    public static int getInsetForIconType(Context context, String type) {
        if (TextUtils.equals(type, GlowPadView.ICON_RESOURCE)) {
            return 0;
        }

        final Resources res = context.getResources();
        int inset = res.getDimensionPixelSize(R.dimen.lockscreen_target_inset);

        if (TextUtils.equals(type, GlowPadView.ICON_FILE)) {
            inset += res.getDimensionPixelSize(R.dimen.lockscreen_target_icon_file_inset);
        }

        return inset;
    }

    public static Drawable getDrawableFromResources(Context context,
    public static Drawable getDrawableFromResources(Context context,
            String packageName, String identifier, boolean activated) {
            String packageName, String identifier, boolean activated) {
        Resources res;
        Resources res;
@@ -167,4 +187,73 @@ public final class LockscreenTargetUtils {


        return null;
        return null;
    }
    }

    public static Drawable getDrawableFromIntent(Context context, Intent intent) {
        final Resources res = context.getResources();
        final PackageManager pm = context.getPackageManager();
        ActivityInfo info = intent.resolveActivityInfo(pm, PackageManager.GET_ACTIVITIES);

        if (info == null) {
            return res.getDrawable(android.R.drawable.sym_def_app_icon);
        }

        Drawable icon = info.loadIcon(pm);
        return new BitmapDrawable(res, resizeIconTarget(context, icon));
    }

    private static Bitmap resizeIconTarget(Context context, Drawable icon) {
        Resources res = context.getResources();
        int size = (int) res.getDimension(android.R.dimen.app_icon_size);

        int width = size;
        int height = size;

        if (icon instanceof PaintDrawable) {
            PaintDrawable painter = (PaintDrawable) icon;
            painter.setIntrinsicWidth(width);
            painter.setIntrinsicHeight(height);
        } else if (icon instanceof BitmapDrawable) {
            // Ensure the bitmap has a density.
            BitmapDrawable bitmapDrawable = (BitmapDrawable) icon;
            Bitmap bitmap = bitmapDrawable.getBitmap();
            if (bitmap.getDensity() == Bitmap.DENSITY_NONE) {
                bitmapDrawable.setTargetDensity(context.getResources().getDisplayMetrics());
            }
        }
        int sourceWidth = icon.getIntrinsicWidth();
        int sourceHeight = icon.getIntrinsicHeight();
        if (sourceWidth > 0 && sourceHeight > 0) {
            // There are intrinsic sizes.
            if (width < sourceWidth || height < sourceHeight) {
                // It's too big, scale it down.
                final float ratio = (float) sourceWidth / sourceHeight;
                if (sourceWidth > sourceHeight) {
                    height = (int) (width / ratio);
                } else if (sourceHeight > sourceWidth) {
                    width = (int) (height * ratio);
                }
            } else if (sourceWidth < width && sourceHeight < height) {
                // Don't scale up the icon
                width = sourceWidth;
                height = sourceHeight;
            }
        }

        final Bitmap bitmap = Bitmap.createBitmap(size, size,
                Bitmap.Config.ARGB_8888);
        final Canvas canvas = new Canvas();
        canvas.setBitmap(bitmap);

        final int left = (size - width) / 2;
        final int top = (size - height) / 2;

        Rect oldBounds = new Rect();
        oldBounds.set(icon.getBounds());
        icon.setBounds(left, top, left + width, top + height);
        icon.draw(canvas);
        icon.setBounds(oldBounds);
        canvas.setBitmap(null);

        return bitmap;
    }
}
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -243,6 +243,8 @@


    <!-- Lockscreen target insets -->
    <!-- Lockscreen target insets -->
    <item type="dimen" name="lockscreen_target_inset">30dp</item>
    <item type="dimen" name="lockscreen_target_inset">30dp</item>
    <!-- Additional inset used for targets with icons loaded from files -->
    <item type="dimen" name="lockscreen_target_icon_file_inset">2dp</item>


    <!-- Keyguard dimensions -->
    <!-- Keyguard dimensions -->
    <!-- TEMP -->
    <!-- TEMP -->
+1 −0
Original line number Original line Diff line number Diff line
@@ -1287,6 +1287,7 @@
  <java-symbol type="dimen" name="kg_squashed_layout_threshold" />
  <java-symbol type="dimen" name="kg_squashed_layout_threshold" />
  <java-symbol type="dimen" name="kg_small_widget_height" />
  <java-symbol type="dimen" name="kg_small_widget_height" />
  <java-symbol type="dimen" name="lockscreen_target_inset" />
  <java-symbol type="dimen" name="lockscreen_target_inset" />
  <java-symbol type="dimen" name="lockscreen_target_icon_file_inset" />
  <java-symbol type="drawable" name="ic_jog_dial_sound_off" />
  <java-symbol type="drawable" name="ic_jog_dial_sound_off" />
  <java-symbol type="drawable" name="ic_jog_dial_sound_on" />
  <java-symbol type="drawable" name="ic_jog_dial_sound_on" />
  <java-symbol type="drawable" name="ic_jog_dial_unlock" />
  <java-symbol type="drawable" name="ic_jog_dial_unlock" />
+8 −16
Original line number Original line Diff line number Diff line
@@ -25,10 +25,10 @@ import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.graphics.drawable.InsetDrawable;
import android.os.UserHandle;
import android.os.UserHandle;
@@ -283,10 +283,6 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri
            ArrayList<TargetDrawable> storedDrawables = new ArrayList<TargetDrawable>();
            ArrayList<TargetDrawable> storedDrawables = new ArrayList<TargetDrawable>();


            final Resources res = getResources();
            final Resources res = getResources();
            final int targetInset = res.getDimensionPixelSize(
                    com.android.internal.R.dimen.lockscreen_target_inset);
            final PackageManager pm = mContext.getPackageManager();

            final Drawable blankActiveDrawable = res.getDrawable(
            final Drawable blankActiveDrawable = res.getDrawable(
                    R.drawable.ic_lockscreen_target_activated);
                    R.drawable.ic_lockscreen_target_activated);
            final InsetDrawable activeBack = new InsetDrawable(blankActiveDrawable, 0, 0, 0, 0);
            final InsetDrawable activeBack = new InsetDrawable(blankActiveDrawable, 0, 0, 0, 0);
@@ -310,7 +306,6 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri
                    res.getDrawable(R.drawable.ic_lockscreen_unlock)));
                    res.getDrawable(R.drawable.ic_lockscreen_unlock)));


            for (int i = 0; i < 8 - mTargetOffset - 1; i++) {
            for (int i = 0; i < 8 - mTargetOffset - 1; i++) {
                int inset = targetInset;
                if (i >= mStoredTargets.length) {
                if (i >= mStoredTargets.length) {
                    storedDrawables.add(new TargetDrawable(res, 0));
                    storedDrawables.add(new TargetDrawable(res, 0));
                    continue;
                    continue;
@@ -319,7 +314,8 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri
                String uri = mStoredTargets[i];
                String uri = mStoredTargets[i];
                if (uri.equals(GlowPadView.EMPTY_TARGET)) {
                if (uri.equals(GlowPadView.EMPTY_TARGET)) {
                    Drawable d = LockscreenTargetUtils.getLayeredDrawable(
                    Drawable d = LockscreenTargetUtils.getLayeredDrawable(
                            mContext, unlockActiveDrawable, blankInActiveDrawable, inset, true);
                            mContext, unlockActiveDrawable, blankInActiveDrawable,
                            LockscreenTargetUtils.getInsetForIconType(mContext, null), true);
                    storedDrawables.add(new TargetDrawable(res, d));
                    storedDrawables.add(new TargetDrawable(res, d));
                    continue;
                    continue;
                }
                }
@@ -329,11 +325,12 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri
                    Drawable front = null;
                    Drawable front = null;
                    Drawable back = activeBack;
                    Drawable back = activeBack;
                    boolean frontBlank = false;
                    boolean frontBlank = false;
                    String type = null;


                    if (intent.hasExtra(GlowPadView.ICON_FILE)) {
                    if (intent.hasExtra(GlowPadView.ICON_FILE)) {
                        type = GlowPadView.ICON_FILE;
                        front = LockscreenTargetUtils.getDrawableFromFile(mContext,
                        front = LockscreenTargetUtils.getDrawableFromFile(mContext,
                                intent.getStringExtra(GlowPadView.ICON_FILE));
                                intent.getStringExtra(GlowPadView.ICON_FILE));
                        inset += 5;
                    } else if (intent.hasExtra(GlowPadView.ICON_RESOURCE)) {
                    } else if (intent.hasExtra(GlowPadView.ICON_RESOURCE)) {
                        String source = intent.getStringExtra(GlowPadView.ICON_RESOURCE);
                        String source = intent.getStringExtra(GlowPadView.ICON_RESOURCE);
                        String packageName = intent.getStringExtra(GlowPadView.ICON_PACKAGE);
                        String packageName = intent.getStringExtra(GlowPadView.ICON_PACKAGE);
@@ -343,20 +340,15 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri
                                    packageName, source, false);
                                    packageName, source, false);
                            back = LockscreenTargetUtils.getDrawableFromResources(mContext,
                            back = LockscreenTargetUtils.getDrawableFromResources(mContext,
                                    packageName, source, true);
                                    packageName, source, true);
                            inset = 0;
                            type = GlowPadView.ICON_RESOURCE;
                            frontBlank = true;
                            frontBlank = true;
                        }
                        }
                    }
                    }
                    if (front == null || back == null) {
                    if (front == null || back == null) {
                        ActivityInfo activityInfo = intent.resolveActivityInfo(pm,
                        front = LockscreenTargetUtils.getDrawableFromIntent(mContext, intent);
                                PackageManager.GET_ACTIVITIES);
                        if (activityInfo != null) {
                            front = activityInfo.loadIcon(pm);
                        } else {
                            front = res.getDrawable(android.R.drawable.sym_def_app_icon);
                        }
                    }
                    }


                    int inset = LockscreenTargetUtils.getInsetForIconType(mContext, type);
                    Drawable drawable = LockscreenTargetUtils.getLayeredDrawable(mContext,
                    Drawable drawable = LockscreenTargetUtils.getLayeredDrawable(mContext,
                            back,front, inset, frontBlank);
                            back,front, inset, frontBlank);
                    TargetDrawable targetDrawable = new TargetDrawable(res, drawable);
                    TargetDrawable targetDrawable = new TargetDrawable(res, drawable);