mirror of
https://github.com/oxen-io/session-android.git
synced 2025-04-22 20:21:28 +00:00
scroll to the position of a search result
This commit is contained in:
parent
1e787660a8
commit
52305368bb
@ -37,10 +37,13 @@ import org.session.libsession.messaging.messages.signal.OutgoingTextMessage
|
|||||||
import org.session.libsession.messaging.messages.visible.VisibleMessage
|
import org.session.libsession.messaging.messages.visible.VisibleMessage
|
||||||
import org.session.libsession.messaging.open_groups.OpenGroupAPIV2
|
import org.session.libsession.messaging.open_groups.OpenGroupAPIV2
|
||||||
import org.session.libsession.messaging.sending_receiving.MessageSender
|
import org.session.libsession.messaging.sending_receiving.MessageSender
|
||||||
|
import org.session.libsession.utilities.Address
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
|
import org.session.libsession.utilities.concurrent.SimpleTask
|
||||||
import org.thoughtcrime.securesms.ApplicationContext
|
import org.thoughtcrime.securesms.ApplicationContext
|
||||||
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
||||||
import org.thoughtcrime.securesms.contactshare.SimpleTextWatcher
|
import org.thoughtcrime.securesms.contactshare.SimpleTextWatcher
|
||||||
|
import org.thoughtcrime.securesms.conversation.ConversationFragment
|
||||||
import org.thoughtcrime.securesms.conversation.v2.dialogs.*
|
import org.thoughtcrime.securesms.conversation.v2.dialogs.*
|
||||||
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarButton
|
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarButton
|
||||||
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarDelegate
|
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarDelegate
|
||||||
@ -764,9 +767,9 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
|||||||
searchViewModel.searchResults.observe(this, Observer { result: SearchViewModel.SearchResult? ->
|
searchViewModel.searchResults.observe(this, Observer { result: SearchViewModel.SearchResult? ->
|
||||||
if (result == null) return@Observer
|
if (result == null) return@Observer
|
||||||
if (result.getResults().isNotEmpty()) {
|
if (result.getResults().isNotEmpty()) {
|
||||||
conversationRecyclerView.scrollToPosition(result.position)
|
result.getResults()[result.position]?.let {
|
||||||
val messageResult = result.getResults()[result.position]
|
jumpToMessage(it.messageRecipient.address, it.receivedTimestampMs, Runnable { searchViewModel.onMissingResult() })
|
||||||
// fragment.jumpToMessage(messageResult.messageRecipient.address, messageResult.receivedTimestampMs, Runnable { searchViewModel.onMissingResult() })
|
}
|
||||||
}
|
}
|
||||||
this.searchBottomBar.setData(result.position, result.getResults().size)
|
this.searchBottomBar.setData(result.position, result.getResults().size)
|
||||||
})
|
})
|
||||||
@ -787,5 +790,19 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
|
|||||||
override fun onSearchMoveDownPressed() {
|
override fun onSearchMoveDownPressed() {
|
||||||
this.searchViewModel?.onMoveDown()
|
this.searchViewModel?.onMoveDown()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun jumpToMessage(author: Address, timestamp: Long, onMessageNotFound: Runnable?) {
|
||||||
|
SimpleTask.run(lifecycle, {
|
||||||
|
DatabaseFactory.getMmsSmsDatabase(this).getMessagePositionInConversation(threadID, timestamp, author)
|
||||||
|
}) { p: Int -> moveToMessagePosition(p, onMessageNotFound) }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun moveToMessagePosition(position: Int, onMessageNotFound: Runnable?) {
|
||||||
|
if (position >= 0) {
|
||||||
|
conversationRecyclerView.scrollToPosition(position)
|
||||||
|
} else {
|
||||||
|
onMessageNotFound?.run()
|
||||||
|
}
|
||||||
|
}
|
||||||
// endregion
|
// endregion
|
||||||
}
|
}
|
@ -36,7 +36,7 @@ class SearchBottomBar : LinearLayout {
|
|||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
searchPosition.text = resources.getString(R.string.ConversationActivity_search_position, position + 1, count)
|
searchPosition.text = resources.getString(R.string.ConversationActivity_search_position, position + 1, count)
|
||||||
} else {
|
} else {
|
||||||
searchPosition.setText(R.string.ConversationActivity_no_results)
|
searchPosition.text = ""
|
||||||
}
|
}
|
||||||
setViewEnabled(searchUp, position < count - 1)
|
setViewEnabled(searchUp, position < count - 1)
|
||||||
setViewEnabled(searchDown, position > 0)
|
setViewEnabled(searchDown, position > 0)
|
||||||
|
@ -52,7 +52,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerInParent="true"
|
android:layout_centerInParent="true"
|
||||||
android:text="37 of 73" />
|
android:text="37 of 73"
|
||||||
|
android:textStyle="bold"/>
|
||||||
|
|
||||||
<com.github.ybq.android.spinkit.SpinKitView
|
<com.github.ybq.android.spinkit.SpinKitView
|
||||||
style="@style/SpinKitView.DoubleBounce"
|
style="@style/SpinKitView.DoubleBounce"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user