diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index e16a0dcd67..1de82f21e8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -269,4 +269,6 @@ class PreferencesHelper(val context: Context) { fun shownChapterSwipeTutorial() = flowPrefs.getBoolean("shown_swipe_tutorial", false) fun shownDownloadQueueTutorial() = flowPrefs.getBoolean("shown_download_queue", false) + + fun shownLongPressCategoryTutorial() = flowPrefs.getBoolean("shown_long_press_category", false) } 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 f8b7481449..ac5f600c64 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 @@ -1,9 +1,12 @@ package eu.kanade.tachiyomi.ui.library import android.annotation.SuppressLint +import android.app.Activity +import android.graphics.Color import android.graphics.drawable.Drawable import android.text.SpannableString import android.text.style.ForegroundColorSpan +import android.util.TypedValue import android.view.View import android.view.ViewGroup import android.widget.ImageView @@ -15,6 +18,7 @@ import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.f2prateek.rx.preferences.Preference +import com.github.florent37.viewtooltip.ViewTooltip import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.SelectableAdapter import eu.davidea.flexibleadapter.items.AbstractHeaderItem @@ -22,6 +26,7 @@ import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.data.library.LibraryUpdateService +import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.getOrDefault import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder import eu.kanade.tachiyomi.util.system.dpToPx @@ -32,6 +37,8 @@ import eu.kanade.tachiyomi.util.view.updateLayoutParams import eu.kanade.tachiyomi.util.view.visInvisIf import eu.kanade.tachiyomi.util.view.visible import kotlinx.android.synthetic.main.library_category_header_item.* +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get class LibraryHeaderItem( private val categoryF: (Int) -> Category, @@ -97,22 +104,33 @@ class LibraryHeaderItem( sortText.updateLayoutParams { marginEnd = (if (padEnd && adapter.recyclerView.paddingEnd == 0) 12 else 2).dpToPx } - category_header_layout.setOnClickListener { - adapter.libraryListener.toggleCategoryVisibility(adapterPosition) - } + category_header_layout.setOnClickListener { toggleCategory() } updateButton.setOnClickListener { addCategoryToUpdate() } sectionText.setOnLongClickListener { adapter.libraryListener.manageCategory(adapterPosition) true } - sectionText.setOnClickListener { - adapter.libraryListener.toggleCategoryVisibility(adapterPosition) - } + sectionText.setOnClickListener { toggleCategory() } sortText.setOnClickListener { it.post { showCatSortOptions() } } checkboxImage.setOnClickListener { selectAll() } updateButton.drawable.mutate() } + private fun toggleCategory() { + adapter.libraryListener.toggleCategoryVisibility(adapterPosition) + val tutorial = Injekt.get().shownLongPressCategoryTutorial() + if (!tutorial.get()) { + ViewTooltip.on(itemView.context as? Activity, sectionText).autoHide(true, 5000L) + .align(ViewTooltip.ALIGN.START).position(ViewTooltip.Position.TOP) + .text(R.string.long_press_category) + .color(itemView.context.getResourceColor(R.attr.colorAccent)) + .textSize(TypedValue.COMPLEX_UNIT_SP, 15f).textColor(Color.WHITE) + .withShadow(false).corner(30).arrowWidth(15).arrowHeight(15).distanceWithView(0) + .show() + tutorial.set(true) + } + } + fun bind(item: LibraryHeaderItem) { val index = adapter.headerItems.indexOf(item) val previousIsCollapsed = diff --git a/app/src/main/res/layout/manga_category_dialog.xml b/app/src/main/res/layout/manga_category_dialog.xml index dde94dcd29..86f16b41ef 100644 --- a/app/src/main/res/layout/manga_category_dialog.xml +++ b/app/src/main/res/layout/manga_category_dialog.xml @@ -36,15 +36,4 @@ android:layout_height="wrap_content" style="@style/Theme.Widget.Button.TextButton" android:text="@string/edit_categories"/> - - - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e561e8649a..7e29fafd88 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -91,8 +91,7 @@ A category with that name already exists! Category deleted - Tip: Press and hold a category\'s name to collapse - section + Press and hold to edit a category Update