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

Commit fe9356c0 authored by Chris Wren's avatar Chris Wren Committed by Android Git Automerger
Browse files

am 1d269e8e: Merge "single unlock target with honycomb semantics" into jb-mr1-lockscreen-dev

* commit '1d269e8e':
  single unlock target with honycomb semantics
parents 83372881 1d269e8e
Loading
Loading
Loading
Loading
+50 −10
Original line number Diff line number Diff line
@@ -116,6 +116,8 @@ public class GlowPadView extends View {

    private float mOuterRadius = 0.0f;
    private float mSnapMargin = 0.0f;
    private float mFirstItemOffset = 0.0f;
    private boolean mMagneticTargets = false;
    private boolean mDragging;
    private int mNewTargetResources;

@@ -212,6 +214,9 @@ public class GlowPadView extends View {
        mInnerRadius = a.getDimension(R.styleable.GlowPadView_innerRadius, mInnerRadius);
        mOuterRadius = a.getDimension(R.styleable.GlowPadView_outerRadius, mOuterRadius);
        mSnapMargin = a.getDimension(R.styleable.GlowPadView_snapMargin, mSnapMargin);
        mFirstItemOffset = (float) Math.toRadians(
                a.getFloat(R.styleable.GlowPadView_firstItemOffset,
                        (float) Math.toDegrees(mFirstItemOffset)));
        mVibrationDuration = a.getInt(R.styleable.GlowPadView_vibrationDuration,
                mVibrationDuration);
        mFeedbackCount = a.getInt(R.styleable.GlowPadView_feedbackCount,
@@ -223,6 +228,7 @@ public class GlowPadView extends View {
                getResourceId(a, R.styleable.GlowPadView_outerRingDrawable));

        mAlwaysTrackFinger = a.getBoolean(R.styleable.GlowPadView_alwaysTrackFinger, false);
        mMagneticTargets = a.getBoolean(R.styleable.GlowPadView_magneticTargets, mMagneticTargets);

        int pointId = getResourceId(a, R.styleable.GlowPadView_pointDrawable);
        Drawable pointDrawable = pointId != 0 ? res.getDrawable(pointId) : null;
@@ -820,6 +826,7 @@ public class GlowPadView extends View {
        int ntargets = targets.size();
        float x = 0.0f;
        float y = 0.0f;
        float activeAngle = 0.0f;
        int actionIndex = event.findPointerIndex(mPointerId);

        if (actionIndex == -1) {
@@ -852,15 +859,18 @@ public class GlowPadView extends View {
                for (int i = 0; i < ntargets; i++) {
                    TargetDrawable target = targets.get(i);

                    double targetMinRad = (i - 0.5) * 2 * Math.PI / ntargets;
                    double targetMaxRad = (i + 0.5) * 2 * Math.PI / ntargets;
                    double targetMinRad = mFirstItemOffset + (i - 0.5) * 2 * Math.PI / ntargets;
                    double targetMaxRad = mFirstItemOffset + (i + 0.5) * 2 * Math.PI / ntargets;
                    if (target.isEnabled()) {
                        boolean angleMatches =
                            (angleRad > targetMinRad && angleRad <= targetMaxRad) ||
                            (angleRad + 2 * Math.PI > targetMinRad &&
                             angleRad + 2 * Math.PI <= targetMaxRad);
                             angleRad + 2 * Math.PI <= targetMaxRad) ||
                            (angleRad - 2 * Math.PI > targetMinRad &&
                             angleRad - 2 * Math.PI <= targetMaxRad);
                        if (angleMatches && (dist2(tx, ty) > snapDistance2)) {
                            activeTarget = i;
                            activeAngle = (float) -angleRad;
                        }
                    }
                }
@@ -888,6 +898,9 @@ public class GlowPadView extends View {
                if (target.hasState(TargetDrawable.STATE_FOCUSED)) {
                    target.setState(TargetDrawable.STATE_INACTIVE);
                }
                if (mMagneticTargets) {
                    updateTargetPosition(mActiveTarget, mWaveCenterX, mWaveCenterY);
                }
            }
            // Focus the new target
            if (activeTarget != -1) {
@@ -895,6 +908,9 @@ public class GlowPadView extends View {
                if (target.hasState(TargetDrawable.STATE_FOCUSED)) {
                    target.setState(TargetDrawable.STATE_FOCUSED);
                }
                if (mMagneticTargets) {
                    updateTargetPosition(activeTarget, mWaveCenterX, mWaveCenterY, activeAngle);
                }
                if (AccessibilityManager.getInstance(mContext).isEnabled()) {
                    String targetContentDescription = getTargetDescription(activeTarget);
                    announceForAccessibility(targetContentDescription);
@@ -1039,14 +1055,15 @@ public class GlowPadView extends View {
        if (DEBUG) dump();
    }

    private void updateTargetPositions(float centerX, float centerY) {
        // Reposition the target drawables if the view changed.
    private void updateTargetPosition(int i, float centerX, float centerY) {
        final float angle = getAngle(getSliceAngle(), i);
        updateTargetPosition(i, centerX, centerY, angle);
    }

    private void updateTargetPosition(int i, float centerX, float centerY, float angle) {
        if (i >= 0) {
            ArrayList<TargetDrawable> targets = mTargetDrawables;
        final int size = targets.size();
        final float alpha = (float) (-2.0f * Math.PI / size);
        for (int i = 0; i < size; i++) {
            final TargetDrawable targetIcon = targets.get(i);
            final float angle = alpha * i;
            targetIcon.setPositionX(centerX);
            targetIcon.setPositionY(centerY);
            targetIcon.setX(mOuterRadius * (float) Math.cos(angle));
@@ -1054,6 +1071,29 @@ public class GlowPadView extends View {
        }
    }

    private void updateTargetPositions(float centerX, float centerY) {
        updateTargetPositions(centerX, centerY, false);
    }

    private void updateTargetPositions(float centerX, float centerY, boolean skipActive) {
        final int size = mTargetDrawables.size();
        final float alpha = getSliceAngle();
        // Reposition the target drawables if the view changed.
        for (int i = 0; i < size; i++) {
            if (!skipActive || i != mActiveTarget) {
                updateTargetPosition(i, centerX, centerY, getAngle(alpha, i));
            }
        }
    }

    private float getAngle(float alpha, int i) {
        return mFirstItemOffset + alpha * i;
    }

    private float getSliceAngle() {
        return (float) (-2.0f * Math.PI / mTargetDrawables.size());
    }

    private void updatePointCloudPosition(float centerX, float centerY) {
        mPointCloud.setCenter(centerX, centerY);
    }
+4 −2
Original line number Diff line number Diff line
@@ -29,14 +29,16 @@
    android:gravity="@integer/kg_selector_gravity"
    android:focusable="true"

    prvandroid:targetDrawables="@*android:array/lockscreen_targets_with_camera"
    prvandroid:targetDescriptions="@*android:array/lockscreen_target_descriptions_with_camera"
    prvandroid:targetDrawables="@array/lockscreen_targets_unlock_only"
    prvandroid:targetDescriptions="@array/lockscreen_target_descriptions_unlock_only"
    prvandroid:directionDescriptions="@*android:array/lockscreen_direction_descriptions"
    prvandroid:handleDrawable="@*android:drawable/ic_lockscreen_handle"
    prvandroid:outerRingDrawable="@*android:drawable/ic_lockscreen_outerring"
    prvandroid:outerRadius="@*android:dimen/glowpadview_target_placement_radius"
    prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
    prvandroid:snapMargin="@*android:dimen/glowpadview_snap_margin"
    prvandroid:firstItemOffset="@integer/kg_glowpad_rotation_offset"
    prvandroid:magneticTargets="true"
    prvandroid:feedbackCount="1"
    prvandroid:vibrationDuration="20"
    prvandroid:glowRadius="@*android:dimen/glowpadview_glow_radius"
+2 −1
Original line number Diff line number Diff line
@@ -22,4 +22,5 @@
    <integer name="kg_selector_gravity">0x13</integer>
    <integer name="kg_widget_region_weight">45</integer>
    <integer name="kg_security_flipper_weight">55</integer>
    <integer name="kg_glowpad_rotation_offset">-90</integer>
</resources>
+2 −1
Original line number Diff line number Diff line
@@ -19,4 +19,5 @@
<resources>
    <integer name="kg_widget_region_weight">50</integer>
    <integer name="kg_security_flipper_weight">50</integer>
    <integer name="kg_glowpad_rotation_offset">0</integer>
</resources>
+8 −0
Original line number Diff line number Diff line
@@ -398,6 +398,14 @@
        <item>@null</item>
    </array>

    <array name="lockscreen_targets_unlock_only">
        <item>@*android:drawable/ic_lockscreen_unlock</item>
    </array>

    <array name="lockscreen_target_descriptions_unlock_only">
        <item>@*android:string/description_target_unlock</item>
    </array>

    <!-- list of 3- or 4-letter mnemonics for a 10-key numeric keypad -->
    <string-array translatable="false" name="lockscreen_num_pad_klondike">
        <item></item><!-- 0 -->
Loading