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

Fixes #67

parent 536facce
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -538,18 +538,22 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
override fun onSaveInstanceState(outState: Bundle?) {
super.onSaveInstanceState(outState)
outState?.putInt("OPEN_BUFFER", viewModel.buffer.value ?: -1)
outState?.putInt("OPEN_BUFFERVIEWCONFIG", viewModel.bufferViewConfigId.value ?: -1)
}
override fun onSaveInstanceState(outState: Bundle?, outPersistentState: PersistableBundle?) {
super.onSaveInstanceState(outState, outPersistentState)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
outPersistentState?.putInt("OPEN_BUFFER", viewModel.buffer.value ?: -1)
outPersistentState?.putInt("OPEN_BUFFERVIEWCONFIG", viewModel.bufferViewConfigId.value ?: -1)
}
}
override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
super.onRestoreInstanceState(savedInstanceState)
viewModel.buffer.onNext(savedInstanceState?.getInt("OPEN_BUFFER", -1) ?: -1)
viewModel.bufferViewConfigId.onNext(savedInstanceState?.getInt("OPEN_BUFFERVIEWCONFIG", -1)
?: -1)
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
......@@ -557,8 +561,16 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
persistentState: PersistableBundle?) {
super.onRestoreInstanceState(savedInstanceState, persistentState)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
val fallback = persistentState?.getInt("OPEN_BUFFER", -1) ?: -1
viewModel.buffer.onNext(savedInstanceState?.getInt("OPEN_BUFFER", fallback) ?: fallback)
val fallbackBuffer = persistentState?.getInt("OPEN_BUFFER", -1) ?: -1
viewModel.buffer.onNext(
savedInstanceState?.getInt("OPEN_BUFFER", fallbackBuffer)
?: fallbackBuffer
)
val fallbackBufferViewConfigId = persistentState?.getInt("OPEN_BUFFERVIEWCONFIG", -1) ?: -1
viewModel.bufferViewConfigId.onNext(
savedInstanceState?.getInt("OPEN_BUFFERVIEWCONFIG", fallbackBufferViewConfigId)
?: fallbackBufferViewConfigId
)
}
}
......
......@@ -42,6 +42,8 @@ class BufferViewConfigAdapter :
notifyDataSetChanged()
}
fun indexOf(id: Int) = data.indexOfFirst { it.bufferViewId() == id }
override fun isEmpty() = data.isEmpty()
override fun onBindViewHolder(holder: BufferViewConfigViewHolder, position: Int) =
......
......@@ -207,23 +207,31 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
val view = inflater.inflate(R.layout.fragment_chat_list, container, false)
ButterKnife.bind(this, view)
var hasSetBufferViewConfigId = false
val adapter = BufferViewConfigAdapter()
viewModel.bufferViewConfigs.switchMap {
combineLatest(it.map(BufferViewConfig::liveUpdates))
}.toLiveData().observe(this, Observer {
if (it != null) {
adapter.submitList(it)
if (!hasSetBufferViewConfigId) {
chatListSpinner.setSelection(adapter.indexOf(viewModel.bufferViewConfigId.value))
hasSetBufferViewConfigId = true
}
}
})
chatListSpinner.adapter = adapter
chatListSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(p0: AdapterView<*>?) {
override fun onNothingSelected(adapter: AdapterView<*>?) {
if (hasSetBufferViewConfigId)
viewModel.bufferViewConfigId.onNext(-1)
}
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
viewModel.bufferViewConfigId.onNext(adapter.getItem(p2)?.bufferViewId() ?: -1)
override fun onItemSelected(adapter: AdapterView<*>?, element: View?, position: Int,
id: Long) {
if (hasSetBufferViewConfigId)
viewModel.bufferViewConfigId.onNext(id.toInt())
}
}
......
......@@ -32,6 +32,8 @@ import de.kuschku.libquassel.session.Backend
import de.kuschku.libquassel.session.ISession
import de.kuschku.libquassel.session.SessionManager
import de.kuschku.libquassel.util.Optional
import de.kuschku.libquassel.util.compatibility.LoggingHandler
import de.kuschku.libquassel.util.compatibility.LoggingHandler.Companion.log
import de.kuschku.libquassel.util.flag.and
import de.kuschku.libquassel.util.flag.hasFlag
import de.kuschku.libquassel.util.helpers.*
......@@ -45,6 +47,10 @@ import io.reactivex.subjects.BehaviorSubject
import java.util.concurrent.TimeUnit
class QuasselViewModel : ViewModel() {
init {
log(LoggingHandler.LogLevel.ERROR, "DEBUG", "QuasselViewModel created! ${hashCode()}")
}
val backendWrapper = BehaviorSubject.createDefault(Observable.empty<Optional<Backend>>())
val selectedMessages = BehaviorSubject.createDefault(emptyMap<MsgId, FormattedMessage>())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment