diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt index e5b179c39a..46f7ebc786 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt @@ -10,12 +10,11 @@ import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.Snackbar import eu.davidea.flexibleadapter.FlexibleAdapter import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.ui.base.controller.BaseController import eu.kanade.tachiyomi.ui.category.CategoryPresenter.Companion.CREATE_CATEGORY_ORDER import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.util.system.toast -import eu.kanade.tachiyomi.util.view.applyWindowInsetsForController +import eu.kanade.tachiyomi.util.view.scrollViewWith import eu.kanade.tachiyomi.util.view.snack import kotlinx.android.synthetic.main.categories_controller.* @@ -24,9 +23,7 @@ import kotlinx.android.synthetic.main.categories_controller.* */ class CategoryController(bundle: Bundle? = null) : BaseController(bundle), FlexibleAdapter.OnItemClickListener, - CategoryAdapter.CategoryItemListener, - CategoryCreateDialog.Listener, - CategoryRenameDialog.Listener { + CategoryAdapter.CategoryItemListener { /** * Adapter containing category items. @@ -67,7 +64,7 @@ class CategoryController(bundle: Bundle? = null) : BaseController(bundle), */ override fun onViewCreated(view: View) { super.onViewCreated(view) - view.applyWindowInsetsForController() + scrollViewWith(recycler, padBottom = true) adapter = CategoryAdapter(this@CategoryController) recycler.layoutManager = LinearLayoutManager(view.context) @@ -175,34 +172,6 @@ class CategoryController(bundle: Bundle? = null) : BaseController(bundle), snack = null } - /** - * Show a dialog to let the user change the category name. - * - * @param category The category to be edited. - */ - private fun editCategory(category: Category) { - CategoryRenameDialog(this, category).showDialog(router) - } - - /** - * Renames the given category with the given name. - * - * @param category The category to rename. - * @param name The new name of the category. - */ - override fun renameCategory(category: Category, name: String) { - presenter.renameCategory(category, name) - } - - /** - * Creates a new category with the given name. - * - * @param name The name of the new category. - */ - override fun createCategory(name: String) { - presenter.createCategory(name) - } - /** * Called from the presenter when a category with the given name already exists. */ diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryCreateDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryCreateDialog.kt deleted file mode 100644 index 1c4681f87a..0000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryCreateDialog.kt +++ /dev/null @@ -1,40 +0,0 @@ -package eu.kanade.tachiyomi.ui.category - -import android.app.Dialog -import android.os.Bundle -import com.afollestad.materialdialogs.MaterialDialog -import com.afollestad.materialdialogs.input.input -import com.bluelinelabs.conductor.Controller -import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.ui.base.controller.DialogController - -/** - * Dialog to create a new category for the library. - */ -class CategoryCreateDialog(bundle: Bundle? = null) : DialogController(bundle) - where T : Controller, T : CategoryCreateDialog.Listener { - - constructor(target: T) : this() { - targetController = target - } - - /** - * Called when creating the dialog for this controller. - * - * @param savedViewState The saved state of this dialog. - * @return a new dialog instance. - */ - override fun onCreateDialog(savedViewState: Bundle?): Dialog { - return MaterialDialog(activity!!) - .title(R.string.add_category) - .positiveButton(android.R.string.ok) - .negativeButton(android.R.string.cancel) - .input(hintRes = R.string.name) { _, input -> - (targetController as? Listener)?.createCategory(input.toString()) - } - } - - interface Listener { - fun createCategory(name: String) - } -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryPresenter.kt index 08ff320cbf..a26f321b82 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryPresenter.kt @@ -71,7 +71,6 @@ class CategoryPresenter( cat.order = categories.map { it.order + 1 }.max() ?: 0 // Insert into database. - cat.mangaSort = 'a' db.insertCategory(cat).executeAsBlocking() val cats = db.getCategories().executeAsBlocking() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryRenameDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryRenameDialog.kt deleted file mode 100644 index 8d0940e3bf..0000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryRenameDialog.kt +++ /dev/null @@ -1,84 +0,0 @@ -package eu.kanade.tachiyomi.ui.category - -import android.app.Dialog -import android.os.Bundle -import com.afollestad.materialdialogs.MaterialDialog -import com.afollestad.materialdialogs.input.input -import com.bluelinelabs.conductor.Controller -import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.database.models.Category -import eu.kanade.tachiyomi.ui.base.controller.DialogController - -/** - * Dialog to rename an existing category of the library. - */ -class CategoryRenameDialog(bundle: Bundle? = null) : DialogController(bundle) - where T : Controller, T : CategoryRenameDialog.Listener { - - private var category: Category? = null - - /** - * Name of the new category. Value updated with each input from the user. - */ - private var currentName = "" - - constructor(target: T, category: Category) : this() { - targetController = target - this.category = category - currentName = category.name - } - - /** - * Called when creating the dialog for this controller. - * - * @param savedViewState The saved state of this dialog. - * @return a new dialog instance. - */ - override fun onCreateDialog(savedViewState: Bundle?): Dialog { - return MaterialDialog(activity!!) - .title(R.string.rename_category) - .negativeButton(android.R.string.cancel) - .input(hintRes = R.string.name, prefill = currentName) { _, input -> - currentName = input.toString() - } - .positiveButton(android.R.string.ok) { onPositive() } - } - - /** - * Called to save this Controller's state in the event that its host Activity is destroyed. - * - * @param outState The Bundle into which data should be saved - */ - override fun onSaveInstanceState(outState: Bundle) { - outState.putSerializable(CATEGORY_KEY, category) - super.onSaveInstanceState(outState) - } - - /** - * Restores data that was saved in the [onSaveInstanceState] method. - * - * @param savedInstanceState The bundle that has data to be restored - */ - override fun onRestoreInstanceState(savedInstanceState: Bundle) { - super.onRestoreInstanceState(savedInstanceState) - category = savedInstanceState.getSerializable(CATEGORY_KEY) as? Category - } - - /** - * Called when the positive button of the dialog is clicked. - */ - private fun onPositive() { - val target = targetController as? Listener ?: return - val category = category ?: return - - target.renameCategory(category, currentName) - } - - interface Listener { - fun renameCategory(category: Category, name: String) - } - - private companion object { - const val CATEGORY_KEY = "CategoryRenameDialog.category" - } -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/ManageCategoryDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/ManageCategoryDialog.kt new file mode 100644 index 0000000000..36171fa5f5 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/ManageCategoryDialog.kt @@ -0,0 +1,134 @@ +package eu.kanade.tachiyomi.ui.category + +import android.app.Dialog +import android.os.Bundle +import android.view.View +import android.widget.CompoundButton +import com.afollestad.materialdialogs.MaterialDialog +import com.afollestad.materialdialogs.customview.customView +import com.f2prateek.rx.preferences.Preference +import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.database.DatabaseHelper +import eu.kanade.tachiyomi.data.database.models.Category +import eu.kanade.tachiyomi.data.library.LibraryUpdateJob +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.withFadeTransaction +import eu.kanade.tachiyomi.ui.library.LibraryController +import eu.kanade.tachiyomi.util.system.toast +import eu.kanade.tachiyomi.util.view.gone +import eu.kanade.tachiyomi.util.view.visible +import eu.kanade.tachiyomi.util.view.visibleIf +import kotlinx.android.synthetic.main.edit_manga_dialog.view.title +import kotlinx.android.synthetic.main.manga_category_dialog.view.* +import uy.kohesive.injekt.injectLazy + +class ManageCategoryDialog(bundle: Bundle? = null) : + DialogController(bundle) { + + constructor(libraryController: LibraryController, category: Category) : this() { + this.libraryController = libraryController + this.category = category + } + + private lateinit var libraryController: LibraryController + private lateinit var category: Category + + private var dialogView: View? = null + + private val preferences by injectLazy() + private val db by injectLazy() + + override fun onCreateDialog(savedViewState: Bundle?): Dialog { + val dialog = MaterialDialog(activity!!).apply { + title(R.string.manage_category) + customView(viewRes = R.layout.manga_category_dialog) + negativeButton(android.R.string.cancel) + positiveButton(R.string.save) { onPositiveButtonClick() } + } + dialogView = dialog.view + onViewCreated(dialog.view) + return dialog + } + + private fun onPositiveButtonClick() { + val view = dialogView ?: return + val text = view.title.text.toString() + val categoryExists = categoryExists(text) + if (text.isNotBlank() && !categoryExists && !text.equals(category.name, true)) { + category.name = text + db.insertCategory(category).executeAsBlocking() + libraryController.presenter.getLibrary() + } else if (categoryExists) { + activity?.toast(R.string.category_with_name_exists) + } + if (!updatePref(preferences.downloadNewCategories(), view.download_new)) { + preferences.downloadNew().set(false) + } else { + preferences.downloadNew().set(true) + } + if (preferences.libraryUpdateInterval().getOrDefault() > 0 && + !updatePref(preferences.libraryUpdateCategories(), view.include_global)) { + preferences.libraryUpdateInterval().set(0) + LibraryUpdateJob.cancelTask() + } + } + + /** + * Returns true if a category with the given name already exists. + */ + private fun categoryExists(name: String): Boolean { + return db.getCategories().executeAsBlocking().any { + it.name.equals(name, true) && category.id != it.id + } + } + + fun onViewCreated(view: View) { + view.edit_categories.setOnClickListener { + router.popCurrentController() + router.pushController(CategoryController().withFadeTransaction()) + } + view.title.hint = category.name + view.title.append(category.name) + val downloadNew = preferences.downloadNew().getOrDefault() + setCheckbox(view.download_new, + preferences.downloadNewCategories(), + true) + if (downloadNew && preferences.downloadNewCategories().getOrDefault().isEmpty()) + view.download_new.gone() + else if (!downloadNew) + view.download_new.visible() + view.download_new.isChecked = + preferences.downloadNew().getOrDefault() && view.download_new.isChecked + setCheckbox( + view.include_global, + preferences.libraryUpdateCategories(), + preferences.libraryUpdateInterval().getOrDefault() > 0 + ) + } + + /** Update a pref based on checkbox, and return if the pref is not empty */ + private fun updatePref(categories: Preference>, box: CompoundButton): Boolean { + val categoryId = category.id ?: return true + val updateCategories = categories.getOrDefault().toMutableSet() + if (box.isChecked) { + updateCategories.add(categoryId.toString()) + } else { + updateCategories.remove(categoryId.toString()) + } + categories.set(updateCategories) + return updateCategories.isNotEmpty() + } + + private fun setCheckbox( + box: CompoundButton, + categories: Preference>, + shouldShow: Boolean + ) { + val updateCategories = categories.getOrDefault() + box.visibleIf(updateCategories.isNotEmpty() && shouldShow) + if (updateCategories.isNotEmpty() && shouldShow) box.isChecked = + updateCategories.any { category.id == it.toIntOrNull() } + } +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHolder.kt index e3c9c13d92..580c6da4cc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHolder.kt @@ -38,7 +38,7 @@ class DownloadHolder(private val view: View, val adapter: DownloadAdapter) : chapter_title.text = download.chapter.name // Update the manga title - manga_full_title.text = download.manga.title + title.text = download.manga.title // Update the progress bar and the number of downloaded pages val pages = download.pages diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt index 20195156d1..f9519a8f9e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt @@ -273,5 +273,6 @@ class LibraryCategoryAdapter(val libraryListener: LibraryListener) : fun selectAll(position: Int) fun allSelected(position: Int): Boolean fun toggleCategoryVisibility(position: Int) + fun manageCategory(position: Int) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index a583e2edbc..f3c1a8e740 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -46,6 +46,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.getOrDefault import eu.kanade.tachiyomi.ui.base.controller.BaseController import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction +import eu.kanade.tachiyomi.ui.category.ManageCategoryDialog import eu.kanade.tachiyomi.ui.library.filter.FilterBottomSheet import eu.kanade.tachiyomi.ui.main.BottomSheetController import eu.kanade.tachiyomi.ui.main.MainActivity @@ -156,7 +157,7 @@ class LibraryController( if (order != null && order != activeCategory && lastItem == null) { preferences.lastUsedCategory().set(order) activeCategory = order - if (presenter.categories.size > 1 && dy != 0 && abs(dy) > 75) { + if (presenter.categories.size > 1 && dy != 0) { val headerItem = getHeader() ?: return val view = fast_scroller.getChildAt(0) ?: return val index = adapter.headerItems.indexOf(headerItem) @@ -809,6 +810,11 @@ class LibraryController( presenter.toggleCategoryVisibility(catId) } + override fun manageCategory(position: Int) { + val category = (adapter.getItem(position) as? LibraryHeaderItem)?.category ?: return + ManageCategoryDialog(this, category).showDialog(router) + } + override fun sortCategory(catId: Int, sortBy: Int) { presenter.sortCategory(catId, sortBy) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderItem.kt index 8c0a54248d..efaf783cce 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderItem.kt @@ -95,6 +95,7 @@ class LibraryHeaderItem( marginEnd = (if (padEnd && adapter.recyclerView.paddingEnd == 0) 12 else 2).dpToPx } updateButton.setOnClickListener { addCategoryToUpdate() } + sectionText.setOnClickListener { adapter.libraryListener.manageCategory(adapterPosition) } sectionText.setOnLongClickListener { adapter.libraryListener.toggleCategoryVisibility(adapterPosition) true diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt index 922732f5bb..22fba0e922 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt @@ -71,8 +71,8 @@ class EditMangaDialog : DialogController { if (isLocal) { if (manga.title != manga.url) - view.manga_full_title.append(manga.title) - view.manga_full_title.hint = "${resources?.getString(R.string.title)}: ${manga.url}" + view.title.append(manga.title) + view.title.hint = "${resources?.getString(R.string.title)}: ${manga.url}" view.manga_author.append(manga.author ?: "") view.manga_artist.append(manga.artist ?: "") view.manga_description.append(manga.description ?: "") @@ -103,7 +103,7 @@ class EditMangaDialog : DialogController { } private fun onPositiveButtonClick() { - infoController.presenter.updateManga(dialogView?.manga_full_title?.text.toString(), + infoController.presenter.updateManga(dialogView?.title?.text.toString(), dialogView?.manga_author?.text.toString(), dialogView?.manga_artist?.text.toString(), customCoverUri, dialogView?.manga_description?.text.toString(), dialogView?.manga_genres_tags?.tags) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaHeaderHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaHeaderHolder.kt index e91e9c20eb..1d00a0ab3e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaHeaderHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaHeaderHolder.kt @@ -69,8 +69,8 @@ class MangaHeaderHolder( adapter.delegate.favoriteManga(true) true } - manga_full_title.setOnLongClickListener { - adapter.delegate.copyToClipboard(manga_full_title.text.toString(), R.string.title) + title.setOnLongClickListener { + adapter.delegate.copyToClipboard(title.text.toString(), R.string.title) true } manga_author.setOnLongClickListener { @@ -114,7 +114,7 @@ class MangaHeaderHolder( @SuppressLint("SetTextI18n") fun bind(item: MangaHeaderItem, manga: Manga) { val presenter = adapter.delegate.mangaPresenter() - manga_full_title.text = manga.title + title.text = manga.title if (manga.genre.isNullOrBlank().not()) manga_genres_tags.setTags( manga.genre?.split(", ")?.map(String::trim) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationController.kt index d2a39e4bfd..ae0728e764 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/MigrationController.kt @@ -14,8 +14,7 @@ import eu.kanade.tachiyomi.ui.base.controller.NucleusController import eu.kanade.tachiyomi.ui.migration.manga.design.PreMigrationController import eu.kanade.tachiyomi.util.system.await import eu.kanade.tachiyomi.util.system.launchUI -import eu.kanade.tachiyomi.util.view.RecyclerWindowInsetsListener -import eu.kanade.tachiyomi.util.view.applyWindowInsetsForController +import eu.kanade.tachiyomi.util.view.scrollViewWith import kotlinx.android.synthetic.main.migration_controller.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -54,13 +53,12 @@ class MigrationController : NucleusController(), override fun onViewCreated(view: View) { super.onViewCreated(view) - view.applyWindowInsetsForController() + scrollViewWith(migration_recycler, padBottom = true) adapter = FlexibleAdapter(null, this) migration_recycler.layoutManager = androidx.recyclerview.widget.LinearLayoutManager(view.context) migration_recycler.adapter = adapter - migration_recycler.setOnApplyWindowInsetsListener(RecyclerWindowInsetsListener) } override fun onDestroyView(view: View) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent_updates/RecentChapterHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent_updates/RecentChapterHolder.kt index e572f72f90..b3c6db7e9d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent_updates/RecentChapterHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent_updates/RecentChapterHolder.kt @@ -56,7 +56,7 @@ class RecentChapterHolder(private val view: View, private val adapter: RecentCha chapter_title.text = item.chapter.name // Set manga title - manga_full_title.text = item.manga.title + title.text = item.manga.title if (front_view.translationX == 0f) { read.setImageDrawable( @@ -80,10 +80,10 @@ class RecentChapterHolder(private val view: View, private val adapter: RecentCha // Check if chapter is read and set correct color if (item.chapter.read) { chapter_title.setTextColor(readColor) - manga_full_title.setTextColor(readColor) + title.setTextColor(readColor) } else { chapter_title.setTextColor(unreadColor) - manga_full_title.setTextColor(unreadColor) + title.setTextColor(unreadColor) } // Set chapter status diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recently_read/RecentlyReadHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recently_read/RecentlyReadHolder.kt index ae8e726143..78cea18195 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recently_read/RecentlyReadHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recently_read/RecentlyReadHolder.kt @@ -48,7 +48,7 @@ class RecentlyReadHolder( val (manga, chapter, history) = item // Set manga title - manga_full_title.text = manga.title + title.text = manga.title // Set source + chapter title val formattedNumber = adapter.decimalFormat.format(chapter.chapter_number.toDouble()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt index 5f811fd136..9a7a840e8d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt @@ -63,16 +63,6 @@ class SettingsLibraryController : SettingsController() { preferenceCategory { titleRes = R.string.updates - intListPreference(activity) { - key = Keys.updateOnRefresh - titleRes = R.string.categories_on_manual - - entriesRes = arrayOf( - R.string.first_category, R.string.categories_in_global_update - ) - entryRange = 0..1 - defaultValue = -1 - } intListPreference(activity) { key = Keys.libraryUpdateInterval titleRes = R.string.library_update_frequency @@ -136,13 +126,6 @@ class SettingsLibraryController : SettingsController() { summaryRes = R.string.select_order_to_update } - switchPreference { - key = Keys.refreshCoversToo - titleRes = R.string.auto_refresh_covers - summaryRes = R.string.auto_refresh_covers_summary - defaultValue = true - } - multiSelectListPreferenceMat(activity) { key = Keys.libraryUpdateCategories titleRes = R.string.categories_to_include_in_global_update @@ -160,6 +143,23 @@ class SettingsLibraryController : SettingsController() { else selectedCategories.joinToString { it.name } } } + intListPreference(activity) { + key = Keys.updateOnRefresh + titleRes = R.string.categories_on_manual + + entriesRes = arrayOf( + R.string.first_category, R.string.categories_in_global_update + ) + entryRange = 0..1 + defaultValue = -1 + } + + switchPreference { + key = Keys.refreshCoversToo + titleRes = R.string.auto_refresh_covers + summaryRes = R.string.auto_refresh_covers_summary + defaultValue = true + } } if (preferences.skipPreMigration().getOrDefault() || preferences.migrationSources().getOrDefault().isNotEmpty()) { preferenceCategory { diff --git a/app/src/main/res/layout/categories_controller.xml b/app/src/main/res/layout/categories_controller.xml index 63b80ac35e..313080a9a4 100644 --- a/app/src/main/res/layout/categories_controller.xml +++ b/app/src/main/res/layout/categories_controller.xml @@ -4,7 +4,6 @@ android:id="@+id/cat_layout" android:layout_width="match_parent" android:layout_height="match_parent" - android:fitsSystemWindows="true" android:clipToPadding="false" android:orientation="vertical"> diff --git a/app/src/main/res/layout/download_item.xml b/app/src/main/res/layout/download_item.xml index 5be0c5404c..d621ff4371 100644 --- a/app/src/main/res/layout/download_item.xml +++ b/app/src/main/res/layout/download_item.xml @@ -62,7 +62,7 @@ app:srcCompat="@drawable/ic_reorder_grey_24dp" /> + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/manga_header_item.xml b/app/src/main/res/layout/manga_header_item.xml index af15295a50..2b8b47fd60 100644 --- a/app/src/main/res/layout/manga_header_item.xml +++ b/app/src/main/res/layout/manga_header_item.xml @@ -82,7 +82,7 @@ + app:layout_constraintStart_toStartOf="@id/title" + app:layout_constraintTop_toBottomOf="@+id/title" /> diff --git a/app/src/main/res/layout/recent_chapters_item.xml b/app/src/main/res/layout/recent_chapters_item.xml index bfdff0ee8d..b714a363ac 100644 --- a/app/src/main/res/layout/recent_chapters_item.xml +++ b/app/src/main/res/layout/recent_chapters_item.xml @@ -44,7 +44,7 @@ tools:src="@mipmap/ic_launcher" /> Manga already in category Add category Edit categories + Manage category Rename category Move to categories Hide categories @@ -85,8 +86,10 @@ %d category %d categories - A category with this name already exists! + A category with that name already exists! Category deleted + Tip: Press and hold a category\'s name to collapse + section Update @@ -163,6 +166,7 @@ Use last saved pre-migration preferences and sources to mass migrate Categories to include in global update + Include in global update Automatically refresh covers Refresh covers in library as well when updating library (overwrites local covers)