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

Commit c1a0ca8e authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Merge branch 'epic340-t-t-fixes' into 'v3.0-t'

fix: Return intended notification count

See merge request !19
parents bdc7843f be0a30ea
Loading
Loading
Loading
Loading
+46 −25
Original line number Diff line number Diff line
@@ -159,10 +159,8 @@ public class DotRenderer {
            // We will displace the dot to the correct position.
            if (isTaskbar) {
                canvas.translate(dotCenterX - mCircleRadius, dotCenterY - mCircleRadius);
            } else if (numNotifications > 9 && numNotifications < 1000) {
                canvas.translate(dx - (mustNudge ? 12f : 17f), dotCenterY);
            } else if (numNotifications > 0) {
                canvas.translate(dx - 12f, dotCenterY);
            } else {
                canvas.translate(dx, dotCenterY - 10f);
            }
        } else {
            float offsetX = params.leftAlign
@@ -174,11 +172,7 @@ public class DotRenderer {
            float dx = dotCenterX + offsetX;
            float dy = dotCenterY + offsetY - 15f;

            if (numNotifications > 9 && numNotifications < 1000) {
                canvas.translate(dx - 17f, dy);
            } else if (numNotifications > 0) {
                canvas.translate(dx - 12f, dy);
            }
            canvas.translate(dx, dy);
        }

        float scale = params.scale * (isTablet && !isTaskbar ? 0.75f : 1f);
@@ -187,12 +181,8 @@ public class DotRenderer {
        mCirclePaint.setColor(params.dotColor);
        mCircleShadowPaint.setColor(params.shadowDotColor);

        if (!isTaskbar && numNotifications >= 10 && numNotifications < 1000) {
            canvas.drawRoundRect(new RectF(-mCircleRadius + 10, -mCircleRadius, mCircleRadius + 20, mCircleRadius), 50, 50, mCircleShadowPaint);
            canvas.drawRoundRect(new RectF(-mCircleRadius + 10, -mCircleRadius, mCircleRadius + 20, mCircleRadius), 50, 50, mCirclePaint);
        } else if (numNotifications > 0) {
            canvas.drawCircle(5, 10, mCircleRadius, mCircleShadowPaint);
            canvas.drawCircle(5, 10, mCircleRadius, mCirclePaint);
        if (!isTaskbar) {
            drawBadge(canvas, numNotifications, isTablet);
        }

        if (mDisplayCount && numNotifications > 0 && !isTaskbar) {
@@ -203,25 +193,56 @@ public class DotRenderer {
            String text = numToNotation(numNotifications);
            mTextPaint.getTextBounds(text, 0, text.length(), mTextRect);
            float y = mTextRect.height() / 2f - mTextRect.bottom;
            canvas.drawText(text, -10f, 21f, mTextPaint);
        }

        canvas.restore();
    }

    private void drawBadge(Canvas canvas, int numNotifications, boolean isTablet) {
        if (numNotifications < 10) {
                canvas.drawText(text, -4f, 22f, mTextPaint);
            } else if (numNotifications < 100) {
                canvas.drawText(text, -3f, y, mTextPaint);
            } else if (numNotifications >= 1000) {
                canvas.drawText(text, -14f, 20f, mTextPaint);
            float centerY = 9f;
            canvas.drawCircle(0, centerY, mCircleRadius, mCircleShadowPaint);
            canvas.drawCircle(0, centerY, mCircleRadius, mCirclePaint);
        } else {
                canvas.drawText(text, -12f, y, mTextPaint);
            RectF rect;
            if (numNotifications < 100) {
                rect = new RectF(-mCircleRadius + 2, -mCircleRadius + 10, mCircleRadius + 17, mCircleRadius + 8);
            } else if (numNotifications < 1000) {
                float b = (isTablet) ? mCircleRadius + 10: mCircleRadius +  8;
                rect = new RectF(-mCircleRadius -2, -mCircleRadius + 10, mCircleRadius + 40, b);
            } else if (numNotifications < 9999) {
                int tt = (numNotifications/100)*100;
                if (tt % 1000 == 0) { // num like 2000,3000,4000
                    rect = new RectF(-mCircleRadius + 2, -mCircleRadius + 10, mCircleRadius + 17, mCircleRadius + 8);
                } else if (isTablet) { // 999 < num < 10000
                    rect = new RectF(-mCircleRadius - 2, -mCircleRadius+ 10, mCircleRadius + 40, mCircleRadius + 10);
                } else {
                    rect = new RectF(-mCircleRadius + 2, -mCircleRadius + 10, mCircleRadius + 45, mCircleRadius + 10);
                }
            } else { // num >= 10000
                float t = (isTablet) ? -mCircleRadius + 11: -mCircleRadius + 10;
                float b = (isTablet) ? mCircleRadius + 11: mCircleRadius + 10;
                rect = new RectF(-mCircleRadius + 2, t, mCircleRadius + 45, b);
            }
            canvas.drawRoundRect(rect, 50, 50, mCircleShadowPaint);
            canvas.drawRoundRect(rect, 50, 50, mCirclePaint);
        }

        canvas.restore();
    }

    private String numToNotation(int num) {
        if (num < 1000) {
            return String.valueOf(num);
        } else if (num < 10000) {
            int t = (num/100) * 100;
            double v = t / 1000.0;
            if (t % 1000 == 0) {
                return String.format("%dk", (int)v);
            } else {
                return String.format("%.1fk", v);
            }
        } else {
            return num / 1000 + "k";
            return "10k+";
        }
    }