diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/common/AlertDialogFragment.kt b/app/src/main/java/org/koitharu/kotatsu/ui/common/AlertDialogFragment.kt index 573c9728e..8154dc348 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/common/AlertDialogFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/common/AlertDialogFragment.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.View import androidx.annotation.LayoutRes import androidx.appcompat.app.AlertDialog +import com.google.android.material.dialog.MaterialAlertDialogBuilder import moxy.MvpAppCompatDialogFragment abstract class AlertDialogFragment(@LayoutRes private val layoutResId: Int) : MvpAppCompatDialogFragment() { @@ -17,7 +18,7 @@ abstract class AlertDialogFragment(@LayoutRes private val layoutResId: Int) : Mv if (view != null) { onViewCreated(view, savedInstanceState) } - return AlertDialog.Builder(requireContext(), theme) + return MaterialAlertDialogBuilder(requireContext(), theme) .setView(view) .also(::onBuildDialog) .create() diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/CheckBoxAlertDialog.kt b/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/CheckBoxAlertDialog.kt index 5257e4926..e647614cd 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/CheckBoxAlertDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/CheckBoxAlertDialog.kt @@ -8,6 +8,7 @@ import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import com.google.android.material.checkbox.MaterialCheckBox +import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.koitharu.kotatsu.R class CheckBoxAlertDialog private constructor(private val delegate: AlertDialog) : @@ -22,7 +23,7 @@ class CheckBoxAlertDialog private constructor(private val delegate: AlertDialog) .inflate(R.layout.dialog_checkbox, null, false) private val checkBox = view.findViewById(android.R.id.checkbox) - private val delegate = AlertDialog.Builder(context) + private val delegate = MaterialAlertDialogBuilder(context) .setView(view) fun setTitle(@StringRes titleResId: Int): Builder { diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/StorageSelectDialog.kt b/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/StorageSelectDialog.kt index 455275a38..e1799ce86 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/StorageSelectDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/StorageSelectDialog.kt @@ -7,6 +7,7 @@ import android.view.ViewGroup import android.widget.BaseAdapter import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog +import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.android.synthetic.main.item_storage.view.* import org.koitharu.kotatsu.R import org.koitharu.kotatsu.core.parser.LocalMangaRepository @@ -23,7 +24,7 @@ class StorageSelectDialog private constructor(private val delegate: AlertDialog) class Builder(context: Context, defaultValue: File?, listener: OnStorageSelectListener) { private val adapter = VolumesAdapter(context) - private val delegate = AlertDialog.Builder(context) + private val delegate = MaterialAlertDialogBuilder(context) init { if (adapter.isEmpty) { diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/TextInputDialog.kt b/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/TextInputDialog.kt index c511e7a98..1ce712294 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/TextInputDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/common/dialog/TextInputDialog.kt @@ -7,6 +7,7 @@ import android.text.InputFilter import android.view.LayoutInflater import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog +import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.android.synthetic.main.dialog_input.view.* import org.koitharu.kotatsu.R @@ -20,7 +21,7 @@ class TextInputDialog private constructor(private val delegate: AlertDialog) : @SuppressLint("InflateParams") private val view = LayoutInflater.from(context).inflate(R.layout.dialog_input, null, false) - private val delegate = AlertDialog.Builder(context) + private val delegate = MaterialAlertDialogBuilder(context) .setView(view) fun setTitle(@StringRes titleResId: Int): Builder { diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/details/ChapterHolder.kt b/app/src/main/java/org/koitharu/kotatsu/ui/details/ChapterHolder.kt index 5c6b388a7..fae11cdbd 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/details/ChapterHolder.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/details/ChapterHolder.kt @@ -35,7 +35,7 @@ class ChapterHolder(parent: ViewGroup) : textView_number.setTextColor(context.getThemeColor(android.R.attr.textColorPrimaryInverse)) } ChapterExtra.CHECKED -> { - textView_number.setBackgroundResource(R.drawable.bg_badge_accent) + textView_number.background = null textView_number.setTextColor(Color.TRANSPARENT) } } diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsActivity.kt b/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsActivity.kt index e0fcfe0da..b8bb92fcc 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/details/MangaDetailsActivity.kt @@ -7,11 +7,12 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.widget.Toast -import androidx.appcompat.app.AlertDialog import androidx.appcompat.view.ActionMode +import androidx.core.content.ContextCompat import androidx.core.content.pm.ShortcutManagerCompat import androidx.core.net.toFile import androidx.lifecycle.lifecycleScope +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator @@ -31,6 +32,7 @@ import org.koitharu.kotatsu.ui.download.DownloadService import org.koitharu.kotatsu.utils.MangaShortcut import org.koitharu.kotatsu.utils.ShareHelper import org.koitharu.kotatsu.utils.ext.getDisplayMessage +import org.koitharu.kotatsu.utils.ext.getThemeColor class MangaDetailsActivity : BaseActivity(), MangaDetailsView, TabLayoutMediator.TabConfigurationStrategy { @@ -124,7 +126,7 @@ class MangaDetailsActivity : BaseActivity(), MangaDetailsView, } R.id.action_delete -> { manga?.let { m -> - AlertDialog.Builder(this) + MaterialAlertDialogBuilder(this) .setTitle(R.string.delete_manga) .setMessage(getString(R.string.text_delete_local_manga, m.title)) .setPositiveButton(R.string.delete) { _, _ -> @@ -139,7 +141,7 @@ class MangaDetailsActivity : BaseActivity(), MangaDetailsView, manga?.let { val chaptersCount = it.chapters?.size ?: 0 if (chaptersCount > 5) { - AlertDialog.Builder(this) + MaterialAlertDialogBuilder(this) .setTitle(R.string.save_manga) .setMessage( getString( @@ -196,11 +198,13 @@ class MangaDetailsActivity : BaseActivity(), MangaDetailsView, override fun onSupportActionModeStarted(mode: ActionMode) { super.onSupportActionModeStarted(mode) pager.isUserInputEnabled = false + window?.statusBarColor = ContextCompat.getColor(this, R.color.grey_dark) } override fun onSupportActionModeFinished(mode: ActionMode) { super.onSupportActionModeFinished(mode) pager.isUserInputEnabled = true + window?.statusBarColor = getThemeColor(R.attr.colorPrimaryDark) } companion object { diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/details/RelatedMangaFragment.kt b/app/src/main/java/org/koitharu/kotatsu/ui/details/RelatedMangaFragment.kt index 9896f955a..d74f7b6f1 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/details/RelatedMangaFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/details/RelatedMangaFragment.kt @@ -1,5 +1,7 @@ package org.koitharu.kotatsu.ui.details +import android.os.Bundle +import android.view.View import moxy.ktx.moxyPresenter import org.koitharu.kotatsu.core.model.FavouriteCategory import org.koitharu.kotatsu.core.model.Manga @@ -10,6 +12,11 @@ class RelatedMangaFragment : MangaListFragment(), MangaDetailsView { private val presenter by moxyPresenter(factory = MangaDetailsPresenter.Companion::getInstance) + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + isSwipeRefreshEnabled = false + } + override fun onRequestMoreItems(offset: Int) { if (offset == 0) { presenter.loadRelated() diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/list/MangaListFragment.kt b/app/src/main/java/org/koitharu/kotatsu/ui/list/MangaListFragment.kt index 360d7e520..2dcaae645 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/list/MangaListFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/list/MangaListFragment.kt @@ -49,6 +49,7 @@ abstract class MangaListFragment : BaseFragment(R.layout.fragment_list), private var adapter: MangaListAdapter? = null private var progressAdapter: ProgressBarAdapter? = null private var paginationListener : PaginationScrollListener? = null + protected var isSwipeRefreshEnabled = true override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -188,7 +189,7 @@ abstract class MangaListFragment : BaseFragment(R.layout.fragment_list), val hasItems = recyclerView.hasItems progressBar.isVisible = isLoading && !hasItems swipeRefreshLayout.isRefreshing = isLoading && hasItems - swipeRefreshLayout.isEnabled = !progressBar.isVisible + swipeRefreshLayout.isEnabled = isSwipeRefreshEnabled && !progressBar.isVisible if (isLoading) { layout_holder.isVisible = false } diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/list/favourites/categories/CategoriesActivity.kt b/app/src/main/java/org/koitharu/kotatsu/ui/list/favourites/categories/CategoriesActivity.kt index d5f2b1ff1..433aef940 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/list/favourites/categories/CategoriesActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/list/favourites/categories/CategoriesActivity.kt @@ -7,11 +7,11 @@ import android.graphics.Color import android.os.Bundle import android.text.InputType import android.view.View -import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import kotlinx.android.synthetic.main.activity_categories.* import moxy.ktx.moxyPresenter @@ -78,7 +78,7 @@ class CategoriesActivity : BaseActivity(), OnRecyclerItemClickListener(), override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.action_clear_history -> { - AlertDialog.Builder(context ?: return false) + MaterialAlertDialogBuilder(context ?: return false) .setTitle(R.string.clear_history) .setMessage(R.string.text_clear_history_prompt) .setNegativeButton(android.R.string.cancel, null) diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/list/local/LocalListFragment.kt b/app/src/main/java/org/koitharu/kotatsu/ui/list/local/LocalListFragment.kt index 7023f81ba..64266a9ae 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/list/local/LocalListFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/list/local/LocalListFragment.kt @@ -7,7 +7,7 @@ import android.view.MenuInflater import android.view.MenuItem import androidx.activity.result.ActivityResultCallback 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 kotlinx.android.synthetic.main.fragment_list.* import moxy.ktx.moxyPresenter @@ -74,7 +74,7 @@ class LocalListFragment : MangaListFragment(), ActivityResultCallback override fun onPopupMenuItemSelected(item: MenuItem, data: Manga): Boolean { return when (item.itemId) { R.id.action_delete -> { - AlertDialog.Builder(context ?: return false) + MaterialAlertDialogBuilder(context ?: return false) .setTitle(R.string.delete_manga) .setMessage(getString(R.string.text_delete_local_manga, data.title)) .setPositiveButton(R.string.delete) { _, _ -> diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/reader/ReaderActivity.kt b/app/src/main/java/org/koitharu/kotatsu/ui/reader/ReaderActivity.kt index 944122404..eb7629112 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/reader/ReaderActivity.kt @@ -12,12 +12,12 @@ import android.view.* import android.widget.Toast import androidx.activity.result.ActivityResultCallback import androidx.activity.result.contract.ActivityResultContracts -import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.core.view.isVisible import androidx.core.view.postDelayed import androidx.core.view.updatePadding import androidx.fragment.app.commit +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import kotlinx.android.synthetic.main.activity_reader.* import kotlinx.coroutines.GlobalScope @@ -224,7 +224,7 @@ class ReaderActivity : BaseFullscreenActivity(), ReaderView, ChaptersDialog.OnCh } override fun onError(e: Throwable) { - val dialog = AlertDialog.Builder(this) + val dialog = MaterialAlertDialogBuilder(this) .setTitle(R.string.error_occurred) .setMessage(e.message) .setPositiveButton(R.string.close, null) diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml index 2501e9fd9..bd2325cf0 100644 --- a/app/src/main/res/drawable/ic_check.xml +++ b/app/src/main/res/drawable/ic_check.xml @@ -1,5 +1,11 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_browser.xml b/app/src/main/res/layout/activity_browser.xml index 09040154e..daa9d5374 100644 --- a/app/src/main/res/layout/activity_browser.xml +++ b/app/src/main/res/layout/activity_browser.xml @@ -17,7 +17,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> - - - - - - + diff --git a/app/src/main/res/layout/activity_search_global.xml b/app/src/main/res/layout/activity_search_global.xml index d787f32d6..4fcdf1714 100644 --- a/app/src/main/res/layout/activity_search_global.xml +++ b/app/src/main/res/layout/activity_search_global.xml @@ -13,7 +13,7 @@ android:background="?colorPrimary" android:theme="@style/AppToolbarTheme"> - - + android:background="?selectableItemBackground"> + android:visibility="gone" + tools:visibility="visible" /> #0288D1 #0D47A1 #F4511E + #424242 + #212121 #99000000 #D32F2F \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index fa6c6d0a4..c67cfeafb 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -10,7 +10,7 @@ @@ -19,4 +19,10 @@ @android:color/background_light + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 292d7e10f..04692c68e 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -2,6 +2,8 @@