From c2dc8b0341de37512b9bbc2dfacd320e3349860e Mon Sep 17 00:00:00 2001 From: Ivan Kupalov Date: Mon, 30 Jul 2018 15:20:53 +0200 Subject: [PATCH] Add image descriptions indicator (#697) * Add image descriptions indicator. Closes #683 * Add bg for description indicator, change symbol * Use icon for image description indicator --- .../keylesspalace/tusky/ComposeActivity.java | 1 + .../tusky/view/ProgressImageView.java | 48 +++++++++++++++---- app/src/main/res/drawable/spellcheck.xml | 8 ++++ app/src/main/res/values/colors.xml | 1 + 4 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 app/src/main/res/drawable/spellcheck.xml diff --git a/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java b/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java index 3790574a..73676b49 100644 --- a/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java @@ -1134,6 +1134,7 @@ public final class ComposeActivity Attachment attachment = response.body(); if (response.isSuccessful() && attachment != null) { item.description = attachment.getDescription(); + item.preview.setChecked(item.description != null && !item.description.isEmpty()); dialog.dismiss(); } else { showFailedCaptionMessage(); diff --git a/app/src/main/java/com/keylesspalace/tusky/view/ProgressImageView.java b/app/src/main/java/com/keylesspalace/tusky/view/ProgressImageView.java index 9e61417a..74137b3f 100644 --- a/app/src/main/java/com/keylesspalace/tusky/view/ProgressImageView.java +++ b/app/src/main/java/com/keylesspalace/tusky/view/ProgressImageView.java @@ -22,8 +22,11 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.RectF; +import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; +import android.support.v4.graphics.drawable.DrawableCompat; +import android.support.v7.content.res.AppCompatResources; import android.support.v7.widget.AppCompatImageView; import android.util.AttributeSet; @@ -33,10 +36,12 @@ import at.connyduck.sparkbutton.helpers.Utils; public final class ProgressImageView extends AppCompatImageView { private int progress = -1; - private RectF progressRect = new RectF(); - private RectF biggerRect = new RectF(); - private Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private Paint clearPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private final RectF progressRect = new RectF(); + private final RectF biggerRect = new RectF(); + private final Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private final Paint clearPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private final Paint markBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private Drawable captionDrawable; public ProgressImageView(Context context) { super(context); @@ -59,6 +64,11 @@ public final class ProgressImageView extends AppCompatImageView { circlePaint.setStyle(Paint.Style.STROKE); clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); + + markBgPaint.setStyle(Paint.Style.FILL); + markBgPaint.setColor(ContextCompat.getColor(getContext(), + R.color.description_marker_unselected)); + captionDrawable = AppCompatResources.getDrawable(getContext(), R.drawable.spellcheck); } public void setProgress(int progress) { @@ -71,12 +81,15 @@ public final class ProgressImageView extends AppCompatImageView { invalidate(); } + public void setChecked(boolean checked) { + this.markBgPaint.setColor(ContextCompat.getColor(getContext(), + checked ? R.color.colorPrimary : R.color.description_marker_unselected)); + invalidate(); + } + @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - if (progress == -1) { - return; - } float angle = (progress / 100f) * 360 - 90; float halfWidth = canvas.getWidth() / 2; @@ -86,8 +99,25 @@ public final class ProgressImageView extends AppCompatImageView { int margin = 8; biggerRect.set(progressRect.left - margin, progressRect.top - margin, progressRect.right + margin, progressRect.bottom + margin); canvas.saveLayer(biggerRect, null, Canvas.ALL_SAVE_FLAG); - canvas.drawOval(progressRect, circlePaint); - canvas.drawArc(biggerRect, angle, 360 - angle - 90, true, clearPaint); + if (progress != -1) { + canvas.drawOval(progressRect, circlePaint); + canvas.drawArc(biggerRect, angle, 360 - angle - 90, true, clearPaint); + } canvas.restore(); + + int circleRadius = Utils.dpToPx(getContext(), 14); + int circleMargin = Utils.dpToPx(getContext(), 14); + + int circleY = canvas.getHeight() - circleMargin - circleRadius / 2; + int circleX = canvas.getWidth() - circleMargin - circleRadius / 2; + + canvas.drawCircle(circleX, circleY, circleRadius, markBgPaint); + + captionDrawable.setBounds(canvas.getWidth() - circleMargin - circleRadius, + canvas.getHeight() - circleMargin - circleRadius, + canvas.getWidth() - circleMargin, + canvas.getHeight() - circleMargin); + DrawableCompat.setTint(captionDrawable, Color.WHITE); + captionDrawable.draw(canvas); } } diff --git a/app/src/main/res/drawable/spellcheck.xml b/app/src/main/res/drawable/spellcheck.xml new file mode 100644 index 00000000..5ffa7440 --- /dev/null +++ b/app/src/main/res/drawable/spellcheck.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8db2eedf..1dcd2b00 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -5,6 +5,7 @@ #8f000000 #33000000 #44000000 + #333 #4c5368