From 5276e25b22eb540da2f1b8866df0f93208b4a04c Mon Sep 17 00:00:00 2001 From: arkon Date: Mon, 2 Mar 2020 22:49:48 -0500 Subject: [PATCH] Basic implementation of hiding catalogue by long pressing --- .../ui/catalogue/CatalogueController.kt | 25 ++++++++++++--- .../ui/catalogue/HideCatalogueDialog.kt | 31 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/HideCatalogueDialog.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/CatalogueController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/CatalogueController.kt index 4aa257ddaa..630e678f3d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/CatalogueController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/CatalogueController.kt @@ -19,7 +19,9 @@ import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.data.preference.getOrDefault import eu.kanade.tachiyomi.source.CatalogueSource +import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.online.LoginSource import eu.kanade.tachiyomi.ui.base.controller.NucleusController import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe @@ -54,10 +56,12 @@ import kotlin.math.max class CatalogueController : NucleusController(), SourceLoginDialog.Listener, FlexibleAdapter.OnItemClickListener, + FlexibleAdapter.OnItemLongClickListener, CatalogueAdapter.OnBrowseClickListener, RootSearchInterface, BottomSheetController, - CatalogueAdapter.OnLatestClickListener { + CatalogueAdapter.OnLatestClickListener, + HideCatalogueDialog.Listener { /** * Application preferences. @@ -235,9 +239,6 @@ class CatalogueController : NucleusController(), } } - /** - * Called when item is clicked - */ override fun onItemClick(view: View, position: Int): Boolean { val item = adapter?.getItem(position) as? SourceItem ?: return false val source = item.source @@ -252,6 +253,22 @@ class CatalogueController : NucleusController(), return false } + override fun onItemLongClick(position: Int) { + val item = adapter?.getItem(position) as? SourceItem ?: return + val source = item.source + + val dialog = HideCatalogueDialog(source) + dialog.targetController = this@CatalogueController + dialog.showDialog(router) + } + + override fun hideCatalogueDialogClosed(source: Source) { + val current = preferences.hiddenCatalogues().getOrDefault() + preferences.hiddenCatalogues().set(current + source.id.toString()) + + presenter.updateSources() + } + /** * Called when browse is clicked in [CatalogueAdapter] */ diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/HideCatalogueDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/HideCatalogueDialog.kt new file mode 100644 index 0000000000..cdc13f39df --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/HideCatalogueDialog.kt @@ -0,0 +1,31 @@ +package eu.kanade.tachiyomi.ui.catalogue + +import android.app.Dialog +import android.os.Bundle +import com.afollestad.materialdialogs.MaterialDialog +import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.source.SourceManager +import eu.kanade.tachiyomi.ui.base.controller.DialogController +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get + +class HideCatalogueDialog(bundle: Bundle? = null) : DialogController(bundle) { + + private val source = Injekt.get().get(args.getLong("key"))!! + + constructor(source: Source) : this(Bundle().apply { putLong("key", source.id) }) + + override fun onCreateDialog(savedViewState: Bundle?): Dialog { + return MaterialDialog(activity!!) + .title(text = activity!!.getString(R.string.hide_question, source.name)) + .positiveButton(android.R.string.ok) { + (targetController as? Listener)?.hideCatalogueDialogClosed(source) + } + .negativeButton(android.R.string.cancel) + } + + interface Listener { + fun hideCatalogueDialogClosed(source: Source) + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 02c1011af3..48ef52feaa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -630,6 +630,7 @@ Filter Forward Free + Hide %1$s? Ignore Install Left