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