Skip to content
Snippets Groups Projects
Commit 590f4dc1 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Fix minor rendering issues, reformat source

parent 0dc4a8e9
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,7 @@ package de.kuschku.quasseldroid.ui.chat.messages
import android.graphics.Canvas
import android.graphics.Rect
import android.support.v7.widget.RecyclerView
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
......@@ -13,7 +14,10 @@ import org.threeten.bp.format.DateTimeFormatter
import org.threeten.bp.format.FormatStyle
import org.threeten.bp.temporal.ChronoUnit
class DayChangeItemDecoration(private val adapter: MessageAdapter) :
class DayChangeItemDecoration(
private val adapter: MessageAdapter,
private val textSize: Int
) :
RecyclerView.ItemDecoration() {
private val dayChangeFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)
private val bounds = Rect()
......@@ -86,6 +90,7 @@ class DayChangeItemDecoration(private val adapter: MessageAdapter) :
content?.text = dayChangeFormatter.format(
it.content.time.atZone(ZoneId.systemDefault()).truncatedTo(ChronoUnit.DAYS)
)
content?.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize.toFloat())
fixLayoutSize(layout, parent)
v.setTag(R.id.tag_daychange_layout, layout)
......@@ -93,7 +98,7 @@ class DayChangeItemDecoration(private val adapter: MessageAdapter) :
}
v.setTag(R.id.tag_daychange, true)
val layout = v.getTag(R.id.tag_daychange_layout) as View
outRect.set(0, layout.measuredHeight, 0, 10)
outRect.set(0, layout.measuredHeight, 0, 0)
} else {
v.setTag(R.id.tag_daychange, false)
}
......
......@@ -8,7 +8,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.Space
import android.widget.TextView
import butterknife.BindView
import butterknife.ButterKnife
......@@ -156,14 +155,6 @@ class MessageAdapter @Inject constructor(
@JvmField
var avatar: ImageView? = null
@BindView(R.id.avatar_container)
@JvmField
var avatarContainer: View? = null
@BindView(R.id.avatar_placeholder)
@JvmField
var avatarPlaceholder: Space? = null
@BindView(R.id.name)
@JvmField
var name: TextView? = null
......
......@@ -13,6 +13,7 @@ import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.PopupMenu
import android.support.v7.widget.RecyclerView
import android.text.SpannableStringBuilder
import android.util.TypedValue
import android.view.*
import butterknife.BindView
import butterknife.ButterKnife
......@@ -39,6 +40,7 @@ import org.threeten.bp.ZonedDateTime
import org.threeten.bp.temporal.ChronoUnit
import java.util.concurrent.TimeUnit
import javax.inject.Inject
import kotlin.math.roundToInt
class MessageListFragment : ServiceBoundFragment() {
@BindView(R.id.messages)
......@@ -255,7 +257,6 @@ class MessageListFragment : ServiceBoundFragment() {
val canScrollDown = recyclerView.canScrollVertically(1)
val isScrollingDown = dy > 0
scrollDown.visibility = View.VISIBLE
scrollDown.toggle(canScrollDown && isScrollingDown)
}
......@@ -388,16 +389,25 @@ class MessageListFragment : ServiceBoundFragment() {
}
}
})
scrollDown.hide()
scrollDown.hide(object : FloatingActionButton.OnVisibilityChangedListener() {
override fun onHidden(fab: FloatingActionButton) {
fab.visibility = View.VISIBLE
}
})
scrollDown.setOnClickListener { messageList.scrollToPosition(0) }
savedInstanceState?.run {
messageList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
}
val avatar_size = resources.getDimensionPixelSize(R.dimen.avatar_size)
val avatarSize = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_SP,
messageSettings.textSize * 2.5f,
requireContext().resources.displayMetrics
).roundToInt()
val sizeProvider = FixedPreloadSizeProvider<String>(avatar_size, avatar_size)
val sizeProvider = FixedPreloadSizeProvider<String>(avatarSize, avatarSize)
val preloadModelProvider = object : ListPreloader.PreloadModelProvider<String> {
override fun getPreloadItems(position: Int) = adapter[position]?.avatarUrl?.let {
......@@ -405,13 +415,13 @@ class MessageListFragment : ServiceBoundFragment() {
} ?: mutableListOf()
override fun getPreloadRequestBuilder(item: String) =
GlideApp.with(this@MessageListFragment).load(item).override(avatar_size)
GlideApp.with(this@MessageListFragment).load(item).override(avatarSize)
}
val preloader = RecyclerViewPreloader(Glide.with(this), preloadModelProvider, sizeProvider, 10)
messageList.addOnScrollListener(preloader)
messageList.addItemDecoration(DayChangeItemDecoration(adapter))
messageList.addItemDecoration(DayChangeItemDecoration(adapter, messageSettings.textSize))
messageList.addItemDecoration(MarkerLineItemDecoration(
adapter, requireContext(), R.dimen.markerline_height, R.attr.colorMarkerLine
))
......
......@@ -4,10 +4,14 @@ import android.content.Context
import android.graphics.Typeface
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.LayerDrawable
import android.os.Build
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.text.style.StyleSpan
import android.util.TypedValue
import android.view.View
import android.widget.FrameLayout
import android.widget.LinearLayout
import de.kuschku.libquassel.protocol.Message.MessageType.*
import de.kuschku.libquassel.protocol.Message_Flag
import de.kuschku.libquassel.protocol.Message_Type
......@@ -29,6 +33,7 @@ import org.threeten.bp.ZoneId
import org.threeten.bp.format.DateTimeFormatter
import org.threeten.bp.format.FormatStyle
import javax.inject.Inject
import kotlin.math.roundToInt
class QuasselMessageRenderer @Inject constructor(
private val messageSettings: MessageSettings,
......@@ -92,14 +97,17 @@ class QuasselMessageRenderer @Inject constructor(
}
}
val avatarContainer = viewHolder.itemView.findViewById<View>(R.id.avatar_container)
val avatarPlaceholder = viewHolder.itemView.findViewById<View>(R.id.avatar_placeholder)
if (messageSettings.useMonospace) {
viewHolder.content?.typeface = if (viewHolder.content?.typeface?.isItalic == true) monospaceItalic else Typeface.MONOSPACE
viewHolder.combined?.typeface = if (viewHolder.combined?.typeface?.isItalic == true) monospaceItalic else Typeface.MONOSPACE
}
viewHolder.avatar?.visibleIf(!isFollowUp)
viewHolder.avatarContainer?.visibleIf(messageSettings.showAvatars)
viewHolder.avatarPlaceholder?.visibleIf(messageSettings.showAvatars)
avatarContainer?.visibleIf(messageSettings.showAvatars)
avatarPlaceholder?.visibleIf(messageSettings.showAvatars)
val separateLine = viewHolder.content != null && viewHolder.name != null && messageSettings.nicksOnNewLine
viewHolder.name?.visibleIf(separateLine && !isFollowUp)
viewHolder.content?.visibleIf(separateLine)
......@@ -114,6 +122,29 @@ class QuasselMessageRenderer @Inject constructor(
viewHolder.content?.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize)
viewHolder.combined?.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize)
viewHolder.name?.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize)
val avatarSize = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_SP,
textSize * 2.5f,
viewHolder.itemView.context.resources.displayMetrics
).roundToInt()
viewHolder.avatar?.layoutParams =
FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, avatarSize)
avatarContainer?.layoutParams =
LinearLayout.LayoutParams(avatarSize, LinearLayout.LayoutParams.WRAP_CONTENT).apply {
val margin = viewHolder.itemView.context.resources.getDimensionPixelSize(R.dimen.message_horizontal)
setMargins(0, 0, margin, 0)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
marginEnd = margin
}
}
avatarPlaceholder?.layoutParams =
LinearLayout.LayoutParams(avatarSize, LinearLayout.LayoutParams.MATCH_PARENT).apply {
val margin = viewHolder.itemView.context.resources.getDimensionPixelSize(R.dimen.message_horizontal)
setMargins(0, 0, margin, 0)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
marginEnd = margin
}
}
}
override fun bind(holder: MessageAdapter.QuasselMessageViewHolder, message: FormattedMessage,
......
......@@ -29,7 +29,7 @@
<FrameLayout
android:id="@+id/avatar_container"
android:layout_width="@dimen/avatar_size"
android:layout_height="wrap_content"
android:layout_height="@dimen/avatar_size"
android:layout_marginEnd="@dimen/message_horizontal"
android:layout_marginRight="@dimen/message_horizontal"
android:visibility="gone"
......@@ -37,12 +37,10 @@
<ImageView
android:id="@+id/avatar"
android:layout_width="@dimen/avatar_size"
android:layout_height="@dimen/avatar_size"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/label_avatar"
android:visibility="gone"
tools:src="@tools:sample/avatars"
tools:visibility="visible" />
tools:src="@tools:sample/avatars" />
</FrameLayout>
<LinearLayout
......
......@@ -14,5 +14,5 @@
<dimen name="button_corner_radius">2dp</dimen>
<dimen name="colorchooser_circlesize">56dp</dimen>
<dimen name="avatar_size">36sp</dimen>
<dimen name="avatar_size">35sp</dimen>
</resources>
......@@ -173,6 +173,7 @@ class IrcChannel(
setCodecForEncoding(charset)
}
}
fun setCodecForEncoding(codec: Charset) {
_codecForEncoding = codec
}
......@@ -183,6 +184,7 @@ class IrcChannel(
setCodecForDecoding(charset)
}
}
fun setCodecForDecoding(codec: Charset) {
_codecForDecoding = codec
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment