From ceac01533ab1131660f2801e44f6e242e22088d3 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Wed, 26 Aug 2020 18:01:12 +0900 Subject: [PATCH] Updated History.kt to use kotlin's delegate feature --- .idea/copyright/Apache.xml | 6 -- .idea/copyright/profiles_settings.xml | 1 - .idea/scopes/libpupil.xml | 3 - app/src/main/java/xyz/quaver/pupil/Pupil.kt | 10 ++-- .../pupil/adapters/GalleryBlockAdapter.kt | 4 +- .../java/xyz/quaver/pupil/ui/MainActivity.kt | 8 +-- .../xyz/quaver/pupil/ui/ReaderActivity.kt | 4 +- .../pupil/util/{history.kt => GalleryList.kt} | 58 ++++++++----------- .../java/xyz/quaver/pupil/ExampleUnitTest.kt | 4 +- 9 files changed, 38 insertions(+), 60 deletions(-) delete mode 100644 .idea/copyright/Apache.xml delete mode 100644 .idea/scopes/libpupil.xml rename app/src/main/java/xyz/quaver/pupil/util/{history.kt => GalleryList.kt} (61%) diff --git a/.idea/copyright/Apache.xml b/.idea/copyright/Apache.xml deleted file mode 100644 index 3c72b283..00000000 --- a/.idea/copyright/Apache.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml index b1a28ee4..eaa059df 100644 --- a/.idea/copyright/profiles_settings.xml +++ b/.idea/copyright/profiles_settings.xml @@ -2,7 +2,6 @@ - \ No newline at end of file diff --git a/.idea/scopes/libpupil.xml b/.idea/scopes/libpupil.xml deleted file mode 100644 index 9ad573e4..00000000 --- a/.idea/scopes/libpupil.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/Pupil.kt b/app/src/main/java/xyz/quaver/pupil/Pupil.kt index 980903bd..c9806626 100644 --- a/app/src/main/java/xyz/quaver/pupil/Pupil.kt +++ b/app/src/main/java/xyz/quaver/pupil/Pupil.kt @@ -33,15 +33,15 @@ import com.google.android.gms.security.ProviderInstaller import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.crashlytics.FirebaseCrashlytics import xyz.quaver.proxy -import xyz.quaver.pupil.util.Histories +import xyz.quaver.pupil.util.GalleryList import xyz.quaver.pupil.util.getProxy import java.io.File import java.util.* class Pupil : MultiDexApplication() { - lateinit var histories: Histories - lateinit var favorites: Histories + lateinit var histories: GalleryList + lateinit var favorites: GalleryList init { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) @@ -71,8 +71,8 @@ class Pupil : MultiDexApplication() { preference.edit().remove("dl_location").apply() } - histories = Histories(File(ContextCompat.getDataDir(this), "histories.json")) - favorites = Histories(File(ContextCompat.getDataDir(this), "favorites.json")) + histories = GalleryList(File(ContextCompat.getDataDir(this), "histories.json")) + favorites = GalleryList(File(ContextCompat.getDataDir(this), "favorites.json")) if (BuildConfig.DEBUG) FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(false) diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt index 2daaa392..4a41afb2 100644 --- a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt +++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt @@ -53,7 +53,7 @@ import xyz.quaver.pupil.BuildConfig import xyz.quaver.pupil.Pupil import xyz.quaver.pupil.R import xyz.quaver.pupil.types.Tag -import xyz.quaver.pupil.util.Histories +import xyz.quaver.pupil.util.GalleryList import xyz.quaver.pupil.util.download.Cache import xyz.quaver.pupil.util.wordCapitalize import java.util.* @@ -68,7 +68,7 @@ class GalleryBlockAdapter(private val glide: RequestManager, private val galleri PREV } - private lateinit var favorites: Histories + private lateinit var favorites: GalleryList val timer = Timer() 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 dcd9b1f7..3ff3a8b1 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt @@ -109,8 +109,8 @@ class MainActivity : AppCompatActivity() { private var loadingJob: Job? = null private var currentPage = 0 - private lateinit var histories: Histories - private lateinit var favorites: Histories + private lateinit var histories: GalleryList + private lateinit var favorites: GalleryList override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -1025,13 +1025,13 @@ class MainActivity : AppCompatActivity() { Mode.HISTORY -> { when { query.isEmpty() -> { - histories.toList().also { + histories.reversed().also { totalItems = it.size } } else -> { val result = doSearch(query).sorted() - histories.filter { result.binarySearch(it) >= 0 }.also { + histories.reversed().filter { result.binarySearch(it) >= 0 }.also { totalItems = it.size } } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt index 0b579a81..d5a51c93 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt @@ -46,7 +46,7 @@ import xyz.quaver.Code import xyz.quaver.pupil.Pupil import xyz.quaver.pupil.R import xyz.quaver.pupil.adapters.ReaderAdapter -import xyz.quaver.pupil.util.Histories +import xyz.quaver.pupil.util.GalleryList import xyz.quaver.pupil.util.download.Cache import xyz.quaver.pupil.util.download.DownloadWorker import java.util.* @@ -78,7 +78,7 @@ class ReaderActivity : AppCompatActivity() { private var menu: Menu? = null - private lateinit var favorites: Histories + private lateinit var favorites: GalleryList override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/xyz/quaver/pupil/util/history.kt b/app/src/main/java/xyz/quaver/pupil/util/GalleryList.kt similarity index 61% rename from app/src/main/java/xyz/quaver/pupil/util/history.kt rename to app/src/main/java/xyz/quaver/pupil/util/GalleryList.kt index 59fde684..e5b30991 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/history.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/GalleryList.kt @@ -23,69 +23,57 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import java.io.File -class Histories(private val file: File) : ArrayList() { +class GalleryList(private val file: File, private val list: MutableSet = mutableSetOf()) : MutableSet by list { init { - if (!file.exists()) - file.parentFile?.mkdirs() - - try { - load() - } catch (e: Exception) { - save() - } + load() } - fun load() : Histories { - return apply { - super.clear() - super.addAll( - Json.decodeFromString(file.bufferedReader().use { it.readText() }) + fun load() { + synchronized(this) { + if (!file.exists()) + file.parentFile?.mkdirs() + + list.clear() + list.addAll( + Json.decodeFromString>(file.bufferedReader().use { it.readText() }) ) } } fun save() { - file.writeText(Json.encodeToString(toList())) + synchronized(this) { + file.writeText(Json.encodeToString(list)) + } } override fun add(element: Int): Boolean { load() - if (contains(element)) - super.remove(element) - - super.add(0, element) - - save() - - return true + return list.add(element).also { + save() + } } override fun addAll(elements: Collection): Boolean { load() - for (e in elements) { - if (contains(e)) - super.remove(e) - super.add(0, e) + return list.addAll(elements).also { + save() } - - save() - - return true } override fun remove(element: Int): Boolean { load() - val retval = super.remove(element) - save() - return retval + return list.remove(element).also { + save() + } } override fun clear() { - super.clear() + list.clear() save() } + } \ No newline at end of file diff --git a/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt b/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt index 7cb04979..d2dc194e 100644 --- a/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt +++ b/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt @@ -26,14 +26,14 @@ package xyz.quaver.pupil * See [testing documentation](http://d.android.com/tools/testing). */ -import android.util.SparseArray +import kotlinx.serialization.json.Json import org.junit.Test class ExampleUnitTest { @Test fun test() { - val arr = SparseArray() + } }