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

Added sectioned fastscrolling to nick and buffer lists

parent a5f7e89b
Branches
Tags
No related merge requests found
Pipeline #
......@@ -166,6 +166,7 @@ dependencies {
// UI
implementation("me.zhanghai.android.materialprogressbar", "library", "1.4.2")
implementation("com.simplecityapps", "recyclerview-fastscroll", "1.0.18")
withVersion("0.9.6.0") {
implementation("com.afollestad.material-dialogs", "core", version)
implementation("com.afollestad.material-dialogs", "commons", version)
......
......@@ -29,6 +29,7 @@ import android.widget.ImageView
import android.widget.TextView
import butterknife.BindView
import butterknife.ButterKnife
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
import de.kuschku.libquassel.protocol.BufferId
import de.kuschku.libquassel.protocol.Buffer_Activity
import de.kuschku.libquassel.protocol.NetworkId
......@@ -57,7 +58,9 @@ class BufferListAdapter(
override fun areContentsTheSame(oldItem: BufferListItem, newItem: BufferListItem) =
oldItem == newItem
}
) {
), FastScrollRecyclerView.SectionedAdapter {
override fun getSectionName(position: Int) = getItem(position).props.network.networkName
private var clickListener: ((BufferId) -> Unit)? = null
private var longClickListener: ((BufferId) -> Unit)? = null
private var updateFinishedListener: ((List<BufferListItem>) -> Unit)? = null
......
......@@ -128,7 +128,7 @@ class QuasselMessageRenderer @Inject constructor(
viewHolder.realname?.setTextColor(getColor(1, 0))
viewHolder.combined?.setTextColor(getColor(0, 0))
viewHolder.content?.setTextColor(getColor(0, 0))
viewHolder.itemView.background = LayerDrawable(
viewHolder.messageContainer?.background = LayerDrawable(
arrayOf(
ColorDrawable(getColor(2, 0)),
getDrawable(3)
......
......@@ -29,8 +29,11 @@ import android.widget.ImageView
import android.widget.TextView
import butterknife.BindView
import butterknife.ButterKnife
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
import de.kuschku.libquassel.util.helpers.nullIf
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.util.helper.letIf
import de.kuschku.quasseldroid.util.helper.loadAvatars
import de.kuschku.quasseldroid.util.helper.visibleIf
import de.kuschku.quasseldroid.util.ui.SpanFormatter
......@@ -46,7 +49,12 @@ class NickListAdapter(
override fun areContentsTheSame(oldItem: IrcUserItem?, newItem: IrcUserItem?) =
oldItem == newItem
}) {
}), FastScrollRecyclerView.SectionedAdapter {
override fun getSectionName(position: Int) = getItem(position).let {
it.modes.letIf(it.modes.isNotEmpty()) { it.substring(0, 1) } +
(it.initial.nullIf(String?::isNullOrBlank) ?: "123")
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NickViewHolder {
val holder = NickViewHolder(
LayoutInflater.from(parent.context).inflate(
......
......@@ -146,6 +146,7 @@ class NickListFragment : ServiceBoundFragment() {
if (messageSettings.squareAvatars) it.buildRect(initial, senderColor)
else it.buildRound(initial, senderColor)
},
initial = initial,
modes = when (messageSettings.showPrefix) {
MessageSettings.ShowPrefixMode.ALL ->
it.modes
......
......@@ -24,15 +24,15 @@ import android.graphics.Canvas
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.support.v4.view.ViewCompat
import android.support.v7.widget.RecyclerView
import android.util.AttributeSet
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
import de.kuschku.quasseldroid.R
class DrawerRecyclerView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : RecyclerView(context, attrs, defStyleAttr) {
) : FastScrollRecyclerView(context, attrs, defStyleAttr) {
private var mInsetForeground: Drawable? = null
private var mInsets: Rect? = null
private val mTempRect = Rect()
......
......@@ -49,10 +49,12 @@
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
<com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView
android:id="@+id/chatList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
app:fastScrollPopupBgColor="?colorAccent"
app:fastScrollPopupTextColor="?colorTextPrimaryInverse"
app:fastScrollThumbColor="?colorAccent"
tools:listitem="@layout/widget_buffer" />
</LinearLayout>
......@@ -18,6 +18,7 @@
-->
<de.kuschku.quasseldroid.util.ui.DrawerRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nickList"
android:layout_width="match_parent"
......@@ -25,6 +26,8 @@
android:background="?attr/colorBackground"
android:clipToPadding="false"
android:fitsSystemWindows="true"
android:scrollbars="vertical"
app:fastScrollPopupBgColor="?colorAccent"
app:fastScrollPopupTextColor="?colorTextPrimaryInverse"
app:fastScrollThumbColor="?colorAccent"
tools:listitem="@layout/widget_nick"
tools:showIn="@layout/activity_main" />
......@@ -31,6 +31,7 @@ data class IrcUserItem(
val self: Boolean,
val networkCasemapping: String?,
val avatarUrls: List<Avatar> = emptyList(),
val initial: String? = "",
val fallbackDrawable: Drawable? = null,
val displayNick: CharSequence? = null
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment