Update search ui

This commit is contained in:
Koitharu
2023-07-21 15:22:56 +03:00
parent 052cfe26b1
commit 6dcb537a9a
4 changed files with 26 additions and 11 deletions

View File

@@ -161,9 +161,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
}
override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
menu?.findItem(R.id.action_incognito)?.isChecked = searchSuggestionViewModel.isIncognitoModeEnabled.value
if (menu == null) {
return false
}
menu.findItem(R.id.action_incognito)?.isChecked = searchSuggestionViewModel.isIncognitoModeEnabled.value
val hasAppUpdate = viewModel.appUpdate.value != null
menu?.findItem(R.id.action_app_update)?.isVisible = hasAppUpdate
menu.findItem(R.id.action_app_update)?.isVisible = hasAppUpdate
appUpdateBadge.setBadgeVisible(hasAppUpdate)
return super.onPrepareOptionsMenu(menu)
}
@@ -379,6 +382,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
supportActionBar?.setHomeAsUpIndicator(
if (isOpened) materialR.drawable.abc_ic_ab_back_material else materialR.drawable.abc_ic_search_api_material,
)
viewBinding.searchView.setHintCompat(
if (isOpened) R.string.search_hint else R.string.search_manga,
)
bottomNav?.showOrHide(!isOpened)
}

View File

@@ -13,8 +13,11 @@ import android.view.SoundEffectConstants
import android.view.accessibility.AccessibilityEvent
import android.view.inputmethod.EditorInfo
import androidx.annotation.AttrRes
import androidx.annotation.CheckResult
import androidx.annotation.StringRes
import androidx.appcompat.widget.AppCompatEditText
import androidx.core.content.ContextCompat
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.util.ext.drawableEnd
import org.koitharu.kotatsu.core.util.ext.drawableStart
import org.koitharu.kotatsu.search.ui.suggestion.SearchSuggestionListener
@@ -33,7 +36,7 @@ class SearchEditText @JvmOverloads constructor(
private var isEmpty = text.isNullOrEmpty()
init {
wrapHint()
hint = wrapHint()
}
var query: String
@@ -106,6 +109,10 @@ class SearchEditText @JvmOverloads constructor(
text?.clear()
}
fun setHintCompat(@StringRes resId: Int) {
hint = wrapHint(context.getString(resId))
}
private fun onActionIconClick() {
when {
!text.isNullOrEmpty() -> text?.clear()
@@ -122,15 +129,16 @@ class SearchEditText @JvmOverloads constructor(
}
}
private fun wrapHint() {
val rawHint = hint?.toString() ?: return
@CheckResult
private fun wrapHint(raw: CharSequence? = hint): SpannableString? {
val rawHint = raw?.toString() ?: return null
val formatted = SpannableString(rawHint)
formatted.setSpan(
TextAppearanceSpan(context, materialR.style.TextAppearance_Material3_SearchView),
TextAppearanceSpan(context, R.style.TextAppearance_Kotatsu_SearchView),
0,
formatted.length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE,
)
hint = formatted
return formatted
}
}

View File

@@ -74,11 +74,11 @@ class TrackWorker @AssistedInject constructor(
override suspend fun doWork(): Result {
trySetForeground()
logger.log("doWork()")
try {
return doWorkImpl()
return try {
doWorkImpl()
} catch (e: Throwable) {
logger.log("fatal", e)
throw e
Result.failure()
} finally {
withContext(NonCancellable) {
logger.flush()
@@ -253,7 +253,7 @@ class TrackWorker @AssistedInject constructor(
.setBackoffCriteria(BackoffPolicy.LINEAR, 30, TimeUnit.MINUTES)
.build()
workManager
.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.KEEP, request)
.enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.UPDATE, request)
.await()
}

View File

@@ -463,4 +463,5 @@
<string name="manage_favourites">Manage favourites</string>
<string name="suggestions_wifi_only_summary">Do not update suggestions using metered network connections</string>
<string name="tracker_wifi_only_summary">Do not check for new chapters using metered network connections</string>
<string name="search_hint">Enter manga title, genre or source name</string>
</resources>