From 19450f66a04b551480ce924c3271967e3970ba7f Mon Sep 17 00:00:00 2001 From: tom5079 <7948651+tom5079@users.noreply.github.com> Date: Fri, 1 Mar 2024 21:50:42 -0800 Subject: [PATCH] favorite scroll to top --- README.md | 2 +- app/build.gradle | 2 +- .../java/xyz/quaver/pupil/ui/MainActivity.kt | 25 ++++++++++++++++--- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index b5b3af43..90dd55e1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ *Pupil, Hitomi.la viewer for Android* ![](https://img.shields.io/github/downloads/tom5079/Pupil/total) -[![](https://img.shields.io/github/downloads/tom5079/Pupil/5.3.12/Pupil-v5.3.12.apk?color=%234fc3f7&label=DOWNLOAD%20APP&style=for-the-badge)](https://github.com/tom5079/Pupil/releases/download/5.3.12/Pupil-v5.3.12.apk) +[![](https://img.shields.io/github/downloads/tom5079/Pupil/5.3.13/Pupil-v5.3.13.apk?color=%234fc3f7&label=DOWNLOAD%20APP&style=for-the-badge)](https://github.com/tom5079/Pupil/releases/download/5.3.13/Pupil-v5.3.13.apk) [![](https://discordapp.com/api/guilds/610452916612104194/embed.png?style=banner2)](https://discord.gg/Stj4b5v) # Features diff --git a/app/build.gradle b/app/build.gradle index 755be840..e87d894f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,7 @@ android { compileSdk 34 targetSdkVersion 34 versionCode 69 - versionName "5.3.12" + versionName "5.3.13" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt index e862fcc0..c924ce8e 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt @@ -18,10 +18,8 @@ package xyz.quaver.pupil.ui -import android.Manifest import android.annotation.SuppressLint import android.content.Intent -import android.content.pm.PackageManager import android.net.Uri import android.os.Build import android.os.Bundle @@ -39,6 +37,7 @@ import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.core.view.GravityCompat import androidx.core.view.ViewCompat +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.navigation.NavigationView import com.google.android.material.snackbar.Snackbar @@ -62,10 +61,10 @@ import xyz.quaver.pupil.ui.view.MainView import xyz.quaver.pupil.ui.view.ProgressCard import xyz.quaver.pupil.util.ItemClickSupport import xyz.quaver.pupil.util.Preferences -import xyz.quaver.pupil.util.requestNotificationPermission import xyz.quaver.pupil.util.checkUpdate import xyz.quaver.pupil.util.downloader.Cache import xyz.quaver.pupil.util.downloader.DownloadManager +import xyz.quaver.pupil.util.requestNotificationPermission import xyz.quaver.pupil.util.restore import xyz.quaver.pupil.util.showNotificationPermissionExplanationDialog import java.util.regex.Pattern @@ -496,6 +495,20 @@ class MainActivity : private var suggestionJob : Job? = null private fun setupSearchBar() { with(binding.contents.searchview) { + val scrollSuggestionToTop = { + with(binding.suggestionSection.suggestionsList) { + MainScope().launch { + withTimeout(1000) { + val layoutManager = layoutManager as LinearLayoutManager + while (layoutManager.findLastVisibleItemPosition() != adapter?.itemCount?.minus(1)) { + layoutManager.scrollToPosition(adapter?.itemCount?.minus(1) ?: 0) + delay(100) + } + } + } + } + } + onMenuStatusChangeListener = object: FloatingSearchView.OnMenuStatusChangeListener { override fun onMenuOpened() { (this@MainActivity.binding.contents.recyclerview.adapter as GalleryBlockAdapter).closeAllItems() @@ -521,6 +534,7 @@ class MainActivity : onFavoriteHistorySwitchClickListener = { isFavorite = !isFavorite swapSuggestions(defaultSuggestions) + scrollSuggestionToTop() } onMenuItemClickListener = { @@ -534,6 +548,7 @@ class MainActivity : if (query.isEmpty() or query.endsWith(' ')) { swapSuggestions(defaultSuggestions) + scrollSuggestionToTop() return@lambda } @@ -565,8 +580,10 @@ class MainActivity : onFocusChangeListener = object: FloatingSearchView.OnFocusChangeListener { override fun onFocus() { - if (query.isEmpty() or query.endsWith(' ')) + if (query.isEmpty() or query.endsWith(' ')) { swapSuggestions(defaultSuggestions) + scrollSuggestionToTop() + } } override fun onFocusCleared() {