mirror of
https://github.com/oxen-io/session-android.git
synced 2025-04-16 16:41:29 +00:00
feat: adding text and shade, reverting other components to use old ThumbnailView
This commit is contained in:
parent
b5f41b4383
commit
620d063194
@ -53,8 +53,8 @@ public class AlbumThumbnailView extends FrameLayout {
|
|||||||
private void initialize() {
|
private void initialize() {
|
||||||
inflate(getContext(), R.layout.album_thumbnail_view, this);
|
inflate(getContext(), R.layout.album_thumbnail_view, this);
|
||||||
|
|
||||||
albumCellContainer = findViewById(R.id.album_cell_container);
|
albumCellContainer = findViewById(R.id.albumCellContainer);
|
||||||
transferControls = new Stub<>(findViewById(R.id.album_transfer_controls_stub));
|
transferControls = new Stub<>(findViewById(R.id.albumTransferControlsStub));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSlides(@NonNull GlideRequests glideRequests, @NonNull List<Slide> slides, boolean showControls) {
|
public void setSlides(@NonNull GlideRequests glideRequests, @NonNull List<Slide> slides, boolean showControls) {
|
||||||
|
@ -65,10 +65,6 @@ public class ConversationItemThumbnail extends FrameLayout {
|
|||||||
|
|
||||||
if (attrs != null) {
|
if (attrs != null) {
|
||||||
TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.ConversationItemThumbnail, 0, 0);
|
TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.ConversationItemThumbnail, 0, 0);
|
||||||
thumbnail.setBounds(typedArray.getDimensionPixelSize(R.styleable.ConversationItemThumbnail_conversationThumbnail_minWidth, 0),
|
|
||||||
typedArray.getDimensionPixelSize(R.styleable.ConversationItemThumbnail_conversationThumbnail_maxWidth, 0),
|
|
||||||
typedArray.getDimensionPixelSize(R.styleable.ConversationItemThumbnail_conversationThumbnail_minHeight, 0),
|
|
||||||
typedArray.getDimensionPixelSize(R.styleable.ConversationItemThumbnail_conversationThumbnail_maxHeight, 0));
|
|
||||||
typedArray.recycle();
|
typedArray.recycle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,6 @@ public class OutlinedThumbnailView extends ThumbnailView {
|
|||||||
outliner = new Outliner();
|
outliner = new Outliner();
|
||||||
|
|
||||||
outliner.setColor(ThemeUtil.getThemedColor(getContext(), R.attr.conversation_item_image_outline_color));
|
outliner.setColor(ThemeUtil.getThemedColor(getContext(), R.attr.conversation_item_image_outline_color));
|
||||||
setRadius(0);
|
|
||||||
setWillNotDraw(false);
|
setWillNotDraw(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,9 +6,11 @@ import android.util.AttributeSet
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import kotlinx.android.synthetic.main.album_thumbnail_view.view.*
|
import kotlinx.android.synthetic.main.album_thumbnail_view.view.*
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.thoughtcrime.securesms.components.CornerMask
|
import org.thoughtcrime.securesms.components.CornerMask
|
||||||
|
import org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
import org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
import org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
||||||
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
|
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||||
@ -20,13 +22,10 @@ class AlbumThumbnailView: FrameLayout {
|
|||||||
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { initialize() }
|
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { initialize() }
|
||||||
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { initialize() }
|
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { initialize() }
|
||||||
|
|
||||||
private val albumCellContainer by lazy { album_cell_container }
|
private val cornerMask by lazy { CornerMask(this) }
|
||||||
private lateinit var cornerMask: CornerMask
|
|
||||||
|
|
||||||
private fun initialize() {
|
private fun initialize() {
|
||||||
LayoutInflater.from(context).inflate(R.layout.album_thumbnail_view, this)
|
LayoutInflater.from(context).inflate(R.layout.album_thumbnail_view, this)
|
||||||
cornerMask = CornerMask(this)
|
|
||||||
cornerMask.setRadius(80)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun dispatchDraw(canvas: Canvas?) {
|
override fun dispatchDraw(canvas: Canvas?) {
|
||||||
@ -50,8 +49,10 @@ class AlbumThumbnailView: FrameLayout {
|
|||||||
LayoutInflater.from(context).inflate(layoutRes(slides.size), albumCellContainer)
|
LayoutInflater.from(context).inflate(layoutRes(slides.size), albumCellContainer)
|
||||||
// iterate
|
// iterate
|
||||||
slides.take(5).forEachIndexed { position, slide ->
|
slides.take(5).forEachIndexed { position, slide ->
|
||||||
getThumbnailView(position).setImageResource(glideRequests, slide, showControls = false, isPreview = false)
|
val imageResource = getThumbnailView(position).setImageResource(glideRequests, slide, showControls = false, isPreview = false)
|
||||||
}
|
}
|
||||||
|
albumCellBodyParent.isVisible = message.body.isNotEmpty()
|
||||||
|
albumCellBodyText.text = message.body
|
||||||
}
|
}
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
@ -66,12 +67,12 @@ class AlbumThumbnailView: FrameLayout {
|
|||||||
else -> R.layout.album_thumbnail_many// five or more
|
else -> R.layout.album_thumbnail_many// five or more
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getThumbnailView(position: Int): ThumbnailView = when (position) {
|
fun getThumbnailView(position: Int): KThumbnailView = when (position) {
|
||||||
0 -> albumCellContainer.findViewById<ViewGroup>(R.id.album_cell_container).findViewById(R.id.album_cell_1)
|
0 -> albumCellContainer.findViewById<ViewGroup>(R.id.albumCellContainer).findViewById(R.id.album_cell_1)
|
||||||
1 -> albumCellContainer.findViewById<ViewGroup>(R.id.album_cell_container).findViewById(R.id.album_cell_2)
|
1 -> albumCellContainer.findViewById<ViewGroup>(R.id.albumCellContainer).findViewById(R.id.album_cell_2)
|
||||||
2 -> albumCellContainer.findViewById<ViewGroup>(R.id.album_cell_container).findViewById(R.id.album_cell_3)
|
2 -> albumCellContainer.findViewById<ViewGroup>(R.id.albumCellContainer).findViewById(R.id.album_cell_3)
|
||||||
3 -> albumCellContainer.findViewById<ViewGroup>(R.id.album_cell_container).findViewById(R.id.album_cell_4)
|
3 -> albumCellContainer.findViewById<ViewGroup>(R.id.albumCellContainer).findViewById(R.id.album_cell_4)
|
||||||
4 -> albumCellContainer.findViewById<ViewGroup>(R.id.album_cell_container).findViewById(R.id.album_cell_5)
|
4 -> albumCellContainer.findViewById<ViewGroup>(R.id.albumCellContainer).findViewById(R.id.album_cell_5)
|
||||||
else -> throw Exception("Can't get thumbnail view for non-existent thumbnail at position: $position")
|
else -> throw Exception("Can't get thumbnail view for non-existent thumbnail at position: $position")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ import android.database.Cursor
|
|||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
import android.graphics.Typeface
|
import android.graphics.Typeface
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
@ -31,7 +30,6 @@ import org.session.libsession.messaging.mentions.MentionsManager
|
|||||||
import org.session.libsession.messaging.open_groups.OpenGroupAPIV2
|
import org.session.libsession.messaging.open_groups.OpenGroupAPIV2
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
import org.thoughtcrime.securesms.ApplicationContext
|
import org.thoughtcrime.securesms.ApplicationContext
|
||||||
import org.thoughtcrime.securesms.ApplicationContext
|
|
||||||
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
||||||
import org.thoughtcrime.securesms.conversation.v2.dialogs.*
|
import org.thoughtcrime.securesms.conversation.v2.dialogs.*
|
||||||
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarButton
|
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarButton
|
||||||
|
@ -19,7 +19,7 @@ import network.loki.messenger.R
|
|||||||
import org.session.libsession.utilities.ThemeUtil
|
import org.session.libsession.utilities.ThemeUtil
|
||||||
import org.session.libsession.utilities.ViewUtil
|
import org.session.libsession.utilities.ViewUtil
|
||||||
import org.session.libsession.utilities.recipients.Recipient
|
import org.session.libsession.utilities.recipients.Recipient
|
||||||
import org.thoughtcrime.securesms.components.v2.AlbumThumbnailView
|
import org.thoughtcrime.securesms.conversation.v2.AlbumThumbnailView
|
||||||
import org.thoughtcrime.securesms.components.emoji.EmojiTextView
|
import org.thoughtcrime.securesms.components.emoji.EmojiTextView
|
||||||
import org.thoughtcrime.securesms.database.model.MessageRecord
|
import org.thoughtcrime.securesms.database.model.MessageRecord
|
||||||
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
|
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
|
||||||
@ -87,6 +87,7 @@ class VisibleMessageContentView : LinearLayout {
|
|||||||
val albumThumbnailView = AlbumThumbnailView(context)
|
val albumThumbnailView = AlbumThumbnailView(context)
|
||||||
mainContainer.addView(albumThumbnailView)
|
mainContainer.addView(albumThumbnailView)
|
||||||
// isStart and isEnd of cluster needed for calculating the mask for full bubble image groups
|
// isStart and isEnd of cluster needed for calculating the mask for full bubble image groups
|
||||||
|
// bind after add view because views are inflated and calculated during bind
|
||||||
albumThumbnailView.bind(glide, message, isStartOfMessageCluster, isEndOfMessageCluster)
|
albumThumbnailView.bind(glide, message, isStartOfMessageCluster, isEndOfMessageCluster)
|
||||||
} else if (message.isOpenGroupInvitation) {
|
} else if (message.isOpenGroupInvitation) {
|
||||||
val openGroupInvitationView = OpenGroupInvitationView(context)
|
val openGroupInvitationView = OpenGroupInvitationView(context)
|
||||||
|
@ -3,11 +3,14 @@ package org.thoughtcrime.securesms.conversation.v2.utilities
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.net.Uri
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.ProgressBar
|
import android.widget.ProgressBar
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
|
import com.bumptech.glide.load.resource.bitmap.CenterCrop
|
||||||
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
|
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
|
||||||
import com.bumptech.glide.request.RequestOptions
|
import com.bumptech.glide.request.RequestOptions
|
||||||
import kotlinx.android.synthetic.main.thumbnail_view.view.*
|
import kotlinx.android.synthetic.main.thumbnail_view.view.*
|
||||||
@ -15,14 +18,15 @@ import network.loki.messenger.R
|
|||||||
import org.session.libsession.messaging.sending_receiving.attachments.AttachmentTransferProgress
|
import org.session.libsession.messaging.sending_receiving.attachments.AttachmentTransferProgress
|
||||||
import org.session.libsession.utilities.Util.equals
|
import org.session.libsession.utilities.Util.equals
|
||||||
import org.session.libsession.utilities.ViewUtil
|
import org.session.libsession.utilities.ViewUtil
|
||||||
|
import org.session.libsignal.utilities.ListenableFuture
|
||||||
|
import org.session.libsignal.utilities.SettableFuture
|
||||||
|
import org.thoughtcrime.securesms.components.GlideBitmapListeningTarget
|
||||||
|
import org.thoughtcrime.securesms.components.GlideDrawableListeningTarget
|
||||||
import org.thoughtcrime.securesms.components.TransferControlView
|
import org.thoughtcrime.securesms.components.TransferControlView
|
||||||
|
import org.thoughtcrime.securesms.mms.*
|
||||||
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri
|
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequest
|
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
|
||||||
import org.thoughtcrime.securesms.mms.Slide
|
|
||||||
import org.thoughtcrime.securesms.mms.SlideClickListener
|
|
||||||
|
|
||||||
class ThumbnailView: FrameLayout {
|
open class KThumbnailView: FrameLayout {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val WIDTH = 0
|
private const val WIDTH = 0
|
||||||
@ -45,16 +49,19 @@ class ThumbnailView: FrameLayout {
|
|||||||
var thumbnailClickListener: SlideClickListener? = null
|
var thumbnailClickListener: SlideClickListener? = null
|
||||||
|
|
||||||
private var slide: Slide? = null
|
private var slide: Slide? = null
|
||||||
|
private var radius: Int = 0
|
||||||
|
|
||||||
private fun initialize(attrs: AttributeSet?) {
|
private fun initialize(attrs: AttributeSet?) {
|
||||||
inflate(context, R.layout.thumbnail_view, this)
|
inflate(context, R.layout.thumbnail_view, this)
|
||||||
if (attrs != null) {
|
if (attrs != null) {
|
||||||
val typedArray = context.theme.obtainStyledAttributes(attrs, R.styleable.ThumbnailView, 0, 0)
|
val typedArray = context.theme.obtainStyledAttributes(attrs, R.styleable.ThumbnailView, 0, 0)
|
||||||
|
|
||||||
dimensDelegate.setBounds(typedArray.getDimensionPixelSize(R.styleable.ConversationItemThumbnail_conversationThumbnail_minWidth, 0),
|
dimensDelegate.setBounds(typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_minWidth, 0),
|
||||||
typedArray.getDimensionPixelSize(R.styleable.ConversationItemThumbnail_conversationThumbnail_minHeight, 0),
|
typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_minHeight, 0),
|
||||||
typedArray.getDimensionPixelSize(R.styleable.ConversationItemThumbnail_conversationThumbnail_maxWidth, 0),
|
typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_maxWidth, 0),
|
||||||
typedArray.getDimensionPixelSize(R.styleable.ConversationItemThumbnail_conversationThumbnail_maxHeight, 0))
|
typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_maxHeight, 0))
|
||||||
|
|
||||||
|
radius = typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_thumbnail_radius, 0)
|
||||||
|
|
||||||
typedArray.recycle()
|
typedArray.recycle()
|
||||||
}
|
}
|
||||||
@ -82,13 +89,13 @@ class ThumbnailView: FrameLayout {
|
|||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region Interaction
|
// region Interaction
|
||||||
fun setImageResource(glide: GlideRequests, slide: Slide, showControls: Boolean, isPreview: Boolean) {
|
fun setImageResource(glide: GlideRequests, slide: Slide, showControls: Boolean, isPreview: Boolean): ListenableFuture<Boolean> {
|
||||||
return setImageResource(glide, slide, showControls, isPreview, 0, 0)
|
return setImageResource(glide, slide, showControls, isPreview, 0, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setImageResource(glide: GlideRequests, slide: Slide,
|
fun setImageResource(glide: GlideRequests, slide: Slide,
|
||||||
showControls: Boolean, isPreview: Boolean,
|
showControls: Boolean, isPreview: Boolean,
|
||||||
naturalWidth: Int, naturalHeight: Int) {
|
naturalWidth: Int, naturalHeight: Int): ListenableFuture<Boolean> {
|
||||||
|
|
||||||
val currentSlide = this.slide
|
val currentSlide = this.slide
|
||||||
|
|
||||||
@ -104,7 +111,7 @@ class ThumbnailView: FrameLayout {
|
|||||||
|
|
||||||
if (equals(currentSlide, slide)) {
|
if (equals(currentSlide, slide)) {
|
||||||
// don't re-load slide
|
// don't re-load slide
|
||||||
return
|
return SettableFuture(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -121,17 +128,21 @@ class ThumbnailView: FrameLayout {
|
|||||||
dimensDelegate.setDimens(naturalWidth, naturalHeight)
|
dimensDelegate.setDimens(naturalWidth, naturalHeight)
|
||||||
invalidate()
|
invalidate()
|
||||||
|
|
||||||
|
val result = SettableFuture<Boolean>()
|
||||||
|
|
||||||
when {
|
when {
|
||||||
slide.thumbnailUri != null -> {
|
slide.thumbnailUri != null -> {
|
||||||
buildThumbnailGlideRequest(glide, slide).into(image)
|
buildThumbnailGlideRequest(glide, slide).into(GlideDrawableListeningTarget(image, result))
|
||||||
}
|
}
|
||||||
slide.hasPlaceholder() -> {
|
slide.hasPlaceholder() -> {
|
||||||
buildPlaceholderGlideRequest(glide, slide).into(image)
|
buildPlaceholderGlideRequest(glide, slide).into(GlideBitmapListeningTarget(image, result))
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
glide.clear(image)
|
glide.clear(image)
|
||||||
|
result.set(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
fun buildThumbnailGlideRequest(glide: GlideRequests, slide: Slide): GlideRequest<Drawable> {
|
fun buildThumbnailGlideRequest(glide: GlideRequests, slide: Slide): GlideRequest<Drawable> {
|
||||||
@ -169,6 +180,45 @@ class ThumbnailView: FrameLayout {
|
|||||||
}
|
}
|
||||||
.fitCenter()
|
.fitCenter()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun clear(glideRequests: GlideRequests) {
|
||||||
|
glideRequests.clear(image)
|
||||||
|
transferControls.clear()
|
||||||
|
slide = null
|
||||||
|
}
|
||||||
|
|
||||||
|
fun showProgressSpinner() {
|
||||||
|
transferControls.showProgressSpinner()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setImageResource(glideRequests: GlideRequests, uri: Uri): ListenableFuture<Boolean> {
|
||||||
|
val future = SettableFuture<Boolean>()
|
||||||
|
|
||||||
|
transferControls.isVisible = false
|
||||||
|
|
||||||
|
var request: GlideRequest<Drawable> = glideRequests.load(DecryptableUri(uri))
|
||||||
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||||
|
.transition(DrawableTransitionOptions.withCrossFade())
|
||||||
|
|
||||||
|
request = if (radius > 0) {
|
||||||
|
request.transforms(CenterCrop(), RoundedCorners(radius))
|
||||||
|
} else {
|
||||||
|
request.transforms(CenterCrop())
|
||||||
|
}
|
||||||
|
|
||||||
|
request.into(GlideDrawableListeningTarget(image, future))
|
||||||
|
|
||||||
|
return future
|
||||||
|
}
|
||||||
|
|
||||||
|
fun showDownloadText(showDownloadText: Boolean) {
|
||||||
|
transferControls.setShowDownloadText(showDownloadText)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setDownloadClickListener(listener: SlidesClickedListener) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
}
|
}
|
@ -6,14 +6,14 @@
|
|||||||
android:layout_width="@dimen/media_bubble_default_dimens"
|
android:layout_width="@dimen/media_bubble_default_dimens"
|
||||||
android:layout_height="@dimen/media_bubble_default_dimens">
|
android:layout_height="@dimen/media_bubble_default_dimens">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_1"
|
android:id="@+id/album_cell_1"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:conversationThumbnail_minWidth="@dimen/media_bubble_min_width"
|
app:minWidth="@dimen/media_bubble_min_width"
|
||||||
app:conversationThumbnail_maxWidth="@dimen/media_bubble_max_width"
|
app:maxWidth="@dimen/media_bubble_max_width"
|
||||||
app:conversationThumbnail_minHeight="@dimen/media_bubble_min_height"
|
app:minHeight="@dimen/media_bubble_min_height"
|
||||||
app:conversationThumbnail_maxHeight="@dimen/media_bubble_max_height"
|
app:maxHeight="@dimen/media_bubble_max_height"
|
||||||
app:thumbnail_radius="1dp"/>
|
app:thumbnail_radius="1dp"/>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
@ -7,13 +7,13 @@
|
|||||||
android:layout_width="@dimen/album_total_width"
|
android:layout_width="@dimen/album_total_width"
|
||||||
android:layout_height="@dimen/album_2_total_height">
|
android:layout_height="@dimen/album_2_total_height">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_1"
|
android:id="@+id/album_cell_1"
|
||||||
android:layout_width="@dimen/album_2_cell_width"
|
android:layout_width="@dimen/album_2_cell_width"
|
||||||
android:layout_height="@dimen/album_2_total_height"
|
android:layout_height="@dimen/album_2_total_height"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_2"
|
android:id="@+id/album_cell_2"
|
||||||
android:layout_width="@dimen/album_2_cell_width"
|
android:layout_width="@dimen/album_2_cell_width"
|
||||||
android:layout_height="@dimen/album_2_total_height"
|
android:layout_height="@dimen/album_2_total_height"
|
||||||
|
@ -6,20 +6,20 @@
|
|||||||
android:layout_width="@dimen/album_total_width"
|
android:layout_width="@dimen/album_total_width"
|
||||||
android:layout_height="@dimen/album_3_total_height">
|
android:layout_height="@dimen/album_3_total_height">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_1"
|
android:id="@+id/album_cell_1"
|
||||||
android:layout_width="@dimen/album_3_cell_width_big"
|
android:layout_width="@dimen/album_3_cell_width_big"
|
||||||
android:layout_height="@dimen/album_3_total_height"
|
android:layout_height="@dimen/album_3_total_height"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_2"
|
android:id="@+id/album_cell_2"
|
||||||
android:layout_width="@dimen/album_3_cell_size_small"
|
android:layout_width="@dimen/album_3_cell_size_small"
|
||||||
android:layout_height="@dimen/album_3_cell_size_small"
|
android:layout_height="@dimen/album_3_cell_size_small"
|
||||||
android:layout_gravity="right|end|top"
|
android:layout_gravity="right|end|top"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_3"
|
android:id="@+id/album_cell_3"
|
||||||
android:layout_width="@dimen/album_3_cell_size_small"
|
android:layout_width="@dimen/album_3_cell_size_small"
|
||||||
android:layout_height="@dimen/album_3_cell_size_small"
|
android:layout_height="@dimen/album_3_cell_size_small"
|
||||||
|
@ -6,27 +6,27 @@
|
|||||||
android:layout_width="@dimen/album_total_width"
|
android:layout_width="@dimen/album_total_width"
|
||||||
android:layout_height="@dimen/album_4_total_height">
|
android:layout_height="@dimen/album_4_total_height">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_1"
|
android:id="@+id/album_cell_1"
|
||||||
android:layout_width="@dimen/album_4_cell_size"
|
android:layout_width="@dimen/album_4_cell_size"
|
||||||
android:layout_height="@dimen/album_4_cell_size"
|
android:layout_height="@dimen/album_4_cell_size"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_2"
|
android:id="@+id/album_cell_2"
|
||||||
android:layout_width="@dimen/album_4_cell_size"
|
android:layout_width="@dimen/album_4_cell_size"
|
||||||
android:layout_height="@dimen/album_4_cell_size"
|
android:layout_height="@dimen/album_4_cell_size"
|
||||||
android:layout_gravity="right|end|top"
|
android:layout_gravity="right|end|top"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_3"
|
android:id="@+id/album_cell_3"
|
||||||
android:layout_width="@dimen/album_4_cell_size"
|
android:layout_width="@dimen/album_4_cell_size"
|
||||||
android:layout_height="@dimen/album_4_cell_size"
|
android:layout_height="@dimen/album_4_cell_size"
|
||||||
android:layout_gravity="left|start|bottom"
|
android:layout_gravity="left|start|bottom"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_4"
|
android:id="@+id/album_cell_4"
|
||||||
android:layout_width="@dimen/album_4_cell_size"
|
android:layout_width="@dimen/album_4_cell_size"
|
||||||
android:layout_height="@dimen/album_4_cell_size"
|
android:layout_height="@dimen/album_4_cell_size"
|
||||||
|
@ -6,34 +6,34 @@
|
|||||||
android:layout_width="@dimen/album_total_width"
|
android:layout_width="@dimen/album_total_width"
|
||||||
android:layout_height="@dimen/album_5_total_height">
|
android:layout_height="@dimen/album_5_total_height">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_1"
|
android:id="@+id/album_cell_1"
|
||||||
android:layout_width="@dimen/album_5_cell_size_big"
|
android:layout_width="@dimen/album_5_cell_size_big"
|
||||||
android:layout_height="@dimen/album_5_cell_size_big"
|
android:layout_height="@dimen/album_5_cell_size_big"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_2"
|
android:id="@+id/album_cell_2"
|
||||||
android:layout_width="@dimen/album_5_cell_size_big"
|
android:layout_width="@dimen/album_5_cell_size_big"
|
||||||
android:layout_height="@dimen/album_5_cell_size_big"
|
android:layout_height="@dimen/album_5_cell_size_big"
|
||||||
android:layout_gravity="right|end|top"
|
android:layout_gravity="right|end|top"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_3"
|
android:id="@+id/album_cell_3"
|
||||||
android:layout_width="@dimen/album_5_cell_size_small"
|
android:layout_width="@dimen/album_5_cell_size_small"
|
||||||
android:layout_height="@dimen/album_5_cell_size_small"
|
android:layout_height="@dimen/album_5_cell_size_small"
|
||||||
android:layout_gravity="left|start|bottom"
|
android:layout_gravity="left|start|bottom"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_4"
|
android:id="@+id/album_cell_4"
|
||||||
android:layout_width="@dimen/album_5_cell_size_small"
|
android:layout_width="@dimen/album_5_cell_size_small"
|
||||||
android:layout_height="@dimen/album_5_cell_size_small"
|
android:layout_height="@dimen/album_5_cell_size_small"
|
||||||
android:layout_gravity="center_horizontal|bottom"
|
android:layout_gravity="center_horizontal|bottom"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_5"
|
android:id="@+id/album_cell_5"
|
||||||
android:layout_width="@dimen/album_5_cell_size_small"
|
android:layout_width="@dimen/album_5_cell_size_small"
|
||||||
android:layout_height="@dimen/album_5_cell_size_small"
|
android:layout_height="@dimen/album_5_cell_size_small"
|
||||||
|
@ -7,27 +7,27 @@
|
|||||||
android:layout_width="@dimen/album_total_width"
|
android:layout_width="@dimen/album_total_width"
|
||||||
android:layout_height="@dimen/album_5_total_height">
|
android:layout_height="@dimen/album_5_total_height">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_1"
|
android:id="@+id/album_cell_1"
|
||||||
android:layout_width="@dimen/album_5_cell_size_big"
|
android:layout_width="@dimen/album_5_cell_size_big"
|
||||||
android:layout_height="@dimen/album_5_cell_size_big"
|
android:layout_height="@dimen/album_5_cell_size_big"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_2"
|
android:id="@+id/album_cell_2"
|
||||||
android:layout_width="@dimen/album_5_cell_size_big"
|
android:layout_width="@dimen/album_5_cell_size_big"
|
||||||
android:layout_height="@dimen/album_5_cell_size_big"
|
android:layout_height="@dimen/album_5_cell_size_big"
|
||||||
android:layout_gravity="right|end|top"
|
android:layout_gravity="right|end|top"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_3"
|
android:id="@+id/album_cell_3"
|
||||||
android:layout_width="@dimen/album_5_cell_size_small"
|
android:layout_width="@dimen/album_5_cell_size_small"
|
||||||
android:layout_height="@dimen/album_5_cell_size_small"
|
android:layout_height="@dimen/album_5_cell_size_small"
|
||||||
android:layout_gravity="left|start|bottom"
|
android:layout_gravity="left|start|bottom"
|
||||||
app:thumbnail_radius="0dp"/>
|
app:thumbnail_radius="0dp"/>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_4"
|
android:id="@+id/album_cell_4"
|
||||||
android:layout_width="@dimen/album_5_cell_size_small"
|
android:layout_width="@dimen/album_5_cell_size_small"
|
||||||
android:layout_height="@dimen/album_5_cell_size_small"
|
android:layout_height="@dimen/album_5_cell_size_small"
|
||||||
@ -39,7 +39,7 @@
|
|||||||
android:layout_height="@dimen/album_5_cell_size_small"
|
android:layout_height="@dimen/album_5_cell_size_small"
|
||||||
android:layout_gravity="right|end|bottom">
|
android:layout_gravity="right|end|bottom">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.conversation.v2.utilities.ThumbnailView
|
<org.thoughtcrime.securesms.conversation.v2.utilities.KThumbnailView
|
||||||
android:id="@+id/album_cell_5"
|
android:id="@+id/album_cell_5"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -1,21 +1,49 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<merge
|
<merge
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/album_cell_container"
|
android:id="@+id/albumCellContainer"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="?conversation_background"/>
|
/>
|
||||||
|
|
||||||
<ViewStub
|
<ViewStub
|
||||||
android:id="@+id/album_transfer_controls_stub"
|
android:id="@+id/albumTransferControlsStub"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout="@layout/transfer_controls_stub" />
|
android:layout="@layout/transfer_controls_stub" />
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:visibility="gone"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
|
android:id="@+id/albumCellBodyParent"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/albumCellShade"
|
||||||
|
android:src="@drawable/image_shade"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"/>
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
<View
|
||||||
|
android:layout_margin="@dimen/small_spacing"
|
||||||
|
android:layout_width="@dimen/small_spacing"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/accent"/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/albumCellBodyText"
|
||||||
|
android:textColor="@color/core_white"
|
||||||
|
android:layout_margin="@dimen/small_spacing"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"/>
|
||||||
|
</LinearLayout>
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
</merge>
|
</merge>
|
Loading…
x
Reference in New Issue
Block a user