From bc33ce1ebccafee25521ae004e6af5de70876e53 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Mon, 3 Aug 2020 21:14:47 +0900 Subject: [PATCH 1/5] Fix Settings opening up too late if the download folder is too big --- app/build.gradle | 2 +- app/release/output-metadata.json | 2 +- .../quaver/pupil/ExampleInstrumentedTest.kt | 9 ++-- .../pupil/ui/fragment/SettingsFragment.kt | 49 ++++++++++++++++--- app/src/main/res/values-ja/strings.xml | 3 +- app/src/main/res/values-ko/strings.xml | 3 +- app/src/main/res/values/strings.xml | 3 +- 7 files changed, 56 insertions(+), 15 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 24e2d0f9..47dd0fd6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,7 +20,7 @@ android { minSdkVersion 16 targetSdkVersion 29 versionCode 57 - versionName "4.19-hotfix1" + versionName "4.19-hotfix3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true vectorDrawables.useSupportLibrary = true diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 7f90aa3e..286525d2 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -12,7 +12,7 @@ "filters": [], "properties": [], "versionCode": 57, - "versionName": "4.19-hotfix1", + "versionName": "4.19-hotfix3", "enabled": true, "outputFile": "app-release.apk" } diff --git a/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt b/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt index b3661f2f..b3609476 100644 --- a/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt @@ -21,7 +21,6 @@ package xyz.quaver.pupil import android.util.Log -import androidx.core.content.ContextCompat import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.ActivityTestRule @@ -36,6 +35,8 @@ import xyz.quaver.hiyobi.user_agent import xyz.quaver.pupil.ui.LockActivity import xyz.quaver.pupil.util.download.Cache import xyz.quaver.pupil.util.download.DownloadWorker +import xyz.quaver.pupil.util.getDownloadDirectory +import java.io.InputStreamReader import java.net.URL import javax.net.ssl.HttpsURLConnection @@ -58,8 +59,10 @@ class ExampleInstrumentedTest { val activityTestRule = ActivityTestRule(LockActivity::class.java) val appContext = InstrumentationRegistry.getInstrumentation().targetContext - ContextCompat.getExternalFilesDirs(appContext, null).forEachIndexed { index, file -> - Log.i("PUPILD", "$index: ${file?.absolutePath}") + Runtime.getRuntime().exec("du -hs " + getDownloadDirectory(appContext)).let { + InputStreamReader(it.inputStream).readLines().forEach { res -> + Log.i("PUPILD", res) + } } } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt index d975355d..0fa2e68b 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/SettingsFragment.kt @@ -33,6 +33,9 @@ import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceManager import com.google.android.material.snackbar.Snackbar +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch import net.rdrei.android.dirchooser.DirectoryChooserActivity import net.rdrei.android.dirchooser.DirectoryChooserConfig import xyz.quaver.pupil.Pupil @@ -44,7 +47,9 @@ import xyz.quaver.pupil.ui.dialog.DownloadLocationDialog import xyz.quaver.pupil.ui.dialog.MirrorDialog import xyz.quaver.pupil.ui.dialog.ProxyDialog import xyz.quaver.pupil.util.* +import java.io.BufferedReader import java.io.File +import java.io.InputStreamReader class SettingsFragment : @@ -74,9 +79,13 @@ class SettingsFragment : } private fun getDirSize(dir: File) : String { - val size = dir.walk().map { it.length() }.sum() - - return getString(R.string.settings_clear_summary, byteToString(size)) + return getString(R.string.settings_storage_usage, + Runtime.getRuntime().exec("du -hs " + dir.absolutePath).let { + BufferedReader(InputStreamReader(it.inputStream)).use { reader -> + reader.readLine().split('\t').firstOrNull() ?: "0" + } + } + ) } override fun onPreferenceClick(preference: Preference?): Boolean { @@ -97,7 +106,13 @@ class SettingsFragment : if (dir.exists()) dir.deleteRecursively() - summary = getDirSize(dir) + CoroutineScope(Dispatchers.IO).launch { + summary = getString(R.string.settings_storage_usage_loading) + + launch(Dispatchers.Main) { + this@with.summary = getDirSize(dir) + } + } } setNegativeButton(android.R.string.no) { _, _ -> } }.show() @@ -112,7 +127,13 @@ class SettingsFragment : if (dir.exists()) dir.deleteRecursively() - summary = getDirSize(dir) + CoroutineScope(Dispatchers.IO).launch { + summary = getString(R.string.settings_storage_usage_loading) + + launch(Dispatchers.Main) { + this@with.summary = getDirSize(dir) + } + } } setNegativeButton(android.R.string.no) { _, _ -> } }.show() @@ -276,13 +297,27 @@ class SettingsFragment : } "delete_cache" -> { val dir = File(requireContext().cacheDir, "imageCache") - summary = getDirSize(dir) + + CoroutineScope(Dispatchers.IO).launch { + summary = getString(R.string.settings_storage_usage_loading) + + launch(Dispatchers.Main) { + this@with.summary = getDirSize(dir) + } + } onPreferenceClickListener = this@SettingsFragment } "delete_downloads" -> { val dir = getDownloadDirectory(requireContext()) - summary = getDirSize(dir) + + CoroutineScope(Dispatchers.IO).launch { + summary = getString(R.string.settings_storage_usage_loading) + + launch(Dispatchers.Main) { + this@with.summary = getDirSize(dir) + } + } onPreferenceClickListener = this@SettingsFragment } diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 9a0f825e..a05a6391 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -9,7 +9,8 @@ ギャラリー検索 キャッシュクリア キャッシュをクリアするとイメージのロード速度に影響を与えます。実行しますか? - サイズ: %s + %s使用中 + ストレージ使用量読み込み中… デフォルトキーワード 一回にロードするギャラリー数 検索設定 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 4c065d0b..6b8ec322 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -8,7 +8,8 @@ 기본 검색어 캐시 정리하기 캐시를 정리하면 이미지 로딩속도가 느려질 수 있습니다. 계속하시겠습니까? - 사용량: %s + %s 사용중 + 저장공간 사용량 계산 중… 한 번에 로드할 갤러리 수 검색 설정 설정 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f1765704..f23b1e29 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -142,9 +142,10 @@ Storage + Currently using %s + Calculating storage usage… Clear cache Deleting cache can affect image loading speed. Do you want to continue? - Currently using %s Clear downloads Delete all downloaded galleries.\nDo you want to continue? Clear history From c317abe64bdeb4279c4808b93d3c05f639fcaa35 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Mon, 3 Aug 2020 21:19:08 +0900 Subject: [PATCH 2/5] Open Gallery Info dialog instead of opening up the gallery when opening a random gallery --- app/build.gradle | 2 +- .../java/xyz/quaver/pupil/ui/MainActivity.kt | 23 ++++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 47dd0fd6..9224e658 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,7 +20,7 @@ android { minSdkVersion 16 targetSdkVersion 29 versionCode 57 - versionName "4.19-hotfix3" + versionName "4.20" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true 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 12b46b9b..5a1d1da5 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt @@ -377,13 +377,24 @@ class MainActivity : AppCompatActivity() { if (it?.isEmpty() == false) { val galleryID = it.random() - val intent = Intent(this@MainActivity, ReaderActivity::class.java).apply { - putExtra("galleryID", galleryID) - } + GalleryDialog( + this@MainActivity, + Glide.with(this@MainActivity), + galleryID + ).apply { + onChipClickedHandler.add { + runOnUiThread { + query = it.toQuery() + currentPage = 0 - startActivity(intent) - - histories.add(galleryID) + cancelFetch() + clearGalleries() + fetchGalleries(query, sortMode) + loadBlocks() + } + dismiss() + } + }.show() } } } From 2ab7672092d3c138aa0a4cbae0dcc9e1f20aba23 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Mon, 3 Aug 2020 21:31:39 +0900 Subject: [PATCH 3/5] Search Backtracking Added --- .../java/xyz/quaver/pupil/ui/MainActivity.kt | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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 5a1d1da5..f251a2c8 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt @@ -42,7 +42,6 @@ import androidx.core.view.GravityCompat import androidx.preference.PreferenceManager import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat import com.arlib.floatingsearchview.FloatingSearchView -import com.arlib.floatingsearchview.FloatingSearchViewDayNight import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion import com.arlib.floatingsearchview.util.view.SearchInputView import com.bumptech.glide.Glide @@ -98,6 +97,7 @@ class MainActivity : AppCompatActivity() { setText(query, TextView.BufferType.EDITABLE) } } + private var queryStack = mutableListOf() private var mode = Mode.SEARCH private var sortMode = SortMode.NEWEST @@ -159,11 +159,12 @@ class MainActivity : AppCompatActivity() { initView() } + @OptIn(ExperimentalStdlibApi::class) override fun onBackPressed() { when { main_drawer_layout.isDrawerOpen(GravityCompat.START) -> main_drawer_layout.closeDrawer(GravityCompat.START) - query.isNotEmpty() -> runOnUiThread { - query = "" + queryStack.removeLastOrNull() != null && queryStack.isNotEmpty() -> runOnUiThread { + query = queryStack.last() cancelFetch() clearGalleries() @@ -278,6 +279,7 @@ class MainActivity : AppCompatActivity() { clearGalleries() currentPage = 0 query = "" + queryStack.clear() mode = Mode.SEARCH fetchGalleries(query, sortMode) loadBlocks() @@ -287,6 +289,7 @@ class MainActivity : AppCompatActivity() { clearGalleries() currentPage = 0 query = "" + queryStack.clear() mode = Mode.HISTORY fetchGalleries(query, sortMode) loadBlocks() @@ -296,6 +299,7 @@ class MainActivity : AppCompatActivity() { clearGalleries() currentPage = 0 query = "" + queryStack.clear() mode = Mode.DOWNLOAD fetchGalleries(query, sortMode) loadBlocks() @@ -305,6 +309,7 @@ class MainActivity : AppCompatActivity() { clearGalleries() currentPage = 0 query = "" + queryStack.clear() mode = Mode.FAVORITE fetchGalleries(query, sortMode) loadBlocks() @@ -990,6 +995,11 @@ class MainActivity : AppCompatActivity() { val preference = PreferenceManager.getDefaultSharedPreferences(this) val defaultQuery = preference.getString("default_query", "")!! + if (query != queryStack.lastOrNull()) { + queryStack.remove(query) + queryStack.add(query) + } + galleryIDs = null if (galleryIDs?.isActive == true) From 20003acd733df2c32654bbee0994fcbb649fabb1 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Mon, 3 Aug 2020 21:34:24 +0900 Subject: [PATCH 4/5] App built resolves #98 --- app/release/output-metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 286525d2..4abe6098 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -12,7 +12,7 @@ "filters": [], "properties": [], "versionCode": 57, - "versionName": "4.19-hotfix3", + "versionName": "4.20", "enabled": true, "outputFile": "app-release.apk" } From 17b3e010aac9a3d5f93d80de9354c0212ebc9ade Mon Sep 17 00:00:00 2001 From: tom5079 Date: Mon, 3 Aug 2020 21:49:04 +0900 Subject: [PATCH 5/5] fuck git --- app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt | 1 + 1 file changed, 1 insertion(+) 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 f251a2c8..992037a4 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt @@ -42,6 +42,7 @@ import androidx.core.view.GravityCompat import androidx.preference.PreferenceManager import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat import com.arlib.floatingsearchview.FloatingSearchView +import com.arlib.floatingsearchview.FloatingSearchViewDayNight import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion import com.arlib.floatingsearchview.util.view.SearchInputView import com.bumptech.glide.Glide