Handle backpress

This commit is contained in:
tom5079
2021-02-17 19:25:45 +09:00
parent 3f8aa744e7
commit 2f57ee4c83
3 changed files with 17 additions and 17 deletions

View File

@@ -47,7 +47,6 @@ class History(override val di: DI, source: String) : Source<DefaultSortMode, Sea
val channel = Channel<ItemInfo>()
CoroutineScope(Dispatchers.IO).launch {
Logger.d(histories.map)
histories.map[source.name]?.forEach {
channel.send(source.info(it))
}

View File

@@ -33,6 +33,7 @@ import android.widget.ImageView
import android.widget.TextView
import androidx.activity.viewModels
import androidx.appcompat.app.AlertDialog
import androidx.core.view.GravityCompat
import androidx.core.view.ViewCompat
import androidx.core.view.children
import androidx.core.widget.ImageViewCompat
@@ -171,19 +172,10 @@ class MainActivity :
@OptIn(ExperimentalStdlibApi::class)
override fun onBackPressed() {
// TODO model.onBackPressed()
/*
when {
binding.drawer.isDrawerOpen(GravityCompat.START) -> binding.drawer.closeDrawer(GravityCompat.START)
queryStack.removeLastOrNull() != null && queryStack.isNotEmpty() -> runOnUiThread {
model.query.value = queryStack.last()
model.query()
}
else -> super.onBackPressed()
}
*/
if (binding.drawer.isDrawerOpen(GravityCompat.START))
binding.drawer.closeDrawer(GravityCompat.START)
else if (!model.onBackPressed())
super.onBackPressed()
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {

View File

@@ -21,7 +21,6 @@ package xyz.quaver.pupil.ui.viewmodel
import android.annotation.SuppressLint
import android.app.Application
import androidx.lifecycle.*
import com.orhanobut.logger.Logger
import kotlinx.coroutines.*
import org.kodein.di.DIAware
import org.kodein.di.android.x.di
@@ -87,13 +86,12 @@ class MainViewModel(app: Application) : AndroidViewModel(app), DIAware {
sortMode.value = it.availableSortMode.first()
}
Logger.i("SOURCE SET TO $sourceName")
setQueryAndSearch()
}
fun setQueryAndSearch(query: String = "") {
this.query.value = query
queryStack.add(query)
setPage(1)
query()
@@ -172,4 +170,15 @@ class MainViewModel(app: Application) : AndroidViewModel(app), DIAware {
}
}
/**
* @return true if backpress is consumed, false otherwise
*/
fun onBackPressed(): Boolean {
if (queryStack.removeLastOrNull() == null || queryStack.isEmpty())
return false
setQueryAndSearch(queryStack.removeLast())
return true
}
}