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

Minor bugfixes and performance improvements

parent 49168dd3
No related branches found
No related tags found
No related merge requests found
......@@ -76,11 +76,14 @@ class SettingsModule {
@Provides
fun provideBacklogSettings(context: Context) = context.sharedPreferences {
BacklogSettings(
dynamicAmount = getString(
pageSize = getString(
context.getString(R.string.preference_page_size_key),
BacklogSettings.DEFAULT.dynamicAmount.toString()
).toIntOrNull()
?: BacklogSettings.DEFAULT.dynamicAmount
BacklogSettings.DEFAULT.pageSize.toString()
).toIntOrNull() ?: BacklogSettings.DEFAULT.pageSize,
initialAmount = getString(
context.getString(R.string.preference_initial_amount_key),
BacklogSettings.DEFAULT.initialAmount.toString()
).toIntOrNull() ?: BacklogSettings.DEFAULT.initialAmount
)
}
......
......@@ -7,6 +7,8 @@ import android.net.ConnectivityManager
import android.os.Binder
import de.kuschku.libquassel.protocol.*
import de.kuschku.libquassel.session.*
import de.kuschku.libquassel.util.compatibility.LoggingHandler
import de.kuschku.libquassel.util.compatibility.LoggingHandler.Companion.log
import de.kuschku.quasseldroid.BuildConfig
import de.kuschku.quasseldroid.Keys
import de.kuschku.quasseldroid.R
......@@ -257,6 +259,7 @@ class QuasselService : DaggerLifecycleService(),
}
}
this.progress = it ?: Triple(ConnectionState.DISCONNECTED, 0, 0)
log(LoggingHandler.LogLevel.ERROR, "DEBUG", "progress: $it")
val handle = this.notificationHandle
if (handle != null) {
updateNotification(handle)
......
package de.kuschku.quasseldroid.settings
data class BacklogSettings(
val dynamicAmount: Int = 150
val pageSize: Int = 150,
val initialAmount: Int = 20
) {
companion object {
val DEFAULT = BacklogSettings()
......
......@@ -69,10 +69,10 @@ object Settings {
fun backlog(context: Context) = context.sharedPreferences {
BacklogSettings(
dynamicAmount = getString(
pageSize = getString(
context.getString(R.string.preference_page_size_key),
BacklogSettings.DEFAULT.dynamicAmount.toString()
).toIntOrNull() ?: BacklogSettings.DEFAULT.dynamicAmount
BacklogSettings.DEFAULT.pageSize.toString()
).toIntOrNull() ?: BacklogSettings.DEFAULT.pageSize
)
}
......
......@@ -20,6 +20,7 @@ import android.view.Gravity
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.Toast
import butterknife.BindView
import butterknife.ButterKnife
import com.afollestad.materialdialogs.MaterialDialog
......@@ -203,18 +204,19 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
ConnectionState.CONNECTED,
ConnectionState.DISCONNECTED,
ConnectionState.CLOSED -> {
progressBar.hide()
progressBar.visibility = View.INVISIBLE
}
ConnectionState.INIT -> {
progressBar.show()
progressBar.visibility = View.VISIBLE
// Show indeterminate when no progress has been made yet
progressBar.isIndeterminate = progress == 0 || max == 0
progressBar.progress = progress
progressBar.max = max
}
else -> {
progressBar.show()
progressBar.visibility = View.VISIBLE
progressBar.isIndeterminate = true
Toast.makeText(this, state.toString(), Toast.LENGTH_SHORT).show()
}
}
})
......
......@@ -98,9 +98,9 @@ class MessageListFragment : ServiceBoundFragment() {
LivePagedListBuilder(
database.message().findByBufferIdPaged(buffer, filtered),
PagedList.Config.Builder()
.setPageSize(backlogSettings.dynamicAmount)
.setPrefetchDistance(backlogSettings.dynamicAmount)
.setInitialLoadSizeHint(backlogSettings.dynamicAmount)
.setPageSize(backlogSettings.pageSize)
.setPrefetchDistance(backlogSettings.pageSize)
.setInitialLoadSizeHint(backlogSettings.pageSize)
.setEnablePlaceholders(true)
.build()
).setBoundaryCallback(boundaryCallback).build()
......@@ -136,7 +136,7 @@ class MessageListFragment : ServiceBoundFragment() {
val firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition()
val firstVisibleMessageId = adapter[firstVisibleItemPosition]?.messageId
runInBackground {
adapter.submitList(list)
list?.let(adapter::submitList)
if (firstVisibleItemPosition < 2) {
activity?.runOnUiThread { messageList.scrollToPosition(0) }
......@@ -149,11 +149,11 @@ class MessageListFragment : ServiceBoundFragment() {
val buffer = viewModel.buffer.value ?: -1
if (buffer != lastBuffer) {
backend.value.orNull()?.sessionManager()?.bufferSyncer?.let { bufferSyncer ->
adapter.clearCache()
viewModel.session.value?.orNull()?.bufferSyncer?.let { bufferSyncer ->
onBufferChange(lastBuffer, buffer, firstVisibleMessageId, bufferSyncer)
}
lastBuffer = buffer
adapter.clearCache()
}
}
})
......@@ -177,7 +177,7 @@ class MessageListFragment : ServiceBoundFragment() {
}
// Try loading messages when switching to isEmpty buffer
if (database.message().bufferSize(current) == 0) {
loadMore()
loadMore(initial = true)
}
activity?.runOnUiThread { messageList.scrollToPosition(0) }
}
......@@ -193,7 +193,7 @@ class MessageListFragment : ServiceBoundFragment() {
super.onPause()
}
private fun loadMore() {
private fun loadMore(initial: Boolean = false) {
runInBackground {
viewModel.buffer { bufferId ->
viewModel.session {
......@@ -202,7 +202,7 @@ class MessageListFragment : ServiceBoundFragment() {
last = database.message().findFirstByBufferId(
bufferId
)?.messageId ?: -1,
limit = backlogSettings.dynamicAmount
limit = if (initial) backlogSettings.initialAmount else backlogSettings.pageSize
)
}
}
......
......@@ -110,6 +110,10 @@
<string name="preference_page_size_title">Page Size</string>
<string name="preference_page_size_summary">The number of messages loaded and kept in memory at a time</string>
<string name="preference_initial_amount_key" translatable="false">initial_amount</string>
<string name="preference_initial_amount_title">Initial Amount</string>
<string name="preference_initial_amount_summary">Number of messages to load initially</string>
<string name="preference_connection_title">Connection</string>
......
......@@ -84,6 +84,12 @@
android:key="@string/preference_page_size_key"
android:summary="@string/preference_page_size_summary"
android:title="@string/preference_page_size_title" />
<EditTextPreference
android:defaultValue="20"
android:inputType="number"
android:key="@string/preference_initial_amount_key"
android:summary="@string/preference_initial_amount_summary"
android:title="@string/preference_initial_amount_title" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/preference_connection_title">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment