Update search ui

pull/440/head
Koitharu 3 years ago
parent 052cfe26b1
commit 6dcb537a9a
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -161,9 +161,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
} }
override fun onPrepareOptionsMenu(menu: Menu?): Boolean { 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 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) appUpdateBadge.setBadgeVisible(hasAppUpdate)
return super.onPrepareOptionsMenu(menu) return super.onPrepareOptionsMenu(menu)
} }
@ -379,6 +382,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
supportActionBar?.setHomeAsUpIndicator( supportActionBar?.setHomeAsUpIndicator(
if (isOpened) materialR.drawable.abc_ic_ab_back_material else materialR.drawable.abc_ic_search_api_material, 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) bottomNav?.showOrHide(!isOpened)
} }

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

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

@ -463,4 +463,5 @@
<string name="manage_favourites">Manage favourites</string> <string name="manage_favourites">Manage favourites</string>
<string name="suggestions_wifi_only_summary">Do not update suggestions using metered network connections</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="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> </resources>

Loading…
Cancel
Save