|
|
|
@ -1,18 +1,24 @@
|
|
|
|
|
package eu.kanade.tachiyomi.ui.recent.history
|
|
|
|
|
|
|
|
|
|
import android.app.Dialog
|
|
|
|
|
import android.os.Bundle
|
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
|
import android.view.Menu
|
|
|
|
|
import android.view.MenuInflater
|
|
|
|
|
import android.view.MenuItem
|
|
|
|
|
import android.view.View
|
|
|
|
|
import android.view.ViewGroup
|
|
|
|
|
import androidx.appcompat.widget.SearchView
|
|
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
|
|
import com.afollestad.materialdialogs.MaterialDialog
|
|
|
|
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
|
|
|
|
import eu.kanade.tachiyomi.R
|
|
|
|
|
import eu.kanade.tachiyomi.data.backup.BackupRestoreService
|
|
|
|
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
|
|
|
|
import eu.kanade.tachiyomi.data.database.models.History
|
|
|
|
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
|
|
|
import eu.kanade.tachiyomi.databinding.HistoryControllerBinding
|
|
|
|
|
import eu.kanade.tachiyomi.ui.base.controller.DialogController
|
|
|
|
|
import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
|
|
|
|
|
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
|
|
|
|
|
import eu.kanade.tachiyomi.ui.base.controller.RootController
|
|
|
|
@ -25,6 +31,7 @@ import kotlinx.coroutines.flow.filter
|
|
|
|
|
import kotlinx.coroutines.flow.launchIn
|
|
|
|
|
import kotlinx.coroutines.flow.onEach
|
|
|
|
|
import reactivecircus.flowbinding.appcompat.queryTextChanges
|
|
|
|
|
import uy.kohesive.injekt.injectLazy
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Fragment that shows recently read manga.
|
|
|
|
@ -42,6 +49,8 @@ class HistoryController :
|
|
|
|
|
HistoryAdapter.OnItemClickListener,
|
|
|
|
|
RemoveHistoryDialog.Listener {
|
|
|
|
|
|
|
|
|
|
private val db: DatabaseHelper by injectLazy()
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Adapter containing the recent manga.
|
|
|
|
|
*/
|
|
|
|
@ -196,4 +205,32 @@ class HistoryController :
|
|
|
|
|
onExpand = { invalidateMenuOnExpand() }
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
|
|
|
|
when (item.itemId) {
|
|
|
|
|
R.id.action_clear_history -> {
|
|
|
|
|
val ctrl = ClearHistoryDialogController()
|
|
|
|
|
ctrl.targetController = this@HistoryController
|
|
|
|
|
ctrl.showDialog(router)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return super.onOptionsItemSelected(item)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class ClearHistoryDialogController : DialogController() {
|
|
|
|
|
override fun onCreateDialog(savedViewState: Bundle?): Dialog {
|
|
|
|
|
return MaterialDialog(activity!!)
|
|
|
|
|
.message(R.string.clear_history_confirmation)
|
|
|
|
|
.positiveButton(android.R.string.ok) {
|
|
|
|
|
(targetController as? HistoryController)?.clearHistory()
|
|
|
|
|
}
|
|
|
|
|
.negativeButton(android.R.string.cancel)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun clearHistory() {
|
|
|
|
|
db.deleteHistory().executeAsBlocking()
|
|
|
|
|
activity?.toast(R.string.clear_history_completed)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|