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>() val channel = Channel<ItemInfo>()
CoroutineScope(Dispatchers.IO).launch { CoroutineScope(Dispatchers.IO).launch {
Logger.d(histories.map)
histories.map[source.name]?.forEach { histories.map[source.name]?.forEach {
channel.send(source.info(it)) channel.send(source.info(it))
} }

View File

@@ -33,6 +33,7 @@ import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.view.GravityCompat
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.children import androidx.core.view.children
import androidx.core.widget.ImageViewCompat import androidx.core.widget.ImageViewCompat
@@ -171,19 +172,10 @@ class MainActivity :
@OptIn(ExperimentalStdlibApi::class) @OptIn(ExperimentalStdlibApi::class)
override fun onBackPressed() { override fun onBackPressed() {
if (binding.drawer.isDrawerOpen(GravityCompat.START))
// TODO model.onBackPressed() binding.drawer.closeDrawer(GravityCompat.START)
/* else if (!model.onBackPressed())
when { super.onBackPressed()
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()
}
*/
} }
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { 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.annotation.SuppressLint
import android.app.Application import android.app.Application
import androidx.lifecycle.* import androidx.lifecycle.*
import com.orhanobut.logger.Logger
import kotlinx.coroutines.* import kotlinx.coroutines.*
import org.kodein.di.DIAware import org.kodein.di.DIAware
import org.kodein.di.android.x.di import org.kodein.di.android.x.di
@@ -87,13 +86,12 @@ class MainViewModel(app: Application) : AndroidViewModel(app), DIAware {
sortMode.value = it.availableSortMode.first() sortMode.value = it.availableSortMode.first()
} }
Logger.i("SOURCE SET TO $sourceName")
setQueryAndSearch() setQueryAndSearch()
} }
fun setQueryAndSearch(query: String = "") { fun setQueryAndSearch(query: String = "") {
this.query.value = query this.query.value = query
queryStack.add(query)
setPage(1) setPage(1)
query() 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
}
} }