mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 16:18:55 +01:00 
			
		
		
		
	Basic implementation of hiding catalogue by long pressing
This commit is contained in:
		@@ -18,7 +18,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.ui.base.controller.NucleusController
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
 | 
			
		||||
@@ -38,8 +40,10 @@ import uy.kohesive.injekt.api.get
 | 
			
		||||
 */
 | 
			
		||||
class CatalogueController : NucleusController<CataloguePresenter>(),
 | 
			
		||||
        FlexibleAdapter.OnItemClickListener,
 | 
			
		||||
        FlexibleAdapter.OnItemLongClickListener,
 | 
			
		||||
        CatalogueAdapter.OnBrowseClickListener,
 | 
			
		||||
        CatalogueAdapter.OnLatestClickListener {
 | 
			
		||||
        CatalogueAdapter.OnLatestClickListener,
 | 
			
		||||
        HideCatalogueDialog.Listener {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Application preferences.
 | 
			
		||||
@@ -118,9 +122,6 @@ class CatalogueController : NucleusController<CataloguePresenter>(),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 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
 | 
			
		||||
@@ -128,6 +129,22 @@ class CatalogueController : NucleusController<CataloguePresenter>(),
 | 
			
		||||
        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]
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,33 @@
 | 
			
		||||
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<SourceManager>().get(args.getLong("key"))!!
 | 
			
		||||
 | 
			
		||||
    constructor(source: Source) : this(Bundle().apply { putLong("key", source.id) })
 | 
			
		||||
 | 
			
		||||
    override fun onCreateDialog(savedViewState: Bundle?): Dialog {
 | 
			
		||||
        return MaterialDialog.Builder(activity!!)
 | 
			
		||||
                .title(activity!!.getString(R.string.hide_catalogue, source.name))
 | 
			
		||||
                .positiveText(android.R.string.ok)
 | 
			
		||||
                .onPositive { _, _ ->
 | 
			
		||||
                    (targetController as? Listener)?.hideCatalogueDialogClosed(source)
 | 
			
		||||
                }
 | 
			
		||||
                .negativeText(android.R.string.cancel)
 | 
			
		||||
                .build()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    interface Listener {
 | 
			
		||||
        fun hideCatalogueDialogClosed(source: Source)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user