Initial Material 3 theming

This commit is contained in:
Zakhar Timoshenko
2022-01-16 17:53:03 +03:00
parent ba30690d26
commit eed8ef7010
122 changed files with 654 additions and 626 deletions

View File

@@ -20,7 +20,7 @@
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/Theme.Kotatsu"
android:networkSecurityConfig="@xml/network_security_config" android:networkSecurityConfig="@xml/network_security_config"
tools:ignore="UnusedAttribute"> tools:ignore="UnusedAttribute">
<activity <activity

View File

@@ -5,9 +5,9 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.annotation.CallSuper import androidx.annotation.CallSuper
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.viewbinding.ViewBinding import androidx.viewbinding.ViewBinding
import com.google.android.material.dialog.MaterialAlertDialogBuilder
abstract class AlertDialogFragment<B : ViewBinding> : DialogFragment() { abstract class AlertDialogFragment<B : ViewBinding> : DialogFragment() {
@@ -20,7 +20,7 @@ abstract class AlertDialogFragment<B : ViewBinding> : DialogFragment() {
val inflater = activity?.layoutInflater ?: LayoutInflater.from(requireContext()) val inflater = activity?.layoutInflater ?: LayoutInflater.from(requireContext())
val binding = onInflateView(inflater, null) val binding = onInflateView(inflater, null)
viewBinding = binding viewBinding = binding
return AlertDialog.Builder(requireContext(), theme) return MaterialAlertDialogBuilder(requireContext(), theme)
.setView(binding.root) .setView(binding.root)
.also(::onBuildDialog) .also(::onBuildDialog)
.create() .create()
@@ -38,7 +38,7 @@ abstract class AlertDialogFragment<B : ViewBinding> : DialogFragment() {
super.onDestroyView() super.onDestroyView()
} }
open fun onBuildDialog(builder: AlertDialog.Builder) = Unit open fun onBuildDialog(builder: MaterialAlertDialogBuilder) = Unit
protected fun bindingOrNull(): B? = viewBinding protected fun bindingOrNull(): B? = viewBinding

View File

@@ -36,7 +36,7 @@ abstract class BaseActivity<B : ViewBinding> : AppCompatActivity(), OnApplyWindo
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
if (get<AppSettings>().isAmoledTheme) { if (get<AppSettings>().isAmoledTheme) {
setTheme(R.style.AppTheme_AMOLED) setTheme(R.style.ThemeOverlay_Kotatsu_AMOLED)
} }
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false) WindowCompat.setDecorFitsSystemWindows(window, false)

View File

@@ -34,7 +34,7 @@ abstract class BaseBottomSheet<B : ViewBinding> :
} }
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return if (resources.getBoolean(R.bool.is_tablet)) { return if (resources.getBoolean(R.bool.isTablet)) {
AppCompatDialog(context, theme) AppCompatDialog(context, theme)
} else super.onCreateDialog(savedInstanceState) } else super.onCreateDialog(savedInstanceState)
} }

View File

@@ -6,6 +6,7 @@ import android.view.LayoutInflater
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koitharu.kotatsu.databinding.DialogCheckboxBinding import org.koitharu.kotatsu.databinding.DialogCheckboxBinding
class CheckBoxAlertDialog private constructor(private val delegate: AlertDialog) : class CheckBoxAlertDialog private constructor(private val delegate: AlertDialog) :
@@ -17,7 +18,7 @@ class CheckBoxAlertDialog private constructor(private val delegate: AlertDialog)
private val binding = DialogCheckboxBinding.inflate(LayoutInflater.from(context)) private val binding = DialogCheckboxBinding.inflate(LayoutInflater.from(context))
private val delegate = AlertDialog.Builder(context) private val delegate = MaterialAlertDialogBuilder(context)
.setView(binding.root) .setView(binding.root)
fun setTitle(@StringRes titleResId: Int): Builder { fun setTitle(@StringRes titleResId: Int): Builder {

View File

@@ -7,6 +7,7 @@ import android.view.ViewGroup
import android.widget.BaseAdapter import android.widget.BaseAdapter
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.databinding.ItemStorageBinding import org.koitharu.kotatsu.databinding.ItemStorageBinding
import org.koitharu.kotatsu.local.domain.LocalMangaRepository import org.koitharu.kotatsu.local.domain.LocalMangaRepository
@@ -23,7 +24,7 @@ class StorageSelectDialog private constructor(private val delegate: AlertDialog)
class Builder(context: Context, defaultValue: File?, listener: OnStorageSelectListener) { class Builder(context: Context, defaultValue: File?, listener: OnStorageSelectListener) {
private val adapter = VolumesAdapter(context) private val adapter = VolumesAdapter(context)
private val delegate = AlertDialog.Builder(context) private val delegate = MaterialAlertDialogBuilder(context)
init { init {
if (adapter.isEmpty) { if (adapter.isEmpty) {

View File

@@ -6,6 +6,7 @@ import android.text.InputFilter
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koitharu.kotatsu.databinding.DialogInputBinding import org.koitharu.kotatsu.databinding.DialogInputBinding
class TextInputDialog private constructor( class TextInputDialog private constructor(
@@ -18,7 +19,7 @@ class TextInputDialog private constructor(
private val binding = DialogInputBinding.inflate(LayoutInflater.from(context)) private val binding = DialogInputBinding.inflate(LayoutInflater.from(context))
private val delegate = AlertDialog.Builder(context) private val delegate = MaterialAlertDialogBuilder(context)
.setView(binding.root) .setView(binding.root)
fun setTitle(@StringRes titleResId: Int): Builder { fun setTitle(@StringRes titleResId: Int): Builder {

View File

@@ -4,7 +4,6 @@ import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View.OnClickListener import android.view.View.OnClickListener
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
import androidx.core.view.children import androidx.core.view.children
import com.google.android.material.chip.Chip import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipDrawable import com.google.android.material.chip.ChipDrawable
@@ -77,7 +76,6 @@ class ChipsView @JvmOverloads constructor(
val chip = Chip(context) val chip = Chip(context)
val drawable = ChipDrawable.createFromAttributes(context, null, 0, R.style.Widget_Kotatsu_Chip) val drawable = ChipDrawable.createFromAttributes(context, null, 0, R.style.Widget_Kotatsu_Chip)
chip.setChipDrawable(drawable) chip.setChipDrawable(drawable)
chip.setTextColor(ContextCompat.getColor(context, R.color.color_primary))
chip.isCloseIconVisible = onChipCloseClickListener != null chip.isCloseIconVisible = onChipCloseClickListener != null
chip.setOnCloseIconClickListener(chipOnCloseListener) chip.setOnCloseIconClickListener(chipOnCloseListener)
chip.setEnsureMinTouchTargetSize(false) chip.setEnsureMinTouchTargetSize(false)

View File

@@ -8,9 +8,9 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.webkit.CookieManager import android.webkit.CookieManager
import android.webkit.WebSettings import android.webkit.WebSettings
import androidx.appcompat.app.AlertDialog
import androidx.core.view.isInvisible import androidx.core.view.isInvisible
import androidx.fragment.app.setFragmentResult import androidx.fragment.app.setFragmentResult
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koin.android.ext.android.get import org.koin.android.ext.android.get
import org.koitharu.kotatsu.base.ui.AlertDialogFragment import org.koitharu.kotatsu.base.ui.AlertDialogFragment
import org.koitharu.kotatsu.core.network.UserAgentInterceptor import org.koitharu.kotatsu.core.network.UserAgentInterceptor
@@ -52,7 +52,7 @@ class CloudFlareDialog : AlertDialogFragment<FragmentCloudflareBinding>(), Cloud
super.onDestroyView() super.onDestroyView()
} }
override fun onBuildDialog(builder: AlertDialog.Builder) { override fun onBuildDialog(builder: MaterialAlertDialogBuilder) {
builder.setNegativeButton(android.R.string.cancel, null) builder.setNegativeButton(android.R.string.cancel, null)
} }

View File

@@ -164,6 +164,7 @@ class AppSettings private constructor(private val prefs: SharedPreferences) :
const val KEY_LIST_MODE = "list_mode_2" const val KEY_LIST_MODE = "list_mode_2"
const val KEY_APP_SECTION = "app_section" const val KEY_APP_SECTION = "app_section"
const val KEY_THEME = "theme" const val KEY_THEME = "theme"
const val KEY_DYNAMIC_THEME = "dynamic_theme"
const val KEY_THEME_AMOLED = "amoled_theme" const val KEY_THEME_AMOLED = "amoled_theme"
const val KEY_DATE_FORMAT = "date_format" const val KEY_DATE_FORMAT = "date_format"
const val KEY_HIDE_TOOLBAR = "hide_toolbar" const val KEY_HIDE_TOOLBAR = "hide_toolbar"

View File

@@ -6,15 +6,17 @@ import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.view.ActionMode import androidx.appcompat.view.ActionMode
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.content.pm.ShortcutManagerCompat
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.net.toFile import androidx.core.net.toFile
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
@@ -94,11 +96,15 @@ class DetailsActivity : BaseActivity<ActivityDetailsBinding>(),
binding.snackbar.updatePadding( binding.snackbar.updatePadding(
bottom = insets.bottom bottom = insets.bottom
) )
binding.toolbar.updatePadding( with(binding.toolbar) {
top = insets.top, updatePadding(
left = insets.left, left = insets.left,
right = insets.right right = insets.right
) )
updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = insets.top
}
}
if (binding.tabs.parent !is Toolbar) { if (binding.tabs.parent !is Toolbar) {
binding.tabs.updatePadding( binding.tabs.updatePadding(
left = insets.left, left = insets.left,
@@ -149,7 +155,7 @@ class DetailsActivity : BaseActivity<ActivityDetailsBinding>(),
} }
R.id.action_delete -> { R.id.action_delete -> {
viewModel.manga.value?.let { m -> viewModel.manga.value?.let { m ->
AlertDialog.Builder(this) MaterialAlertDialogBuilder(this)
.setTitle(R.string.delete_manga) .setTitle(R.string.delete_manga)
.setMessage(getString(R.string.text_delete_local_manga, m.title)) .setMessage(getString(R.string.text_delete_local_manga, m.title))
.setPositiveButton(R.string.delete) { _, _ -> .setPositiveButton(R.string.delete) { _, _ ->
@@ -164,7 +170,7 @@ class DetailsActivity : BaseActivity<ActivityDetailsBinding>(),
viewModel.manga.value?.let { viewModel.manga.value?.let {
val chaptersCount = it.chapters?.size ?: 0 val chaptersCount = it.chapters?.size ?: 0
if (chaptersCount > 5) { if (chaptersCount > 5) {
AlertDialog.Builder(this) MaterialAlertDialogBuilder(this)
.setTitle(R.string.save_manga) .setTitle(R.string.save_manga)
.setMessage( .setMessage(
getString( getString(

View File

@@ -44,7 +44,7 @@ class DetailsFragment : BaseFragment<FragmentDetailsBinding>(), View.OnClickList
override fun onInflateView( override fun onInflateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup? container: ViewGroup?,
) = FragmentDetailsBinding.inflate(inflater, container, false) ) = FragmentDetailsBinding.inflate(inflater, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -76,13 +76,17 @@ class DetailsFragment : BaseFragment<FragmentDetailsBinding>(), View.OnClickList
MangaState.FINISHED -> { MangaState.FINISHED -> {
textViewState.apply { textViewState.apply {
textAndVisible = resources.getString(R.string.state_finished) textAndVisible = resources.getString(R.string.state_finished)
drawableStart = ResourcesCompat.getDrawable(resources, R.drawable.ic_state_finished, context.theme) drawableStart = ResourcesCompat.getDrawable(resources,
R.drawable.ic_state_finished,
context.theme)
} }
} }
MangaState.ONGOING -> { MangaState.ONGOING -> {
textViewState.apply { textViewState.apply {
textAndVisible = resources.getString(R.string.state_ongoing) textAndVisible = resources.getString(R.string.state_ongoing)
drawableStart = ResourcesCompat.getDrawable(resources, R.drawable.ic_state_ongoing, context.theme) drawableStart = ResourcesCompat.getDrawable(resources,
R.drawable.ic_state_ongoing,
context.theme)
} }
} }
else -> textViewState.isVisible = false else -> textViewState.isVisible = false

View File

@@ -3,8 +3,10 @@ package org.koitharu.kotatsu.download.ui
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.ViewGroup
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flatMapLatest
@@ -45,11 +47,15 @@ class DownloadsActivity : BaseActivity<ActivityDownloadsBinding>() {
right = insets.right, right = insets.right,
bottom = insets.bottom bottom = insets.bottom
) )
binding.toolbar.updatePadding( with(binding.toolbar) {
left = insets.left, updatePadding(
right = insets.right, left = insets.left,
top = insets.top right = insets.right
) )
updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = insets.top
}
}
} }
companion object { companion object {

View File

@@ -24,6 +24,7 @@ import org.koitharu.kotatsu.core.model.FavouriteCategory
import org.koitharu.kotatsu.core.model.SortOrder import org.koitharu.kotatsu.core.model.SortOrder
import org.koitharu.kotatsu.databinding.ActivityCategoriesBinding import org.koitharu.kotatsu.databinding.ActivityCategoriesBinding
import org.koitharu.kotatsu.utils.ext.getDisplayMessage import org.koitharu.kotatsu.utils.ext.getDisplayMessage
import org.koitharu.kotatsu.utils.ext.measureHeight
import org.koitharu.kotatsu.utils.ext.showPopupMenu import org.koitharu.kotatsu.utils.ext.showPopupMenu
class CategoriesActivity : BaseActivity<ActivityCategoriesBinding>(), class CategoriesActivity : BaseActivity<ActivityCategoriesBinding>(),
@@ -40,7 +41,6 @@ class CategoriesActivity : BaseActivity<ActivityCategoriesBinding>(),
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(ActivityCategoriesBinding.inflate(layoutInflater)) setContentView(ActivityCategoriesBinding.inflate(layoutInflater))
supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayHomeAsUpEnabled(true)
binding.fabAdd.imageTintList = ColorStateList.valueOf(Color.WHITE)
adapter = CategoriesAdapter(this) adapter = CategoriesAdapter(this)
editDelegate = CategoriesEditDelegate(this, this) editDelegate = CategoriesEditDelegate(this, this)
binding.recyclerView.addItemDecoration(DividerItemDecoration(this, RecyclerView.VERTICAL)) binding.recyclerView.addItemDecoration(DividerItemDecoration(this, RecyclerView.VERTICAL))
@@ -93,13 +93,17 @@ class CategoriesActivity : BaseActivity<ActivityCategoriesBinding>(),
binding.recyclerView.updatePadding( binding.recyclerView.updatePadding(
left = insets.left, left = insets.left,
right = insets.right, right = insets.right,
bottom = insets.bottom bottom = 2 * insets.bottom + binding.fabAdd.measureHeight()
)
binding.toolbar.updatePadding(
left = insets.left,
right = insets.right,
top = insets.top
) )
with(binding.toolbar) {
updatePadding(
left = insets.left,
right = insets.right
)
updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = insets.top
}
}
} }
private fun onCategoriesChanged(categories: List<FavouriteCategory>) { private fun onCategoriesChanged(categories: List<FavouriteCategory>) {

View File

@@ -3,7 +3,7 @@ package org.koitharu.kotatsu.favourites.ui.categories
import android.content.Context import android.content.Context
import android.text.InputType import android.text.InputType
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AlertDialog import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.dialog.TextInputDialog import org.koitharu.kotatsu.base.ui.dialog.TextInputDialog
import org.koitharu.kotatsu.core.model.FavouriteCategory import org.koitharu.kotatsu.core.model.FavouriteCategory
@@ -14,7 +14,7 @@ class CategoriesEditDelegate(
) { ) {
fun deleteCategory(category: FavouriteCategory) { fun deleteCategory(category: FavouriteCategory) {
AlertDialog.Builder(context) MaterialAlertDialogBuilder(context)
.setMessage(context.getString(R.string.category_delete_confirm, category.title)) .setMessage(context.getString(R.string.category_delete_confirm, category.title))
.setTitle(R.string.remove_category) .setTitle(R.string.remove_category)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)

View File

@@ -5,7 +5,7 @@ import android.view.Menu
import android.view.MenuInflater import android.view.MenuInflater
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import androidx.appcompat.app.AlertDialog import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
@@ -42,7 +42,7 @@ class HistoryListFragment : MangaListFragment() {
override fun onOptionsItemSelected(item: MenuItem): Boolean { override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) { return when (item.itemId) {
R.id.action_clear_history -> { R.id.action_clear_history -> {
AlertDialog.Builder(context ?: return false) MaterialAlertDialogBuilder(context ?: return false)
.setTitle(R.string.clear_history) .setTitle(R.string.clear_history)
.setMessage(R.string.text_clear_history_prompt) .setMessage(R.string.text_clear_history_prompt)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)

View File

@@ -5,9 +5,11 @@ import android.content.Intent
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.graphics.drawable.toBitmap import androidx.core.graphics.drawable.toBitmap
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import coil.ImageLoader import coil.ImageLoader
import coil.request.CachePolicy import coil.request.CachePolicy
@@ -36,11 +38,15 @@ class ImageActivity : BaseActivity<ActivityImageBinding>() {
} }
override fun onWindowInsetsChanged(insets: Insets) { override fun onWindowInsetsChanged(insets: Insets) {
binding.toolbar.updatePadding( with(binding.toolbar) {
left = insets.left, updatePadding(
right = insets.right, left = insets.left,
top = insets.top, right = insets.right
) )
updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = insets.top
}
}
} }
private fun loadImage(url: Uri?) { private fun loadImage(url: Uri?) {

View File

@@ -5,9 +5,9 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.SeekBar import android.widget.SeekBar
import androidx.appcompat.app.AlertDialog
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.AlertDialogFragment import org.koitharu.kotatsu.base.ui.AlertDialogFragment
@@ -34,7 +34,7 @@ class ListModeSelectDialog : AlertDialogFragment<DialogListModeBinding>(), View.
container: ViewGroup? container: ViewGroup?
) = DialogListModeBinding.inflate(inflater, container, false) ) = DialogListModeBinding.inflate(inflater, container, false)
override fun onBuildDialog(builder: AlertDialog.Builder) { override fun onBuildDialog(builder: MaterialAlertDialogBuilder) {
builder.setTitle(R.string.list_mode) builder.setTitle(R.string.list_mode)
.setPositiveButton(R.string.done, null) .setPositiveButton(R.string.done, null)
.setCancelable(true) .setCancelable(true)

View File

@@ -21,7 +21,6 @@ import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.BaseFragment import org.koitharu.kotatsu.base.ui.BaseFragment
import org.koitharu.kotatsu.base.ui.list.OnListItemClickListener import org.koitharu.kotatsu.base.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.base.ui.list.PaginationScrollListener import org.koitharu.kotatsu.base.ui.list.PaginationScrollListener
import org.koitharu.kotatsu.base.ui.list.decor.ItemTypeDividerDecoration
import org.koitharu.kotatsu.base.ui.list.decor.SpacingItemDecoration import org.koitharu.kotatsu.base.ui.list.decor.SpacingItemDecoration
import org.koitharu.kotatsu.browser.cloudflare.CloudFlareDialog import org.koitharu.kotatsu.browser.cloudflare.CloudFlareDialog
import org.koitharu.kotatsu.core.exceptions.CloudFlareProtectedException import org.koitharu.kotatsu.core.exceptions.CloudFlareProtectedException
@@ -85,10 +84,8 @@ abstract class MangaListFragment : BaseFragment<FragmentListBinding>(),
addOnScrollListener(paginationListener!!) addOnScrollListener(paginationListener!!)
} }
with(binding.swipeRefreshLayout) { with(binding.swipeRefreshLayout) {
setColorSchemeColors( setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.kotatsu_primary))
ContextCompat.getColor(context, R.color.color_primary), setColorSchemeColors(ContextCompat.getColor(context, R.color.kotatsu_onPrimary))
ContextCompat.getColor(context, R.color.color_primary_variant)
)
setOnRefreshListener(this@MangaListFragment) setOnRefreshListener(this@MangaListFragment)
isEnabled = isSwipeRefreshEnabled isEnabled = isSwipeRefreshEnabled
} }

View File

@@ -9,7 +9,7 @@ import android.view.MenuItem
import android.view.View import android.view.View
import androidx.activity.result.ActivityResultCallback import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koitharu.kotatsu.BuildConfig import org.koitharu.kotatsu.BuildConfig
@@ -98,7 +98,7 @@ class LocalListFragment : MangaListFragment(), ActivityResultCallback<Uri?> {
override fun onPopupMenuItemSelected(item: MenuItem, data: Manga): Boolean { override fun onPopupMenuItemSelected(item: MenuItem, data: Manga): Boolean {
return when (item.itemId) { return when (item.itemId) {
R.id.action_delete -> { R.id.action_delete -> {
AlertDialog.Builder(context ?: return false) MaterialAlertDialogBuilder(context ?: return false)
.setTitle(R.string.delete_manga) .setTitle(R.string.delete_manga)
.setMessage(getString(R.string.text_delete_local_manga, data.title)) .setMessage(getString(R.string.text_delete_local_manga, data.title))
.setPositiveButton(R.string.delete) { _, _ -> .setPositiveButton(R.string.delete) { _, _ ->

View File

@@ -1,17 +1,13 @@
package org.koitharu.kotatsu.main.ui package org.koitharu.kotatsu.main.ui
import android.app.ActivityOptions import android.app.ActivityOptions
import android.content.res.ColorStateList
import android.content.res.Configuration import android.content.res.Configuration
import android.graphics.Color
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup.MarginLayoutParams import android.view.ViewGroup.MarginLayoutParams
import androidx.appcompat.app.ActionBarDrawerToggle import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.view.* import androidx.core.view.*
@@ -21,8 +17,8 @@ import androidx.fragment.app.FragmentTransaction
import androidx.fragment.app.commit import androidx.fragment.app.commit
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.CircularProgressDrawable import androidx.swiperefreshlayout.widget.CircularProgressDrawable
import androidx.transition.TransitionManager
import com.google.android.material.appbar.AppBarLayout import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.navigation.NavigationView import com.google.android.material.navigation.NavigationView
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import org.koin.android.ext.android.get import org.koin.android.ext.android.get
@@ -32,7 +28,6 @@ import org.koitharu.kotatsu.base.ui.BaseActivity
import org.koitharu.kotatsu.core.model.Manga import org.koitharu.kotatsu.core.model.Manga
import org.koitharu.kotatsu.core.model.MangaSource import org.koitharu.kotatsu.core.model.MangaSource
import org.koitharu.kotatsu.core.prefs.AppSection import org.koitharu.kotatsu.core.prefs.AppSection
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.databinding.ActivityMainBinding import org.koitharu.kotatsu.databinding.ActivityMainBinding
import org.koitharu.kotatsu.databinding.NavigationHeaderBinding import org.koitharu.kotatsu.databinding.NavigationHeaderBinding
import org.koitharu.kotatsu.details.ui.DetailsActivity import org.koitharu.kotatsu.details.ui.DetailsActivity
@@ -62,7 +57,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
private lateinit var navHeaderBinding: NavigationHeaderBinding private lateinit var navHeaderBinding: NavigationHeaderBinding
private lateinit var drawerToggle: ActionBarDrawerToggle private lateinit var drawerToggle: ActionBarDrawerToggle
private var searchViewElevation = 0f
override val appBar: AppBarLayout override val appBar: AppBarLayout
get() = binding.appbar get() = binding.appbar
@@ -70,7 +64,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(ActivityMainBinding.inflate(layoutInflater)) setContentView(ActivityMainBinding.inflate(layoutInflater))
searchViewElevation = binding.toolbarCard.cardElevation
navHeaderBinding = NavigationHeaderBinding.inflate(layoutInflater) navHeaderBinding = NavigationHeaderBinding.inflate(layoutInflater)
drawerToggle = ActionBarDrawerToggle( drawerToggle = ActionBarDrawerToggle(
this, this,
@@ -87,13 +80,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
binding.drawer.addDrawerListener(drawerToggle) binding.drawer.addDrawerListener(drawerToggle)
supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayHomeAsUpEnabled(true)
if (get<AppSettings>().isAmoledTheme && get<AppSettings>().theme == AppCompatDelegate.MODE_NIGHT_YES) {
binding.appbar.setBackgroundColor(Color.BLACK)
binding.toolbar.setBackgroundColor(ContextCompat.getColor(this, R.color.color_background))
} else {
binding.toolbar.setBackgroundColor(ContextCompat.getColor(this, R.color.color_surface))
}
with(binding.searchView) { with(binding.searchView) {
onFocusChangeListener = this@MainActivity onFocusChangeListener = this@MainActivity
searchSuggestionListener = this@MainActivity searchSuggestionListener = this@MainActivity
@@ -110,14 +96,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
insets insets
} }
addHeaderView(navHeaderBinding.root) addHeaderView(navHeaderBinding.root)
itemBackground = navigationItemBackground(context)
setNavigationItemSelectedListener(this@MainActivity) setNavigationItemSelectedListener(this@MainActivity)
} }
with(binding.fab) { binding.fab.setOnClickListener(this@MainActivity)
imageTintList = ColorStateList.valueOf(Color.WHITE)
setOnClickListener(this@MainActivity)
}
supportFragmentManager.findFragmentByTag(TAG_PRIMARY)?.let { supportFragmentManager.findFragmentByTag(TAG_PRIMARY)?.let {
binding.fab.isVisible = it is HistoryListFragment binding.fab.isVisible = it is HistoryListFragment
@@ -263,7 +245,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
} }
override fun onClearSearchHistory() { override fun onClearSearchHistory() {
AlertDialog.Builder(this) MaterialAlertDialogBuilder(this)
.setTitle(R.string.clear_search_history) .setTitle(R.string.clear_search_history)
.setMessage(R.string.text_clear_search_history_prompt) .setMessage(R.string.text_clear_search_history_prompt)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
@@ -294,7 +276,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
binding.fab.isEnabled = !isLoading binding.fab.isEnabled = !isLoading
if (isLoading) { if (isLoading) {
binding.fab.setImageDrawable(CircularProgressDrawable(this).also { binding.fab.setImageDrawable(CircularProgressDrawable(this).also {
it.setColorSchemeColors(Color.WHITE) it.setColorSchemeColors(R.color.kotatsu_onPrimaryContainer)
it.strokeWidth = resources.resolveDp(2f) it.strokeWidth = resources.resolveDp(2f)
it.start() it.start()
}) })
@@ -344,42 +326,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
private fun onSearchOpened() { private fun onSearchOpened() {
binding.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) binding.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
drawerToggle.isDrawerIndicatorEnabled = false drawerToggle.isDrawerIndicatorEnabled = false
TransitionManager.beginDelayedTransition(binding.appbar)
// Avoiding shadows on the sides if the color is transparent, so we make the AppBarLayout white/grey/black
if (isDarkAmoledTheme()) {
binding.toolbar.setBackgroundColor(Color.BLACK)
} else {
binding.appbar.setBackgroundColor(ContextCompat.getColor(this, R.color.color_surface))
}
binding.toolbarCard.apply {
cardElevation = 0f
// Remove margin
updateLayoutParams<MarginLayoutParams> {
leftMargin = 0
rightMargin = 0
}
}
binding.appbar.elevation = searchViewElevation
} }
private fun onSearchClosed() { private fun onSearchClosed() {
binding.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED) binding.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
drawerToggle.isDrawerIndicatorEnabled = true drawerToggle.isDrawerIndicatorEnabled = true
if (isDarkAmoledTheme()) {
binding.toolbar.setBackgroundColor(ContextCompat.getColor(this, R.color.color_background))
}
TransitionManager.beginDelayedTransition(binding.appbar)
// Returning transparent color
binding.appbar.setBackgroundColor(Color.TRANSPARENT)
binding.appbar.elevation = 0f
binding.toolbarCard.apply {
cardElevation = searchViewElevation
updateLayoutParams<MarginLayoutParams> {
leftMargin = resources.resolveDp(16)
rightMargin = resources.resolveDp(16)
}
}
} }
private fun onFirstStart() { private fun onFirstStart() {

View File

@@ -4,11 +4,11 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koin.android.ext.android.get import org.koin.android.ext.android.get
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.AlertDialogFragment import org.koitharu.kotatsu.base.ui.AlertDialogFragment
@@ -30,7 +30,7 @@ class ChaptersDialog : AlertDialogFragment<DialogChaptersBinding>(),
container: ViewGroup?, container: ViewGroup?,
) = DialogChaptersBinding.inflate(inflater, container, false) ) = DialogChaptersBinding.inflate(inflater, container, false)
override fun onBuildDialog(builder: AlertDialog.Builder) { override fun onBuildDialog(builder: MaterialAlertDialogBuilder) {
builder.setTitle(R.string.chapters) builder.setTitle(R.string.chapters)
.setNegativeButton(R.string.close, null) .setNegativeButton(R.string.close, null)
.setCancelable(true) .setCancelable(true)

View File

@@ -10,7 +10,6 @@ import android.view.*
import android.widget.Toast import android.widget.Toast
import androidx.activity.result.ActivityResultCallback import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
@@ -19,6 +18,7 @@ import androidx.core.view.postDelayed
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.commit import androidx.fragment.app.commit
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
@@ -211,7 +211,7 @@ class ReaderActivity : BaseFullscreenActivity<ActivityReaderBinding>(),
} }
private fun onError(e: Throwable) { private fun onError(e: Throwable) {
val dialog = AlertDialog.Builder(this) val dialog = MaterialAlertDialogBuilder(this)
.setTitle(R.string.error_occurred) .setTitle(R.string.error_occurred)
.setMessage(e.getDisplayMessage(resources)) .setMessage(e.getDisplayMessage(resources))
.setPositiveButton(R.string.close, null) .setPositiveButton(R.string.close, null)

View File

@@ -5,8 +5,8 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.AlertDialogFragment import org.koitharu.kotatsu.base.ui.AlertDialogFragment
import org.koitharu.kotatsu.core.prefs.ReaderMode import org.koitharu.kotatsu.core.prefs.ReaderMode
@@ -30,7 +30,7 @@ class ReaderConfigDialog : AlertDialogFragment<DialogReaderConfigBinding>(),
?: ReaderMode.STANDARD ?: ReaderMode.STANDARD
} }
override fun onBuildDialog(builder: AlertDialog.Builder) { override fun onBuildDialog(builder: MaterialAlertDialogBuilder) {
builder.setTitle(R.string.read_mode) builder.setTitle(R.string.read_mode)
.setPositiveButton(R.string.done, null) .setPositiveButton(R.string.done, null)
.setCancelable(true) .setCancelable(true)

View File

@@ -4,7 +4,9 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
import android.view.ViewGroup
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.commit import androidx.fragment.app.commit
import org.koitharu.kotatsu.BuildConfig import org.koitharu.kotatsu.BuildConfig
@@ -38,11 +40,15 @@ class SimpleSettingsActivity : BaseActivity<ActivitySettingsSimpleBinding>() {
} }
override fun onWindowInsetsChanged(insets: Insets) { override fun onWindowInsetsChanged(insets: Insets) {
binding.toolbar.updatePadding( with(binding.toolbar) {
top = insets.top, updatePadding(
left = insets.left, left = insets.left,
right = insets.right right = insets.right
) )
updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = insets.top
}
}
} }
companion object { companion object {

View File

@@ -60,7 +60,7 @@ class PagesThumbnailsSheet : BaseBottomSheet<SheetPagesBinding>(),
binding.toolbar.setNavigationOnClickListener { dismiss() } binding.toolbar.setNavigationOnClickListener { dismiss() }
binding.toolbar.subtitle = null binding.toolbar.subtitle = null
if (!resources.getBoolean(R.bool.is_tablet)) { if (!resources.getBoolean(R.bool.isTablet)) {
binding.toolbar.navigationIcon = null binding.toolbar.navigationIcon = null
} else { } else {
binding.toolbar.subtitle = binding.toolbar.subtitle =

View File

@@ -4,8 +4,10 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
import android.view.ViewGroup
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.commit import androidx.fragment.app.commit
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -44,11 +46,15 @@ class SearchActivity : BaseActivity<ActivitySearchBinding>(), SearchView.OnQuery
} }
override fun onWindowInsetsChanged(insets: Insets) { override fun onWindowInsetsChanged(insets: Insets) {
binding.toolbar.updatePadding( with(binding.toolbar) {
top = insets.top, updatePadding(
left = insets.left, left = insets.left,
right = insets.right right = insets.right
) )
updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = insets.top
}
}
binding.container.updatePadding( binding.container.updatePadding(
bottom = insets.bottom bottom = insets.bottom
) )

View File

@@ -3,7 +3,9 @@ package org.koitharu.kotatsu.search.ui.global
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.ViewGroup
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.BaseActivity import org.koitharu.kotatsu.base.ui.BaseActivity
@@ -31,11 +33,15 @@ class GlobalSearchActivity : BaseActivity<ActivitySearchGlobalBinding>() {
} }
override fun onWindowInsetsChanged(insets: Insets) { override fun onWindowInsetsChanged(insets: Insets) {
binding.toolbar.updatePadding( with(binding.toolbar) {
top = insets.top, updatePadding(
left = insets.left, left = insets.left,
right = insets.right right = insets.right
) )
updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = insets.top
}
}
} }
companion object { companion object {

View File

@@ -7,8 +7,8 @@ import android.content.pm.PackageManager
import android.net.Uri import android.net.Uri
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.annotation.MainThread import androidx.annotation.MainThread
import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -77,7 +77,7 @@ class AppUpdateChecker(private val activity: ComponentActivity) {
@MainThread @MainThread
private fun showUpdateDialog(version: AppVersion) { private fun showUpdateDialog(version: AppVersion) {
AlertDialog.Builder(activity) MaterialAlertDialogBuilder(activity)
.setTitle(R.string.app_update_available) .setTitle(R.string.app_update_available)
.setMessage(buildString { .setMessage(buildString {
append(activity.getString(R.string.new_version_s, version.name)) append(activity.getString(R.string.new_version_s, version.name))

View File

@@ -2,8 +2,8 @@ package org.koitharu.kotatsu.settings
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.appcompat.app.AlertDialog
import androidx.preference.Preference import androidx.preference.Preference
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -119,7 +119,7 @@ class HistorySettingsFragment : BasePreferenceFragment(R.string.history_and_cach
} }
private fun clearSearchHistory(preference: Preference) { private fun clearSearchHistory(preference: Preference) {
AlertDialog.Builder(context ?: return) MaterialAlertDialogBuilder(context ?: return)
.setTitle(R.string.clear_search_history) .setTitle(R.string.clear_search_history)
.setMessage(R.string.text_clear_search_history_prompt) .setMessage(R.string.text_clear_search_history_prompt)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
@@ -138,7 +138,7 @@ class HistorySettingsFragment : BasePreferenceFragment(R.string.history_and_cach
} }
private fun clearCookies() { private fun clearCookies() {
AlertDialog.Builder(context ?: return) MaterialAlertDialogBuilder(context ?: return)
.setTitle(R.string.clear_cookies) .setTitle(R.string.clear_cookies)
.setMessage(R.string.text_clear_cookies_prompt) .setMessage(R.string.text_clear_cookies_prompt)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)

View File

@@ -6,6 +6,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.preference.* import androidx.preference.*
import com.google.android.material.color.DynamicColors
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.BasePreferenceFragment import org.koitharu.kotatsu.base.ui.BasePreferenceFragment
import org.koitharu.kotatsu.base.ui.dialog.StorageSelectDialog import org.koitharu.kotatsu.base.ui.dialog.StorageSelectDialog
@@ -55,6 +56,8 @@ class MainSettingsFragment : BasePreferenceFragment(R.string.settings),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
findPreference<SwitchPreference>(AppSettings.KEY_DYNAMIC_THEME)?.isVisible =
DynamicColors.isDynamicColorAvailable()
findPreference<Preference>(AppSettings.KEY_LOCAL_STORAGE)?.run { findPreference<Preference>(AppSettings.KEY_LOCAL_STORAGE)?.run {
summary = settings.getStorageDir(context)?.getStorageName(context) summary = settings.getStorageDir(context)?.getStorageName(context)
?: getString(R.string.not_available) ?: getString(R.string.not_available)

View File

@@ -3,7 +3,9 @@ package org.koitharu.kotatsu.settings
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.ViewGroup
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.FragmentTransaction
@@ -60,11 +62,15 @@ class SettingsActivity : BaseActivity<ActivitySettingsBinding>(),
} }
override fun onWindowInsetsChanged(insets: Insets) { override fun onWindowInsetsChanged(insets: Insets) {
binding.toolbar.updatePadding( with(binding.toolbar) {
top = insets.top, updatePadding(
left = insets.left, left = insets.left,
right = insets.right right = insets.right
) )
updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = insets.top
}
}
} }
companion object { companion object {

View File

@@ -7,8 +7,8 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.AlertDialogFragment import org.koitharu.kotatsu.base.ui.AlertDialogFragment
@@ -49,13 +49,13 @@ class BackupDialogFragment : AlertDialogFragment<DialogProgressBinding>() {
viewModel.onError.observe(viewLifecycleOwner, this::onError) viewModel.onError.observe(viewLifecycleOwner, this::onError)
} }
override fun onBuildDialog(builder: AlertDialog.Builder) { override fun onBuildDialog(builder: MaterialAlertDialogBuilder) {
builder.setCancelable(false) builder.setCancelable(false)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
} }
private fun onError(e: Throwable) { private fun onError(e: Throwable) {
AlertDialog.Builder(context ?: return) MaterialAlertDialogBuilder(context ?: return)
.setNegativeButton(R.string.close, null) .setNegativeButton(R.string.close, null)
.setTitle(R.string.error) .setTitle(R.string.error)
.setMessage(e.getDisplayMessage(resources)) .setMessage(e.getDisplayMessage(resources))

View File

@@ -5,8 +5,8 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koin.core.parameter.parametersOf import org.koin.core.parameter.parametersOf
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
@@ -39,12 +39,12 @@ class RestoreDialogFragment : AlertDialogFragment<DialogProgressBinding>() {
viewModel.onError.observe(viewLifecycleOwner, this::onError) viewModel.onError.observe(viewLifecycleOwner, this::onError)
} }
override fun onBuildDialog(builder: AlertDialog.Builder) { override fun onBuildDialog(builder: MaterialAlertDialogBuilder) {
builder.setCancelable(false) builder.setCancelable(false)
} }
private fun onError(e: Throwable) { private fun onError(e: Throwable) {
AlertDialog.Builder(context ?: return) MaterialAlertDialogBuilder(context ?: return)
.setNegativeButton(R.string.close, null) .setNegativeButton(R.string.close, null)
.setTitle(R.string.error) .setTitle(R.string.error)
.setMessage(e.getDisplayMessage(resources)) .setMessage(e.getDisplayMessage(resources))
@@ -64,7 +64,7 @@ class RestoreDialogFragment : AlertDialogFragment<DialogProgressBinding>() {
} }
private fun onRestoreDone(result: CompositeResult) { private fun onRestoreDone(result: CompositeResult) {
val builder = AlertDialog.Builder(context ?: return) val builder = MaterialAlertDialogBuilder(context ?: return)
when { when {
result.isAllSuccess -> builder.setTitle(R.string.data_restored) result.isAllSuccess -> builder.setTitle(R.string.data_restored)
.setMessage(R.string.data_restored_success) .setMessage(R.string.data_restored_success)

View File

@@ -5,8 +5,8 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.AlertDialogFragment import org.koitharu.kotatsu.base.ui.AlertDialogFragment
@@ -36,7 +36,7 @@ class OnboardDialogFragment : AlertDialogFragment<DialogOnboardBinding>(),
container: ViewGroup?, container: ViewGroup?,
) = DialogOnboardBinding.inflate(inflater, container, false) ) = DialogOnboardBinding.inflate(inflater, container, false)
override fun onBuildDialog(builder: AlertDialog.Builder) { override fun onBuildDialog(builder: MaterialAlertDialogBuilder) {
builder builder
.setPositiveButton(R.string.done, this) .setPositiveButton(R.string.done, this)
.setCancelable(true) .setCancelable(true)

View File

@@ -2,9 +2,9 @@ package org.koitharu.kotatsu.tracker.ui
import android.os.Bundle import android.os.Bundle
import android.view.* import android.view.*
import androidx.appcompat.app.AlertDialog
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import org.koin.android.ext.android.get import org.koin.android.ext.android.get
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -78,7 +78,7 @@ class FeedFragment : BaseFragment<FragmentFeedBinding>(), PaginationScrollListen
true true
} }
R.id.action_clear_feed -> { R.id.action_clear_feed -> {
AlertDialog.Builder(context ?: return false) MaterialAlertDialogBuilder(context ?: return false)
.setTitle(R.string.clear_updates_feed) .setTitle(R.string.clear_updates_feed)
.setMessage(R.string.text_clear_updates_feed_prompt) .setMessage(R.string.text_clear_updates_feed_prompt)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)

View File

@@ -5,6 +5,7 @@ import android.net.ConnectivityManager
import android.net.Network import android.net.Network
import android.net.NetworkRequest import android.net.NetworkRequest
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.suspendCancellableCoroutine
import kotlin.coroutines.resume import kotlin.coroutines.resume
@@ -23,6 +24,6 @@ suspend fun ConnectivityManager.waitForNetwork(): Network {
} }
} }
inline fun buildAlertDialog(context: Context, block: AlertDialog.Builder.() -> Unit): AlertDialog { inline fun buildAlertDialog(context: Context, block: MaterialAlertDialogBuilder.() -> Unit): AlertDialog {
return AlertDialog.Builder(context).apply(block).create() return MaterialAlertDialogBuilder(context).apply(block).create()
} }

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 34% of 12% = ~4% -->
<item android:alpha="0.34" android:color="?attr/colorControlHighlight" />
</selector>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.2" android:color="?attr/colorAccent" /> <item android:alpha="0.2" android:color="?attr/colorPrimary" />
</selector> </selector>

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="3dp"
android:topRightRadius="3dp"
android:bottomLeftRadius="3dp"
android:bottomRightRadius="3dp"/>
<size android:height="3dp" />
</shape>

View File

@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<corners android:radius="32dp" /> <corners android:radius="32dp" />
<solid android:color="@color/red_accent" /> <solid android:color="?attr/colorTertiary" />
</shape> </shape>

View File

@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<corners android:radius="5dp" /> <corners android:radius="5dp" />
<solid android:color="?android:textColorTertiary" /> <solid android:color="?attr/colorTertiary" />
<padding <padding
android:bottom="2dp" android:bottom="2dp"
android:left="2dp" android:left="2dp"

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
</vector>

View File

@@ -1,7 +1,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="60dp" android:width="60dp"
android:height="60dp" android:height="60dp"
android:tint="?android:textColorTertiary" android:tint="?attr/colorTertiary"
android:viewportWidth="60" android:viewportWidth="60"
android:viewportHeight="60"> android:viewportHeight="60">
<path <path

View File

@@ -2,7 +2,7 @@
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp" android:width="48dp"
android:height="48dp" android:height="48dp"
android:tint="@color/color_primary" android:tint="?attr/colorPrimary"
android:viewportWidth="256" android:viewportWidth="256"
android:viewportHeight="256"> android:viewportHeight="256">
<path <path

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="3dp"
android:topRightRadius="3dp"/>
<size android:height="3dp" />
</shape>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="?android:attr/colorBackground" />
</shape>
</item>
<item
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@color/list_divider" />
</shape>
</item>
</layer-list>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="?attr/colorSurfaceVariant"/>
<corners
android:radius="100dp"/>
</shape>

View File

@@ -30,9 +30,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp" android:layout_margin="8dp"
android:layout_weight="1" android:layout_weight="1">
app:cardCornerRadius="4dp"
app:cardElevation="4dp">
<org.koitharu.kotatsu.base.ui.widgets.CoverImageView <org.koitharu.kotatsu.base.ui.widgets.CoverImageView
android:id="@+id/imageView_cover" android:id="@+id/imageView_cover"
@@ -56,9 +54,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:textAppearance="@style/TextAppearance.AppCompat.Body2" android:textAppearance="?attr/textAppearanceHeadlineSmall"
android:textColor="?android:textColorPrimary"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -70,7 +66,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:ellipsize="end" android:ellipsize="end"
android:textSize="14sp" android:textAppearance="?attr/textAppearanceBodyMedium"
app:layout_constraintEnd_toEndOf="@id/textView_title" app:layout_constraintEnd_toEndOf="@id/textView_title"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView_title" app:layout_constraintTop_toBottomOf="@id/textView_title"
@@ -83,7 +79,7 @@
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:background="@drawable/list_selector" android:background="@drawable/list_selector"
android:requiresFadingEdge="horizontal" android:requiresFadingEdge="horizontal"
android:textColor="?colorAccent" android:textColor="?colorTertiary"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toEndOf="@id/textView_title" app:layout_constraintEnd_toEndOf="@id/textView_title"
app:layout_constraintHorizontal_bias="0" app:layout_constraintHorizontal_bias="0"
@@ -98,7 +94,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:drawablePadding="4dp" android:drawablePadding="4dp"
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle2" android:textAppearance="?attr/textAppearanceBodySmall"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toEndOf="@id/textView_title" app:layout_constraintEnd_toEndOf="@id/textView_title"
app:layout_constraintStart_toStartOf="@id/textView_title" app:layout_constraintStart_toStartOf="@id/textView_title"
@@ -112,7 +108,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:baselineAligned="false" android:baselineAligned="false"
android:divider="?android:dividerHorizontal" android:divider="?attr/colorOutline"
android:dividerPadding="8dp" android:dividerPadding="8dp"
android:orientation="horizontal" android:orientation="horizontal"
android:showDividers="middle" android:showDividers="middle"
@@ -216,7 +212,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_favorite" android:id="@+id/button_favorite"
style="@style/Widget.MaterialComponents.Button.OutlinedButton" style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
@@ -226,12 +222,12 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_read" android:id="@+id/button_read"
style="@style/Widget.MaterialComponents.Button" style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_weight="1" android:layout_weight="1"
android:enabled="false" android:enabled="true"
android:text="@string/read" android:text="@string/read"
android:textAllCaps="false" android:textAllCaps="false"
app:elevation="0dp" app:elevation="0dp"
@@ -252,28 +248,18 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/buttons_layout" /> app:layout_constraintTop_toBottomOf="@+id/buttons_layout" />
<TextView
android:id="@+id/desc_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@string/description"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:textColor="?android:textColorPrimary"
android:textSize="18sp"
app:layout_constraintTop_toBottomOf="@id/chips_tags" />
<TextView <TextView
android:id="@+id/textView_description" android:id="@+id/textView_description"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingTop="8dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:lineSpacingMultiplier="1.2" android:lineSpacingMultiplier="1.2"
android:textIsSelectable="true" android:textIsSelectable="true"
android:textAppearance="?attr/textAppearanceBodyMedium"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/desc_header" app:layout_constraintTop_toBottomOf="@id/chips_tags"
tools:ignore="UnusedAttribute" tools:ignore="UnusedAttribute"
tools:text="@tools:sample/lorem/random[25]" /> tools:text="@tools:sample/lorem/random[25]" />

View File

@@ -30,9 +30,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp" android:layout_margin="8dp"
android:layout_weight="1" android:layout_weight="1">
app:cardCornerRadius="4dp"
app:cardElevation="4dp">
<org.koitharu.kotatsu.base.ui.widgets.CoverImageView <org.koitharu.kotatsu.base.ui.widgets.CoverImageView
android:id="@+id/imageView_cover" android:id="@+id/imageView_cover"
@@ -57,9 +55,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:textAppearance="@style/TextAppearance.AppCompat.Body2" android:textAppearance="?attr/textAppearanceHeadlineSmall"
android:textColor="?android:textColorPrimary"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -71,7 +67,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:ellipsize="end" android:ellipsize="end"
android:textSize="14sp" android:textAppearance="?attr/textAppearanceBodyMedium"
app:layout_constraintEnd_toEndOf="@id/textView_title" app:layout_constraintEnd_toEndOf="@id/textView_title"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView_title" app:layout_constraintTop_toBottomOf="@id/textView_title"
@@ -84,7 +80,7 @@
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:background="@drawable/list_selector" android:background="@drawable/list_selector"
android:requiresFadingEdge="horizontal" android:requiresFadingEdge="horizontal"
android:textColor="?colorAccent" android:textColor="?colorTertiary"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toEndOf="@id/textView_title" app:layout_constraintEnd_toEndOf="@id/textView_title"
app:layout_constraintHorizontal_bias="0" app:layout_constraintHorizontal_bias="0"
@@ -99,8 +95,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:drawablePadding="4dp" android:drawablePadding="4dp"
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle2" android:textAppearance="?attr/textAppearanceBodySmall"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toEndOf="@id/textView_title" app:layout_constraintEnd_toEndOf="@id/textView_title"
app:layout_constraintStart_toStartOf="@id/textView_title" app:layout_constraintStart_toStartOf="@id/textView_title"
app:layout_constraintTop_toBottomOf="@id/textView_author" app:layout_constraintTop_toBottomOf="@id/textView_author"
@@ -113,7 +108,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:baselineAligned="false" android:baselineAligned="false"
android:divider="?android:dividerHorizontal" android:divider="?attr/colorOutline"
android:dividerPadding="8dp" android:dividerPadding="8dp"
android:orientation="horizontal" android:orientation="horizontal"
android:showDividers="middle" android:showDividers="middle"
@@ -217,7 +212,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_favorite" android:id="@+id/button_favorite"
style="@style/Widget.MaterialComponents.Button.OutlinedButton" style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
@@ -227,7 +222,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_read" android:id="@+id/button_read"
style="@style/Widget.MaterialComponents.Button" style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
@@ -259,32 +254,20 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/main_container" /> app:layout_constraintTop_toBottomOf="@+id/main_container" />
<TextView
android:id="@+id/desc_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@string/description"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:textColor="?android:textColorPrimary"
android:textSize="18sp"
app:layout_constraintTop_toBottomOf="@id/chips_tags" />
<TextView <TextView
android:id="@+id/textView_description" android:id="@+id/textView_description"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:paddingTop="8dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:lineSpacingMultiplier="1.2" android:lineSpacingMultiplier="1.2"
android:textIsSelectable="true" android:textIsSelectable="true"
android:textAppearance="?attr/textAppearanceBodyMedium"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/desc_header" app:layout_constraintTop_toBottomOf="@id/chips_tags"
tools:ignore="UnusedAttribute" tools:ignore="UnusedAttribute"
tools:text="@tools:sample/lorem/random[25]" /> tools:text="@tools:sample/lorem/random[25]" />

View File

@@ -10,14 +10,11 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
app:elevation="0dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar" android:id="@id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways"> app:layout_scrollFlags="scroll|enterAlways">

View File

@@ -8,17 +8,14 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:elevation="0dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar" android:id="@id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways" /> app:layout_scrollFlags="scroll|enterAlways" />

View File

@@ -36,7 +36,7 @@
android:id="@+id/divider_filter" android:id="@+id/divider_filter"
android:layout_width="1dp" android:layout_width="1dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?dividerVertical" android:background="?attr/colorOutline"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />

View File

@@ -8,17 +8,14 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:elevation="4dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar" android:id="@id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways" /> app:layout_scrollFlags="scroll|enterAlways" />

View File

@@ -8,16 +8,14 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:elevation="4dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"/>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
@@ -39,8 +37,7 @@
android:layout_margin="20dp" android:layout_margin="20dp"
android:gravity="center" android:gravity="center"
android:text="@string/text_categories_holder" android:text="@string/text_categories_holder"
android:textAppearance="?android:textAppearanceMedium" android:textAppearance="?attr/textAppearanceBody2"
android:textColor="?android:textColorSecondary"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />
@@ -51,7 +48,6 @@
android:layout_margin="16dp" android:layout_margin="16dp"
android:contentDescription="@string/add_new_category" android:contentDescription="@string/add_new_category"
android:src="@drawable/ic_add" android:src="@drawable/ic_add"
app:backgroundTint="?colorAccent"
app:fabSize="normal" app:fabSize="normal"
app:layout_anchor="@id/recyclerView" app:layout_anchor="@id/recyclerView"
app:layout_anchorGravity="bottom|end" app:layout_anchorGravity="bottom|end"

View File

@@ -10,17 +10,17 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:liftOnScroll="false"
app:elevation="0dp"> app:elevation="0dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar" android:id="@id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" /> android:theme="?attr/actionBarTheme"
app:layout_scrollFlags="scroll|enterAlways"/>
<com.google.android.material.tabs.TabLayout <com.google.android.material.tabs.TabLayout
android:id="@+id/tabs" android:id="@+id/tabs"

View File

@@ -8,16 +8,16 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:elevation="4dp"> android:fitsSystemWindows="true"
app:elevation="0dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"/>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
@@ -39,8 +39,7 @@
android:layout_margin="20dp" android:layout_margin="20dp"
android:gravity="center" android:gravity="center"
android:text="@string/text_downloads_holder" android:text="@string/text_downloads_holder"
android:textAppearance="?android:textAppearanceMedium" android:textAppearance="?attr/textAppearanceBody2"
android:textColor="?android:textColorSecondary"
android:visibility="gone" android:visibility="gone"
tools:visibility="visible" /> tools:visibility="visible" />

View File

@@ -12,7 +12,6 @@
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="wrap_content" />

View File

@@ -20,31 +20,28 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:stateListAnimator="@null" android:stateListAnimator="@null">
app:elevation="0dp">
<com.google.android.material.card.MaterialCardView <FrameLayout
android:id="@+id/toolbar_card" android:id="@+id/toolbar_card"
android:background="@drawable/toolbar_background"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp">
app:cardCornerRadius="8dp"
app:cardElevation="4dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar" android:id="@id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:focusable="true" android:focusable="true"
android:focusableInTouchMode="true" android:focusableInTouchMode="true"
android:background="@android:color/transparent"
app:contentInsetStartWithNavigation="0dp" app:contentInsetStartWithNavigation="0dp"
app:titleTextAppearance="@style/TextAppearance.Kotatsu.PersistentToolbarTitle" app:titleTextAppearance="@style/TextAppearance.Kotatsu.PersistentToolbarTitle"
app:titleTextColor="?android:colorControlNormal" app:titleTextColor="?android:colorControlNormal"
@@ -65,7 +62,7 @@
</com.google.android.material.appbar.MaterialToolbar> </com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.card.MaterialCardView> </FrameLayout>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
@@ -77,7 +74,6 @@
android:contentDescription="@string/_continue" android:contentDescription="@string/_continue"
android:src="@drawable/ic_read_fill" android:src="@drawable/ic_read_fill"
android:visibility="gone" android:visibility="gone"
app:backgroundTint="?colorAccent"
app:fabSize="normal" app:fabSize="normal"
app:layout_anchor="@id/container" app:layout_anchor="@id/container"
app:layout_anchorGravity="bottom|end" app:layout_anchorGravity="bottom|end"
@@ -92,10 +88,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="start" android:layout_gravity="start"
android:fitsSystemWindows="true"
app:insetForeground="@android:color/transparent" app:insetForeground="@android:color/transparent"
app:itemHorizontalPadding="16dp"
app:itemIconPadding="24dp"
app:itemIconTint="@color/navigation_item_color_tint"
app:menu="@menu/nav_drawer" /> app:menu="@menu/nav_drawer" />
</androidx.drawerlayout.widget.DrawerLayout> </androidx.drawerlayout.widget.DrawerLayout>

View File

@@ -60,17 +60,18 @@
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<Button <com.google.android.material.button.MaterialButton
android:id="@+id/button_cancel" android:id="@+id/button_cancel"
style="?borderlessButtonStyle" style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@android:string/cancel" android:text="@android:string/cancel"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />
<Button <com.google.android.material.button.MaterialButton
android:id="@+id/button_next" android:id="@+id/button_next"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:enabled="false" android:enabled="false"

View File

@@ -21,9 +21,8 @@
android:background="@drawable/bg_reader_indicator" android:background="@drawable/bg_reader_indicator"
android:drawablePadding="6dp" android:drawablePadding="6dp"
android:singleLine="true" android:singleLine="true"
android:textAppearance="?android:textAppearanceSmall" android:textAppearance="?attr/textAppearanceBodySmall"
android:textColor="?android:textColorPrimary" android:theme="@style/ThemeOverlay.Material3.Dark"
android:theme="@style/ThemeOverlay.MaterialComponents.Dark"
tools:text="@string/loading_" /> tools:text="@string/loading_" />
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
@@ -32,7 +31,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/dim" android:background="@color/dim"
android:elevation="0dp" android:elevation="0dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:theme="@style/ThemeOverlay.Material3.Dark"
app:elevation="0dp"> app:elevation="0dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
@@ -50,7 +49,7 @@
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:background="@color/dim" android:background="@color/dim"
android:elevation="0dp" android:elevation="0dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:theme="@style/ThemeOverlay.Material3.Dark"
app:elevation="0dp" app:elevation="0dp"
tools:visibility="gone"> tools:visibility="gone">
@@ -83,7 +82,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="@string/loading_" android:text="@string/loading_"
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle2" /> android:textAppearance="?attr/textAppearanceBody2" />
</LinearLayout> </LinearLayout>

View File

@@ -7,14 +7,11 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:elevation="4dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar" android:id="@id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways"> app:layout_scrollFlags="scroll|enterAlways">

View File

@@ -7,17 +7,14 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:elevation="4dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar" android:id="@id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" /> android:theme="?attr/actionBarTheme" />
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>

View File

@@ -1,30 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:orientation="vertical">
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:elevation="4dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar" android:id="@id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" /> android:theme="?attr/actionBarTheme"
app:layout_scrollFlags="noScroll"/>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.fragment.app.FragmentContainerView <androidx.fragment.app.FragmentContainerView
android:id="@id/container" android:id="@id/container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"/>
</LinearLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -7,17 +7,14 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:elevation="4dp">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@id/toolbar" android:id="@id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways" /> app:layout_scrollFlags="noScroll" />
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>

View File

@@ -62,17 +62,18 @@
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<Button <com.google.android.material.button.MaterialButton
android:id="@+id/button_cancel" android:id="@+id/button_cancel"
style="?borderlessButtonStyle" style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@android:string/cancel" android:text="@android:string/cancel"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" /> app:layout_constraintStart_toStartOf="parent" />
<Button <com.google.android.material.button.MaterialButton
android:id="@+id/button_next" android:id="@+id/button_next"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:enabled="false" android:enabled="false"

View File

@@ -8,7 +8,7 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
style="@style/MaterialAlertDialog.MaterialComponents.Title.Text" style="?attr/textAppearanceTitleLarge"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="16dp" android:padding="16dp"
@@ -17,7 +17,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:background="?android:listDivider" /> android:background="?attr/colorOutline" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView_categories" android:id="@+id/recyclerView_categories"
@@ -32,7 +32,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:background="?android:listDivider" /> android:background="?attr/colorOutline" />
<TextView <TextView
android:id="@+id/textView_add" android:id="@+id/textView_add"
@@ -43,8 +43,7 @@
android:paddingStart="?android:listPreferredItemPaddingStart" android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd" android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:text="@string/add_new_category" android:text="@string/add_new_category"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" android:textAppearance="?attr/textAppearanceBodyLarge"
android:textColor="?android:textColorPrimary"
app:drawableEndCompat="@drawable/ic_add" /> app:drawableEndCompat="@drawable/ic_add" />
</LinearLayout> </LinearLayout>

View File

@@ -15,7 +15,7 @@
android:paddingEnd="?listPreferredItemPaddingEnd" android:paddingEnd="?listPreferredItemPaddingEnd"
android:paddingBottom="6dp" android:paddingBottom="6dp"
android:text="Select languages which you want to read manga. You can change it later in settings." android:text="Select languages which you want to read manga. You can change it later in settings."
android:textAppearance="?android:textAppearanceSmall" /> android:textAppearance="?attr/textAppearanceBodyMedium" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view" android:id="@+id/recycler_view"

View File

@@ -12,7 +12,7 @@
android:id="@+id/textView_title" android:id="@+id/textView_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textAppearance="?attr/textAppearanceBodyLarge"
android:textColor="?android:textColorPrimary" android:textColor="?android:textColorPrimary"
tools:text="Title" /> tools:text="Title" />
@@ -27,7 +27,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="?attr/textAppearanceBodyMedium"
android:textColor="?android:textColorSecondary" android:textColor="?android:textColorSecondary"
tools:text="Subtitle" /> tools:text="Subtitle" />

View File

@@ -45,6 +45,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="@string/reader_mode_hint" android:text="@string/reader_mode_hint"
android:textAppearance="@style/TextAppearance.MaterialComponents.Caption" /> android:textAppearance="?attr/textAppearanceBodySmall" />
</LinearLayout> </LinearLayout>

View File

@@ -30,9 +30,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="8dp" android:layout_margin="8dp"
android:layout_weight="1" android:layout_weight="1">
app:cardCornerRadius="4dp"
app:cardElevation="4dp">
<org.koitharu.kotatsu.base.ui.widgets.CoverImageView <org.koitharu.kotatsu.base.ui.widgets.CoverImageView
android:id="@+id/imageView_cover" android:id="@+id/imageView_cover"
@@ -58,9 +56,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:textAppearance="@style/TextAppearance.AppCompat.Body2" android:textAppearance="?attr/textAppearanceHeadlineSmall"
android:textColor="?android:textColorPrimary"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -72,7 +68,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:ellipsize="end" android:ellipsize="end"
android:textSize="14sp" android:textAppearance="?attr/textAppearanceBodyMedium"
app:layout_constraintEnd_toEndOf="@id/textView_title" app:layout_constraintEnd_toEndOf="@id/textView_title"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView_title" app:layout_constraintTop_toBottomOf="@id/textView_title"
@@ -85,7 +81,7 @@
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:background="@drawable/list_selector" android:background="@drawable/list_selector"
android:requiresFadingEdge="horizontal" android:requiresFadingEdge="horizontal"
android:textColor="?colorAccent" android:textColor="?attr/colorTertiary"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintEnd_toEndOf="@id/textView_title" app:layout_constraintEnd_toEndOf="@id/textView_title"
app:layout_constraintHorizontal_bias="0" app:layout_constraintHorizontal_bias="0"
@@ -100,8 +96,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:drawablePadding="4dp" android:drawablePadding="4dp"
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle2" android:textAppearance="?attr/textAppearanceBodySmall"
android:textColor="?android:attr/textColorSecondary"
app:layout_constraintEnd_toEndOf="@id/textView_title" app:layout_constraintEnd_toEndOf="@id/textView_title"
app:layout_constraintStart_toStartOf="@id/textView_title" app:layout_constraintStart_toStartOf="@id/textView_title"
app:layout_constraintTop_toBottomOf="@id/textView_author" app:layout_constraintTop_toBottomOf="@id/textView_author"
@@ -117,7 +112,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:baselineAligned="false" android:baselineAligned="false"
android:divider="?android:dividerHorizontal" android:divider="?attr/colorOutline"
android:dividerPadding="8dp" android:dividerPadding="8dp"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="8dp" android:paddingStart="8dp"
@@ -224,7 +219,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_favorite" android:id="@+id/button_favorite"
style="@style/Widget.MaterialComponents.Button.OutlinedButton" style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
@@ -234,7 +229,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_read" android:id="@+id/button_read"
style="@style/Widget.MaterialComponents.Button" style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
@@ -262,20 +257,6 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/buttons_layout" /> app:layout_constraintTop_toBottomOf="@+id/buttons_layout" />
<TextView
android:id="@+id/desc_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@string/description"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:textColor="?android:textColorPrimary"
android:textSize="18sp"
app:layout_constraintTop_toBottomOf="@id/chips_tags" />
<TextView <TextView
android:id="@+id/textView_description" android:id="@+id/textView_description"
android:layout_width="0dp" android:layout_width="0dp"
@@ -283,11 +264,13 @@
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:layout_marginTop="8dp"
android:lineSpacingMultiplier="1.2" android:lineSpacingMultiplier="1.2"
android:textIsSelectable="true" android:textIsSelectable="true"
android:textAppearance="?attr/textAppearanceBodyMedium"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/desc_header" app:layout_constraintTop_toBottomOf="@id/chips_tags"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
tools:ignore="UnusedAttribute" tools:ignore="UnusedAttribute"
tools:text="@tools:sample/lorem/random[25]" /> tools:text="@tools:sample/lorem/random[25]" />

View File

@@ -11,10 +11,5 @@
android:padding="@dimen/grid_spacing_outer" android:padding="@dimen/grid_spacing_outer"
android:scrollbarStyle="outsideOverlay" android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical" android:scrollbars="vertical"
app:fastScrollEnabled="true"
app:fastScrollHorizontalThumbDrawable="@drawable/list_thumb"
app:fastScrollHorizontalTrackDrawable="@drawable/list_track"
app:fastScrollVerticalThumbDrawable="@drawable/list_thumb"
app:fastScrollVerticalTrackDrawable="@drawable/list_track"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_tracklog" /> tools:listitem="@layout/item_tracklog" />

View File

@@ -6,4 +6,4 @@
android:layout_height="?android:attr/listPreferredItemHeightSmall" android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:gravity="center_vertical" android:gravity="center_vertical"
android:singleLine="true" android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLargePopupMenu" /> android:textAppearance="?attr/textAppearanceBodyLarge" />

View File

@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<CheckedTextView <CheckedTextView
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="?android:attr/spinnerDropDownItemStyle" style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeightSmall" android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:drawableEnd="?android:listChoiceIndicatorSingle" android:drawableEnd="?android:listChoiceIndicatorSingle"
android:singleLine="true" android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLargePopupMenu" /> android:textAppearance="?attr/textAppearanceBodyLarge"
tools:text="Scanlator" />

View File

@@ -25,8 +25,7 @@
android:ellipsize="marquee" android:ellipsize="marquee"
android:fadingEdge="horizontal" android:fadingEdge="horizontal"
android:singleLine="true" android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?attr/textAppearanceBodyLarge"
android:textColor="?android:attr/textColorPrimary"
tools:text="@tools:sample/lorem[1]" /> tools:text="@tools:sample/lorem[1]" />
<ImageView <ImageView

View File

@@ -10,7 +10,6 @@
android:gravity="start|center_vertical" android:gravity="start|center_vertical"
android:paddingStart="?android:listPreferredItemPaddingStart" android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd" android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" android:textAppearance="?attr/textAppearanceBodyLarge"
android:textColor="?android:textColorPrimary"
tools:checked="true" tools:checked="true"
tools:text="@tools:sample/lorem[4]" /> tools:text="@tools:sample/lorem[4]" />

View File

@@ -10,7 +10,6 @@
android:gravity="start|center_vertical" android:gravity="start|center_vertical"
android:paddingStart="?android:listPreferredItemPaddingStart" android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd" android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" android:textAppearance="?attr/textAppearanceBodyLarge"
android:textColor="?android:textColorPrimary"
tools:checked="true" tools:checked="true"
tools:text="@tools:sample/lorem[4]" /> tools:text="@tools:sample/lorem[4]" />

View File

@@ -17,7 +17,7 @@
android:gravity="center" android:gravity="center"
android:minWidth="26dp" android:minWidth="26dp"
android:textAlignment="center" android:textAlignment="center"
android:textColor="?android:textColorSecondaryInverse" android:textColor="?attr/colorOnTertiary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -34,8 +34,7 @@
android:layout_toEndOf="@id/textView_number" android:layout_toEndOf="@id/textView_number"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:text="?android:textColorPrimary" android:textAppearance="?attr/textAppearanceBodyMedium"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
app:layout_constraintBottom_toTopOf="@+id/textView_description" app:layout_constraintBottom_toTopOf="@+id/textView_description"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView_number" app:layout_constraintStart_toEndOf="@+id/textView_number"
@@ -52,8 +51,7 @@
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:ellipsize="end" android:ellipsize="end"
android:singleLine="true" android:singleLine="true"
android:textColor="?attr/colorControlNormal" android:textAppearance="?attr/textAppearanceBodySmall"
android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView_number" app:layout_constraintStart_toEndOf="@+id/textView_number"

View File

@@ -10,4 +10,5 @@
android:gravity="center_vertical|start" android:gravity="center_vertical|start"
android:paddingStart="?android:listPreferredItemPaddingStart" android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd" android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:textAppearance="?attr/textAppearanceBodyMedium"
tools:text="@tools:sample/full_names" /> tools:text="@tools:sample/full_names" />

View File

@@ -10,4 +10,5 @@
android:gravity="center_vertical|start" android:gravity="center_vertical|start"
android:paddingStart="?android:listPreferredItemPaddingStart" android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd" android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:textAppearance="?attr/textAppearanceBodyMedium"
tools:text="@tools:sample/full_names" /> tools:text="@tools:sample/full_names" />

View File

@@ -16,8 +16,6 @@
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:layout_margin="8dp" android:layout_margin="8dp"
app:cardCornerRadius="4dp"
app:cardElevation="4dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="h,1:1" app:layout_constraintDimensionRatio="h,1:1"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@@ -43,7 +41,7 @@
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:ellipsize="end" android:ellipsize="end"
android:singleLine="true" android:singleLine="true"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" android:textAppearance="?attr/textAppearanceBodyLarge"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/card_cover" app:layout_constraintStart_toEndOf="@id/card_cover"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -69,7 +67,7 @@
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:ellipsize="end" android:ellipsize="end"
android:singleLine="true" android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="?attr/textAppearanceBodySmall"
app:layout_constraintEnd_toStartOf="@id/textView_percent" app:layout_constraintEnd_toStartOf="@id/textView_percent"
app:layout_constraintStart_toEndOf="@id/card_cover" app:layout_constraintStart_toEndOf="@id/card_cover"
app:layout_constraintTop_toBottomOf="@id/progressBar" app:layout_constraintTop_toBottomOf="@id/progressBar"
@@ -79,7 +77,7 @@
android:id="@+id/textView_percent" android:id="@+id/textView_percent"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Body2" android:textAppearance="?attr/textAppearanceBodyMedium"
app:layout_constraintBaseline_toBaselineOf="@id/textView_status" app:layout_constraintBaseline_toBaselineOf="@id/textView_status"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
@@ -94,7 +92,7 @@
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="4" android:maxLines="4"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="?attr/textAppearanceBodySmall"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/card_cover" app:layout_constraintStart_toEndOf="@id/card_cover"
app:layout_constraintTop_toBottomOf="@id/textView_status" app:layout_constraintTop_toBottomOf="@id/textView_status"

View File

@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_marginHorizontal="32dp" android:layout_marginHorizontal="32dp"
android:gravity="center" android:gravity="center"
android:orientation="vertical"> android:orientation="vertical">
@@ -12,7 +13,8 @@
android:id="@+id/icon" android:id="@+id/icon"
android:layout_width="98dp" android:layout_width="98dp"
android:layout_height="98dp" android:layout_height="98dp"
android:src="@drawable/ic_alert_outline" /> android:src="@drawable/ic_alert_outline"
app:tint="?attr/colorOnSecondaryContainer" />
<TextView <TextView
android:id="@+id/textPrimary" android:id="@+id/textPrimary"
@@ -20,16 +22,16 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_normal" android:layout_marginTop="@dimen/margin_normal"
android:gravity="center" android:gravity="center"
android:textAppearance="@style/TextAppearance.Kotatsu.H1" android:textAppearance="?attr/textAppearanceTitleLarge"
tools:text="@tools:sample/lorem[3]" /> tools:text="@tools:sample/lorem[3]" />
<TextView <TextView
android:id="@+id/textSecondary" android:id="@+id/textSecondary"
style="@style/TextAppearance.Kotatsu.NoticeBody"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_normal" android:layout_marginTop="@dimen/margin_normal"
android:gravity="center" android:gravity="center"
android:textAppearance="?attr/textAppearanceBodyMedium"
tools:text="@tools:sample/lorem[15]" /> tools:text="@tools:sample/lorem[15]" />
</LinearLayout> </LinearLayout>

View File

@@ -26,16 +26,14 @@
android:id="@+id/textView_title" android:id="@+id/textView_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" android:textAppearance="?attr/textAppearanceBodyLarge"
android:textColor="?android:textColorPrimary"
tools:text="@string/error_occurred" /> tools:text="@string/error_occurred" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/tap_to_try_again" android:text="@string/tap_to_try_again"
android:textAppearance="?android:textAppearanceSmall" android:textAppearance="?attr/textAppearanceBodySmall" />
android:textColor="?android:textColorSecondary" />
</LinearLayout> </LinearLayout>

View File

@@ -15,14 +15,12 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawablePadding="12dp" android:drawablePadding="12dp"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:textAppearance="?android:textAppearanceMedium" android:textAppearance="?attr/textAppearanceBodySmall"
android:textColor="?android:textColorSecondary"
app:drawableTopCompat="@drawable/ic_error_large" app:drawableTopCompat="@drawable/ic_error_large"
tools:text="@tools:sample/lorem[6]" /> tools:text="@tools:sample/lorem[6]" />
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_retry" android:id="@+id/button_retry"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"

View File

@@ -10,6 +10,7 @@
android:gravity="center_vertical|start" android:gravity="center_vertical|start"
android:paddingStart="?android:listPreferredItemPaddingStart" android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd" android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:textAppearance="?attr/textAppearanceBodyMedium"
app:drawableEndCompat="@drawable/ic_expand_collapse" app:drawableEndCompat="@drawable/ic_expand_collapse"
app:drawableTint="?android:textColorPrimary" app:drawableTint="?android:textColorPrimary"
tools:text="@tools:sample/full_names" /> tools:text="@tools:sample/full_names" />

View File

@@ -9,6 +9,5 @@
android:paddingStart="?android:listPreferredItemPaddingStart" android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd" android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:singleLine="true" android:singleLine="true"
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle2" android:textAppearance="@style/TextAppearance.Kotatsu.SectionHeader"
android:textColor="?android:textColorSecondary"
tools:text="@tools:sample/lorem[2]" /> tools:text="@tools:sample/lorem[2]" />

View File

@@ -8,8 +8,5 @@
android:paddingStart="8dp" android:paddingStart="8dp"
android:paddingEnd="8dp" android:paddingEnd="8dp"
android:singleLine="true" android:singleLine="true"
android:textAllCaps="true" android:textAppearance="@style/TextAppearance.Kotatsu.SectionHeader"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body2"
android:textColor="?android:textColorSecondary"
android:textStyle="bold"
tools:text="@tools:sample/lorem[2]" /> tools:text="@tools:sample/lorem[2]" />

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -14,9 +13,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="8dp" android:layout_marginHorizontal="8dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp">
app:cardCornerRadius="4dp"
app:cardElevation="4dp">
<org.koitharu.kotatsu.base.ui.widgets.CoverImageView <org.koitharu.kotatsu.base.ui.widgets.CoverImageView
android:id="@+id/imageView_cover" android:id="@+id/imageView_cover"
@@ -31,7 +28,7 @@
<TextView <TextView
android:id="@+id/textView_title" android:id="@+id/textView_title"
style="@style/TextAppearance.AppCompat.Body2" style="?attr/textAppearanceBodyMedium"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:elegantTextHeight="false" android:elegantTextHeight="false"

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/manga_list_item_height" android:layout_height="@dimen/manga_list_item_height"
@@ -12,9 +11,7 @@
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_margin="8dp" android:layout_margin="8dp">
app:cardCornerRadius="4dp"
app:cardElevation="4dp">
<org.koitharu.kotatsu.base.ui.widgets.CoverImageView <org.koitharu.kotatsu.base.ui.widgets.CoverImageView
android:id="@+id/imageView_cover" android:id="@+id/imageView_cover"
@@ -40,7 +37,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="2" android:maxLines="2"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" android:textAppearance="?attr/textAppearanceBodyLarge"
tools:text="@tools:sample/lorem/random" /> tools:text="@tools:sample/lorem/random" />
<TextView <TextView
@@ -49,7 +46,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body2" android:textAppearance="?attr/textAppearanceBodyMedium"
android:textColor="?android:textColorSecondary" android:textColor="?android:textColorSecondary"
tools:text="@tools:sample/lorem/random" /> tools:text="@tools:sample/lorem/random" />

View File

@@ -11,15 +11,15 @@
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_margin="8dp" android:layout_margin="8dp">
app:cardElevation="4dp">
<org.koitharu.kotatsu.base.ui.widgets.CoverImageView <org.koitharu.kotatsu.base.ui.widgets.CoverImageView
android:id="@+id/imageView_cover" android:id="@+id/imageView_cover"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:scaleType="centerCrop" /> android:scaleType="centerCrop"
tools:src="@tools:sample/backgrounds/scenic"/>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
@@ -37,8 +37,7 @@
android:layout_marginBottom="4dp" android:layout_marginBottom="4dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="2" android:maxLines="2"
android:textAppearance="@style/TextAppearance.Kotatsu.ToolbarTitle" android:textAppearance="?attr/textAppearanceTitleMedium"
android:textSize="18sp"
tools:text="@tools:sample/lorem/random" /> tools:text="@tools:sample/lorem/random" />
<TextView <TextView
@@ -50,13 +49,14 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:requiresFadingEdge="horizontal" android:requiresFadingEdge="horizontal"
android:singleLine="true" android:singleLine="true"
android:textSize="16sp" android:textAppearance="?attr/textAppearanceBodyMedium"
tools:text="@tools:sample/lorem/random" /> tools:text="@tools:sample/lorem/random" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:orientation="horizontal"
android:gravity="center">
<TextView <TextView
android:id="@+id/textView_tags" android:id="@+id/textView_tags"
@@ -67,6 +67,7 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:requiresFadingEdge="horizontal" android:requiresFadingEdge="horizontal"
android:singleLine="true" android:singleLine="true"
android:textAppearance="?attr/textAppearanceBodySmall"
tools:text="@tools:sample/lorem/random" /> tools:text="@tools:sample/lorem/random" />
<TextView <TextView

View File

@@ -25,7 +25,7 @@
android:layout_margin="8dp" android:layout_margin="8dp"
android:singleLine="true" android:singleLine="true"
android:textColor="?android:textColorTertiary" android:textColor="?android:textColorTertiary"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body2" android:textAppearance="?attr/textAppearanceBodyMedium"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="end|bottom" android:layout_gravity="end|bottom"
tools:text="5" /> tools:text="5" />
@@ -48,13 +48,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawablePadding="12dp" android:drawablePadding="12dp"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="?attr/textAppearanceBodySmall"
app:drawableTopCompat="@drawable/ic_error_large" app:drawableTopCompat="@drawable/ic_error_large"
tools:text="@tools:sample/lorem[6]" /> tools:text="@tools:sample/lorem[6]" />
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/button_retry" android:id="@+id/button_retry"
style="@style/Widget.MaterialComponents.Button.OutlinedButton" style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"

View File

@@ -30,7 +30,7 @@
android:minWidth="26dp" android:minWidth="26dp"
android:singleLine="true" android:singleLine="true"
android:textAlignment="center" android:textAlignment="center"
android:textColor="?android:textColorSecondaryInverse" android:textColor="?attr/colorOnTertiary"
tools:background="@drawable/bg_badge_default" tools:background="@drawable/bg_badge_default"
tools:text="2" /> tools:text="2" />

View File

@@ -28,7 +28,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:singleLine="true" android:singleLine="true"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" android:textAppearance="?attr/textAppearanceBodyMedium"
tools:text="@tools:sample/lorem[6]" /> tools:text="@tools:sample/lorem[6]" />
<TextView <TextView
@@ -37,7 +37,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:singleLine="true" android:singleLine="true"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body2" android:textAppearance="?attr/textAppearanceBodySmall"
android:textColor="?android:textColorSecondary" android:textColor="?android:textColorSecondary"
tools:text="@tools:sample/lorem[6]" /> tools:text="@tools:sample/lorem[6]" />

View File

@@ -20,7 +20,7 @@
android:ellipsize="end" android:ellipsize="end"
android:gravity="center_vertical" android:gravity="center_vertical"
android:singleLine="true" android:singleLine="true"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" android:textAppearance="?attr/textAppearanceBodyLarge"
app:drawableStartCompat="@drawable/ic_history" app:drawableStartCompat="@drawable/ic_history"
tools:text="@tools:sample/lorem[6]" /> tools:text="@tools:sample/lorem[6]" />

View File

@@ -24,8 +24,7 @@
android:ellipsize="marquee" android:ellipsize="marquee"
android:fadingEdge="horizontal" android:fadingEdge="horizontal"
android:singleLine="true" android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?attr/textAppearanceBodyLarge"
android:textColor="?android:attr/textColorPrimary"
tools:text="@tools:sample/lorem[1]" /> tools:text="@tools:sample/lorem[1]" />
<com.google.android.material.switchmaterial.SwitchMaterial <com.google.android.material.switchmaterial.SwitchMaterial

View File

@@ -11,6 +11,5 @@
android:paddingStart="?listPreferredItemPaddingStart" android:paddingStart="?listPreferredItemPaddingStart"
android:paddingEnd="?listPreferredItemPaddingEnd" android:paddingEnd="?listPreferredItemPaddingEnd"
android:singleLine="true" android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?attr/textAppearanceBodyLarge"
android:textColor="?android:attr/textColorPrimary"
tools:text="@tools:sample/lorem[2]" /> tools:text="@tools:sample/lorem[2]" />

View File

@@ -4,13 +4,13 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?selectableItemBackground" android:background="?attr/selectableItemBackground"
android:gravity="center_vertical" android:gravity="center_vertical"
android:minHeight="?listPreferredItemHeightLarge" android:minHeight="?attr/listPreferredItemHeightLarge"
android:orientation="vertical" android:orientation="vertical"
android:paddingStart="?listPreferredItemPaddingStart" android:paddingStart="?attr/listPreferredItemPaddingStart"
android:paddingTop="16dp" android:paddingTop="16dp"
android:paddingEnd="?listPreferredItemPaddingEnd" android:paddingEnd="?attr/listPreferredItemPaddingEnd"
android:paddingBottom="16dp"> android:paddingBottom="16dp">
<TextView <TextView
@@ -19,8 +19,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1" android:textAppearance="?attr/textAppearanceTitleSmall"
android:textColor="?android:textColorPrimary"
tools:text="@tools:sample/lorem[3]" /> tools:text="@tools:sample/lorem[3]" />
<TextView <TextView
@@ -29,8 +28,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:ellipsize="end" android:ellipsize="end"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body2" android:textAppearance="?attr/textAppearanceBodyMedium"
android:textColor="?android:textColorSecondary"
tools:text="@tools:sample/lorem[20]" /> tools:text="@tools:sample/lorem[20]" />
</LinearLayout> </LinearLayout>

View File

@@ -14,8 +14,6 @@
android:layout_width="48dp" android:layout_width="48dp"
android:layout_height="48dp" android:layout_height="48dp"
android:layout_margin="8dp" android:layout_margin="8dp"
app:cardCornerRadius="4dp"
app:cardElevation="4dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="h,1:1" app:layout_constraintDimensionRatio="h,1:1"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@@ -63,7 +61,7 @@
android:background="@drawable/badge" android:background="@drawable/badge"
android:paddingHorizontal="6dp" android:paddingHorizontal="6dp"
android:paddingVertical="2dp" android:paddingVertical="2dp"
android:textColor="@android:color/white" android:textColor="?attr/colorOnTertiary"
android:textSize="12sp" android:textSize="12sp"
android:textStyle="bold" android:textStyle="bold"
tools:text="54" /> tools:text="54" />

View File

@@ -12,7 +12,7 @@
android:layout_height="@dimen/nav_header_logo_size" android:layout_height="@dimen/nav_header_logo_size"
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
android:layout_marginStart="@dimen/margin_normal" android:layout_marginStart="28dp"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:layout_marginBottom="24dp" android:layout_marginBottom="24dp"
android:contentDescription="@string/app_name" android:contentDescription="@string/app_name"
@@ -24,12 +24,12 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignTop="@id/imageView_logo" android:layout_alignTop="@id/imageView_logo"
android:layout_alignBottom="@id/imageView_logo" android:layout_alignBottom="@id/imageView_logo"
android:layout_marginStart="@dimen/nav_item_horizontal_padding" android:layout_marginStart="18dp"
android:layout_toEndOf="@id/imageView_logo" android:layout_toEndOf="@id/imageView_logo"
android:gravity="center_vertical" android:gravity="center_vertical"
android:singleLine="true" android:singleLine="true"
android:text="@string/app_name" android:text="@string/app_name"
android:textAppearance="@style/TextAppearance.AppCompat.Title" /> android:textAppearance="?attr/textAppearanceLabelLarge" />
<View <View
android:id="@+id/divider" android:id="@+id/divider"
@@ -38,6 +38,7 @@
android:layout_below="@id/imageView_logo" android:layout_below="@id/imageView_logo"
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:background="?android:attr/listDivider" /> android:layout_marginHorizontal="28dp"
android:background="?attr/colorOutline" />
</RelativeLayout> </RelativeLayout>

View File

@@ -9,14 +9,11 @@
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar" android:id="@+id/appbar"
style="@style/Widget.Kotatsu.Sheet.AppBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize">
app:liftOnScroll="true">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
style="@style/Widget.Kotatsu.Toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:navigationIcon="@drawable/ic_cross" /> app:navigationIcon="@drawable/ic_cross" />

Some files were not shown because too many files have changed in this diff Show More