From e48d0f4029a0ef2d04c8736dc0f4400b69ce48ce Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Fri, 29 Mar 2019 02:08:22 +0100 Subject: [PATCH] simplify delivery-icon --- res/layout/conversation_item_footer.xml | 12 +- res/layout/conversation_list_item_view.xml | 16 +-- res/layout/delivery_status_view.xml | 38 ------- res/values/attrs.xml | 4 - .../securesms/ConversationListItem.java | 2 +- .../components/ConversationItemFooter.java | 2 +- .../components/DeliveryStatusView.java | 107 +++++++----------- 7 files changed, 56 insertions(+), 125 deletions(-) diff --git a/res/layout/conversation_item_footer.xml b/res/layout/conversation_item_footer.xml index d18978252..e22bd7f1c 100644 --- a/res/layout/conversation_item_footer.xml +++ b/res/layout/conversation_item_footer.xml @@ -28,10 +28,12 @@ android:textColor="?conversation_item_outgoing_text_secondary_color" tools:text="30 mins"/> - + diff --git a/res/layout/conversation_list_item_view.xml b/res/layout/conversation_list_item_view.xml index 7fc1754af..bad497d70 100644 --- a/res/layout/conversation_list_item_view.xml +++ b/res/layout/conversation_list_item_view.xml @@ -101,7 +101,7 @@ @@ -117,12 +117,14 @@ android:textColor="?attr/conversation_list_item_date_color" android:background="@drawable/archived_indicator_background" /> - + - - - - - - \ No newline at end of file diff --git a/res/values/attrs.xml b/res/values/attrs.xml index a4cf1cc42..396cd0225 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -170,10 +170,6 @@ - - - - diff --git a/src/org/thoughtcrime/securesms/ConversationListItem.java b/src/org/thoughtcrime/securesms/ConversationListItem.java index c628a523e..24c34e19b 100644 --- a/src/org/thoughtcrime/securesms/ConversationListItem.java +++ b/src/org/thoughtcrime/securesms/ConversationListItem.java @@ -99,7 +99,7 @@ public class ConversationListItem extends RelativeLayout this.subjectView = findViewById(R.id.subject); this.fromView = findViewById(R.id.from_text); this.dateView = findViewById(R.id.date); - this.deliveryStatusIndicator = findViewById(R.id.delivery_status); + this.deliveryStatusIndicator = new DeliveryStatusView(findViewById(R.id.delivery_indicator)); this.contactPhotoImage = findViewById(R.id.contact_photo_image); this.archivedView = findViewById(R.id.archived); this.unreadIndicator = findViewById(R.id.unread_indicator); diff --git a/src/org/thoughtcrime/securesms/components/ConversationItemFooter.java b/src/org/thoughtcrime/securesms/components/ConversationItemFooter.java index 8f34469e8..6ef754203 100644 --- a/src/org/thoughtcrime/securesms/components/ConversationItemFooter.java +++ b/src/org/thoughtcrime/securesms/components/ConversationItemFooter.java @@ -43,7 +43,7 @@ public class ConversationItemFooter extends LinearLayout { dateView = findViewById(R.id.footer_date); secureIndicatorView = findViewById(R.id.footer_secure_indicator); - deliveryStatusView = findViewById(R.id.footer_delivery_status); + deliveryStatusView = new DeliveryStatusView(findViewById(R.id.delivery_indicator)); if (attrs != null) { TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.ConversationItemFooter, 0, 0); diff --git a/src/org/thoughtcrime/securesms/components/DeliveryStatusView.java b/src/org/thoughtcrime/securesms/components/DeliveryStatusView.java index 1121a40c4..abd9b62c8 100644 --- a/src/org/thoughtcrime/securesms/components/DeliveryStatusView.java +++ b/src/org/thoughtcrime/securesms/components/DeliveryStatusView.java @@ -1,107 +1,76 @@ package org.thoughtcrime.securesms.components; -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Color; -import android.util.AttributeSet; import android.view.View; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; -import android.widget.FrameLayout; import android.widget.ImageView; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.util.ResUtil; -public class DeliveryStatusView extends FrameLayout { +public class DeliveryStatusView { - private static final String TAG = DeliveryStatusView.class.getSimpleName(); + private final ImageView deliveryIndicator; + private static RotateAnimation animation; + private boolean animated; - private static final RotateAnimation ROTATION_ANIMATION = new RotateAnimation(0, 360f, - Animation.RELATIVE_TO_SELF, 0.5f, - Animation.RELATIVE_TO_SELF, 0.5f); - static { - ROTATION_ANIMATION.setInterpolator(new LinearInterpolator()); - ROTATION_ANIMATION.setDuration(1500); - ROTATION_ANIMATION.setRepeatCount(Animation.INFINITE); + public DeliveryStatusView(ImageView deliveryIndicator) { + this.deliveryIndicator = deliveryIndicator; } - private final ImageView pendingIndicator; - private final ImageView sentIndicator; - private final ImageView readIndicator; - private final ImageView failedIndicator; + private void animate() + { + if(animation==null) { + animation = new RotateAnimation(0, 360f, + Animation.RELATIVE_TO_SELF, 0.5f, + Animation.RELATIVE_TO_SELF, 0.5f); + animation.setInterpolator(new LinearInterpolator()); + animation.setDuration(1500); + animation.setRepeatCount(Animation.INFINITE); + } - public DeliveryStatusView(Context context) { - this(context, null); + deliveryIndicator.startAnimation(animation); + animated = true; } - public DeliveryStatusView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public DeliveryStatusView(final Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - - inflate(context, R.layout.delivery_status_view, this); - - this.sentIndicator = findViewById(R.id.sent_indicator); - this.pendingIndicator = findViewById(R.id.pending_indicator); - this.readIndicator = findViewById(R.id.read_indicator); - this.failedIndicator = findViewById(R.id.failed_indicator); - - if (attrs != null) { - TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs, R.styleable.DeliveryStatusView, 0, 0); - int color = ResUtil.getColor(getContext(), R.attr.conversation_item_outgoing_text_secondary_color); - setTint(color); - typedArray.recycle(); + private void clearAnimation() + { + if(animated) { + deliveryIndicator.clearAnimation(); + animated = false; } } public void setNone() { - this.setVisibility(View.GONE); + deliveryIndicator.setVisibility(View.GONE); + deliveryIndicator.clearAnimation(); } public void setPending() { - this.setVisibility(View.VISIBLE); - pendingIndicator.setVisibility(View.VISIBLE); - pendingIndicator.startAnimation(ROTATION_ANIMATION); - sentIndicator.setVisibility(View.GONE); - readIndicator.setVisibility(View.GONE); - failedIndicator.setVisibility(View.GONE); + deliveryIndicator.setVisibility(View.VISIBLE); + deliveryIndicator.setImageResource(R.drawable.ic_delivery_status_sending); + animate(); } public void setSent() { - this.setVisibility(View.VISIBLE); - pendingIndicator.setVisibility(View.GONE); - pendingIndicator.clearAnimation(); - sentIndicator.setVisibility(View.VISIBLE); - readIndicator.setVisibility(View.GONE); - failedIndicator.setVisibility(View.GONE); + deliveryIndicator.setVisibility(View.VISIBLE); + deliveryIndicator.setImageResource(R.drawable.ic_delivery_status_sent); + clearAnimation(); } public void setRead() { - this.setVisibility(View.VISIBLE); - pendingIndicator.setVisibility(View.GONE); - pendingIndicator.clearAnimation(); - sentIndicator.setVisibility(View.GONE); - readIndicator.setVisibility(View.VISIBLE); - failedIndicator.setVisibility(View.GONE); + deliveryIndicator.setVisibility(View.VISIBLE); + deliveryIndicator.setImageResource(R.drawable.ic_delivery_status_read); + clearAnimation(); } public void setFailed() { - this.setVisibility(View.VISIBLE); - pendingIndicator.setVisibility(View.GONE); - pendingIndicator.clearAnimation(); - sentIndicator.setVisibility(View.GONE); - readIndicator.setVisibility(View.GONE); - failedIndicator.setVisibility(View.VISIBLE); + deliveryIndicator.setVisibility(View.VISIBLE); + deliveryIndicator.setImageResource(R.drawable.ic_delivery_status_failed); + clearAnimation(); } public void setTint(int color) { - pendingIndicator.setColorFilter(color); - sentIndicator.setColorFilter(color); - readIndicator.setColorFilter(color); - failedIndicator.setColorFilter(color); + deliveryIndicator.setColorFilter(color); } }