diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 493250655a..5f2ca60aae 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,6 +30,7 @@ android:networkSecurityConfig="@xml/network_security_config"> diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionHolder.kt index 5e92335b4a..8792fc9e17 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionHolder.kt @@ -1,5 +1,7 @@ package eu.kanade.tachiyomi.ui.extension +import android.content.res.ColorStateList +import android.graphics.Color import android.view.View import androidx.core.content.ContextCompat import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat @@ -60,8 +62,8 @@ class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) : isClickable = true isActivated = false - background = VectorDrawableCompat.create(resources!!, R.drawable.button_bg_transparent, null) - setTextColor(ContextCompat.getColorStateList(context, R.drawable.button_bg_transparent)) + //background = VectorDrawableCompat.create(resources!!, R.drawable.button_bg_transparent, null) + setTextColor(ContextCompat.getColorStateList(context, R.drawable.button_text_state)) val extension = item.extension @@ -82,11 +84,14 @@ class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) : when { extension.hasUpdate -> { isActivated = true + // backgroundTintList = ColorStateList(arrayOf(intArrayOf(0)), intArrayOf(Color + //.BLACK)) setText(R.string.ext_update) } extension.isObsolete -> { // Red outline - background = VectorDrawableCompat.create(resources, R.drawable.button_bg_error, null) + // background = VectorDrawableCompat.create(resources, R.drawable + // .button_bg_error, null) setTextColor(ContextCompat.getColorStateList(context, R.drawable.button_bg_error)) setText(R.string.ext_obsolete) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 2dde9c1836..78a1a1215b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -446,6 +446,9 @@ class LibraryController( searchView.clearFocus() } + // Mutate the filter icon because it needs to be tinted and the resource is shared. + menu.findItem(R.id.action_filter).icon.mutate() + searchViewSubscription?.unsubscribe() searchViewSubscription = searchView.queryTextChanges() // Ignore events if this controller isn't at the top @@ -468,10 +471,9 @@ class LibraryController( val filterItem = menu.findItem(R.id.action_filter) // Tint icon if there's a filter active - if (navView.hasActiveFilters()) - DrawableCompat.setTint(filterItem.icon, Color.rgb(255, 238, 7)) - else - DrawableCompat.clearColorFilter(filterItem.icon) + val filterColor = if (navView.hasActiveFilters()) Color.rgb(255, 238, 7) + else activity?.getResourceColor(R.attr.actionBarTintColor) ?: Color.WHITE + DrawableCompat.setTint(filterItem.icon, filterColor) } override fun onOptionsItemSelected(item: MenuItem): Boolean { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt index db0054b158..038ba7796e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt @@ -39,7 +39,7 @@ class SearchActivity: MainActivity() { setSupportActionBar(sToolbar) drawerArrow = DrawerArrowDrawable(this) - drawerArrow?.color = Color.WHITE + drawerArrow?.color = getResourceColor(R.attr.actionBarTintColor) sToolbar.navigationIcon = drawerArrow tabAnimator = TabsAnimator(sTabs) @@ -87,9 +87,15 @@ class SearchActivity: MainActivity() { insets } val currentNightMode = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK - if (Build.VERSION.SDK_INT >= 26 && currentNightMode == Configuration.UI_MODE_NIGHT_NO) { - content.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR + if (Build.VERSION.SDK_INT >= 26 && currentNightMode == Configuration.UI_MODE_NIGHT_NO && + preferences.theme() >= 8) { + content.systemUiVisibility = content.systemUiVisibility.or(View + .SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR) } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && currentNightMode == Configuration + .UI_MODE_NIGHT_NO && preferences.theme() >= 8) + content.systemUiVisibility = content.systemUiVisibility.or(View + .SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) val drawerContainer: FrameLayout = findViewById(R.id.search_container) drawerContainer.setOnApplyWindowInsetsListener { v, insets -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationListController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationListController.kt index b53d14efe5..473ac4cd09 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationListController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationListController.kt @@ -32,6 +32,7 @@ import eu.kanade.tachiyomi.util.system.await import eu.kanade.tachiyomi.util.system.launchUI import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource import eu.kanade.tachiyomi.util.system.toast +import eu.kanade.tachiyomi.util.system.getResourceColor import kotlinx.android.synthetic.main.chapters_controller.* import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineScope @@ -400,9 +401,13 @@ class MigrationListController(bundle: Bundle? = null) : BaseController(bundle), resources!!, R.drawable.ic_done_white_24dp, null ) } - val translucentWhite = ColorUtils.setAlphaComponent(Color.WHITE, 127) - menuCopy.icon?.setTint(if (allMangasDone) Color.WHITE else translucentWhite) - menuMigrate?.icon?.setTint(if (allMangasDone) Color.WHITE else translucentWhite) + + menuCopy.icon.mutate() + menuMigrate.icon.mutate() + val tintColor = activity?.getResourceColor(R.attr.actionBarTintColor) ?: Color.WHITE + val translucentWhite = ColorUtils.setAlphaComponent(tintColor, 127) + menuCopy.icon?.setTint(if (allMangasDone) tintColor else translucentWhite) + menuMigrate?.icon?.setTint(if (allMangasDone) tintColor else translucentWhite) menuCopy.isEnabled = allMangasDone menuMigrate.isEnabled = allMangasDone } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/PreferenceDSL.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/PreferenceDSL.kt index 58037acb7f..58245c9be8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/PreferenceDSL.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/PreferenceDSL.kt @@ -9,6 +9,7 @@ import com.afollestad.materialdialogs.list.listItems import com.afollestad.materialdialogs.list.listItemsSingleChoice import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.getOrDefault +import eu.kanade.tachiyomi.widget.preference.ExtensionPreference import eu.kanade.tachiyomi.widget.preference.IntListMatPreference import eu.kanade.tachiyomi.widget.preference.IntListPreference import eu.kanade.tachiyomi.widget.preference.ListMatPreference @@ -29,6 +30,10 @@ inline fun PreferenceGroup.preference(block: (@DSL Preference).() -> Unit): Pref return initThenAdd(Preference(context), block) } +inline fun PreferenceGroup.extensionPreference(block: (@DSL Preference).() -> Unit): ExtensionPreference { + return initThenAdd(ExtensionPreference(context), block) +} + inline fun PreferenceGroup.switchPreference(block: (@DSL SwitchPreferenceCompat).() -> Unit): SwitchPreferenceCompat { return initThenAdd(SwitchPreferenceCompat(context), block) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt index 34cb4ab6c1..32bdc4f5d6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt @@ -18,20 +18,11 @@ class SettingsMainController : SettingsController() { titleRes = R.string.label_settings val tintColor = context.getResourceColor(R.attr.colorAccent) - val preferencesH: PreferencesHelper by injectLazy() - val updateCount = preferencesH.extensionUpdatesCount().getOrDefault() - preference { + extensionPreference { iconRes = R.drawable.ic_extension_black_24dp iconTint = tintColor - if (updateCount == 0) { - titleRes = R.string.label_extensions - } - else { - title = "${resources?.getString(R.string.label_extensions)} ${resources - ?.getQuantityString(R.plurals.extensions_updates_pendings, updateCount, - updateCount)}" - } + titleRes = R.string.label_extensions onClick { navigateTo(ExtensionController()) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt index d78609b60c..2167c9d77b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/WebViewActivity.kt @@ -71,6 +71,7 @@ class WebViewActivity : BaseActivity() { toolbar.setNavigationOnClickListener { super.onBackPressed() } + toolbar.navigationIcon?.setTint(getResourceColor(R.attr.actionBarTintColor)) val container:ViewGroup = findViewById(R.id.web_view_layout) val content: LinearLayout = findViewById(R.id.web_linear_layout) @@ -192,26 +193,34 @@ class WebViewActivity : BaseActivity() { override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) + val currentNightMode = newConfig.uiMode and Configuration.UI_MODE_NIGHT_MASK + val lightMode = currentNightMode == Configuration.UI_MODE_NIGHT_NO window.statusBarColor = getResourceColor(R.attr.colorPrimary) toolbar.setBackgroundColor(getResourceColor(R.attr.colorPrimary)) + toolbar.popupTheme = if (lightMode) R.style.ThemeOverlay_MaterialComponents else R + .style.ThemeOverlay_MaterialComponents_Dark + val tintColor = getResourceColor(R.attr.actionBarTintColor) + toolbar.navigationIcon?.setTint(tintColor) + toolbar.overflowIcon?.mutate() + toolbar.setTitleTextColor(tintColor) + toolbar.overflowIcon?.setTint(tintColor) + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) window.navigationBarColor = getResourceColor(android.R.attr.colorPrimary) else if (window.navigationBarColor != getColor(android.R.color.transparent)) window.navigationBarColor = getResourceColor(android.R.attr.colorBackground) - val currentNightMode = newConfig.uiMode and Configuration.UI_MODE_NIGHT_MASK - if (Build.VERSION.SDK_INT >= 26) { - if (currentNightMode == Configuration.UI_MODE_NIGHT_NO) { - web_linear_layout.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR - } else { - web_linear_layout.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or + web_linear_layout.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && lightMode) { + web_linear_layout.systemUiVisibility = web_linear_layout.systemUiVisibility.or(View + .SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR) } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && currentNightMode == Configuration - .UI_MODE_NIGHT_NO && preferences.theme() >= 8) - web_linear_layout.systemUiVisibility.or(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && lightMode && preferences.theme() >= 8) + web_linear_layout.systemUiVisibility = web_linear_layout.systemUiVisibility + .or(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) + invalidateOptionsMenu() } /** @@ -230,9 +239,10 @@ class WebViewActivity : BaseActivity() { val hasHistory = webview.canGoBack() || webview.canGoForward() backItem?.isVisible = hasHistory forwardItem?.isVisible = hasHistory - val translucentWhite = ColorUtils.setAlphaComponent(Color.WHITE, 127) - backItem.icon?.setTint(if (webview.canGoBack()) Color.WHITE else translucentWhite) - forwardItem?.icon?.setTint(if (webview.canGoForward()) Color.WHITE else translucentWhite) + val tintColor = getResourceColor(R.attr.actionBarTintColor) + val translucentWhite = ColorUtils.setAlphaComponent(tintColor, 127) + backItem.icon?.setTint(if (webview.canGoBack()) tintColor else translucentWhite) + forwardItem?.icon?.setTint(if (webview.canGoForward()) tintColor else translucentWhite) return super.onPrepareOptionsMenu(menu) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/ExtensionPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/ExtensionPreference.kt new file mode 100644 index 0000000000..00d16a3a22 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/ExtensionPreference.kt @@ -0,0 +1,44 @@ +package eu.kanade.tachiyomi.widget.preference + +import android.content.Context +import androidx.preference.Preference +import androidx.preference.PreferenceViewHolder +import android.util.AttributeSet +import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.data.preference.getOrDefault +import eu.kanade.tachiyomi.util.gone +import eu.kanade.tachiyomi.util.visible +import kotlinx.android.synthetic.main.preference_update_text.view.* +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get + +class ExtensionPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + Preference(context, attrs) { + + init { + widgetLayoutResource = R.layout.preference_update_text + } + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + + val extUpdateText = holder.itemView.textView + + val updates = Injekt.get().extensionUpdatesCount().getOrDefault() + if (updates > 0) { + extUpdateText.text = context.resources.getQuantityString(R.plurals + .extensions_updates_available, updates, updates) + extUpdateText.visible() + } + else { + extUpdateText.text = null + extUpdateText.gone() + } + } + + override public fun notifyChanged() { + super.notifyChanged() + } + +} diff --git a/app/src/main/res/drawable/button_bg_transparent.xml b/app/src/main/res/drawable/button_bg_transparent.xml index c23d7a920d..8fc57a2aee 100644 --- a/app/src/main/res/drawable/button_bg_transparent.xml +++ b/app/src/main/res/drawable/button_bg_transparent.xml @@ -1,9 +1,9 @@ - + - + @@ -15,11 +15,11 @@ - + - + diff --git a/app/src/main/res/drawable/button_text_state.xml b/app/src/main/res/drawable/button_text_state.xml new file mode 100644 index 0000000000..67d93fbdf9 --- /dev/null +++ b/app/src/main/res/drawable/button_text_state.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_chevron_right_white_24dp.xml b/app/src/main/res/drawable/ic_chevron_right_white_24dp.xml index 36b411acea..df58d8e473 100644 --- a/app/src/main/res/drawable/ic_chevron_right_white_24dp.xml +++ b/app/src/main/res/drawable/ic_chevron_right_white_24dp.xml @@ -2,7 +2,8 @@ android:width="24dp" android:height="24dp" android:viewportWidth="24.0" - android:viewportHeight="24.0"> + android:viewportHeight="24.0" + android:tint="?attr/actionBarTintColor"> diff --git a/app/src/main/res/drawable/ic_expand_more_white_24dp.xml b/app/src/main/res/drawable/ic_expand_more_white_24dp.xml index fd3ce4a468..89a9bc5175 100644 --- a/app/src/main/res/drawable/ic_expand_more_white_24dp.xml +++ b/app/src/main/res/drawable/ic_expand_more_white_24dp.xml @@ -2,7 +2,8 @@ android:width="24dp" android:height="24dp" android:viewportWidth="24.0" - android:viewportHeight="24.0"> + android:viewportHeight="24.0" + android:tint="?attr/actionBarTintColor"> diff --git a/app/src/main/res/drawable/ic_select_all_white_24dp.xml b/app/src/main/res/drawable/ic_select_all_white_24dp.xml index 0fc49c9237..b3dc6b3583 100644 --- a/app/src/main/res/drawable/ic_select_all_white_24dp.xml +++ b/app/src/main/res/drawable/ic_select_all_white_24dp.xml @@ -2,7 +2,8 @@ android:width="24dp" android:height="24dp" android:viewportWidth="24.0" - android:viewportHeight="24.0"> + android:viewportHeight="24.0" + android:tint="?attr/actionBarTintColor"> diff --git a/app/src/main/res/drawable/ic_sort_white_24dp.xml b/app/src/main/res/drawable/ic_sort_white_24dp.xml index a0c153ad01..5e666748a9 100644 --- a/app/src/main/res/drawable/ic_sort_white_24dp.xml +++ b/app/src/main/res/drawable/ic_sort_white_24dp.xml @@ -2,7 +2,8 @@ android:width="24dp" android:height="24dp" android:viewportWidth="24.0" - android:viewportHeight="24.0"> + android:viewportHeight="24.0" + android:tint="?attr/actionBarTintColor"> diff --git a/app/src/main/res/drawable/ic_swap_calls_white_24dp.xml b/app/src/main/res/drawable/ic_swap_calls_white_24dp.xml new file mode 100644 index 0000000000..141acfc7ce --- /dev/null +++ b/app/src/main/res/drawable/ic_swap_calls_white_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/extension_card_item.xml b/app/src/main/res/layout/extension_card_item.xml index 016ee06fc2..618c34854b 100644 --- a/app/src/main/res/layout/extension_card_item.xml +++ b/app/src/main/res/layout/extension_card_item.xml @@ -68,13 +68,13 @@