From aeab9e27a7ec0ec79350e91eb9409f3417ec9469 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Wed, 6 Jun 2018 19:28:16 +0200 Subject: [PATCH] Revert "Implement fast scroll for messages" This reverts commit 452aa9b --- .../ui/chat/messages/MessageAdapter.kt | 11 +---------- .../ui/chat/messages/MessageListFragment.kt | 15 +++++++++------ app/src/main/res/layout/fragment_messages.xml | 4 ++-- .../quasseldroid/persistence/QuasselDatabase.kt | 2 +- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt index e7f13c555..2593a6037 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt @@ -31,7 +31,6 @@ 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.Message_Flag import de.kuschku.libquassel.protocol.Message_Type import de.kuschku.libquassel.util.flag.hasFlag @@ -44,9 +43,6 @@ import de.kuschku.quasseldroid.util.helper.visibleIf import de.kuschku.quasseldroid.util.ui.BetterLinkMovementMethod import de.kuschku.quasseldroid.util.ui.DoubleClickHelper import de.kuschku.quasseldroid.viewmodel.data.FormattedMessage -import org.threeten.bp.ZoneId -import org.threeten.bp.format.DateTimeFormatter -import org.threeten.bp.format.FormatStyle import javax.inject.Inject class MessageAdapter @Inject constructor( @@ -58,12 +54,7 @@ class MessageAdapter @Inject constructor( override fun areContentsTheSame(oldItem: DisplayMessage, newItem: DisplayMessage) = oldItem == newItem - }), FastScrollRecyclerView.SectionedAdapter { - private val dateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM) - - override fun getSectionName(position: Int) = - getItem(position)?.content?.time?.atZone(ZoneId.systemDefault())?.format(dateFormatter) ?: "" - + }) { private val movementMethod = BetterLinkMovementMethod.newInstance() private var clickListener: ((FormattedMessage) -> Unit)? = null private var longClickListener: ((FormattedMessage) -> Unit)? = null diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt index 16ae92bc1..0bfa0ba75 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt @@ -197,8 +197,10 @@ class MessageListFragment : ServiceBoundFragment() { private val boundaryCallback = object : PagedList.BoundaryCallback<DisplayMessage>() { - override fun onItemAtFrontLoaded(itemAtFront: DisplayMessage) = loadMore() - override fun onItemAtEndLoaded(itemAtEnd: DisplayMessage) = Unit + override fun onItemAtFrontLoaded(itemAtFront: DisplayMessage) = Unit + override fun onItemAtEndLoaded(itemAtEnd: DisplayMessage) { + loadMore() + } } override fun onCreateView( @@ -209,6 +211,7 @@ class MessageListFragment : ServiceBoundFragment() { ButterKnife.bind(this, view) linearLayoutManager = LinearLayoutManager(context) + linearLayoutManager.reverseLayout = true backlogRequester = BacklogRequester(viewModel, database) @@ -287,7 +290,7 @@ class MessageListFragment : ServiceBoundFragment() { expanded: Set<MsgId>, markerLine: MsgId?): List<DisplayMessage> { var previous: QuasselDatabase.MessageData? = null var previousDate: ZonedDateTime? = null - return list.map { + return list.mapReverse { val date = it.time.atZone(ZoneId.systemDefault()).truncatedTo(ChronoUnit.DAYS) val isSameDay = previousDate?.isEqual(date) ?: false val isFollowUp = previous?.sender == it.sender && previous?.type == it.type && isSameDay @@ -371,8 +374,8 @@ class MessageListFragment : ServiceBoundFragment() { }) fun checkScroll() { - if (linearLayoutManager.findLastVisibleItemPosition() > linearLayoutManager.itemCount - 2 && !isScrolling) { - messageList.scrollToPosition(linearLayoutManager.itemCount - 1) + if (linearLayoutManager.findFirstVisibleItemPosition() < 2 && !isScrolling) { + messageList.scrollToPosition(0) } } @@ -407,7 +410,7 @@ class MessageListFragment : ServiceBoundFragment() { fab.visibility = View.VISIBLE } }) - scrollDown.setOnClickListener { messageList.scrollToPosition(linearLayoutManager.itemCount - 1) } + scrollDown.setOnClickListener { messageList.scrollToPosition(0) } savedInstanceState?.run { messageList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST)) diff --git a/app/src/main/res/layout/fragment_messages.xml b/app/src/main/res/layout/fragment_messages.xml index 3efb80076..93d165165 100644 --- a/app/src/main/res/layout/fragment_messages.xml +++ b/app/src/main/res/layout/fragment_messages.xml @@ -30,11 +30,11 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView + <android.support.v7.widget.RecyclerView android:id="@+id/messages" - style="@style/Widget.FastScroller" android:layout_width="match_parent" android:layout_height="match_parent" + android:scrollbars="vertical" app:stackFromEnd="true" tools:listitem="@layout/widget_chatmessage_plain" /> diff --git a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt index 6fc4a28b6..7a6433b8a 100644 --- a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt +++ b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt @@ -93,7 +93,7 @@ abstract class QuasselDatabase : RoomDatabase() { @Query("SELECT * FROM message WHERE bufferId = :bufferId ORDER BY messageId ASC") fun findByBufferId(bufferId: Int): List<MessageData> - @Query("SELECT * FROM message WHERE bufferId = :bufferId AND type & ~ :type > 0 AND ignored = 0 ORDER BY messageId ASC") + @Query("SELECT * FROM message WHERE bufferId = :bufferId AND type & ~ :type > 0 AND ignored = 0 ORDER BY messageId DESC") fun findByBufferIdPaged(bufferId: Int, type: Int): DataSource.Factory<Int, MessageData> @Query("SELECT * FROM message WHERE bufferId = :bufferId ORDER BY messageId DESC LIMIT 1") -- GitLab