mirror of
https://github.com/oxen-io/session-android.git
synced 2025-04-21 10:01:30 +00:00
parent
368f5c8dba
commit
c6e2b5f6c5
@ -5,6 +5,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
|
android:clickable="false"
|
||||||
|
android:longClickable="false"
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:contentDescription="@string/conversation_item__mms_image_description" />
|
android:contentDescription="@string/conversation_item__mms_image_description" />
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
android:layout_height="@dimen/transfer_controls_contracted_width"
|
android:layout_height="@dimen/transfer_controls_contracted_width"
|
||||||
android:padding="15dp"
|
android:padding="15dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:longClickable="false"
|
||||||
android:textColor="?conversation_item_received_text_primary_color"
|
android:textColor="?conversation_item_received_text_primary_color"
|
||||||
android:drawableLeft="@drawable/ic_file_download_white_36dp"
|
android:drawableLeft="@drawable/ic_file_download_white_36dp"
|
||||||
android:textSize="16dp"
|
android:textSize="16dp"
|
||||||
|
@ -161,6 +161,7 @@ public class ConversationItem extends LinearLayout
|
|||||||
mediaThumbnail.setThumbnailClickListener(new ThumbnailClickListener());
|
mediaThumbnail.setThumbnailClickListener(new ThumbnailClickListener());
|
||||||
mediaThumbnail.setDownloadClickListener(new ThumbnailDownloadClickListener());
|
mediaThumbnail.setDownloadClickListener(new ThumbnailDownloadClickListener());
|
||||||
mediaThumbnail.setOnLongClickListener(passthroughClickListener);
|
mediaThumbnail.setOnLongClickListener(passthroughClickListener);
|
||||||
|
mediaThumbnail.setOnClickListener(passthroughClickListener);
|
||||||
bodyText.setOnLongClickListener(passthroughClickListener);
|
bodyText.setOnLongClickListener(passthroughClickListener);
|
||||||
bodyText.setOnClickListener(passthroughClickListener);
|
bodyText.setOnClickListener(passthroughClickListener);
|
||||||
}
|
}
|
||||||
@ -228,7 +229,8 @@ public class ConversationItem extends LinearLayout
|
|||||||
|
|
||||||
private void setInteractionState(MessageRecord messageRecord) {
|
private void setInteractionState(MessageRecord messageRecord) {
|
||||||
setSelected(batchSelected.contains(messageRecord));
|
setSelected(batchSelected.contains(messageRecord));
|
||||||
mediaThumbnail.setClickable(!shouldInterceptClicks(messageRecord));
|
mediaThumbnail.setFocusable(!shouldInterceptClicks(messageRecord) && batchSelected.isEmpty());
|
||||||
|
mediaThumbnail.setClickable(!shouldInterceptClicks(messageRecord) && batchSelected.isEmpty());
|
||||||
mediaThumbnail.setLongClickable(batchSelected.isEmpty());
|
mediaThumbnail.setLongClickable(batchSelected.isEmpty());
|
||||||
bodyText.setAutoLinkMask(batchSelected.isEmpty() ? Linkify.ALL : 0);
|
bodyText.setAutoLinkMask(batchSelected.isEmpty() ? Linkify.ALL : 0);
|
||||||
}
|
}
|
||||||
@ -420,8 +422,9 @@ public class ConversationItem extends LinearLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onClick(final View v, final Slide slide) {
|
public void onClick(final View v, final Slide slide) {
|
||||||
if (batchSelected.isEmpty() &&
|
if (shouldInterceptClicks(messageRecord) || !batchSelected.isEmpty()) {
|
||||||
MediaPreviewActivity.isContentTypeSupported(slide.getContentType()) &&
|
performClick();
|
||||||
|
} else if (MediaPreviewActivity.isContentTypeSupported(slide.getContentType()) &&
|
||||||
slide.getThumbnailUri() != null)
|
slide.getThumbnailUri() != null)
|
||||||
{
|
{
|
||||||
Intent intent = new Intent(context, MediaPreviewActivity.class);
|
Intent intent = new Intent(context, MediaPreviewActivity.class);
|
||||||
@ -474,12 +477,14 @@ public class ConversationItem extends LinearLayout
|
|||||||
|
|
||||||
private class PassthroughClickListener implements View.OnLongClickListener, View.OnClickListener {
|
private class PassthroughClickListener implements View.OnLongClickListener, View.OnClickListener {
|
||||||
|
|
||||||
@Override public boolean onLongClick(View v) {
|
@Override
|
||||||
|
public boolean onLongClick(View v) {
|
||||||
performLongClick();
|
performLongClick();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onClick(View v) {
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
performClick();
|
performClick();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ import org.thoughtcrime.securesms.util.FutureTaskListener;
|
|||||||
import org.thoughtcrime.securesms.util.ListenableFutureTask;
|
import org.thoughtcrime.securesms.util.ListenableFutureTask;
|
||||||
import org.thoughtcrime.securesms.util.Util;
|
import org.thoughtcrime.securesms.util.Util;
|
||||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||||
|
import org.whispersystems.libaxolotl.util.guava.Optional;
|
||||||
|
|
||||||
import ws.com.google.android.mms.pdu.PduPart;
|
import ws.com.google.android.mms.pdu.PduPart;
|
||||||
|
|
||||||
@ -43,10 +44,11 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
private boolean hideControls;
|
private boolean hideControls;
|
||||||
private ImageView image;
|
private ImageView image;
|
||||||
private ImageView removeButton;
|
private ImageView removeButton;
|
||||||
private TransferControlView transferControls;
|
|
||||||
private int backgroundColorHint;
|
private int backgroundColorHint;
|
||||||
private int radius;
|
private int radius;
|
||||||
|
private OnClickListener parentClickListener;
|
||||||
|
|
||||||
|
private Optional<TransferControlView> transferControls = Optional.absent();
|
||||||
private ListenableFutureTask<SlideDeck> slideDeckFuture = null;
|
private ListenableFutureTask<SlideDeck> slideDeckFuture = null;
|
||||||
private SlideDeckListener slideDeckListener = null;
|
private SlideDeckListener slideDeckListener = null;
|
||||||
private ThumbnailClickListener thumbnailClickListener = null;
|
private ThumbnailClickListener thumbnailClickListener = null;
|
||||||
@ -67,7 +69,7 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
inflate(context, R.layout.thumbnail_view, this);
|
inflate(context, R.layout.thumbnail_view, this);
|
||||||
radius = getResources().getDimensionPixelSize(R.dimen.message_bubble_corner_radius);
|
radius = getResources().getDimensionPixelSize(R.dimen.message_bubble_corner_radius);
|
||||||
image = (ImageView) findViewById(R.id.thumbnail_image);
|
image = (ImageView) findViewById(R.id.thumbnail_image);
|
||||||
setOnClickListener(new ThumbnailClickDispatcher());
|
super.setOnClickListener(new ThumbnailClickDispatcher());
|
||||||
|
|
||||||
if (attrs != null) {
|
if (attrs != null) {
|
||||||
TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs, R.styleable.ThumbnailView, 0, 0);
|
TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs, R.styleable.ThumbnailView, 0, 0);
|
||||||
@ -76,10 +78,18 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public void setOnClickListener(OnClickListener l) {
|
||||||
|
parentClickListener = l;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public void setFocusable(boolean focusable) {
|
||||||
|
super.setFocusable(focusable);
|
||||||
|
if (transferControls.isPresent()) transferControls.get().setFocusable(focusable);
|
||||||
|
}
|
||||||
|
|
||||||
@Override public void setClickable(boolean clickable) {
|
@Override public void setClickable(boolean clickable) {
|
||||||
super.setClickable(clickable);
|
super.setClickable(clickable);
|
||||||
image.setClickable(clickable);
|
if (transferControls.isPresent()) transferControls.get().setClickable(clickable);
|
||||||
transferControls.setClickable(clickable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
@Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||||
@ -97,8 +107,10 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private TransferControlView getTransferControls() {
|
private TransferControlView getTransferControls() {
|
||||||
if (transferControls == null) transferControls = ViewUtil.inflateStub(this, R.id.transfer_controls_stub);
|
if (!transferControls.isPresent()) {
|
||||||
return transferControls;
|
transferControls = Optional.of((TransferControlView)ViewUtil.inflateStub(this, R.id.transfer_controls_stub));
|
||||||
|
}
|
||||||
|
return transferControls.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBackgroundColorHint(int color) {
|
public void setBackgroundColorHint(int color) {
|
||||||
@ -117,7 +129,7 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
String slideId = id + "::" + timestamp;
|
String slideId = id + "::" + timestamp;
|
||||||
|
|
||||||
if (!slideId.equals(this.slideId)) {
|
if (!slideId.equals(this.slideId)) {
|
||||||
if (transferControls != null) transferControls.clear();
|
if (transferControls.isPresent()) getTransferControls().clear();
|
||||||
image.setImageDrawable(null);
|
image.setImageDrawable(null);
|
||||||
this.slide = null;
|
this.slide = null;
|
||||||
this.slideId = slideId;
|
this.slideId = slideId;
|
||||||
@ -168,7 +180,7 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
public void clear() {
|
public void clear() {
|
||||||
if (isContextValid()) Glide.clear(image);
|
if (isContextValid()) Glide.clear(image);
|
||||||
if (slideDeckFuture != null) slideDeckFuture.removeListener(slideDeckListener);
|
if (slideDeckFuture != null) slideDeckFuture.removeListener(slideDeckListener);
|
||||||
if (transferControls != null) transferControls.clear();
|
if (transferControls.isPresent()) getTransferControls().clear();
|
||||||
slide = null;
|
slide = null;
|
||||||
slideId = null;
|
slideId = null;
|
||||||
slideDeckFuture = null;
|
slideDeckFuture = null;
|
||||||
@ -177,7 +189,7 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
|
|
||||||
public void hideControls(boolean hideControls) {
|
public void hideControls(boolean hideControls) {
|
||||||
this.hideControls = hideControls;
|
this.hideControls = hideControls;
|
||||||
if (hideControls && transferControls != null) transferControls.setVisibility(View.GONE);
|
if (hideControls && transferControls.isPresent()) getTransferControls().setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showProgressSpinner() {
|
public void showProgressSpinner() {
|
||||||
@ -296,6 +308,8 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
slide.getTransferProgress() == PartDatabase.TRANSFER_PROGRESS_DONE)
|
slide.getTransferProgress() == PartDatabase.TRANSFER_PROGRESS_DONE)
|
||||||
{
|
{
|
||||||
thumbnailClickListener.onClick(view, slide);
|
thumbnailClickListener.onClick(view, slide);
|
||||||
|
} else if (parentClickListener != null) {
|
||||||
|
parentClickListener.onClick(view);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,7 @@ public class TransferControlView extends FrameLayout {
|
|||||||
if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
|
if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
|
||||||
background.setColorFilter(0x66ffffff, Mode.MULTIPLY);
|
background.setColorFilter(0x66ffffff, Mode.MULTIPLY);
|
||||||
}
|
}
|
||||||
|
setLongClickable(false);
|
||||||
ViewUtil.setBackground(this, background);
|
ViewUtil.setBackground(this, background);
|
||||||
setVisibility(GONE);
|
setVisibility(GONE);
|
||||||
|
|
||||||
@ -65,12 +66,26 @@ public class TransferControlView extends FrameLayout {
|
|||||||
this.expandedWidth = getResources().getDimensionPixelSize(R.dimen.transfer_controls_expanded_width);
|
this.expandedWidth = getResources().getDimensionPixelSize(R.dimen.transfer_controls_expanded_width);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void onAttachedToWindow() {
|
@Override
|
||||||
|
public void setFocusable(boolean focusable) {
|
||||||
|
super.setFocusable(focusable);
|
||||||
|
downloadDetails.setFocusable(focusable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClickable(boolean clickable) {
|
||||||
|
super.setClickable(clickable);
|
||||||
|
downloadDetails.setClickable(clickable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onAttachedToWindow() {
|
||||||
super.onAttachedToWindow();
|
super.onAttachedToWindow();
|
||||||
if (!EventBus.getDefault().isRegistered(this)) EventBus.getDefault().registerSticky(this);
|
if (!EventBus.getDefault().isRegistered(this)) EventBus.getDefault().registerSticky(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override protected void onDetachedFromWindow() {
|
@Override
|
||||||
|
protected void onDetachedFromWindow() {
|
||||||
super.onDetachedFromWindow();
|
super.onDetachedFromWindow();
|
||||||
EventBus.getDefault().unregister(this);
|
EventBus.getDefault().unregister(this);
|
||||||
}
|
}
|
||||||
@ -134,7 +149,8 @@ public class TransferControlView extends FrameLayout {
|
|||||||
private Animator getWidthAnimator(final int from, final int to) {
|
private Animator getWidthAnimator(final int from, final int to) {
|
||||||
final ValueAnimator anim = ValueAnimator.ofInt(from, to);
|
final ValueAnimator anim = ValueAnimator.ofInt(from, to);
|
||||||
anim.addUpdateListener(new AnimatorUpdateListener() {
|
anim.addUpdateListener(new AnimatorUpdateListener() {
|
||||||
@Override public void onAnimationUpdate(ValueAnimator animation) {
|
@Override
|
||||||
|
public void onAnimationUpdate(ValueAnimator animation) {
|
||||||
final int val = (Integer)animation.getAnimatedValue();
|
final int val = (Integer)animation.getAnimatedValue();
|
||||||
final ViewGroup.LayoutParams layoutParams = getLayoutParams();
|
final ViewGroup.LayoutParams layoutParams = getLayoutParams();
|
||||||
layoutParams.width = val;
|
layoutParams.width = val;
|
||||||
@ -150,7 +166,8 @@ public class TransferControlView extends FrameLayout {
|
|||||||
public void onEventAsync(final PartProgressEvent event) {
|
public void onEventAsync(final PartProgressEvent event) {
|
||||||
if (this.slide != null && event.partId.equals(this.slide.getPart().getPartId())) {
|
if (this.slide != null && event.partId.equals(this.slide.getPart().getPartId())) {
|
||||||
Util.runOnMain(new Runnable() {
|
Util.runOnMain(new Runnable() {
|
||||||
@Override public void run() {
|
@Override
|
||||||
|
public void run() {
|
||||||
progressWheel.setInstantProgress(((float)event.progress) / event.total);
|
progressWheel.setInstantProgress(((float)event.progress) / event.total);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user