Update search ui
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user