diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a38f2ac74d457d72e09bc3254aefb31b74e090c5..bbdc960c58c557e2b4e8e3780076d58e161bde19 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -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) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt index be60564e26134a37ed8ea98d1d6849ecdb75e199..b8f769479381f1dd9ca6466fd0038923d45435d5 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferListAdapter.kt @@ -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 diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt index 7b5a0cce591600bd70fd7fdd6827bef451458745..31fd41adeff70e11747699983ef3036473f40dde 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/QuasselMessageRenderer.kt @@ -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) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt index 024db116d0b1a52f4e4012c8ed9d53e5ecb9114b..ffb92f96aa7d9557e61bf2a262205769c20520b0 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListAdapter.kt @@ -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( diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt index 6b00e1e4c036e2f59443fb8bee26ae30e0642265..936fbe74f5cb5bc02581c3e87dd851d8c7272612 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt @@ -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 diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/DrawerRecyclerView.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/DrawerRecyclerView.kt index d092b8b9d44cb1ca640304803e78a9680608ef91..e4cb9d8cc30ff18fd88f7f5586a22069f7dbcefc 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/DrawerRecyclerView.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/DrawerRecyclerView.kt @@ -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() diff --git a/app/src/main/res/layout/fragment_chat_list.xml b/app/src/main/res/layout/fragment_chat_list.xml index 1b012fa57bd1b9ae7bb100ff5e027ce694e39d66..d504210afbf53e41943fc094c0041553a62e1feb 100644 --- a/app/src/main/res/layout/fragment_chat_list.xml +++ b/app/src/main/res/layout/fragment_chat_list.xml @@ -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> diff --git a/app/src/main/res/layout/fragment_nick_list.xml b/app/src/main/res/layout/fragment_nick_list.xml index 7fb62aa72a486afd34011571ac69f6e246663f44..6d4396b2baef40e75f5f5b8849edf103f02ad8d5 100644 --- a/app/src/main/res/layout/fragment_nick_list.xml +++ b/app/src/main/res/layout/fragment_nick_list.xml @@ -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" /> diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt index ec8bfd49c0cf21bd224ec7ded5209c58557cb257..da69e6f4938a9ba530abd4cdaee6d64ff96e2ed2 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/IrcUserItem.kt @@ -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 )