mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Rename catalogue classes/layouts -> source
This commit is contained in:
		| @@ -1,3 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
|  | ||||
| class NoResultsException : Exception() | ||||
| @@ -6,15 +6,15 @@ import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.kanade.tachiyomi.data.glide.GlideApp | ||||
| import eu.kanade.tachiyomi.source.LocalSource | ||||
| import eu.kanade.tachiyomi.util.view.visibleIf | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.download_text | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.local_text | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.title | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.unread_text | ||||
| import kotlinx.android.synthetic.main.source_grid_item.download_text | ||||
| import kotlinx.android.synthetic.main.source_grid_item.local_text | ||||
| import kotlinx.android.synthetic.main.source_grid_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.source_grid_item.title | ||||
| import kotlinx.android.synthetic.main.source_grid_item.unread_text | ||||
|  | ||||
| /** | ||||
|  * Class used to hold the displayed data of a manga in the library, like the cover or the title. | ||||
|  * All the elements from the layout file "item_catalogue_grid" are available in this class. | ||||
|  * All the elements from the layout file "item_source_grid" are available in this class. | ||||
|  * | ||||
|  * @param view the inflated view for this holder. | ||||
|  * @param adapter the adapter handling this holder. | ||||
|   | ||||
| @@ -15,8 +15,8 @@ import eu.kanade.tachiyomi.data.database.models.LibraryManga | ||||
| import eu.kanade.tachiyomi.data.preference.getOrDefault | ||||
| import eu.kanade.tachiyomi.source.SourceManager | ||||
| import eu.kanade.tachiyomi.widget.AutofitRecyclerView | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.view.card | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.view.gradient | ||||
| import kotlinx.android.synthetic.main.source_grid_item.view.card | ||||
| import kotlinx.android.synthetic.main.source_grid_item.view.gradient | ||||
| import uy.kohesive.injekt.Injekt | ||||
| import uy.kohesive.injekt.api.get | ||||
|  | ||||
| @@ -29,9 +29,9 @@ class LibraryItem(val manga: LibraryManga, private val libraryAsList: Preference | ||||
|  | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return if (libraryAsList.getOrDefault()) | ||||
|             R.layout.catalogue_list_item | ||||
|             R.layout.source_list_item | ||||
|         else | ||||
|             R.layout.catalogue_grid_item | ||||
|             R.layout.source_grid_item | ||||
|     } | ||||
|  | ||||
|     override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): LibraryHolder { | ||||
|   | ||||
| @@ -6,11 +6,11 @@ import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.kanade.tachiyomi.data.glide.GlideApp | ||||
| import eu.kanade.tachiyomi.source.LocalSource | ||||
| import eu.kanade.tachiyomi.util.view.visibleIf | ||||
| import kotlinx.android.synthetic.main.catalogue_list_item.download_text | ||||
| import kotlinx.android.synthetic.main.catalogue_list_item.local_text | ||||
| import kotlinx.android.synthetic.main.catalogue_list_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.catalogue_list_item.title | ||||
| import kotlinx.android.synthetic.main.catalogue_list_item.unread_text | ||||
| import kotlinx.android.synthetic.main.source_list_item.download_text | ||||
| import kotlinx.android.synthetic.main.source_list_item.local_text | ||||
| import kotlinx.android.synthetic.main.source_list_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.source_list_item.title | ||||
| import kotlinx.android.synthetic.main.source_list_item.unread_text | ||||
|  | ||||
| /** | ||||
|  * Class used to hold the displayed data of a manga in the library, like the cover or the title. | ||||
|   | ||||
| @@ -21,8 +21,6 @@ import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.RootController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.TabbedController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| import eu.kanade.tachiyomi.ui.catalogue.CatalogueController | ||||
| import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchController | ||||
| import eu.kanade.tachiyomi.ui.download.DownloadController | ||||
| import eu.kanade.tachiyomi.ui.extension.ExtensionController | ||||
| import eu.kanade.tachiyomi.ui.library.LibraryController | ||||
| @@ -30,6 +28,8 @@ import eu.kanade.tachiyomi.ui.manga.MangaController | ||||
| import eu.kanade.tachiyomi.ui.more.MoreController | ||||
| import eu.kanade.tachiyomi.ui.recent.history.HistoryController | ||||
| import eu.kanade.tachiyomi.ui.recent.updates.UpdatesController | ||||
| import eu.kanade.tachiyomi.ui.source.SourceController | ||||
| import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchController | ||||
| import java.util.Date | ||||
| import java.util.concurrent.TimeUnit | ||||
| import kotlinx.coroutines.Dispatchers | ||||
| @@ -83,7 +83,7 @@ class MainActivity : BaseActivity() { | ||||
|                     R.id.nav_library -> setRoot(LibraryController(), id) | ||||
|                     R.id.nav_updates -> setRoot(UpdatesController(), id) | ||||
|                     R.id.nav_history -> setRoot(HistoryController(), id) | ||||
|                     R.id.nav_sources -> setRoot(CatalogueController(), id) | ||||
|                     R.id.nav_sources -> setRoot(SourceController(), id) | ||||
|                     R.id.nav_more -> setRoot(MoreController(), id) | ||||
|                 } | ||||
|             } else if (!isHandlingShortcut) { | ||||
| @@ -228,7 +228,7 @@ class MainActivity : BaseActivity() { | ||||
|                     if (router.backstackSize > 1) { | ||||
|                         router.popToRoot() | ||||
|                     } | ||||
|                     router.pushController(CatalogueSearchController(query).withFadeTransaction()) | ||||
|                     router.pushController(GlobalSearchController(query).withFadeTransaction()) | ||||
|                 } | ||||
|             } | ||||
|             INTENT_SEARCH -> { | ||||
| @@ -238,7 +238,7 @@ class MainActivity : BaseActivity() { | ||||
|                     if (router.backstackSize > 1) { | ||||
|                         router.popToRoot() | ||||
|                     } | ||||
|                     router.pushController(CatalogueSearchController(query, filter).withFadeTransaction()) | ||||
|                     router.pushController(GlobalSearchController(query, filter).withFadeTransaction()) | ||||
|                 } | ||||
|             } | ||||
|             else -> { | ||||
|   | ||||
| @@ -44,12 +44,12 @@ import eu.kanade.tachiyomi.source.online.HttpSource | ||||
| import eu.kanade.tachiyomi.ui.base.controller.DialogController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.NucleusController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| import eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCatalogueController | ||||
| import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchController | ||||
| import eu.kanade.tachiyomi.ui.library.ChangeMangaCategoriesDialog | ||||
| import eu.kanade.tachiyomi.ui.library.LibraryController | ||||
| import eu.kanade.tachiyomi.ui.main.MainActivity | ||||
| import eu.kanade.tachiyomi.ui.manga.MangaController | ||||
| import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController | ||||
| import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchController | ||||
| import eu.kanade.tachiyomi.ui.webview.WebViewActivity | ||||
| import eu.kanade.tachiyomi.util.lang.truncateCenter | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| @@ -549,7 +549,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(), | ||||
|      */ | ||||
|     private fun performGlobalSearch(query: String) { | ||||
|         val router = parentController?.router ?: return | ||||
|         router.pushController(CatalogueSearchController(query).withFadeTransaction()) | ||||
|         router.pushController(GlobalSearchController(query).withFadeTransaction()) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -570,7 +570,7 @@ class MangaInfoController : NucleusController<MangaInfoPresenter>(), | ||||
|                 router.handleBack() | ||||
|                 previousController.search(query) | ||||
|             } | ||||
|             is BrowseCatalogueController -> { | ||||
|             is BrowseSourceController -> { | ||||
|                 router.handleBack() | ||||
|                 previousController.searchWithQuery(query) | ||||
|             } | ||||
|   | ||||
| @@ -5,8 +5,8 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy | ||||
| import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.kanade.tachiyomi.data.glide.GlideApp | ||||
| import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder | ||||
| import kotlinx.android.synthetic.main.catalogue_list_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.catalogue_list_item.title | ||||
| import kotlinx.android.synthetic.main.source_list_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.source_list_item.title | ||||
|  | ||||
| class MangaHolder( | ||||
|     private val view: View, | ||||
|   | ||||
| @@ -11,7 +11,7 @@ import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| class MangaItem(val manga: Manga) : AbstractFlexibleItem<MangaHolder>() { | ||||
|  | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return R.layout.catalogue_list_item | ||||
|         return R.layout.source_list_item | ||||
|     } | ||||
|  | ||||
|     override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): MangaHolder { | ||||
|   | ||||
| @@ -9,17 +9,17 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper | ||||
| import eu.kanade.tachiyomi.data.preference.getOrDefault | ||||
| import eu.kanade.tachiyomi.ui.base.controller.DialogController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.popControllerWithTag | ||||
| import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchController | ||||
| import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchPresenter | ||||
| import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchController | ||||
| import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchPresenter | ||||
| import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| class SearchController( | ||||
|     private var manga: Manga? = null | ||||
| ) : CatalogueSearchController(manga?.title) { | ||||
| ) : GlobalSearchController(manga?.title) { | ||||
|  | ||||
|     private var newManga: Manga? = null | ||||
|  | ||||
|     override fun createPresenter(): CatalogueSearchPresenter { | ||||
|     override fun createPresenter(): GlobalSearchPresenter { | ||||
|         return SearchPresenter(initialQuery, manga!!) | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -9,9 +9,9 @@ import eu.kanade.tachiyomi.source.CatalogueSource | ||||
| import eu.kanade.tachiyomi.source.Source | ||||
| import eu.kanade.tachiyomi.source.model.SChapter | ||||
| import eu.kanade.tachiyomi.source.model.SManga | ||||
| import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchCardItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchPresenter | ||||
| import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchCardItem | ||||
| import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchItem | ||||
| import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchPresenter | ||||
| import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource | ||||
| import rx.Observable | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| @@ -20,7 +20,7 @@ import rx.schedulers.Schedulers | ||||
| class SearchPresenter( | ||||
|     initialQuery: String? = "", | ||||
|     private val manga: Manga | ||||
| ) : CatalogueSearchPresenter(initialQuery) { | ||||
| ) : GlobalSearchPresenter(initialQuery) { | ||||
|  | ||||
|     private val replacingMangaRelay = BehaviorRelay.create<Boolean>() | ||||
|  | ||||
| @@ -36,9 +36,9 @@ class SearchPresenter( | ||||
|                 .sortedByDescending { it.id == manga.source } | ||||
|     } | ||||
|  | ||||
|     override fun createCatalogueSearchItem(source: CatalogueSource, results: List<CatalogueSearchCardItem>?): CatalogueSearchItem { | ||||
|     override fun createCatalogueSearchItem(source: CatalogueSource, results: List<GlobalSearchCardItem>?): GlobalSearchItem { | ||||
|         // Set the catalogue search item as highlighted if the source matches that of the selected manga | ||||
|         return CatalogueSearchItem(source, results, source.id == manga.source) | ||||
|         return GlobalSearchItem(source, results, source.id == manga.source) | ||||
|     } | ||||
|  | ||||
|     override fun networkToLocalManga(sManga: SManga, sourceId: Long): Manga { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ import eu.davidea.flexibleadapter.items.AbstractHeaderItem | ||||
| import eu.davidea.flexibleadapter.items.IFlexible | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card.title | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card.title | ||||
|  | ||||
| /** | ||||
|  * Item that contains the selection header. | ||||
| @@ -18,7 +18,7 @@ class SelectionHeader : AbstractHeaderItem<SelectionHeader.Holder>() { | ||||
|      * Returns the layout resource of this item. | ||||
|      */ | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return R.layout.catalogue_main_controller_card | ||||
|         return R.layout.source_main_controller_card | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -8,11 +8,11 @@ import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder | ||||
| import eu.kanade.tachiyomi.util.view.gone | ||||
| import eu.kanade.tachiyomi.util.view.roundTextIcon | ||||
| import io.github.mthli.slice.Slice | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.card | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.image | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.source_browse | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.source_latest | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.title | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.card | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.image | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.source_browse | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.source_latest | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.title | ||||
|  | ||||
| class SourceHolder(view: View, override val adapter: SourceAdapter) : | ||||
|         BaseFlexibleViewHolder(view, adapter), | ||||
|   | ||||
| @@ -21,7 +21,7 @@ data class SourceItem(val source: Source, val header: SelectionHeader? = null) : | ||||
|      * Returns the layout resource of this item. | ||||
|      */ | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return R.layout.catalogue_main_controller_card_item | ||||
|         return R.layout.source_main_controller_card_item | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue | ||||
| package eu.kanade.tachiyomi.ui.source | ||||
| 
 | ||||
| import android.view.View | ||||
| import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder | ||||
| import eu.kanade.tachiyomi.util.system.LocaleHelper | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card.title | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card.title | ||||
| 
 | ||||
| class LangHolder(view: View, adapter: FlexibleAdapter<*>) : | ||||
|         BaseFlexibleViewHolder(view, adapter) { | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue | ||||
| package eu.kanade.tachiyomi.ui.source | ||||
| 
 | ||||
| import android.view.View | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| @@ -18,7 +18,7 @@ data class LangItem(val code: String) : AbstractHeaderItem<LangHolder>() { | ||||
|      * Returns the layout resource of this item. | ||||
|      */ | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return R.layout.catalogue_main_controller_card | ||||
|         return R.layout.source_main_controller_card | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue | ||||
| package eu.kanade.tachiyomi.ui.source | ||||
| 
 | ||||
| import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.davidea.flexibleadapter.items.IFlexible | ||||
| @@ -8,9 +8,9 @@ import eu.kanade.tachiyomi.util.system.getResourceColor | ||||
| /** | ||||
|  * Adapter that holds the catalogue cards. | ||||
|  * | ||||
|  * @param controller instance of [CatalogueController]. | ||||
|  * @param controller instance of [SourceController]. | ||||
|  */ | ||||
| class CatalogueAdapter(val controller: CatalogueController) : | ||||
| class SourceAdapter(val controller: SourceController) : | ||||
|         FlexibleAdapter<IFlexible<*>>(null, controller, true) { | ||||
| 
 | ||||
|     val cardBackground = controller.activity!!.getResourceColor(R.attr.colorSurface) | ||||
| @@ -31,7 +31,7 @@ class CatalogueAdapter(val controller: CatalogueController) : | ||||
| 
 | ||||
|     /** | ||||
|      * Listener which should be called when user clicks browse. | ||||
|      * Note: Should only be handled by [CatalogueController] | ||||
|      * Note: Should only be handled by [SourceController] | ||||
|      */ | ||||
|     interface OnBrowseClickListener { | ||||
|         fun onBrowseClick(position: Int) | ||||
| @@ -39,7 +39,7 @@ class CatalogueAdapter(val controller: CatalogueController) : | ||||
| 
 | ||||
|     /** | ||||
|      * Listener which should be called when user clicks latest. | ||||
|      * Note: Should only be handled by [CatalogueController] | ||||
|      * Note: Should only be handled by [SourceController] | ||||
|      */ | ||||
|     interface OnLatestClickListener { | ||||
|         fun onLatestClick(position: Int) | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue | ||||
| package eu.kanade.tachiyomi.ui.source | ||||
| 
 | ||||
| import android.Manifest.permission.WRITE_EXTERNAL_STORAGE | ||||
| import android.view.LayoutInflater | ||||
| @@ -20,41 +20,41 @@ 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.databinding.CatalogueMainControllerBinding | ||||
| import eu.kanade.tachiyomi.databinding.SourceMainControllerBinding | ||||
| 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.RootController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| import eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCatalogueController | ||||
| import eu.kanade.tachiyomi.ui.catalogue.global_search.CatalogueSearchController | ||||
| import eu.kanade.tachiyomi.ui.catalogue.latest.LatestUpdatesController | ||||
| import eu.kanade.tachiyomi.ui.setting.SettingsSourcesController | ||||
| import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController | ||||
| import eu.kanade.tachiyomi.ui.source.global_search.GlobalSearchController | ||||
| import eu.kanade.tachiyomi.ui.source.latest.LatestUpdatesController | ||||
| import uy.kohesive.injekt.Injekt | ||||
| import uy.kohesive.injekt.api.get | ||||
| 
 | ||||
| /** | ||||
|  * This controller shows and manages the different catalogues enabled by the user. | ||||
|  * This controller should only handle UI actions, IO actions should be done by [CataloguePresenter] | ||||
|  * [CatalogueAdapter.OnBrowseClickListener] call function data on browse item click. | ||||
|  * [CatalogueAdapter.OnLatestClickListener] call function data on latest item click | ||||
|  * This controller should only handle UI actions, IO actions should be done by [SourcePresenter] | ||||
|  * [SourceAdapter.OnBrowseClickListener] call function data on browse item click. | ||||
|  * [SourceAdapter.OnLatestClickListener] call function data on latest item click | ||||
|  */ | ||||
| class CatalogueController : NucleusController<CataloguePresenter>(), | ||||
| class SourceController : NucleusController<SourcePresenter>(), | ||||
|         RootController, | ||||
|         FlexibleAdapter.OnItemClickListener, | ||||
|         FlexibleAdapter.OnItemLongClickListener, | ||||
|         CatalogueAdapter.OnBrowseClickListener, | ||||
|         CatalogueAdapter.OnLatestClickListener { | ||||
|         SourceAdapter.OnBrowseClickListener, | ||||
|         SourceAdapter.OnLatestClickListener { | ||||
| 
 | ||||
|     private val preferences: PreferencesHelper = Injekt.get() | ||||
| 
 | ||||
|     /** | ||||
|      * Adapter containing sources. | ||||
|      */ | ||||
|     private var adapter: CatalogueAdapter? = null | ||||
|     private var adapter: SourceAdapter? = null | ||||
| 
 | ||||
|     private lateinit var binding: CatalogueMainControllerBinding | ||||
|     private lateinit var binding: SourceMainControllerBinding | ||||
| 
 | ||||
|     init { | ||||
|         setHasOptionsMenu(true) | ||||
| @@ -64,26 +64,26 @@ class CatalogueController : NucleusController<CataloguePresenter>(), | ||||
|         return applicationContext?.getString(R.string.label_sources) | ||||
|     } | ||||
| 
 | ||||
|     override fun createPresenter(): CataloguePresenter { | ||||
|         return CataloguePresenter() | ||||
|     override fun createPresenter(): SourcePresenter { | ||||
|         return SourcePresenter() | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Initiate the view with [R.layout.catalogue_main_controller]. | ||||
|      * Initiate the view with [R.layout.source_main_controller]. | ||||
|      * | ||||
|      * @param inflater used to load the layout xml. | ||||
|      * @param container containing parent views. | ||||
|      * @return inflated view. | ||||
|      */ | ||||
|     override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { | ||||
|         binding = CatalogueMainControllerBinding.inflate(inflater) | ||||
|         binding = SourceMainControllerBinding.inflate(inflater) | ||||
|         return binding.root | ||||
|     } | ||||
| 
 | ||||
|     override fun onViewCreated(view: View) { | ||||
|         super.onViewCreated(view) | ||||
| 
 | ||||
|         adapter = CatalogueAdapter(this) | ||||
|         adapter = SourceAdapter(this) | ||||
| 
 | ||||
|         // Create recycler and set adapter. | ||||
|         binding.recycler.layoutManager = LinearLayoutManager(view.context) | ||||
| @@ -109,7 +109,7 @@ class CatalogueController : NucleusController<CataloguePresenter>(), | ||||
|     override fun onItemClick(view: View, position: Int): Boolean { | ||||
|         val item = adapter?.getItem(position) as? SourceItem ?: return false | ||||
|         val source = item.source | ||||
|         openCatalogue(source, BrowseCatalogueController(source)) | ||||
|         openCatalogue(source, BrowseSourceController(source)) | ||||
|         return false | ||||
|     } | ||||
| 
 | ||||
| @@ -117,7 +117,7 @@ class CatalogueController : NucleusController<CataloguePresenter>(), | ||||
|         val activity = activity ?: return | ||||
|         val item = adapter?.getItem(position) as? SourceItem ?: return | ||||
| 
 | ||||
|         val isPinned = item.header?.code?.equals(CataloguePresenter.PINNED_KEY) ?: false | ||||
|         val isPinned = item.header?.code?.equals(SourcePresenter.PINNED_KEY) ?: false | ||||
| 
 | ||||
|         MaterialDialog.Builder(activity) | ||||
|                 .title(item.source.name) | ||||
| @@ -152,14 +152,14 @@ class CatalogueController : NucleusController<CataloguePresenter>(), | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Called when browse is clicked in [CatalogueAdapter] | ||||
|      * Called when browse is clicked in [SourceAdapter] | ||||
|      */ | ||||
|     override fun onBrowseClick(position: Int) { | ||||
|         onItemClick(view!!, position) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Called when latest is clicked in [CatalogueAdapter] | ||||
|      * Called when latest is clicked in [SourceAdapter] | ||||
|      */ | ||||
|     override fun onLatestClick(position: Int) { | ||||
|         val item = adapter?.getItem(position) as? SourceItem ?: return | ||||
| @@ -169,7 +169,7 @@ class CatalogueController : NucleusController<CataloguePresenter>(), | ||||
|     /** | ||||
|      * Opens a catalogue with the given controller. | ||||
|      */ | ||||
|     private fun openCatalogue(source: CatalogueSource, controller: BrowseCatalogueController) { | ||||
|     private fun openCatalogue(source: CatalogueSource, controller: BrowseSourceController) { | ||||
|         preferences.lastUsedCatalogueSource().set(source.id) | ||||
|         router.pushController(controller.withFadeTransaction()) | ||||
|     } | ||||
| @@ -182,7 +182,7 @@ class CatalogueController : NucleusController<CataloguePresenter>(), | ||||
|      */ | ||||
|     override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { | ||||
|         // Inflate menu | ||||
|         inflater.inflate(R.menu.catalogue_main, menu) | ||||
|         inflater.inflate(R.menu.source_main, menu) | ||||
| 
 | ||||
|         // Initialize search option. | ||||
|         val searchItem = menu.findItem(R.id.action_search) | ||||
| @@ -198,7 +198,7 @@ class CatalogueController : NucleusController<CataloguePresenter>(), | ||||
|     } | ||||
| 
 | ||||
|     fun performGlobalSearch(query: String) { | ||||
|         router.pushController(CatalogueSearchController(query).withFadeTransaction()) | ||||
|         router.pushController(GlobalSearchController(query).withFadeTransaction()) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue | ||||
| package eu.kanade.tachiyomi.ui.source | ||||
| 
 | ||||
| import android.content.Context | ||||
| import android.graphics.Canvas | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue | ||||
| package eu.kanade.tachiyomi.ui.source | ||||
| 
 | ||||
| import android.view.View | ||||
| import eu.kanade.tachiyomi.R | ||||
| @@ -9,13 +9,13 @@ import eu.kanade.tachiyomi.util.view.gone | ||||
| import eu.kanade.tachiyomi.util.view.roundTextIcon | ||||
| import eu.kanade.tachiyomi.util.view.visible | ||||
| import io.github.mthli.slice.Slice | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.card | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.image | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.source_browse | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.source_latest | ||||
| import kotlinx.android.synthetic.main.catalogue_main_controller_card_item.title | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.card | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.image | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.source_browse | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.source_latest | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.title | ||||
| 
 | ||||
| class SourceHolder(view: View, override val adapter: CatalogueAdapter) : | ||||
| class SourceHolder(view: View, override val adapter: SourceAdapter) : | ||||
|         BaseFlexibleViewHolder(view, adapter), | ||||
|         SlicedHolder { | ||||
| 
 | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue | ||||
| package eu.kanade.tachiyomi.ui.source | ||||
| 
 | ||||
| import android.view.View | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| @@ -21,14 +21,14 @@ data class SourceItem(val source: CatalogueSource, val header: LangItem? = null) | ||||
|      * Returns the layout resource of this item. | ||||
|      */ | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return R.layout.catalogue_main_controller_card_item | ||||
|         return R.layout.source_main_controller_card_item | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Creates a new view holder for this item. | ||||
|      */ | ||||
|     override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): SourceHolder { | ||||
|         return SourceHolder(view, adapter as CatalogueAdapter) | ||||
|         return SourceHolder(view, adapter as SourceAdapter) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue | ||||
| package eu.kanade.tachiyomi.ui.source | ||||
| 
 | ||||
| import android.os.Bundle | ||||
| import eu.kanade.tachiyomi.data.preference.PreferencesHelper | ||||
| @@ -16,16 +16,16 @@ import uy.kohesive.injekt.Injekt | ||||
| import uy.kohesive.injekt.api.get | ||||
| 
 | ||||
| /** | ||||
|  * Presenter of [CatalogueController] | ||||
|  * Presenter of [SourceController] | ||||
|  * Function calls should be done from here. UI calls should be done from the controller. | ||||
|  * | ||||
|  * @param sourceManager manages the different sources. | ||||
|  * @param preferences application preferences. | ||||
|  */ | ||||
| class CataloguePresenter( | ||||
| class SourcePresenter( | ||||
|     val sourceManager: SourceManager = Injekt.get(), | ||||
|     private val preferences: PreferencesHelper = Injekt.get() | ||||
| ) : BasePresenter<CatalogueController>() { | ||||
| ) : BasePresenter<SourceController>() { | ||||
| 
 | ||||
|     var sources = getEnabledSources() | ||||
| 
 | ||||
| @@ -76,7 +76,7 @@ class CataloguePresenter( | ||||
|         } | ||||
| 
 | ||||
|         sourceSubscription = Observable.just(sourceItems) | ||||
|                 .subscribeLatestCache(CatalogueController::setSources) | ||||
|                 .subscribeLatestCache(SourceController::setSources) | ||||
|     } | ||||
| 
 | ||||
|     private fun loadLastUsedSource() { | ||||
| @@ -88,7 +88,7 @@ class CataloguePresenter( | ||||
|                 sharedObs.skip(1).delay(500, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())) | ||||
|                 .distinctUntilChanged() | ||||
|                 .map { (sourceManager.get(it) as? CatalogueSource)?.let { SourceItem(it) } } | ||||
|                 .subscribeLatestCache(CatalogueController::setLastUsedSource) | ||||
|                 .subscribeLatestCache(SourceController::setLastUsedSource) | ||||
|     } | ||||
| 
 | ||||
|     fun updateSources() { | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import android.content.res.Configuration | ||||
| import android.os.Bundle | ||||
| @@ -23,7 +23,7 @@ import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.database.models.Category | ||||
| import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| import eu.kanade.tachiyomi.data.preference.PreferencesHelper | ||||
| import eu.kanade.tachiyomi.databinding.CatalogueControllerBinding | ||||
| import eu.kanade.tachiyomi.databinding.SourceControllerBinding | ||||
| import eu.kanade.tachiyomi.source.CatalogueSource | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| import eu.kanade.tachiyomi.source.online.HttpSource | ||||
| @@ -51,8 +51,8 @@ import uy.kohesive.injekt.injectLazy | ||||
| /** | ||||
|  * Controller to manage the catalogues available in the app. | ||||
|  */ | ||||
| open class BrowseCatalogueController(bundle: Bundle) : | ||||
|         NucleusController<BrowseCataloguePresenter>(bundle), | ||||
| open class BrowseSourceController(bundle: Bundle) : | ||||
|         NucleusController<BrowseSourcePresenter>(bundle), | ||||
|         FlexibleAdapter.OnItemClickListener, | ||||
|         FlexibleAdapter.OnItemLongClickListener, | ||||
|         FlexibleAdapter.EndlessScrollListener, | ||||
| @@ -77,7 +77,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|     /** | ||||
|      * Sheet containing filter items. | ||||
|      */ | ||||
|     private var filterSheet: CatalogueFilterSheet? = null | ||||
|     private var filterSheet: SourceFilterSheet? = null | ||||
| 
 | ||||
|     /** | ||||
|      * Recycler view with the list of results. | ||||
| @@ -99,7 +99,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|      */ | ||||
|     private var progressItem: ProgressItem? = null | ||||
| 
 | ||||
|     private lateinit var binding: CatalogueControllerBinding | ||||
|     private lateinit var binding: SourceControllerBinding | ||||
| 
 | ||||
|     init { | ||||
|         setHasOptionsMenu(true) | ||||
| @@ -109,12 +109,12 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|         return presenter.source.name | ||||
|     } | ||||
| 
 | ||||
|     override fun createPresenter(): BrowseCataloguePresenter { | ||||
|         return BrowseCataloguePresenter(args.getLong(SOURCE_ID_KEY)) | ||||
|     override fun createPresenter(): BrowseSourcePresenter { | ||||
|         return BrowseSourcePresenter(args.getLong(SOURCE_ID_KEY)) | ||||
|     } | ||||
| 
 | ||||
|     override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { | ||||
|         binding = CatalogueControllerBinding.inflate(inflater) | ||||
|         binding = SourceControllerBinding.inflate(inflater) | ||||
|         return binding.root | ||||
|     } | ||||
| 
 | ||||
| @@ -136,7 +136,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|             return | ||||
|         } | ||||
| 
 | ||||
|         filterSheet = CatalogueFilterSheet( | ||||
|         filterSheet = SourceFilterSheet( | ||||
|             activity!!, | ||||
|             onSearchClicked = { | ||||
|                 val allDefault = presenter.sourceFilters == presenter.source.getFilterList() | ||||
| @@ -188,17 +188,17 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|                 addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL)) | ||||
|             } | ||||
|         } else { | ||||
|             (binding.catalogueView.inflate(R.layout.catalogue_recycler_autofit) as AutofitRecyclerView).apply { | ||||
|             (binding.catalogueView.inflate(R.layout.source_recycler_autofit) as AutofitRecyclerView).apply { | ||||
|                 numColumnsSubscription = getColumnsPreferenceForCurrentOrientation().asObservable() | ||||
|                         .doOnNext { spanCount = it } | ||||
|                         .skip(1) | ||||
|                         // Set again the adapter to recalculate the covers height | ||||
|                         .subscribe { adapter = this@BrowseCatalogueController.adapter } | ||||
|                         .subscribe { adapter = this@BrowseSourceController.adapter } | ||||
| 
 | ||||
|                 (layoutManager as GridLayoutManager).spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { | ||||
|                     override fun getSpanSize(position: Int): Int { | ||||
|                         return when (adapter?.getItemViewType(position)) { | ||||
|                             R.layout.catalogue_grid_item, null -> 1 | ||||
|                             R.layout.source_grid_item, null -> 1 | ||||
|                             else -> spanCount | ||||
|                         } | ||||
|                     } | ||||
| @@ -231,7 +231,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|     } | ||||
| 
 | ||||
|     override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { | ||||
|         inflater.inflate(R.menu.catalogue_list, menu) | ||||
|         inflater.inflate(R.menu.source_browse, menu) | ||||
| 
 | ||||
|         // Initialize search menu | ||||
|         val searchItem = menu.findItem(R.id.action_search) | ||||
| @@ -246,7 +246,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
| 
 | ||||
|         val searchEventsObservable = searchView.queryTextChangeEvents() | ||||
|                 .skip(1) | ||||
|                 .filter { router.backstack.lastOrNull()?.controller() == this@BrowseCatalogueController } | ||||
|                 .filter { router.backstack.lastOrNull()?.controller() == this@BrowseSourceController } | ||||
|                 .share() | ||||
|         val writingObservable = searchEventsObservable | ||||
|                 .filter { !it.isSubmitted } | ||||
| @@ -323,7 +323,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|      * @param page the current page. | ||||
|      * @param mangas the list of manga of the page. | ||||
|      */ | ||||
|     fun onAddPage(page: Int, mangas: List<CatalogueItem>) { | ||||
|     fun onAddPage(page: Int, mangas: List<SourceItem>) { | ||||
|         val adapter = adapter ?: return | ||||
|         hideProgressBar() | ||||
|         if (page == 1) { | ||||
| @@ -434,7 +434,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|         if (!isListMode || !view.context.connectivityManager.isActiveNetworkMetered) { | ||||
|             // Initialize mangas if going to grid view or if over wifi when going to list view | ||||
|             val mangas = (0 until adapter.itemCount).mapNotNull { | ||||
|                 (adapter.getItem(it) as? CatalogueItem)?.manga | ||||
|                 (adapter.getItem(it) as? SourceItem)?.manga | ||||
|             } | ||||
|             presenter.initializeMangas(mangas) | ||||
|         } | ||||
| @@ -458,13 +458,13 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|      * @param manga the manga to find. | ||||
|      * @return the holder of the manga or null if it's not bound. | ||||
|      */ | ||||
|     private fun getHolder(manga: Manga): CatalogueHolder? { | ||||
|     private fun getHolder(manga: Manga): SourceHolder? { | ||||
|         val adapter = adapter ?: return null | ||||
| 
 | ||||
|         adapter.allBoundViewHolders.forEach { holder -> | ||||
|             val item = adapter.getItem(holder.adapterPosition) as? CatalogueItem | ||||
|             val item = adapter.getItem(holder.adapterPosition) as? SourceItem | ||||
|             if (item != null && item.manga.id!! == manga.id!!) { | ||||
|                 return holder as CatalogueHolder | ||||
|                 return holder as SourceHolder | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -495,7 +495,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|      * @return true if the item should be selected, false otherwise. | ||||
|      */ | ||||
|     override fun onItemClick(view: View, position: Int): Boolean { | ||||
|         val item = adapter?.getItem(position) as? CatalogueItem ?: return false | ||||
|         val item = adapter?.getItem(position) as? SourceItem ?: return false | ||||
|         router.pushController(MangaController(item.manga, true).withFadeTransaction()) | ||||
| 
 | ||||
|         return false | ||||
| @@ -512,7 +512,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|      */ | ||||
|     override fun onItemLongClick(position: Int) { | ||||
|         val activity = activity ?: return | ||||
|         val manga = (adapter?.getItem(position) as? CatalogueItem?)?.manga ?: return | ||||
|         val manga = (adapter?.getItem(position) as? SourceItem?)?.manga ?: return | ||||
| 
 | ||||
|         if (manga.favorite) { | ||||
|             MaterialDialog.Builder(activity) | ||||
| @@ -576,7 +576,7 @@ open class BrowseCatalogueController(bundle: Bundle) : | ||||
|         presenter.changeMangaFavorite(manga) | ||||
|         presenter.updateMangaCategories(manga, categories) | ||||
| 
 | ||||
|         val position = adapter?.currentItems?.indexOfFirst { it -> (it as CatalogueItem).manga.id == manga.id } | ||||
|         val position = adapter?.currentItems?.indexOfFirst { it -> (it as SourceItem).manga.id == manga.id } | ||||
|         if (position != null) { | ||||
|             adapter?.notifyItemChanged(position) | ||||
|         } | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import android.os.Bundle | ||||
| import eu.davidea.flexibleadapter.items.IFlexible | ||||
| @@ -15,19 +15,19 @@ import eu.kanade.tachiyomi.source.model.Filter | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| import eu.kanade.tachiyomi.source.model.SManga | ||||
| import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.CheckboxItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.CheckboxSectionItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.GroupItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.HeaderItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.SelectItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.SelectSectionItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.SeparatorItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.SortGroup | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.SortItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.TextItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.TextSectionItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.TriStateItem | ||||
| import eu.kanade.tachiyomi.ui.catalogue.filter.TriStateSectionItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.CheckboxItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.CheckboxSectionItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.GroupItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.HeaderItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.SelectItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.SelectSectionItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.SeparatorItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.SortGroup | ||||
| import eu.kanade.tachiyomi.ui.source.filter.SortItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.TextItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.TextSectionItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.TriStateItem | ||||
| import eu.kanade.tachiyomi.ui.source.filter.TriStateSectionItem | ||||
| import rx.Observable | ||||
| import rx.Subscription | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| @@ -38,15 +38,15 @@ import uy.kohesive.injekt.Injekt | ||||
| import uy.kohesive.injekt.api.get | ||||
| 
 | ||||
| /** | ||||
|  * Presenter of [BrowseCatalogueController]. | ||||
|  * Presenter of [BrowseSourceController]. | ||||
|  */ | ||||
| open class BrowseCataloguePresenter( | ||||
| open class BrowseSourcePresenter( | ||||
|     sourceId: Long, | ||||
|     sourceManager: SourceManager = Injekt.get(), | ||||
|     private val db: DatabaseHelper = Injekt.get(), | ||||
|     private val prefs: PreferencesHelper = Injekt.get(), | ||||
|     private val coverCache: CoverCache = Injekt.get() | ||||
| ) : BasePresenter<BrowseCatalogueController>() { | ||||
| ) : BasePresenter<BrowseSourceController>() { | ||||
| 
 | ||||
|     /** | ||||
|      * Selected source. | ||||
| @@ -151,7 +151,7 @@ open class BrowseCataloguePresenter( | ||||
|                 .observeOn(Schedulers.io()) | ||||
|                 .map { it.first to it.second.map { networkToLocalManga(it, sourceId) } } | ||||
|                 .doOnNext { initializeMangas(it.second) } | ||||
|                 .map { it.first to it.second.map { CatalogueItem(it, catalogueAsList) } } | ||||
|                 .map { it.first to it.second.map { SourceItem(it, catalogueAsList) } } | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .subscribeReplay({ view, (page, mangas) -> | ||||
|                     view.onAddPage(page, mangas) | ||||
| @@ -173,7 +173,7 @@ open class BrowseCataloguePresenter( | ||||
|         pageSubscription = Observable.defer { pager.requestNext() } | ||||
|                 .subscribeFirst({ _, _ -> | ||||
|                     // Nothing to do when onNext is emitted. | ||||
|                 }, BrowseCatalogueController::onAddPageError) | ||||
|                 }, BrowseSourceController::onAddPageError) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -288,7 +288,7 @@ open class BrowseCataloguePresenter( | ||||
|     } | ||||
| 
 | ||||
|     open fun createPager(query: String, filters: FilterList): Pager { | ||||
|         return CataloguePager(source, query, filters) | ||||
|         return SourcePager(source, query, filters) | ||||
|     } | ||||
| 
 | ||||
|     private fun FilterList.toItems(): List<IFlexible<*>> { | ||||
| @@ -0,0 +1,3 @@ | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
|  | ||||
| class NoResultsException : Exception() | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import com.jakewharton.rxrelay.PublishRelay | ||||
| import eu.kanade.tachiyomi.source.model.MangasPage | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import android.view.View | ||||
| import android.widget.ProgressBar | ||||
| @@ -17,7 +17,7 @@ class ProgressItem : AbstractFlexibleItem<ProgressItem.Holder>() { | ||||
|     private var loadMore = true | ||||
| 
 | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return R.layout.catalogue_progress_item | ||||
|         return R.layout.source_progress_item | ||||
|     } | ||||
| 
 | ||||
|     override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): Holder { | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import android.app.Activity | ||||
| import android.content.Context | ||||
| @@ -10,10 +10,10 @@ import eu.davidea.flexibleadapter.items.IFlexible | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.util.view.inflate | ||||
| import eu.kanade.tachiyomi.widget.SimpleNavigationView | ||||
| import kotlinx.android.synthetic.main.catalogue_drawer_content.view.reset_btn | ||||
| import kotlinx.android.synthetic.main.catalogue_drawer_content.view.search_btn | ||||
| import kotlinx.android.synthetic.main.source_filter_sheet.view.reset_btn | ||||
| import kotlinx.android.synthetic.main.source_filter_sheet.view.search_btn | ||||
| 
 | ||||
| class CatalogueFilterSheet( | ||||
| class SourceFilterSheet( | ||||
|     activity: Activity, | ||||
|     onSearchClicked: () -> Unit, | ||||
|     onResetClicked: () -> Unit | ||||
| @@ -49,7 +49,7 @@ class CatalogueFilterSheet( | ||||
|         init { | ||||
|             recycler.adapter = adapter | ||||
|             recycler.setHasFixedSize(true) | ||||
|             val view = inflate(R.layout.catalogue_drawer_content) | ||||
|             val view = inflate(R.layout.source_filter_sheet) | ||||
|             ((view as ViewGroup).getChildAt(1) as ViewGroup).addView(recycler) | ||||
|             addView(view) | ||||
|             search_btn.setOnClickListener { onSearchClicked() } | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import android.view.View | ||||
| import com.bumptech.glide.load.engine.DiskCacheStrategy | ||||
| @@ -6,20 +6,20 @@ import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| import eu.kanade.tachiyomi.data.glide.GlideApp | ||||
| import eu.kanade.tachiyomi.widget.StateImageViewTarget | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.progress | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.title | ||||
| import kotlinx.android.synthetic.main.source_grid_item.progress | ||||
| import kotlinx.android.synthetic.main.source_grid_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.source_grid_item.title | ||||
| 
 | ||||
| /** | ||||
|  * Class used to hold the displayed data of a manga in the catalogue, like the cover or the title. | ||||
|  * All the elements from the layout file "item_catalogue_grid" are available in this class. | ||||
|  * All the elements from the layout file "item_source_grid" are available in this class. | ||||
|  * | ||||
|  * @param view the inflated view for this holder. | ||||
|  * @param adapter the adapter handling this holder. | ||||
|  * @constructor creates a new catalogue holder. | ||||
|  */ | ||||
| class CatalogueGridHolder(private val view: View, private val adapter: FlexibleAdapter<*>) : | ||||
|         CatalogueHolder(view, adapter) { | ||||
| class SourceGridHolder(private val view: View, private val adapter: FlexibleAdapter<*>) : | ||||
|         SourceHolder(view, adapter) { | ||||
| 
 | ||||
|     /** | ||||
|      * Method called from [CatalogueAdapter.onBindViewHolder]. It updates the data for this | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import android.view.View | ||||
| import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| @@ -11,7 +11,7 @@ import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder | ||||
|  * @param view the inflated view for this holder. | ||||
|  * @param adapter the adapter handling this holder. | ||||
|  */ | ||||
| abstract class CatalogueHolder(view: View, adapter: FlexibleAdapter<*>) : | ||||
| abstract class SourceHolder(view: View, adapter: FlexibleAdapter<*>) : | ||||
|         BaseFlexibleViewHolder(view, adapter) { | ||||
| 
 | ||||
|     /** | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import android.view.Gravity | ||||
| import android.view.View | ||||
| @@ -13,23 +13,23 @@ import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| import eu.kanade.tachiyomi.data.preference.getOrDefault | ||||
| import eu.kanade.tachiyomi.widget.AutofitRecyclerView | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.view.card | ||||
| import kotlinx.android.synthetic.main.catalogue_grid_item.view.gradient | ||||
| import kotlinx.android.synthetic.main.source_grid_item.view.card | ||||
| import kotlinx.android.synthetic.main.source_grid_item.view.gradient | ||||
| 
 | ||||
| class CatalogueItem(val manga: Manga, private val catalogueAsList: Preference<Boolean>) : | ||||
|         AbstractFlexibleItem<CatalogueHolder>() { | ||||
| class SourceItem(val manga: Manga, private val catalogueAsList: Preference<Boolean>) : | ||||
|         AbstractFlexibleItem<SourceHolder>() { | ||||
| 
 | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return if (catalogueAsList.getOrDefault()) | ||||
|             R.layout.catalogue_list_item | ||||
|             R.layout.source_list_item | ||||
|         else | ||||
|             R.layout.catalogue_grid_item | ||||
|             R.layout.source_grid_item | ||||
|     } | ||||
| 
 | ||||
|     override fun createViewHolder( | ||||
|         view: View, | ||||
|         adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>> | ||||
|     ): CatalogueHolder { | ||||
|     ): SourceHolder { | ||||
|         val parent = adapter.recyclerView | ||||
|         return if (parent is AutofitRecyclerView) { | ||||
|             view.apply { | ||||
| @@ -38,15 +38,15 @@ class CatalogueItem(val manga: Manga, private val catalogueAsList: Preference<Bo | ||||
|                 gradient.layoutParams = FrameLayout.LayoutParams( | ||||
|                         MATCH_PARENT, parent.itemWidth / 3 * 4 / 2, Gravity.BOTTOM) | ||||
|             } | ||||
|             CatalogueGridHolder(view, adapter) | ||||
|             SourceGridHolder(view, adapter) | ||||
|         } else { | ||||
|             CatalogueListHolder(view, adapter) | ||||
|             SourceListHolder(view, adapter) | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     override fun bindViewHolder( | ||||
|         adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>, | ||||
|         holder: CatalogueHolder, | ||||
|         holder: SourceHolder, | ||||
|         position: Int, | ||||
|         payloads: List<Any?>? | ||||
|     ) { | ||||
| @@ -55,7 +55,7 @@ class CatalogueItem(val manga: Manga, private val catalogueAsList: Preference<Bo | ||||
| 
 | ||||
|     override fun equals(other: Any?): Boolean { | ||||
|         if (this === other) return true | ||||
|         if (other is CatalogueItem) { | ||||
|         if (other is SourceItem) { | ||||
|             return manga.id!! == other.manga.id!! | ||||
|         } | ||||
|         return false | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import android.view.View | ||||
| import com.bumptech.glide.load.engine.DiskCacheStrategy | ||||
| @@ -6,8 +6,8 @@ import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| import eu.kanade.tachiyomi.data.glide.GlideApp | ||||
| import eu.kanade.tachiyomi.util.system.getResourceColor | ||||
| import kotlinx.android.synthetic.main.catalogue_list_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.catalogue_list_item.title | ||||
| import kotlinx.android.synthetic.main.source_list_item.thumbnail | ||||
| import kotlinx.android.synthetic.main.source_list_item.title | ||||
| 
 | ||||
| /** | ||||
|  * Class used to hold the displayed data of a manga in the catalogue, like the cover or the title. | ||||
| @@ -17,8 +17,8 @@ import kotlinx.android.synthetic.main.catalogue_list_item.title | ||||
|  * @param adapter the adapter handling this holder. | ||||
|  * @constructor creates a new catalogue holder. | ||||
|  */ | ||||
| class CatalogueListHolder(private val view: View, adapter: FlexibleAdapter<*>) : | ||||
|         CatalogueHolder(view, adapter) { | ||||
| class SourceListHolder(private val view: View, adapter: FlexibleAdapter<*>) : | ||||
|         SourceHolder(view, adapter) { | ||||
| 
 | ||||
|     private val favoriteColor = view.context.getResourceColor(android.R.attr.textColorHint) | ||||
|     private val unfavoriteColor = view.context.getResourceColor(android.R.attr.textColorPrimary) | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.browse | ||||
| package eu.kanade.tachiyomi.ui.source.browse | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.source.CatalogueSource | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| @@ -7,7 +7,7 @@ import rx.Observable | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| import rx.schedulers.Schedulers | ||||
| 
 | ||||
| open class CataloguePager(val source: CatalogueSource, val query: String, val filters: FilterList) : Pager() { | ||||
| open class SourcePager(val source: CatalogueSource, val query: String, val filters: FilterList) : Pager() { | ||||
| 
 | ||||
|     override fun requestNext(): Observable<MangasPage> { | ||||
|         val page = currentPage | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import android.view.View | ||||
| import android.widget.CheckBox | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import android.view.View | ||||
| import android.widget.ImageView | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import android.annotation.SuppressLint | ||||
| import android.view.View | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import eu.davidea.flexibleadapter.items.ISectionable | ||||
| import eu.kanade.tachiyomi.source.model.Filter | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import android.view.View | ||||
| import android.widget.ArrayAdapter | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import android.annotation.SuppressLint | ||||
| import android.view.View | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import android.view.View | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import android.view.View | ||||
| import android.widget.CheckedTextView | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import android.view.View | ||||
| import android.widget.EditText | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.filter | ||||
| package eu.kanade.tachiyomi.ui.source.filter | ||||
| 
 | ||||
| import android.view.View | ||||
| import android.widget.CheckedTextView | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.global_search | ||||
| package eu.kanade.tachiyomi.ui.source.global_search | ||||
| 
 | ||||
| import android.os.Bundle | ||||
| import android.os.Parcelable | ||||
| @@ -9,10 +9,10 @@ import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| /** | ||||
|  * Adapter that holds the search cards. | ||||
|  * | ||||
|  * @param controller instance of [CatalogueSearchController]. | ||||
|  * @param controller instance of [GlobalSearchController]. | ||||
|  */ | ||||
| class CatalogueSearchAdapter(val controller: CatalogueSearchController) : | ||||
|         FlexibleAdapter<CatalogueSearchItem>(null, controller, true) { | ||||
| class GlobalSearchAdapter(val controller: GlobalSearchController) : | ||||
|         FlexibleAdapter<GlobalSearchItem>(null, controller, true) { | ||||
| 
 | ||||
|     /** | ||||
|      * Bundle where the view state of the holders is saved. | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.global_search | ||||
| package eu.kanade.tachiyomi.ui.source.global_search | ||||
| 
 | ||||
| import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| @@ -6,10 +6,10 @@ import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| /** | ||||
|  * Adapter that holds the manga items from search results. | ||||
|  * | ||||
|  * @param controller instance of [CatalogueSearchController]. | ||||
|  * @param controller instance of [GlobalSearchController]. | ||||
|  */ | ||||
| class CatalogueSearchCardAdapter(controller: CatalogueSearchController) : | ||||
|         FlexibleAdapter<CatalogueSearchCardItem>(null, controller, true) { | ||||
| class GlobalSearchCardAdapter(controller: GlobalSearchController) : | ||||
|         FlexibleAdapter<GlobalSearchCardItem>(null, controller, true) { | ||||
| 
 | ||||
|     /** | ||||
|      * Listen for browse item clicks. | ||||
| @@ -18,7 +18,7 @@ class CatalogueSearchCardAdapter(controller: CatalogueSearchController) : | ||||
| 
 | ||||
|     /** | ||||
|      * Listener which should be called when user clicks browse. | ||||
|      * Note: Should only be handled by [CatalogueSearchController] | ||||
|      * Note: Should only be handled by [GlobalSearchController] | ||||
|      */ | ||||
|     interface OnMangaClickListener { | ||||
|         fun onMangaClick(manga: Manga) | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.global_search | ||||
| package eu.kanade.tachiyomi.ui.source.global_search | ||||
| 
 | ||||
| import android.view.View | ||||
| import com.bumptech.glide.load.engine.DiskCacheStrategy | ||||
| @@ -6,11 +6,11 @@ import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| import eu.kanade.tachiyomi.data.glide.GlideApp | ||||
| import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder | ||||
| import eu.kanade.tachiyomi.widget.StateImageViewTarget | ||||
| import kotlinx.android.synthetic.main.catalogue_global_search_controller_card_item.itemImage | ||||
| import kotlinx.android.synthetic.main.catalogue_global_search_controller_card_item.progress | ||||
| import kotlinx.android.synthetic.main.catalogue_global_search_controller_card_item.tvTitle | ||||
| import kotlinx.android.synthetic.main.global_search_controller_card_item.itemImage | ||||
| import kotlinx.android.synthetic.main.global_search_controller_card_item.progress | ||||
| import kotlinx.android.synthetic.main.global_search_controller_card_item.tvTitle | ||||
| 
 | ||||
| class CatalogueSearchCardHolder(view: View, adapter: CatalogueSearchCardAdapter) : | ||||
| class GlobalSearchCardHolder(view: View, adapter: GlobalSearchCardAdapter) : | ||||
|     BaseFlexibleViewHolder(view, adapter) { | ||||
| 
 | ||||
|     init { | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.global_search | ||||
| package eu.kanade.tachiyomi.ui.source.global_search | ||||
| 
 | ||||
| import android.view.View | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| @@ -8,19 +8,19 @@ import eu.davidea.flexibleadapter.items.IFlexible | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| 
 | ||||
| class CatalogueSearchCardItem(val manga: Manga) : AbstractFlexibleItem<CatalogueSearchCardHolder>() { | ||||
| class GlobalSearchCardItem(val manga: Manga) : AbstractFlexibleItem<GlobalSearchCardHolder>() { | ||||
| 
 | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return R.layout.catalogue_global_search_controller_card_item | ||||
|         return R.layout.global_search_controller_card_item | ||||
|     } | ||||
| 
 | ||||
|     override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): CatalogueSearchCardHolder { | ||||
|         return CatalogueSearchCardHolder(view, adapter as CatalogueSearchCardAdapter) | ||||
|     override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): GlobalSearchCardHolder { | ||||
|         return GlobalSearchCardHolder(view, adapter as GlobalSearchCardAdapter) | ||||
|     } | ||||
| 
 | ||||
|     override fun bindViewHolder( | ||||
|         adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>, | ||||
|         holder: CatalogueSearchCardHolder, | ||||
|         holder: GlobalSearchCardHolder, | ||||
|         position: Int, | ||||
|         payloads: List<Any?>? | ||||
|     ) { | ||||
| @@ -28,7 +28,7 @@ class CatalogueSearchCardItem(val manga: Manga) : AbstractFlexibleItem<Catalogue | ||||
|     } | ||||
| 
 | ||||
|     override fun equals(other: Any?): Boolean { | ||||
|         if (other is CatalogueSearchCardItem) { | ||||
|         if (other is GlobalSearchCardItem) { | ||||
|             return manga.id == other.manga.id | ||||
|         } | ||||
|         return false | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.global_search | ||||
| package eu.kanade.tachiyomi.ui.source.global_search | ||||
| 
 | ||||
| import android.os.Bundle | ||||
| import android.view.LayoutInflater | ||||
| @@ -12,7 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager | ||||
| import com.jakewharton.rxbinding.support.v7.widget.queryTextChangeEvents | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| import eu.kanade.tachiyomi.databinding.CatalogueGlobalSearchControllerBinding | ||||
| import eu.kanade.tachiyomi.databinding.GlobalSearchControllerBinding | ||||
| import eu.kanade.tachiyomi.source.CatalogueSource | ||||
| import eu.kanade.tachiyomi.ui.base.controller.NucleusController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| @@ -20,21 +20,21 @@ import eu.kanade.tachiyomi.ui.manga.MangaController | ||||
| 
 | ||||
| /** | ||||
|  * This controller shows and manages the different search result in global search. | ||||
|  * This controller should only handle UI actions, IO actions should be done by [CatalogueSearchPresenter] | ||||
|  * [CatalogueSearchCardAdapter.OnMangaClickListener] called when manga is clicked in global search | ||||
|  * This controller should only handle UI actions, IO actions should be done by [GlobalSearchPresenter] | ||||
|  * [GlobalSearchCardAdapter.OnMangaClickListener] called when manga is clicked in global search | ||||
|  */ | ||||
| open class CatalogueSearchController( | ||||
| open class GlobalSearchController( | ||||
|     protected val initialQuery: String? = null, | ||||
|     protected val extensionFilter: String? = null | ||||
| ) : NucleusController<CatalogueSearchPresenter>(), | ||||
|         CatalogueSearchCardAdapter.OnMangaClickListener { | ||||
| ) : NucleusController<GlobalSearchPresenter>(), | ||||
|         GlobalSearchCardAdapter.OnMangaClickListener { | ||||
| 
 | ||||
|     /** | ||||
|      * Adapter containing search results grouped by lang. | ||||
|      */ | ||||
|     protected var adapter: CatalogueSearchAdapter? = null | ||||
|     protected var adapter: GlobalSearchAdapter? = null | ||||
| 
 | ||||
|     private lateinit var binding: CatalogueGlobalSearchControllerBinding | ||||
|     private lateinit var binding: GlobalSearchControllerBinding | ||||
| 
 | ||||
|     /** | ||||
|      * Called when controller is initialized. | ||||
| @@ -44,14 +44,14 @@ open class CatalogueSearchController( | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Initiate the view with [R.layout.catalogue_global_search_controller]. | ||||
|      * Initiate the view with [R.layout.global_search_controller]. | ||||
|      * | ||||
|      * @param inflater used to load the layout xml. | ||||
|      * @param container containing parent views. | ||||
|      * @return inflated view | ||||
|      */ | ||||
|     override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { | ||||
|         binding = CatalogueGlobalSearchControllerBinding.inflate(inflater) | ||||
|         binding = GlobalSearchControllerBinding.inflate(inflater) | ||||
|         return binding.root | ||||
|     } | ||||
| 
 | ||||
| @@ -65,12 +65,12 @@ open class CatalogueSearchController( | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Create the [CatalogueSearchPresenter] used in controller. | ||||
|      * Create the [GlobalSearchPresenter] used in controller. | ||||
|      * | ||||
|      * @return instance of [CatalogueSearchPresenter] | ||||
|      * @return instance of [GlobalSearchPresenter] | ||||
|      */ | ||||
|     override fun createPresenter(): CatalogueSearchPresenter { | ||||
|         return CatalogueSearchPresenter(initialQuery, extensionFilter) | ||||
|     override fun createPresenter(): GlobalSearchPresenter { | ||||
|         return GlobalSearchPresenter(initialQuery, extensionFilter) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -101,7 +101,7 @@ open class CatalogueSearchController( | ||||
|      */ | ||||
|     override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { | ||||
|         // Inflate menu. | ||||
|         inflater.inflate(R.menu.catalogue_new_list, menu) | ||||
|         inflater.inflate(R.menu.global_search, menu) | ||||
| 
 | ||||
|         // Initialize search menu | ||||
|         val searchItem = menu.findItem(R.id.action_search) | ||||
| @@ -136,7 +136,7 @@ open class CatalogueSearchController( | ||||
|     override fun onViewCreated(view: View) { | ||||
|         super.onViewCreated(view) | ||||
| 
 | ||||
|         adapter = CatalogueSearchAdapter(this) | ||||
|         adapter = GlobalSearchAdapter(this) | ||||
| 
 | ||||
|         // Create recycler and set adapter. | ||||
|         binding.recycler.layoutManager = LinearLayoutManager(view.context) | ||||
| @@ -164,13 +164,13 @@ open class CatalogueSearchController( | ||||
|      * @param source used to find holder containing source | ||||
|      * @return the holder of the manga or null if it's not bound. | ||||
|      */ | ||||
|     private fun getHolder(source: CatalogueSource): CatalogueSearchHolder? { | ||||
|     private fun getHolder(source: CatalogueSource): GlobalSearchHolder? { | ||||
|         val adapter = adapter ?: return null | ||||
| 
 | ||||
|         adapter.allBoundViewHolders.forEach { holder -> | ||||
|             val item = adapter.getItem(holder.adapterPosition) | ||||
|             if (item != null && source.id == item.source.id) { | ||||
|                 return holder as CatalogueSearchHolder | ||||
|                 return holder as GlobalSearchHolder | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -182,7 +182,7 @@ open class CatalogueSearchController( | ||||
|      * | ||||
|      * @param searchResult result of search. | ||||
|      */ | ||||
|     fun setItems(searchResult: List<CatalogueSearchItem>) { | ||||
|     fun setItems(searchResult: List<GlobalSearchItem>) { | ||||
|         adapter?.updateDataSet(searchResult) | ||||
|     } | ||||
| 
 | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.global_search | ||||
| package eu.kanade.tachiyomi.ui.source.global_search | ||||
| 
 | ||||
| import android.view.View | ||||
| import androidx.recyclerview.widget.LinearLayoutManager | ||||
| @@ -6,26 +6,26 @@ import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder | ||||
| import eu.kanade.tachiyomi.util.view.gone | ||||
| import eu.kanade.tachiyomi.util.view.visible | ||||
| import kotlinx.android.synthetic.main.catalogue_global_search_controller_card.progress | ||||
| import kotlinx.android.synthetic.main.catalogue_global_search_controller_card.recycler | ||||
| import kotlinx.android.synthetic.main.catalogue_global_search_controller_card.source_card | ||||
| import kotlinx.android.synthetic.main.catalogue_global_search_controller_card.title | ||||
| import kotlinx.android.synthetic.main.global_search_controller_card.progress | ||||
| import kotlinx.android.synthetic.main.global_search_controller_card.recycler | ||||
| import kotlinx.android.synthetic.main.global_search_controller_card.source_card | ||||
| import kotlinx.android.synthetic.main.global_search_controller_card.title | ||||
| 
 | ||||
| /** | ||||
|  * Holder that binds the [CatalogueSearchItem] containing catalogue cards. | ||||
|  * Holder that binds the [GlobalSearchItem] containing catalogue cards. | ||||
|  * | ||||
|  * @param view view of [CatalogueSearchItem] | ||||
|  * @param adapter instance of [CatalogueSearchAdapter] | ||||
|  * @param view view of [GlobalSearchItem] | ||||
|  * @param adapter instance of [GlobalSearchAdapter] | ||||
|  */ | ||||
| class CatalogueSearchHolder(view: View, val adapter: CatalogueSearchAdapter) : | ||||
| class GlobalSearchHolder(view: View, val adapter: GlobalSearchAdapter) : | ||||
|         BaseFlexibleViewHolder(view, adapter) { | ||||
| 
 | ||||
|     /** | ||||
|      * Adapter containing manga from search results. | ||||
|      */ | ||||
|     private val mangaAdapter = CatalogueSearchCardAdapter(adapter.controller) | ||||
|     private val mangaAdapter = GlobalSearchCardAdapter(adapter.controller) | ||||
| 
 | ||||
|     private var lastBoundResults: List<CatalogueSearchCardItem>? = null | ||||
|     private var lastBoundResults: List<GlobalSearchCardItem>? = null | ||||
| 
 | ||||
|     init { | ||||
|         // Set layout horizontal. | ||||
| @@ -38,7 +38,7 @@ class CatalogueSearchHolder(view: View, val adapter: CatalogueSearchAdapter) : | ||||
|      * | ||||
|      * @param item item of card. | ||||
|      */ | ||||
|     fun bind(item: CatalogueSearchItem) { | ||||
|     fun bind(item: GlobalSearchItem) { | ||||
|         val source = item.source | ||||
|         val results = item.results | ||||
| 
 | ||||
| @@ -83,11 +83,11 @@ class CatalogueSearchHolder(view: View, val adapter: CatalogueSearchAdapter) : | ||||
|      * @param manga the manga to find. | ||||
|      * @return the holder of the manga or null if it's not bound. | ||||
|      */ | ||||
|     private fun getHolder(manga: Manga): CatalogueSearchCardHolder? { | ||||
|     private fun getHolder(manga: Manga): GlobalSearchCardHolder? { | ||||
|         mangaAdapter.allBoundViewHolders.forEach { holder -> | ||||
|             val item = mangaAdapter.getItem(holder.adapterPosition) | ||||
|             if (item != null && item.manga.id!! == manga.id!!) { | ||||
|                 return holder as CatalogueSearchCardHolder | ||||
|                 return holder as GlobalSearchCardHolder | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.global_search | ||||
| package eu.kanade.tachiyomi.ui.source.global_search | ||||
| 
 | ||||
| import android.view.View | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| @@ -15,8 +15,8 @@ import eu.kanade.tachiyomi.source.CatalogueSource | ||||
|  * @param results the search results. | ||||
|  * @param highlighted whether this search item should be highlighted/marked in the catalogue search view. | ||||
|  */ | ||||
| class CatalogueSearchItem(val source: CatalogueSource, val results: List<CatalogueSearchCardItem>?, val highlighted: Boolean = false) : | ||||
|     AbstractFlexibleItem<CatalogueSearchHolder>() { | ||||
| class GlobalSearchItem(val source: CatalogueSource, val results: List<GlobalSearchCardItem>?, val highlighted: Boolean = false) : | ||||
|     AbstractFlexibleItem<GlobalSearchHolder>() { | ||||
| 
 | ||||
|     /** | ||||
|      * Set view. | ||||
| @@ -24,16 +24,16 @@ class CatalogueSearchItem(val source: CatalogueSource, val results: List<Catalog | ||||
|      * @return id of view | ||||
|      */ | ||||
|     override fun getLayoutRes(): Int { | ||||
|         return R.layout.catalogue_global_search_controller_card | ||||
|         return R.layout.global_search_controller_card | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Create view holder (see [CatalogueSearchAdapter]. | ||||
|      * Create view holder (see [GlobalSearchAdapter]. | ||||
|      * | ||||
|      * @return holder of view. | ||||
|      */ | ||||
|     override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): CatalogueSearchHolder { | ||||
|         return CatalogueSearchHolder(view, adapter as CatalogueSearchAdapter) | ||||
|     override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): GlobalSearchHolder { | ||||
|         return GlobalSearchHolder(view, adapter as GlobalSearchAdapter) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -41,7 +41,7 @@ class CatalogueSearchItem(val source: CatalogueSource, val results: List<Catalog | ||||
|      */ | ||||
|     override fun bindViewHolder( | ||||
|         adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>, | ||||
|         holder: CatalogueSearchHolder, | ||||
|         holder: GlobalSearchHolder, | ||||
|         position: Int, | ||||
|         payloads: List<Any?>? | ||||
|     ) { | ||||
| @@ -54,7 +54,7 @@ class CatalogueSearchItem(val source: CatalogueSource, val results: List<Catalog | ||||
|      * @return items are equal? | ||||
|      */ | ||||
|     override fun equals(other: Any?): Boolean { | ||||
|         if (other is CatalogueSearchItem) { | ||||
|         if (other is GlobalSearchItem) { | ||||
|             return source.id == other.source.id | ||||
|         } | ||||
|         return false | ||||
| @@ -1,4 +1,4 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.global_search | ||||
| package eu.kanade.tachiyomi.ui.source.global_search | ||||
| 
 | ||||
| import android.os.Bundle | ||||
| import eu.kanade.tachiyomi.data.database.DatabaseHelper | ||||
| @@ -13,7 +13,7 @@ import eu.kanade.tachiyomi.source.model.FilterList | ||||
| import eu.kanade.tachiyomi.source.model.MangasPage | ||||
| import eu.kanade.tachiyomi.source.model.SManga | ||||
| import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter | ||||
| import eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCataloguePresenter | ||||
| import eu.kanade.tachiyomi.ui.source.browse.BrowseSourcePresenter | ||||
| import rx.Observable | ||||
| import rx.Subscription | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| @@ -25,20 +25,20 @@ import uy.kohesive.injekt.api.get | ||||
| import uy.kohesive.injekt.injectLazy | ||||
| 
 | ||||
| /** | ||||
|  * Presenter of [CatalogueSearchController] | ||||
|  * Presenter of [GlobalSearchController] | ||||
|  * Function calls should be done from here. UI calls should be done from the controller. | ||||
|  * | ||||
|  * @param sourceManager manages the different sources. | ||||
|  * @param db manages the database calls. | ||||
|  * @param preferences manages the preference calls. | ||||
|  */ | ||||
| open class CatalogueSearchPresenter( | ||||
| open class GlobalSearchPresenter( | ||||
|     val initialQuery: String? = "", | ||||
|     val initialExtensionFilter: String? = null, | ||||
|     val sourceManager: SourceManager = Injekt.get(), | ||||
|     val db: DatabaseHelper = Injekt.get(), | ||||
|     val preferences: PreferencesHelper = Injekt.get() | ||||
| ) : BasePresenter<CatalogueSearchController>() { | ||||
| ) : BasePresenter<GlobalSearchController>() { | ||||
| 
 | ||||
|     /** | ||||
|      * Enabled sources. | ||||
| @@ -73,11 +73,11 @@ open class CatalogueSearchPresenter( | ||||
|     override fun onCreate(savedState: Bundle?) { | ||||
|         super.onCreate(savedState) | ||||
| 
 | ||||
|         extensionFilter = savedState?.getString(CatalogueSearchPresenter::extensionFilter.name) | ||||
|         extensionFilter = savedState?.getString(GlobalSearchPresenter::extensionFilter.name) | ||||
|                 ?: initialExtensionFilter | ||||
| 
 | ||||
|         // Perform a search with previous or initial state | ||||
|         search(savedState?.getString(BrowseCataloguePresenter::query.name) | ||||
|         search(savedState?.getString(BrowseSourcePresenter::query.name) | ||||
|                 ?: initialQuery.orEmpty()) | ||||
|     } | ||||
| 
 | ||||
| @@ -88,8 +88,8 @@ open class CatalogueSearchPresenter( | ||||
|     } | ||||
| 
 | ||||
|     override fun onSave(state: Bundle) { | ||||
|         state.putString(BrowseCataloguePresenter::query.name, query) | ||||
|         state.putString(CatalogueSearchPresenter::extensionFilter.name, extensionFilter) | ||||
|         state.putString(BrowseSourcePresenter::query.name, query) | ||||
|         state.putString(GlobalSearchPresenter::extensionFilter.name, extensionFilter) | ||||
|         super.onSave(state) | ||||
|     } | ||||
| 
 | ||||
| @@ -133,8 +133,8 @@ open class CatalogueSearchPresenter( | ||||
|     /** | ||||
|      * Creates a catalogue search item | ||||
|      */ | ||||
|     protected open fun createCatalogueSearchItem(source: CatalogueSource, results: List<CatalogueSearchCardItem>?): CatalogueSearchItem { | ||||
|         return CatalogueSearchItem(source, results) | ||||
|     protected open fun createCatalogueSearchItem(source: CatalogueSource, results: List<GlobalSearchCardItem>?): GlobalSearchItem { | ||||
|         return GlobalSearchItem(source, results) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -165,7 +165,7 @@ open class CatalogueSearchPresenter( | ||||
|                             .map { it.mangas.take(10) } // Get at most 10 manga from search result. | ||||
|                             .map { it.map { networkToLocalManga(it, source.id) } } // Convert to local manga. | ||||
|                             .doOnNext { fetchImage(it, source) } // Load manga covers. | ||||
|                             .map { createCatalogueSearchItem(source, it.map { CatalogueSearchCardItem(it) }) } | ||||
|                             .map { createCatalogueSearchItem(source, it.map { GlobalSearchCardItem(it) }) } | ||||
|                 }, 5) | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 // Update matching source with the obtained results | ||||
| @@ -1,22 +1,22 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.latest | ||||
| package eu.kanade.tachiyomi.ui.source.latest | ||||
| 
 | ||||
| import android.os.Bundle | ||||
| import android.view.Menu | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.source.CatalogueSource | ||||
| import eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCatalogueController | ||||
| import eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCataloguePresenter | ||||
| import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController | ||||
| import eu.kanade.tachiyomi.ui.source.browse.BrowseSourcePresenter | ||||
| 
 | ||||
| /** | ||||
|  * Controller that shows the latest manga from the catalogue. Inherit [BrowseCatalogueController]. | ||||
|  * Controller that shows the latest manga from the catalogue. Inherit [BrowseSourceController]. | ||||
|  */ | ||||
| class LatestUpdatesController(bundle: Bundle) : BrowseCatalogueController(bundle) { | ||||
| class LatestUpdatesController(bundle: Bundle) : BrowseSourceController(bundle) { | ||||
| 
 | ||||
|     constructor(source: CatalogueSource) : this(Bundle().apply { | ||||
|         putLong(SOURCE_ID_KEY, source.id) | ||||
|     }) | ||||
| 
 | ||||
|     override fun createPresenter(): BrowseCataloguePresenter { | ||||
|     override fun createPresenter(): BrowseSourcePresenter { | ||||
|         return LatestUpdatesPresenter(args.getLong(SOURCE_ID_KEY)) | ||||
|     } | ||||
| 
 | ||||
| @@ -1,8 +1,8 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.latest | ||||
| package eu.kanade.tachiyomi.ui.source.latest | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.source.CatalogueSource | ||||
| import eu.kanade.tachiyomi.source.model.MangasPage | ||||
| import eu.kanade.tachiyomi.ui.catalogue.browse.Pager | ||||
| import eu.kanade.tachiyomi.ui.source.browse.Pager | ||||
| import rx.Observable | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| import rx.schedulers.Schedulers | ||||
| @@ -1,13 +1,13 @@ | ||||
| package eu.kanade.tachiyomi.ui.catalogue.latest | ||||
| package eu.kanade.tachiyomi.ui.source.latest | ||||
| 
 | ||||
| import eu.kanade.tachiyomi.source.model.FilterList | ||||
| import eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCataloguePresenter | ||||
| import eu.kanade.tachiyomi.ui.catalogue.browse.Pager | ||||
| import eu.kanade.tachiyomi.ui.source.browse.BrowseSourcePresenter | ||||
| import eu.kanade.tachiyomi.ui.source.browse.Pager | ||||
| 
 | ||||
| /** | ||||
|  * Presenter of [LatestUpdatesController]. Inherit BrowseCataloguePresenter. | ||||
|  */ | ||||
| class LatestUpdatesPresenter(sourceId: Long) : BrowseCataloguePresenter(sourceId) { | ||||
| class LatestUpdatesPresenter(sourceId: Long) : BrowseSourcePresenter(sourceId) { | ||||
| 
 | ||||
|     override fun createPager(query: String, filters: FilterList): Pager { | ||||
|         return LatestUpdatesPager(source) | ||||
| @@ -7,7 +7,7 @@ import android.os.Build | ||||
| import android.view.ContextThemeWrapper | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.preference.PreferencesHelper | ||||
| import eu.kanade.tachiyomi.ui.catalogue.CataloguePresenter | ||||
| import eu.kanade.tachiyomi.ui.source.SourcePresenter | ||||
| import java.util.Locale | ||||
| import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| @@ -51,7 +51,7 @@ object LocaleHelper { | ||||
|         return when (lang) { | ||||
|             null -> "" | ||||
|             "" -> context.getString(R.string.other_source) | ||||
|             CataloguePresenter.PINNED_KEY -> context.getString(R.string.pinned_sources) | ||||
|             SourcePresenter.PINNED_KEY -> context.getString(R.string.pinned_sources) | ||||
|             "all" -> context.getString(R.string.all_lang) | ||||
|             else -> { | ||||
|                 val locale = getLocale(lang) | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|     android:id="@id/swipe_refresh" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     tools:context="eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCatalogueController"> | ||||
|     tools:context="eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController"> | ||||
|  | ||||
|     <androidx.constraintlayout.widget.ConstraintLayout | ||||
|         android:layout_width="match_parent" | ||||
|   | ||||
| @@ -11,6 +11,6 @@ | ||||
|         android:clipToPadding="false" | ||||
|         android:paddingTop="4dp" | ||||
|         android:paddingBottom="4dp" | ||||
|         tools:listitem="@layout/catalogue_global_search_controller_card" /> | ||||
|         tools:listitem="@layout/global_search_controller_card" /> | ||||
| 
 | ||||
| </FrameLayout> | ||||
| @@ -43,7 +43,7 @@ | ||||
|             android:orientation="horizontal" | ||||
|             android:paddingStart="4dp" | ||||
|             android:paddingEnd="4dp" | ||||
|             tools:listitem="@layout/catalogue_global_search_controller_card_item" /> | ||||
|             tools:listitem="@layout/global_search_controller_card_item" /> | ||||
| 
 | ||||
|     </androidx.cardview.widget.CardView> | ||||
| 
 | ||||
| @@ -2,9 +2,9 @@ | ||||
| <eu.kanade.tachiyomi.widget.AutofitRecyclerView xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:id="@+id/library_grid" | ||||
|     style="@style/Theme.Widget.GridView.Catalogue" | ||||
|     style="@style/Theme.Widget.GridView.Source" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     android:clipToPadding="false" | ||||
|     android:columnWidth="140dp" | ||||
|     tools:listitem="@layout/catalogue_grid_item" /> | ||||
|     tools:listitem="@layout/source_grid_item" /> | ||||
|   | ||||
| @@ -4,4 +4,4 @@ | ||||
|     android:id="@+id/library_list" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     tools:listitem="@layout/catalogue_list_item" /> | ||||
|     tools:listitem="@layout/source_list_item" /> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|     android:id="@id/swipe_refresh" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     tools:context="eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCatalogueController"> | ||||
|     tools:context="eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController"> | ||||
|  | ||||
|     <androidx.constraintlayout.widget.ConstraintLayout | ||||
|         android:layout_width="match_parent" | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="match_parent" | ||||
|             android:orientation="vertical" | ||||
|             tools:context="eu.kanade.tachiyomi.ui.catalogue.browse.BrowseCatalogueController"> | ||||
|             tools:context="eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController"> | ||||
| 
 | ||||
|             <ProgressBar | ||||
|                 android:id="@+id/progress" | ||||
| @@ -9,7 +9,7 @@ | ||||
|         android:id="@+id/recycler" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         tools:listitem="@layout/catalogue_main_controller_card" /> | ||||
|         tools:listitem="@layout/source_main_controller_card" /> | ||||
| 
 | ||||
|     <eu.davidea.fastscroller.FastScroller | ||||
|         android:id="@+id/fast_scroller" | ||||
| @@ -1,10 +1,10 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <eu.kanade.tachiyomi.widget.AutofitRecyclerView xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:id="@+id/catalogue_grid" | ||||
|     style="@style/Theme.Widget.GridView.Catalogue" | ||||
|     android:id="@+id/source_grid" | ||||
|     style="@style/Theme.Widget.GridView.Source" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     android:clipToPadding="false" | ||||
|     android:columnWidth="140dp" | ||||
|     tools:listitem="@layout/catalogue_grid_item" /> | ||||
|     tools:listitem="@layout/source_grid_item" /> | ||||
| @@ -1,7 +1,5 @@ | ||||
| <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     tools:context=".CatalogueListActivity"> | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto"> | ||||
| 
 | ||||
|     <item | ||||
|         android:id="@+id/action_search" | ||||
| @@ -1,7 +1,5 @@ | ||||
| <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     tools:context=".CatalogueListActivity"> | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto"> | ||||
| 
 | ||||
|     <item | ||||
|         android:id="@+id/action_search" | ||||
| @@ -1,7 +1,5 @@ | ||||
| <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     tools:context=".CatalogueListActivity"> | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto"> | ||||
| 
 | ||||
|     <item | ||||
|         android:id="@+id/action_search" | ||||
| @@ -176,7 +176,7 @@ | ||||
|         <item name="android:scrollbarStyle">outsideOverlay</item> | ||||
|     </style> | ||||
|  | ||||
|     <style name="Theme.Widget.GridView.Catalogue"> | ||||
|     <style name="Theme.Widget.GridView.Source"> | ||||
|         <item name="android:padding">5dp</item> | ||||
|         <item name="android:gravity">top|left</item> | ||||
|         <item name="android:smoothScrollbar">true</item> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user