Add image descriptions indicator (#697)

* Add image descriptions indicator. Closes #683

* Add bg for description indicator, change symbol

* Use icon for image description indicator
main
Ivan Kupalov 6 years ago committed by Konrad Pozniak
parent f9af1650a8
commit c2dc8b0341
  1. 1
      app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java
  2. 48
      app/src/main/java/com/keylesspalace/tusky/view/ProgressImageView.java
  3. 8
      app/src/main/res/drawable/spellcheck.xml
  4. 1
      app/src/main/res/values/colors.xml

@ -1134,6 +1134,7 @@ public final class ComposeActivity
Attachment attachment = response.body(); Attachment attachment = response.body();
if (response.isSuccessful() && attachment != null) { if (response.isSuccessful() && attachment != null) {
item.description = attachment.getDescription(); item.description = attachment.getDescription();
item.preview.setChecked(item.description != null && !item.description.isEmpty());
dialog.dismiss(); dialog.dismiss();
} else { } else {
showFailedCaptionMessage(); showFailedCaptionMessage();

@ -22,8 +22,11 @@ import android.graphics.Paint;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode; import android.graphics.PorterDuffXfermode;
import android.graphics.RectF; import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat; 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.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet; import android.util.AttributeSet;
@ -33,10 +36,12 @@ import at.connyduck.sparkbutton.helpers.Utils;
public final class ProgressImageView extends AppCompatImageView { public final class ProgressImageView extends AppCompatImageView {
private int progress = -1; private int progress = -1;
private RectF progressRect = new RectF(); private final RectF progressRect = new RectF();
private RectF biggerRect = new RectF(); private final RectF biggerRect = new RectF();
private Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG); private final Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Paint clearPaint = 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) { public ProgressImageView(Context context) {
super(context); super(context);
@ -59,6 +64,11 @@ public final class ProgressImageView extends AppCompatImageView {
circlePaint.setStyle(Paint.Style.STROKE); circlePaint.setStyle(Paint.Style.STROKE);
clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); 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) { public void setProgress(int progress) {
@ -71,12 +81,15 @@ public final class ProgressImageView extends AppCompatImageView {
invalidate(); invalidate();
} }
public void setChecked(boolean checked) {
this.markBgPaint.setColor(ContextCompat.getColor(getContext(),
checked ? R.color.colorPrimary : R.color.description_marker_unselected));
invalidate();
}
@Override @Override
protected void onDraw(Canvas canvas) { protected void onDraw(Canvas canvas) {
super.onDraw(canvas); super.onDraw(canvas);
if (progress == -1) {
return;
}
float angle = (progress / 100f) * 360 - 90; float angle = (progress / 100f) * 360 - 90;
float halfWidth = canvas.getWidth() / 2; float halfWidth = canvas.getWidth() / 2;
@ -86,8 +99,25 @@ public final class ProgressImageView extends AppCompatImageView {
int margin = 8; int margin = 8;
biggerRect.set(progressRect.left - margin, progressRect.top - margin, progressRect.right + margin, progressRect.bottom + margin); biggerRect.set(progressRect.left - margin, progressRect.top - margin, progressRect.right + margin, progressRect.bottom + margin);
canvas.saveLayer(biggerRect, null, Canvas.ALL_SAVE_FLAG); canvas.saveLayer(biggerRect, null, Canvas.ALL_SAVE_FLAG);
canvas.drawOval(progressRect, circlePaint); if (progress != -1) {
canvas.drawArc(biggerRect, angle, 360 - angle - 90, true, clearPaint); canvas.drawOval(progressRect, circlePaint);
canvas.drawArc(biggerRect, angle, 360 - angle - 90, true, clearPaint);
}
canvas.restore(); 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);
} }
} }

@ -0,0 +1,8 @@
<!-- drawable/spellcheck.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="#000" android:pathData="M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13M6.43,11L8.5,5.5L10.57,11M12.45,16H14.54L9.43,3H7.57L2.46,16H4.55L5.67,13H11.31L12.45,16Z" />
</vector>

@ -5,6 +5,7 @@
<color name="toolbar_view_media">#8f000000</color> <color name="toolbar_view_media">#8f000000</color>
<color name="semi_transparent">#33000000</color> <color name="semi_transparent">#33000000</color>
<color name="header_background_filter">#44000000</color> <color name="header_background_filter">#44000000</color>
<color name="description_marker_unselected">#333</color>
<!--Dark Theme Colors--> <!--Dark Theme Colors-->
<color name="color_primary_dark">#4c5368</color> <color name="color_primary_dark">#4c5368</color>

Loading…
Cancel
Save