diff --git a/app/build.gradle b/app/build.gradle
index 4d59040d..b6f63468 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -20,8 +20,8 @@ android {
applicationId "xyz.quaver.pupil"
minSdkVersion 16
targetSdkVersion 30
- versionCode 59
- versionName "5.0.3-hotfix2"
+ versionCode 60
+ versionName "5.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
@@ -80,7 +80,6 @@ dependencies {
implementation 'com.google.firebase:firebase-perf:19.0.8'
implementation 'com.google.android.gms:play-services-oss-licenses:17.0.0'
implementation 'com.google.android.gms:play-services-mlkit-face-detection:16.1.1'
- implementation 'com.github.arimorty:floatingsearchview:2.1.1'
implementation 'com.github.clans:fab:1.6.4'
//implementation 'com.quiph.ui:recyclerviewfastscroller:0.2.1'
//noinspection GradleDependency
@@ -106,6 +105,7 @@ dependencies {
exclude group: 'org.jetbrains.kotlinx', module: 'kotlinx-serialization-core-jvm'
}
implementation "xyz.quaver:documentfilex:0.2.15"
+ implementation "xyz.quaver:floatingsearchview:1.0"
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test:rules:1.3.0'
diff --git a/app/src/main/java/xyz/quaver/pupil/types/Suggestions.kt b/app/src/main/java/xyz/quaver/pupil/types/Suggestions.kt
index e49391e4..54dccdab 100644
--- a/app/src/main/java/xyz/quaver/pupil/types/Suggestions.kt
+++ b/app/src/main/java/xyz/quaver/pupil/types/Suggestions.kt
@@ -18,36 +18,28 @@
package xyz.quaver.pupil.types
-import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion
+import kotlinx.android.parcel.IgnoredOnParcel
import kotlinx.android.parcel.Parcelize
+import xyz.quaver.floatingsearchview.suggestions.model.SearchSuggestion
import xyz.quaver.hitomi.Suggestion
@Parcelize
data class TagSuggestion(val s: String, val t: Int, val u: String, val n: String) : SearchSuggestion {
constructor(s: Suggestion) : this(s.s, s.t, s.u, s.n)
- override fun getBody(): String {
- return s
- }
+ @IgnoredOnParcel
+ override val body = s
}
@Parcelize
-class Suggestion(val str: String) : SearchSuggestion {
- override fun getBody() = str
-}
+class Suggestion(override val body: String) : SearchSuggestion
@Parcelize
-class NoResultSuggestion(val str: String) : SearchSuggestion {
- override fun getBody() = str
-}
+class NoResultSuggestion(override val body: String) : SearchSuggestion
@Parcelize
-class LoadingSuggestion(val str: String) : SearchSuggestion {
- override fun getBody() = str
-}
+class LoadingSuggestion(override val body: String) : SearchSuggestion
@Parcelize
@Suppress("PARCELABLE_PRIMARY_CONSTRUCTOR_IS_EMPTY")
-class FavoriteHistorySwitch(private val body: String) : SearchSuggestion {
- override fun getBody() = body
-}
\ No newline at end of file
+class FavoriteHistorySwitch(override val body: String) : SearchSuggestion
\ No newline at end of file
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 8913ca8f..51242e86 100644
--- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt
+++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt
@@ -29,10 +29,6 @@ import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDelegate
import androidx.cardview.widget.CardView
import androidx.core.view.GravityCompat
-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
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.navigation.NavigationView
@@ -41,6 +37,9 @@ import com.google.firebase.crashlytics.FirebaseCrashlytics
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.activity_main_content.*
import kotlinx.coroutines.*
+import xyz.quaver.floatingsearchview.FloatingSearchView
+import xyz.quaver.floatingsearchview.suggestions.model.SearchSuggestion
+import xyz.quaver.floatingsearchview.util.view.SearchInputView
import xyz.quaver.hitomi.doSearch
import xyz.quaver.hitomi.getGalleryIDsFromNozomi
import xyz.quaver.hitomi.getSuggestionsForQuery
@@ -60,7 +59,6 @@ import kotlin.math.roundToInt
class MainActivity :
BaseActivity(),
- FloatingSearchView.OnMenuItemClickListener,
NavigationView.OnNavigationItemSelectedListener
{
@@ -626,8 +624,8 @@ class MainActivity :
private var suggestionJob : Job? = null
private fun setupSearchBar() {
- with(main_searchview as FloatingSearchViewDayNight) {
- setOnLeftMenuClickListener(object: FloatingSearchView.OnLeftMenuClickListener {
+ with(main_searchview as xyz.quaver.pupil.ui.view.FloatingSearchView) {
+ onMenuStatusChangeListener = object: FloatingSearchView.OnMenuStatusChangeListener {
override fun onMenuOpened() {
(this@MainActivity.main_recyclerview.adapter as GalleryBlockAdapter).closeAllItems()
}
@@ -635,7 +633,7 @@ class MainActivity :
override fun onMenuClosed() {
//Do Nothing
}
- })
+ }
onHistoryDeleteClickedListener = {
searchHistory.remove(it)
@@ -646,9 +644,11 @@ class MainActivity :
swapSuggestions(defaultSuggestions)
}
- setOnMenuItemClickListener(this@MainActivity)
+ onMenuItemClickListener = {
+ onActionMenuItemSelected(it)
+ }
- setOnQueryChangeListener { _, query ->
+ onQueryChangeListener = lambda@{ _, query ->
this@MainActivity.query = query
suggestionJob?.cancel()
@@ -656,7 +656,7 @@ class MainActivity :
if (query.isEmpty() or query.endsWith(' ')) {
swapSuggestions(defaultSuggestions)
- return@setOnQueryChangeListener
+ return@lambda
}
swapSuggestions(listOf(LoadingSuggestion(getText(R.string.reader_loading).toString())))
@@ -682,7 +682,7 @@ class MainActivity :
}
}
- setOnFocusChangeListener(object: FloatingSearchView.OnFocusChangeListener {
+ onFocusChangeListener = object: FloatingSearchView.OnFocusChangeListener {
override fun onFocus() {
if (query.isEmpty() or query.endsWith(' '))
swapSuggestions(defaultSuggestions)
@@ -699,13 +699,13 @@ class MainActivity :
loadBlocks()
}
}
- })
+ }
attachNavigationDrawerToMenuButton(main_drawer_layout)
}
}
- override fun onActionMenuItemSelected(item: MenuItem?) {
+ fun onActionMenuItemSelected(item: MenuItem?) {
when(item?.itemId) {
R.id.main_menu_settings -> startActivityForResult(Intent(this@MainActivity, SettingsActivity::class.java), R.id.request_settings.normalizeID())
R.id.main_menu_thin -> {
diff --git a/app/src/main/java/com/arlib/floatingsearchview/FloatingSearchViewDayNight.kt b/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt
similarity index 89%
rename from app/src/main/java/com/arlib/floatingsearchview/FloatingSearchViewDayNight.kt
rename to app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt
index 0792cac1..79b4b362 100644
--- a/app/src/main/java/com/arlib/floatingsearchview/FloatingSearchViewDayNight.kt
+++ b/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package com.arlib.floatingsearchview
+package xyz.quaver.pupil.ui.view
import android.content.Context
import android.graphics.PorterDuff
@@ -36,21 +36,21 @@ import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.swiperefreshlayout.widget.CircularProgressDrawable
import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat
-import com.arlib.floatingsearchview.suggestions.SearchSuggestionsAdapter
-import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion
-import com.arlib.floatingsearchview.util.view.SearchInputView
+import xyz.quaver.floatingsearchview.FloatingSearchView
+import xyz.quaver.floatingsearchview.suggestions.model.SearchSuggestion
+import xyz.quaver.floatingsearchview.util.MenuPopupHelper
+import xyz.quaver.floatingsearchview.util.view.MenuView
+import xyz.quaver.floatingsearchview.util.view.SearchInputView
import xyz.quaver.pupil.R
import xyz.quaver.pupil.favoriteTags
import xyz.quaver.pupil.types.*
import java.util.*
-class FloatingSearchViewDayNight @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
+class FloatingSearchView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
FloatingSearchView(context, attrs),
FloatingSearchView.OnSearchListener,
- SearchSuggestionsAdapter.OnBindSuggestionCallback,
TextWatcher
{
-
private val searchInputView = findViewById(R.id.search_bar_text)
var onHistoryDeleteClickedListener: ((String) -> Unit)? = null
@@ -60,8 +60,10 @@ class FloatingSearchViewDayNight @JvmOverloads constructor(context: Context, att
searchInputView.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI
searchInputView.addTextChangedListener(this)
- setOnSearchListener(this)
- setOnBindSuggestionCallback(this)
+ onSearchListener = this
+ onBindSuggestionCallback = { a, b, c, d, e ->
+ onBindSuggestion(a, b, c, d, e)
+ }
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
@@ -83,7 +85,7 @@ class FloatingSearchViewDayNight @JvmOverloads constructor(context: Context, att
when (searchSuggestion) {
is TagSuggestion -> {
val tag = "${searchSuggestion.n}:${searchSuggestion.s.replace(Regex("\\s"), "_")}"
- with(searchInputView.text) {
+ with(searchInputView.text!!) {
delete(if (lastIndexOf(' ') == -1) 0 else lastIndexOf(' ') + 1, length)
if (!this.contains(tag))
@@ -91,9 +93,9 @@ class FloatingSearchViewDayNight @JvmOverloads constructor(context: Context, att
}
}
is Suggestion -> {
- with(searchInputView.text) {
+ with(searchInputView.text!!) {
clear()
- append(searchSuggestion.str)
+ append(searchSuggestion.body)
}
}
is FavoriteHistorySwitch -> onFavoriteHistorySwitchClickListener?.invoke()
@@ -102,14 +104,14 @@ class FloatingSearchViewDayNight @JvmOverloads constructor(context: Context, att
override fun onSearchAction(currentQuery: String?) {}
- override fun onBindSuggestion(
+ fun onBindSuggestion(
suggestionView: View?,
leftIcon: ImageView?,
textView: TextView?,
item: SearchSuggestion?,
itemPosition: Int
) {
- when(item) {
+ when(item) {
is TagSuggestion -> {
val tag = "${item.n}:${item.s.replace(Regex("\\s"), "_")}"
@@ -199,7 +201,7 @@ class FloatingSearchViewDayNight @JvmOverloads constructor(context: Context, att
isClickable = true
setOnClickListener {
- onHistoryDeleteClickedListener?.invoke(item.str)
+ onHistoryDeleteClickedListener?.invoke(item.body)
}
}
}
@@ -215,10 +217,4 @@ class FloatingSearchViewDayNight @JvmOverloads constructor(context: Context, att
}
}
}
-
- // hack to remove color attributes which should not be reused
- override fun onSaveInstanceState(): Parcelable? {
- super.onSaveInstanceState()
- return null
- }
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/reader_item_boundary.xml b/app/src/main/res/drawable/reader_item_boundary.xml
index caff3bcf..18006135 100644
--- a/app/src/main/res/drawable/reader_item_boundary.xml
+++ b/app/src/main/res/drawable/reader_item_boundary.xml
@@ -4,7 +4,7 @@
-
-
+
diff --git a/app/src/main/res/layout-v23/activity_main_content.xml b/app/src/main/res/layout-v23/activity_main_content.xml
deleted file mode 100644
index 78db4973..00000000
--- a/app/src/main/res/layout-v23/activity_main_content.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main_content.xml b/app/src/main/res/layout/activity_main_content.xml
index 210d502b..34ad0fd2 100644
--- a/app/src/main/res/layout/activity_main_content.xml
+++ b/app/src/main/res/layout/activity_main_content.xml
@@ -1,7 +1,7 @@