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

Fixes #116

parent d09c828b
No related branches found
No related tags found
No related merge requests found
...@@ -49,7 +49,7 @@ import io.reactivex.subjects.BehaviorSubject ...@@ -49,7 +49,7 @@ import io.reactivex.subjects.BehaviorSubject
class BufferListAdapter( class BufferListAdapter(
private val selectedBuffer: BehaviorSubject<BufferId>, private val selectedBuffer: BehaviorSubject<BufferId>,
private val collapsedNetworks: BehaviorSubject<Set<NetworkId>> private val expandedNetworks: BehaviorSubject<Map<NetworkId, Boolean>>
) : ListAdapter<BufferListItem, BufferListAdapter.BufferViewHolder>( ) : ListAdapter<BufferListItem, BufferListAdapter.BufferViewHolder>(
object : DiffUtil.ItemCallback<BufferListItem>() { object : DiffUtil.ItemCallback<BufferListItem>() {
override fun areItemsTheSame(oldItem: BufferListItem, newItem: BufferListItem) = override fun areItemsTheSame(oldItem: BufferListItem, newItem: BufferListItem) =
...@@ -80,11 +80,8 @@ class BufferListAdapter( ...@@ -80,11 +80,8 @@ class BufferListAdapter(
this.updateFinishedListener?.invoke(list) this.updateFinishedListener?.invoke(list)
} }
fun expandListener(networkId: NetworkId) { fun expandListener(networkId: NetworkId, expand: Boolean) {
if (collapsedNetworks.value.orEmpty().contains(networkId)) expandedNetworks.onNext(expandedNetworks.value.orEmpty() + Pair(networkId, expand))
collapsedNetworks.onNext(collapsedNetworks.value.orEmpty() - networkId)
else
collapsedNetworks.onNext(collapsedNetworks.value.orEmpty() + networkId)
} }
fun toggleSelection(buffer: BufferId): Boolean { fun toggleSelection(buffer: BufferId): Boolean {
...@@ -143,7 +140,7 @@ class BufferListAdapter( ...@@ -143,7 +140,7 @@ class BufferListAdapter(
itemView: View, itemView: View,
private val clickListener: ((BufferId) -> Unit)? = null, private val clickListener: ((BufferId) -> Unit)? = null,
private val longClickListener: ((BufferId) -> Unit)? = null, private val longClickListener: ((BufferId) -> Unit)? = null,
private val expansionListener: ((NetworkId) -> Unit)? = null private val expansionListener: ((NetworkId, Boolean) -> Unit)? = null
) : BufferViewHolder(itemView) { ) : BufferViewHolder(itemView) {
@BindView(R.id.status) @BindView(R.id.status)
lateinit var status: ImageView lateinit var status: ImageView
...@@ -159,6 +156,8 @@ class BufferListAdapter( ...@@ -159,6 +156,8 @@ class BufferListAdapter(
private var message: Int = 0 private var message: Int = 0
private var highlight: Int = 0 private var highlight: Int = 0
private var expanded: Boolean = false
init { init {
ButterKnife.bind(this, itemView) ButterKnife.bind(this, itemView)
itemView.setOnClickListener { itemView.setOnClickListener {
...@@ -180,7 +179,7 @@ class BufferListAdapter( ...@@ -180,7 +179,7 @@ class BufferListAdapter(
status.setOnClickListener { status.setOnClickListener {
val network = networkId val network = networkId
if (network != null) if (network != null)
expansionListener?.invoke(network) expansionListener?.invoke(network, !expanded)
} }
itemView.context.theme.styledAttributes( itemView.context.theme.styledAttributes(
...@@ -208,6 +207,8 @@ class BufferListAdapter( ...@@ -208,6 +207,8 @@ class BufferListAdapter(
} }
) )
this.expanded = state.networkExpanded
itemView.isSelected = state.selected itemView.isSelected = state.selected
if (state.networkExpanded) { if (state.networkExpanded) {
......
...@@ -246,14 +246,14 @@ class BufferViewConfigFragment : ServiceBoundFragment() { ...@@ -246,14 +246,14 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
listAdapter = BufferListAdapter( listAdapter = BufferListAdapter(
viewModel.selectedBufferId, viewModel.selectedBufferId,
viewModel.collapsedNetworks viewModel.expandedNetworks
) )
combineLatest(viewModel.bufferList, viewModel.collapsedNetworks, viewModel.selectedBuffer) combineLatest(viewModel.bufferList, viewModel.expandedNetworks, viewModel.selectedBuffer)
.toLiveData().zip(database.filtered().listen(accountId)) .toLiveData().zip(database.filtered().listen(accountId))
.observe(this, Observer { it -> .observe(this, Observer { it ->
it?.let { (data, activityList) -> it?.let { (data, activityList) ->
runInBackground { runInBackground {
val (info, collapsedNetworks, selected) = data val (info, expandedNetworks, selected) = data
val (config, list) = info ?: Pair(null, emptyList()) val (config, list) = info ?: Pair(null, emptyList())
val minimumActivity = config?.minimumActivity() ?: Buffer_Activity.NONE val minimumActivity = config?.minimumActivity() ?: Buffer_Activity.NONE
val activities = activityList.associate { it.bufferId to it.filtered } val activities = activityList.associate { it.bufferId to it.filtered }
...@@ -282,7 +282,8 @@ class BufferViewConfigFragment : ServiceBoundFragment() { ...@@ -282,7 +282,8 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
) )
), ),
BufferState( BufferState(
networkExpanded = !collapsedNetworks.contains(props.network.networkId), networkExpanded = expandedNetworks[props.network.networkId]
?: (props.networkConnectionState == INetwork.ConnectionState.Initialized),
selected = selected.info?.bufferId == props.info.bufferId selected = selected.info?.bufferId == props.info.bufferId
) )
) )
......
...@@ -261,7 +261,7 @@ class QuasselViewModel : ViewModel() { ...@@ -261,7 +261,7 @@ class QuasselViewModel : ViewModel() {
} }
val showHidden = BehaviorSubject.createDefault(false) val showHidden = BehaviorSubject.createDefault(false)
val collapsedNetworks = BehaviorSubject.createDefault(emptySet<NetworkId>()) val expandedNetworks = BehaviorSubject.createDefault(emptyMap<NetworkId, Boolean>())
val selectedBufferId = BehaviorSubject.createDefault(Int.MAX_VALUE) val selectedBufferId = BehaviorSubject.createDefault(Int.MAX_VALUE)
val selectedBuffer = combineLatest(session, selectedBufferId, bufferViewConfig) val selectedBuffer = combineLatest(session, selectedBufferId, bufferViewConfig)
.switchMap { (sessionOptional, buffer, bufferViewConfigOptional) -> .switchMap { (sessionOptional, buffer, bufferViewConfigOptional) ->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment