From 9c0ef7a78885f22851640ac6436fb285f26fa6bf Mon Sep 17 00:00:00 2001 From: Finnley Somdahl <87634197+rebelonion@users.noreply.github.com> Date: Fri, 27 Oct 2023 00:47:44 -0500 Subject: [PATCH] bugfixes and themes --- README.md | 16 +- app/build.gradle | 2 +- app/src/debug/res/values/strings.xml | 2 +- app/src/main/ic_launcher-playstore.png | Bin 0 -> 27979 bytes app/src/main/java/ani/dantotsu/Functions.kt | 3 + .../main/java/ani/dantotsu/MainActivity.kt | 50 +- .../ani/dantotsu/home/AnimePageAdapter.kt | 2 +- .../ani/dantotsu/home/MangaPageAdapter.kt | 2 +- .../dantotsu/media/anime/AnimeWatchAdapter.kt | 2 + .../media/manga/MangaChapterAdapter.kt | 3 +- .../dantotsu/media/manga/MangaReadAdapter.kt | 2 + .../ani/dantotsu/others/CustomBottomDialog.kt | 8 + .../ani/dantotsu/others/ImageViewDialog.kt | 11 +- .../settings/AnimeExtensionsFragment.kt | 6 +- .../settings/DevelopersDialogFragment.kt | 22 +- .../dantotsu/settings/ExtensionsActivity.kt | 52 +- .../settings/MangaExtensionsFragment.kt | 12 +- .../ani/dantotsu/settings/SettingsActivity.kt | 10 +- .../settings/SettingsDialogFragment.kt | 8 + .../settings/paging/MangaPagingSource.kt | 2 - .../dantotsu/subcriptions/AlarmReceiver.kt | 2 +- .../ani/dantotsu/subcriptions/Subscription.kt | 4 +- .../subcriptions/SubscriptionWorker.kt | 2 +- .../java/ani/dantotsu/themes/ThemeManager.kt | 50 +- app/src/main/res/color/chip_text_color.xml | 7 + app/src/main/res/drawable/anim_splash.xml | 466 +++++++++++++----- app/src/main/res/drawable/card_outline.xml | 15 + .../res/drawable/ic_launcher_background.xml | 37 +- .../res/drawable/ic_launcher_foreground.xml | 33 +- app/src/main/res/drawable/mono.xml | 40 +- .../main/res/layout/activity_extensions.xml | 58 ++- app/src/main/res/layout/activity_main.xml | 8 +- .../main/res/layout/activity_manga_reader.xml | 8 +- app/src/main/res/layout/activity_media.xml | 1 + app/src/main/res/layout/activity_settings.xml | 24 +- app/src/main/res/layout/exo_player_view.xml | 6 +- app/src/main/res/layout/fragment_login.xml | 5 +- app/src/main/res/layout/item_anime_page.xml | 1 + app/src/main/res/layout/item_chapter_list.xml | 2 +- .../main/res/layout/item_episode_compact.xml | 2 +- app/src/main/res/layout/item_episode_grid.xml | 2 +- app/src/main/res/layout/item_episode_list.xml | 2 +- app/src/main/res/layout/item_manga_page.xml | 1 + .../main/res/layout/item_media_compact.xml | 3 +- app/src/main/res/layout/item_media_large.xml | 3 +- app/src/main/res/layout/item_media_page.xml | 3 +- .../main/res/layout/item_media_page_small.xml | 3 +- .../main/res/layout/item_search_header.xml | 5 +- app/src/main/res/layout/splash_screen.xml | 2 +- .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 2916 -> 3180 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 1942 -> 1994 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 4036 -> 4166 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 6666 -> 6482 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 9028 -> 8716 bytes app/src/main/res/values-night/themes.xml | 46 +- app/src/main/res/values/themes.xml | 7 +- stable.md | 17 +- 57 files changed, 699 insertions(+), 381 deletions(-) create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/res/color/chip_text_color.xml create mode 100644 app/src/main/res/drawable/card_outline.xml diff --git a/README.md b/README.md index 75d1dc16..ef42c1c7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ -# **Dantotsu** (🚧 ALPHA 🚧) - -> ⚠️ **WARNING**: This project is in alpha stage. Things may not work as expected. +# **Dantotsu**

@@ -26,14 +24,14 @@ Dantotsu is crafted from the ashes of Saikou and based on simplistic yet state-o | Type | Status | | ---------------- | ------- | | Anime Extensions | Working | -| Manga Extensions | "Working" | +| Manga Extensions | Working | | Light Novel Extensions | Not Working | ## APP FEATURES -- Easy and functional way to both, watch anime and read manga, ad-free. +- Easy and functional way to both, watch anime and read manga. - A completely open source app with a nice UI & Animations :) @@ -59,14 +57,16 @@ add your own extensions in the settings menu (Dantotsu has no affiliation with a ## Planned Stuff -- get app out of alpha +- TV Support -- Accent Color Change (RIP Hot Pink Supremacy.) +- LN Support + +- Offline Viewing ## Rejected Stuff (still rejected) -- Sources of any language except English +- Official support of any language except English - News Section in the App diff --git a/app/build.gradle b/app/build.gradle index d27a4fbc..8e394e12 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,7 +21,7 @@ android { minSdk 23 targetSdk 34 versionCode ((System.currentTimeMillis() / 60000).toInteger()) - versionName "0.1.5" + versionName "1.0.0" signingConfig signingConfigs.debug } diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml index 3c0d72af..e74ebc2f 100644 --- a/app/src/debug/res/values/strings.xml +++ b/app/src/debug/res/values/strings.xml @@ -1,4 +1,4 @@ - Dantotsu α + Dantotsu \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..20a7f23e3518eafa6065333b91da8c0b7f901b18 GIT binary patch literal 27979 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 x|H(fU|2pj-&!5O2#vjuUuP(R.id.navbar) val backgroundDrawable = bottomBar.background as GradientDrawable val currentColor = backgroundDrawable.color?.defaultColor ?: 0 - val semiTransparentColor = (currentColor and 0x00FFFFFF) or 0x80000000.toInt() + val semiTransparentColor = (currentColor and 0x00FFFFFF) or 0xE8000000.toInt() backgroundDrawable.setColor(semiTransparentColor) bottomBar.background = backgroundDrawable } @@ -125,24 +125,40 @@ class MainActivity : AppCompatActivity() { binding.root.isMotionEventSplittingEnabled = false lifecycleScope.launch { - val splash = SplashScreenBinding.inflate(layoutInflater) - binding.root.addView(splash.root) - (splash.splashImage.drawable as Animatable).start() + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + val splash = SplashScreenBinding.inflate(layoutInflater) + binding.root.addView(splash.root) + (splash.splashImage.drawable as Animatable).start() - // Wait for 2 seconds (2000 milliseconds) - delay(2000) + delay(1200) - // Now perform the animation - ObjectAnimator.ofFloat( - splash.root, - View.TRANSLATION_Y, - 0f, - -splash.root.height.toFloat() - ).apply { - interpolator = AnticipateInterpolator() - duration = 200L - doOnEnd { binding.root.removeView(splash.root) } - start() + ObjectAnimator.ofFloat( + splash.root, + View.TRANSLATION_Y, + 0f, + -splash.root.height.toFloat() + ).apply { + interpolator = AnticipateInterpolator() + duration = 200L + doOnEnd { binding.root.removeView(splash.root) } + start() + } + } + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + splashScreen.setOnExitAnimationListener { splashScreenView -> + ObjectAnimator.ofFloat( + splashScreenView, + View.TRANSLATION_Y, + 0f, + -splashScreenView.height.toFloat() + ).apply { + interpolator = AnticipateInterpolator() + duration = 200L + doOnEnd { splashScreenView.remove() } + start() + } } } diff --git a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt index 48932305..feba6ac9 100644 --- a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt +++ b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt @@ -54,7 +54,7 @@ class AnimePageAdapter : RecyclerView.Adapter(R.id.animeSearchBar) val currentColor = textInputLayout.boxBackgroundColor - val semiTransparentColor = (currentColor and 0x00FFFFFF) or 0x80000000.toInt() + val semiTransparentColor = (currentColor and 0x00FFFFFF) or 0xA8000000.toInt() textInputLayout.boxBackgroundColor = semiTransparentColor val materialCardView = holder.itemView.findViewById(R.id.animeUserAvatarContainer) materialCardView.setCardBackgroundColor(semiTransparentColor) diff --git a/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt b/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt index 68ca065a..5422d1cb 100644 --- a/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt +++ b/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt @@ -53,7 +53,7 @@ class MangaPageAdapter : RecyclerView.Adapter(R.id.mangaSearchBar) val currentColor = textInputLayout.boxBackgroundColor - val semiTransparentColor = (currentColor and 0x00FFFFFF) or 0x80000000.toInt() + val semiTransparentColor= (currentColor and 0x00FFFFFF) or 0xA8000000.toInt() textInputLayout.boxBackgroundColor = semiTransparentColor val materialCardView = holder.itemView.findViewById(R.id.mangaUserAvatarContainer) materialCardView.setCardBackgroundColor(semiTransparentColor) diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt index 04886529..feb75e7a 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt @@ -10,6 +10,7 @@ import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.ImageView import android.widget.LinearLayout +import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView import ani.dantotsu.* @@ -177,6 +178,7 @@ class AnimeWatchAdapter( binding.animeWatchChipScroll.smoothScrollTo((chip.left - screenWidth / 2) + (chip.width / 2), 0) } chip.text = "${names[limit * (position)]} - ${names[last - 1]}" + chip.setTextColor(ContextCompat.getColorStateList(fragment.requireContext(), R.color.chip_text_color)) chip.setOnClickListener { selected() diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt index a5a2b19e..36ad53bb 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt @@ -63,7 +63,8 @@ class MangaChapterAdapter( val binding = holder.binding setAnimation(fragment.requireContext(), holder.binding.root, fragment.uiSettings) val ep = arr[position] - binding.itemEpisodeNumber.text = ep.number + val parsedNumber = MangaNameAdapter.findChapterNumber(ep.number)?.toInt() + binding.itemEpisodeNumber.text = parsedNumber?.toString() ?: ep.number if (media.userProgress != null) { if ((MangaNameAdapter.findChapterNumber(ep.number) ?: 9999f) <= media.userProgress!!.toFloat()) binding.itemEpisodeViewedCover.visibility = View.VISIBLE diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt index 37472155..3579d6b9 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt @@ -7,6 +7,7 @@ import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.ImageView import android.widget.LinearLayout +import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView import ani.dantotsu.* @@ -145,6 +146,7 @@ class MangaReadAdapter( binding.animeWatchChipScroll.smoothScrollTo((chip.left - screenWidth / 2) + (chip.width / 2), 0) } chip.text = "${names[limit * (position)]} - ${names[last - 1]}" + chip.setTextColor(ContextCompat.getColorStateList(fragment.requireContext(), R.color.chip_text_color)) chip.setOnClickListener { selected() diff --git a/app/src/main/java/ani/dantotsu/others/CustomBottomDialog.kt b/app/src/main/java/ani/dantotsu/others/CustomBottomDialog.kt index 19d96cf6..3c758f60 100644 --- a/app/src/main/java/ani/dantotsu/others/CustomBottomDialog.kt +++ b/app/src/main/java/ani/dantotsu/others/CustomBottomDialog.kt @@ -1,6 +1,8 @@ package ani.dantotsu.others +import android.graphics.Color import android.os.Bundle +import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -46,6 +48,12 @@ open class CustomBottomDialog : BottomSheetDialogFragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { _binding = BottomSheetCustomBinding.inflate(inflater, container, false) + val window = dialog?.window + window?.statusBarColor = Color.TRANSPARENT + val typedValue = TypedValue() + val theme = requireContext().theme + theme.resolveAttribute(com.google.android.material.R.attr.colorSurface, typedValue, true) + window?.navigationBarColor = typedValue.data return binding.root } diff --git a/app/src/main/java/ani/dantotsu/others/ImageViewDialog.kt b/app/src/main/java/ani/dantotsu/others/ImageViewDialog.kt index e46308a7..868ff51c 100644 --- a/app/src/main/java/ani/dantotsu/others/ImageViewDialog.kt +++ b/app/src/main/java/ani/dantotsu/others/ImageViewDialog.kt @@ -74,15 +74,16 @@ class ImageViewDialog : BottomSheetDialogFragment() { if (image2 != null) openLinkInBrowser(image2.url) true } + val context = requireContext() - lifecycleScope.launch { + viewLifecycleOwner.lifecycleScope.launch { val binding = _binding ?: return@launch - var bitmap = requireContext().loadBitmap_old(image, trans1 ?: listOf()) - var bitmap2 = if (image2 != null) requireContext().loadBitmap_old(image2, trans2 ?: listOf()) else null + var bitmap = context.loadBitmap_old(image, trans1 ?: listOf()) + var bitmap2 = if (image2 != null) context.loadBitmap_old(image2, trans2 ?: listOf()) else null if (bitmap == null) { - bitmap = requireContext().loadBitmap(image, trans1 ?: listOf()) - bitmap2 = if (image2 != null) requireContext().loadBitmap(image2, trans2 ?: listOf()) else null + bitmap = context.loadBitmap(image, trans1 ?: listOf()) + bitmap2 = if (image2 != null) context.loadBitmap(image2, trans2 ?: listOf()) else null } bitmap = if (bitmap2 != null && bitmap != null) mergeBitmap(bitmap, bitmap2,) else bitmap diff --git a/app/src/main/java/ani/dantotsu/settings/AnimeExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/AnimeExtensionsFragment.kt index 28e1482b..2ff5ef23 100644 --- a/app/src/main/java/ani/dantotsu/settings/AnimeExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/AnimeExtensionsFragment.kt @@ -49,10 +49,10 @@ class AnimeExtensionsFragment : Fragment(), ): View { _binding = FragmentAnimeExtensionsBinding.inflate(inflater, container, false) - binding.allAnimeExtensionsRecyclerView.isNestedScrollingEnabled = true + binding.allAnimeExtensionsRecyclerView.isNestedScrollingEnabled = false binding.allAnimeExtensionsRecyclerView.adapter = adapter binding.allAnimeExtensionsRecyclerView.layoutManager = LinearLayoutManager(context) - (binding.allAnimeExtensionsRecyclerView.layoutManager as LinearLayoutManager).isItemPrefetchEnabled = false + (binding.allAnimeExtensionsRecyclerView.layoutManager as LinearLayoutManager).isItemPrefetchEnabled = true lifecycleScope.launch { viewModel.pagerFlow.collectLatest { @@ -60,6 +60,8 @@ class AnimeExtensionsFragment : Fragment(), } } + viewModel.invalidatePager() // Force a refresh of the pager + return binding.root } diff --git a/app/src/main/java/ani/dantotsu/settings/DevelopersDialogFragment.kt b/app/src/main/java/ani/dantotsu/settings/DevelopersDialogFragment.kt index 19aa6580..c1e168ab 100644 --- a/app/src/main/java/ani/dantotsu/settings/DevelopersDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/DevelopersDialogFragment.kt @@ -13,26 +13,8 @@ class DevelopersDialogFragment : BottomSheetDialogFragment() { private val binding get() = _binding!! private val developers = arrayOf( - Developer("vorobyovgabriel","https://avatars.githubusercontent.com/u/99561687?s=120&v=4","Owner","https://github.com/vorobyovgabriel"), - Developer("brahmkshtriya","https://avatars.githubusercontent.com/u/69040506?s=120&v=4","Maintainer","https://github.com/brahmkshatriya"), - Developer("jeelpatel231","https://avatars.githubusercontent.com/u/33726155?s=120&v=4","Contributor","https://github.com/jeelpatel231"), - Developer("blatzar","https://avatars.githubusercontent.com/u/46196380?s=120&v=4","Contributor","https://github.com/Blatzar"), - Developer("bilibox","https://avatars.githubusercontent.com/u/1800580?s=120&v=4","Contributor","https://github.com/Bilibox"), - Developer("sutslec","https://avatars.githubusercontent.com/u/27722281?s=120&v=4","Contributor","https://github.com/Sutslec"), - Developer("4jx","https://avatars.githubusercontent.com/u/79868816?s=120&v=4","Contributor","https://github.com/4JX"), - Developer("xtrm-en","https://avatars.githubusercontent.com/u/26600206?s=120&v=4","Contributor","https://github.com/xtrm-en"), - Developer("scrazzz","https://avatars.githubusercontent.com/u/70033559?s=120&v=4","Contributor","https://github.com/scrazzz"), - Developer("defcoding","https://avatars.githubusercontent.com/u/39608887?s=120&v=4","Contributor","https://github.com/defcoding"), - Developer("adolar0042","https://avatars.githubusercontent.com/u/39769465?s=120&v=4","Contributor","https://github.com/adolar0042"), - Developer("diegopyl1209","https://avatars.githubusercontent.com/u/80992641?s=120&v=4","Contributor","https://github.com/diegopyl1209"), - Developer("sreekrishna2001","https://avatars.githubusercontent.com/u/67505103?s=120&v=4","Contributor","https://github.com/Sreekrishna2001"), - Developer("riimuru","https://avatars.githubusercontent.com/u/57333995?s=120&v=4","Contributor","https://github.com/riimuru"), - Developer("vu nguyen","https://avatars.githubusercontent.com/u/68330291?s=120&v=4","Contributor","https://github.com/hoangvu12"), - Developer("animejeff","https://avatars.githubusercontent.com/u/101831300?s=120&v=4","Contributor","https://github.com/AnimeJeff"), - Developer("antonydp","https://avatars.githubusercontent.com/u/38143733?s=120&v=4","Contributor","https://github.com/antonydp"), - Developer("tobybridle","https://avatars.githubusercontent.com/u/52335751?s=120&v=4","Contributor","https://github.com/TobyBridle"), - Developer("enimax","https://avatars.githubusercontent.com/u/107899019?s=120&v=4","Contributor","https://github.com/enimax-anime"), - Developer("vipulog","https://avatars.githubusercontent.com/u/90324465?s=120&v=4","Contributor","https://github.com/VipulOG") + Developer("rebelonion","https://avatars.githubusercontent.com/u/87634197?v=4","Owner and Maintainer","https://github.com/rebelonion"), + Developer("Wai What", "https://cdn.discordapp.com/avatars/928202695611908126/aeac4c867acbb8c3783356497055a426.webp?size=80", "Icon Designer", ""), ) override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { diff --git a/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt b/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt index 71a5f43b..a4f9a0d6 100644 --- a/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt @@ -1,55 +1,26 @@ package ani.dantotsu.settings import android.annotation.SuppressLint -import android.app.NotificationManager -import android.content.Context -import android.content.pm.PackageManager -import android.graphics.drawable.Drawable import android.os.Build.* import android.os.Build.VERSION.* import android.os.Bundle -import android.view.LayoutInflater -import android.view.View +import android.text.Editable +import android.text.TextWatcher import android.view.ViewGroup -import android.widget.ImageView +import android.widget.AutoCompleteTextView import android.widget.LinearLayout -import android.widget.ProgressBar import android.widget.SearchView -import android.widget.TextView import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity -import androidx.core.app.ActivityCompat -import androidx.core.app.NotificationCompat -import androidx.core.content.ContextCompat import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.* -import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager -import eu.kanade.tachiyomi.extension.anime.model.AnimeExtension import ani.dantotsu.databinding.ActivityExtensionsBinding -import ani.dantotsu.home.AnimeFragment -import ani.dantotsu.home.MangaFragment import ani.dantotsu.themes.ThemeManager -import com.bumptech.glide.Glide import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator -import eu.kanade.tachiyomi.data.notification.Notifications -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import rx.android.schedulers.AndroidSchedulers -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy -import javax.inject.Inject - class ExtensionsActivity : AppCompatActivity() { private val restartMainActivity = object : OnBackPressedCallback(false) { @@ -94,21 +65,20 @@ class ExtensionsActivity : AppCompatActivity() { }.attach() - val searchView: SearchView = findViewById(R.id.searchView) + val searchView: AutoCompleteTextView = findViewById(R.id.searchViewText) - val extensionsHeader: LinearLayout = findViewById(R.id.extensionsHeader) - searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { - override fun onQueryTextSubmit(query: String?): Boolean { - return false + searchView.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) { } - override fun onQueryTextChange(newText: String?): Boolean { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { val currentFragment = supportFragmentManager.findFragmentByTag("f${viewPager.currentItem}") if (currentFragment is SearchQueryHandler) { - currentFragment.updateContentBasedOnQuery(newText) + currentFragment.updateContentBasedOnQuery(s?.toString()?.trim()) } - - return true } }) diff --git a/app/src/main/java/ani/dantotsu/settings/MangaExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/MangaExtensionsFragment.kt index 0cc0d359..a949bd86 100644 --- a/app/src/main/java/ani/dantotsu/settings/MangaExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/MangaExtensionsFragment.kt @@ -10,6 +10,7 @@ import androidx.core.app.NotificationCompat import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope +import androidx.paging.PagingData import androidx.recyclerview.widget.LinearLayoutManager import ani.dantotsu.R import ani.dantotsu.databinding.FragmentMangaExtensionsBinding @@ -25,6 +26,7 @@ import ani.dantotsu.settings.paging.MangaExtensionAdapter import ani.dantotsu.settings.paging.MangaExtensionsViewModel import ani.dantotsu.settings.paging.MangaExtensionsViewModelFactory import ani.dantotsu.settings.paging.OnMangaInstallClickListener +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collectLatest class MangaExtensionsFragment : Fragment(), @@ -50,17 +52,19 @@ class MangaExtensionsFragment : Fragment(), ): View { _binding = FragmentMangaExtensionsBinding.inflate(inflater, container, false) - binding.allMangaExtensionsRecyclerView.isNestedScrollingEnabled = true + binding.allMangaExtensionsRecyclerView.isNestedScrollingEnabled = false binding.allMangaExtensionsRecyclerView.adapter = adapter binding.allMangaExtensionsRecyclerView.layoutManager = LinearLayoutManager(context) - (binding.allMangaExtensionsRecyclerView.layoutManager as LinearLayoutManager).isItemPrefetchEnabled = false + (binding.allMangaExtensionsRecyclerView.layoutManager as LinearLayoutManager).isItemPrefetchEnabled = true lifecycleScope.launch { - viewModel.pagerFlow.collectLatest { - adapter.submitData(it) + viewModel.pagerFlow.collectLatest { pagingData -> + adapter.submitData(pagingData) } } + viewModel.invalidatePager() // Force a refresh of the pager + return binding.root } diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt index d99b1927..d67a16ac 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt @@ -105,6 +105,12 @@ OS Version: $CODENAME $RELEASE ($SDK_INT) restartApp() } + binding.settingsUseOLED.isChecked = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getBoolean("use_oled", false) + binding.settingsUseOLED.setOnCheckedChangeListener { _, isChecked -> + getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit().putBoolean("use_oled", isChecked).apply() + restartApp() + } + val themeString = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getString("theme", "PURPLE")!! binding.themeSwitcher.setText(themeString.substring(0, 1) + themeString.substring(1).lowercase()) @@ -408,7 +414,7 @@ OS Version: $CODENAME $RELEASE ($SDK_INT) } } - var curTime = loadData("subscriptions_time_r") ?: defaultTime + var curTime = loadData("subscriptions_time_s") ?: defaultTime val timeNames = timeMinutes.map { val mins = it % 60 val hours = it / 60 @@ -421,7 +427,7 @@ OS Version: $CODENAME $RELEASE ($SDK_INT) speedDialog.setSingleChoiceItems(timeNames, curTime) { dialog, i -> curTime = i binding.settingsSubscriptionsTime.text = getString(R.string.subscriptions_checking_time_s, timeNames[i]) - saveData("subscriptions_time_r", curTime) + saveData("subscriptions_time_s", curTime) dialog.dismiss() startSubscription(true) }.show() diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt b/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt index 0db7e089..5b5c62b0 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt @@ -3,8 +3,10 @@ package ani.dantotsu.settings import android.app.DownloadManager import android.content.ActivityNotFoundException import android.content.Intent +import android.graphics.Color import android.net.Uri import android.os.Bundle +import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -26,6 +28,12 @@ class SettingsDialogFragment : BottomSheetDialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + val window = dialog?.window + window?.statusBarColor = Color.CYAN + val typedValue = TypedValue() + val theme = requireContext().theme + theme.resolveAttribute(com.google.android.material.R.attr.colorSurface, typedValue, true) + window?.navigationBarColor = typedValue.data if (Anilist.token != null) { binding.settingsLogin.setText(R.string.logout) diff --git a/app/src/main/java/ani/dantotsu/settings/paging/MangaPagingSource.kt b/app/src/main/java/ani/dantotsu/settings/paging/MangaPagingSource.kt index 511bd501..8dec149d 100644 --- a/app/src/main/java/ani/dantotsu/settings/paging/MangaPagingSource.kt +++ b/app/src/main/java/ani/dantotsu/settings/paging/MangaPagingSource.kt @@ -117,12 +117,10 @@ class MangaExtensionAdapter(private val clickListener: OnMangaInstallClickListen companion object { private val DIFF_CALLBACK = object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: MangaExtension.Available, newItem: MangaExtension.Available): Boolean { - // Your logic here return oldItem.pkgName == newItem.pkgName } override fun areContentsTheSame(oldItem: MangaExtension.Available, newItem: MangaExtension.Available): Boolean { - // Your logic here return oldItem == newItem } } diff --git a/app/src/main/java/ani/dantotsu/subcriptions/AlarmReceiver.kt b/app/src/main/java/ani/dantotsu/subcriptions/AlarmReceiver.kt index de2836d3..0849ca07 100644 --- a/app/src/main/java/ani/dantotsu/subcriptions/AlarmReceiver.kt +++ b/app/src/main/java/ani/dantotsu/subcriptions/AlarmReceiver.kt @@ -40,7 +40,7 @@ class AlarmReceiver : BroadcastReceiver() { PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT ) val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager - val curTime = loadData("subscriptions_time_r", context) ?: defaultTime + val curTime = loadData("subscriptions_time_s", context) ?: defaultTime if (timeMinutes[curTime] > 0) alarmManager.setRepeating( diff --git a/app/src/main/java/ani/dantotsu/subcriptions/Subscription.kt b/app/src/main/java/ani/dantotsu/subcriptions/Subscription.kt index 6d00090c..45925ba4 100644 --- a/app/src/main/java/ani/dantotsu/subcriptions/Subscription.kt +++ b/app/src/main/java/ani/dantotsu/subcriptions/Subscription.kt @@ -16,8 +16,8 @@ import kotlinx.coroutines.launch @SuppressLint("MissingPermission") class Subscription { companion object { - const val defaultTime = 3 - val timeMinutes = arrayOf(0L, 120, 180, 240, 360, 480, 720, 1440) + const val defaultTime = 1 + val timeMinutes = arrayOf(0L, 720, 1440) private var alreadyStarted = false fun Context.startSubscription(force: Boolean = false) { diff --git a/app/src/main/java/ani/dantotsu/subcriptions/SubscriptionWorker.kt b/app/src/main/java/ani/dantotsu/subcriptions/SubscriptionWorker.kt index ee375e46..8481ed88 100644 --- a/app/src/main/java/ani/dantotsu/subcriptions/SubscriptionWorker.kt +++ b/app/src/main/java/ani/dantotsu/subcriptions/SubscriptionWorker.kt @@ -22,7 +22,7 @@ class SubscriptionWorker(val context: Context, params: WorkerParameters) : Corou private const val SUBSCRIPTION_WORK_NAME = "work_subscription" fun enqueue(context: Context) { - val curTime = loadData("subscriptions_time_r") ?: defaultTime + val curTime = loadData("subscriptions_time_s") ?: defaultTime if(timeMinutes[curTime]>0L) { val constraints = Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build() val periodicSyncDataWork = PeriodicWorkRequest.Builder( diff --git a/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt b/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt index 55f126b9..080f4394 100644 --- a/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt +++ b/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt @@ -1,41 +1,41 @@ package ani.dantotsu.themes import android.content.Context +import android.content.res.Configuration import ani.dantotsu.R class ThemeManager(private val context: Context) { fun applyTheme() { + val useOLED = context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getBoolean("use_oled", false) && isDarkThemeActive(context) if(context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getBoolean("use_material_you", false)){ return } - when (context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getString("theme", "PURPLE")!!) { - "PURPLE" -> { - context.setTheme(R.style.Theme_Dantotsu_Purple) - } - "BLUE" -> { - context.setTheme(R.style.Theme_Dantotsu_Blue) - } - "GREEN" -> { - context.setTheme(R.style.Theme_Dantotsu_Green) - } - "PINK" -> { - context.setTheme(R.style.Theme_Dantotsu_Pink) - } - "RED" -> { - context.setTheme(R.style.Theme_Dantotsu_Red) - } - "LAVENDER" -> { - context.setTheme(R.style.Theme_Dantotsu_Lavender) - } - "MONOCHROME (BETA)" -> { - context.setTheme(R.style.Theme_Dantotsu_Monochrome) - } - else -> { - context.setTheme(R.style.Theme_Dantotsu_Purple) - } + val theme = context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getString("theme", "PURPLE")!! + + val themeToApply = when (theme) { + "PURPLE" -> if (useOLED) R.style.Theme_Dantotsu_PurpleOLED else R.style.Theme_Dantotsu_Purple + "BLUE" -> if (useOLED) R.style.Theme_Dantotsu_BlueOLED else R.style.Theme_Dantotsu_Blue + "GREEN" -> if (useOLED) R.style.Theme_Dantotsu_GreenOLED else R.style.Theme_Dantotsu_Green + "PINK" -> if (useOLED) R.style.Theme_Dantotsu_PinkOLED else R.style.Theme_Dantotsu_Pink + "RED" -> if (useOLED) R.style.Theme_Dantotsu_RedOLED else R.style.Theme_Dantotsu_Red + "LAVENDER" -> if (useOLED) R.style.Theme_Dantotsu_LavenderOLED else R.style.Theme_Dantotsu_Lavender + "MONOCHROME (BETA)" -> if (useOLED) R.style.Theme_Dantotsu_MonochromeOLED else R.style.Theme_Dantotsu_Monochrome + else -> if (useOLED) R.style.Theme_Dantotsu_PurpleOLED else R.style.Theme_Dantotsu_Purple + } + + context.setTheme(themeToApply) + } + + private fun isDarkThemeActive(context: Context): Boolean { + return when (context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) { + Configuration.UI_MODE_NIGHT_YES -> true + Configuration.UI_MODE_NIGHT_NO -> false + Configuration.UI_MODE_NIGHT_UNDEFINED -> false + else -> false } } + companion object{ enum class Theme(val theme: String) { PURPLE("PURPLE"), diff --git a/app/src/main/res/color/chip_text_color.xml b/app/src/main/res/color/chip_text_color.xml new file mode 100644 index 00000000..7cc1a4af --- /dev/null +++ b/app/src/main/res/color/chip_text_color.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/app/src/main/res/drawable/anim_splash.xml b/app/src/main/res/drawable/anim_splash.xml index 2fa23aa5..f841df4f 100644 --- a/app/src/main/res/drawable/anim_splash.xml +++ b/app/src/main/res/drawable/anim_splash.xml @@ -1,173 +1,377 @@ - + android:name="vector" + android:width="768dp" + android:height="768dp" + android:viewportWidth="768" + android:viewportHeight="768"> - clip-path - android:name="clip" - android:pathData="M32,32m-32,0a32,32 0,1 1,64 0a32,32 0,1 1,-64 0" /> - - - - - - - - - - - - - - - - + android:name="wrapper" + android:pivotX="384" + android:pivotY="384"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + android:valueType="floatType" + android:interpolator="@android:anim/overshoot_interpolator"/> + android:valueType="floatType" + android:interpolator="@android:anim/overshoot_interpolator"/> - + + android:propertyName="rotation" + android:startOffset="350" + android:duration="550" + android:valueFrom="-10" + android:valueTo="0" + android:valueType="floatType" + android:interpolator="@android:anim/overshoot_interpolator"/> + android:valueType="floatType" + android:interpolator="@android:interpolator/fast_out_slow_in"/> + - - - - - - - - - + + android:valueType="floatType" + android:interpolator="@android:anim/overshoot_interpolator"/> - + + + + + + + + + + + + + + + + + + + + + + + + android:valueType="floatType" + android:interpolator="@android:interpolator/fast_out_slow_in"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/card_outline.xml b/app/src/main/res/drawable/card_outline.xml new file mode 100644 index 00000000..70356674 --- /dev/null +++ b/app/src/main/res/drawable/card_outline.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 278186ca..2df302a9 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,23 +1,30 @@ - + android:viewportWidth="768" + android:viewportHeight="768"> + + + android:pathData="M128,128h512v511.96h-512z" + android:strokeWidth="0" + android:fillColor="#ff00f4"/> + android:pathData="m128,128v335.26c23.32,3.7 47.23,5.63 71.58,5.63 211.59,0 389.34,-144.9 439.43,-340.89H128Z" + android:strokeWidth="0" + android:fillColor="#7000b8"/> + android:pathData="M384,384m-172.26,0a172.26,172.26 0,1 1,344.52 0a172.26,172.26 0,1 1,-344.52 0" + android:strokeWidth="0" + android:fillColor="#d300e5"/> + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index b3679636..60fae8d8 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -1,27 +1,22 @@ - + android:viewportWidth="768" + android:viewportHeight="768"> + + + android:pathData="m44.26,128c0,46.25 37.49,83.74 83.74,83.74h256c95.13,0 172.26,77.12 172.26,172.26h0c0,95.13 -77.12,172.26 -172.26,172.26H128c-46.24,0 -83.72,37.47 -83.74,83.71h723.74V128H44.26Z" + android:strokeWidth="0" + android:fillColor="#1f1f30"/> + android:pathData="m481.82,384h0c0,54.03 -43.8,97.82 -97.82,97.82H0v-195.64h384c54.02,0 97.82,43.8 97.82,97.82Z" + android:strokeWidth="0" + android:fillColor="#1f1f30"/> - + android:pathData="m442,366.7l-76.02,-43.89c-13.32,-7.69 -29.96,1.92 -29.96,17.3v87.78c0,15.38 16.65,24.99 29.96,17.3l76.02,-43.89c13.32,-7.69 13.32,-26.91 0,-34.6Z" + android:strokeWidth="0" + android:fillColor="#efe7ff"/> diff --git a/app/src/main/res/drawable/mono.xml b/app/src/main/res/drawable/mono.xml index 7bf506e7..1ee5f5d8 100644 --- a/app/src/main/res/drawable/mono.xml +++ b/app/src/main/res/drawable/mono.xml @@ -1,27 +1,17 @@ - - - - - - + android:width="768dp" + android:height="768dp" + android:viewportWidth="768" + android:viewportHeight="768"> + + + + + diff --git a/app/src/main/res/layout/activity_extensions.xml b/app/src/main/res/layout/activity_extensions.xml index 3f22d75c..172f065b 100644 --- a/app/src/main/res/layout/activity_extensions.xml +++ b/app/src/main/res/layout/activity_extensions.xml @@ -51,13 +51,9 @@ android:text="@string/extensions" android:textSize="28sp" /> - + android:layout_height="80dp" /> @@ -69,13 +65,38 @@ tools:ignore="UseCompoundDrawables"> - + android:layout_height="56dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:layout_marginBottom="8dp" + android:transitionName="@string/search" + app:boxBackgroundColor="@color/bg" + app:boxBackgroundMode="outline" + app:boxCornerRadiusBottomEnd="28dp" + app:boxCornerRadiusBottomStart="28dp" + app:boxCornerRadiusTopEnd="28dp" + app:boxCornerRadiusTopStart="28dp" + app:endIconDrawable="@drawable/ic_round_search_24" + app:hintAnimationEnabled="true"> + + + @@ -84,15 +105,26 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="fixed" + app:tabTextColor="?attr/colorOnBackground" + selectedTabIndicatorColor="?attr/colorPrimary" + app:tabIndicatorColor="?attr/colorPrimary" app:tabGravity="fill"> + android:text="Installed Anime"/> + android:text="Available Anime"/> + + diff --git a/app/src/main/res/layout/activity_manga_reader.xml b/app/src/main/res/layout/activity_manga_reader.xml index 8bd8e543..bd8c890c 100644 --- a/app/src/main/res/layout/activity_manga_reader.xml +++ b/app/src/main/res/layout/activity_manga_reader.xml @@ -133,7 +133,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - app:cardBackgroundColor="#000000" + app:cardBackgroundColor="?attr/colorSurface" app:cardCornerRadius="16dp" app:contentPadding="8dp" app:strokeColor="?attr/colorSecondary" @@ -148,7 +148,7 @@ android:layout_marginEnd="8dp" android:fontFamily="@font/poppins_bold" android:text="@string/app_name" - android:textColor="?android:colorBackground" + android:textColor="?attr/colorOnSurface" android:textSize="16sp" /> @@ -170,7 +170,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - app:cardBackgroundColor="#000000" + app:cardBackgroundColor="?attr/colorSurface" app:cardCornerRadius="16dp" app:contentPadding="8dp" app:strokeColor="?attr/colorSecondary" @@ -185,7 +185,7 @@ android:layout_marginEnd="8dp" android:fontFamily="@font/poppins_bold" android:text="@string/app_name" - android:textColor="?android:colorBackground" + android:textColor="?attr/colorOnSurface" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_media.xml b/app/src/main/res/layout/activity_media.xml index e84267b0..844524a2 100644 --- a/app/src/main/res/layout/activity_media.xml +++ b/app/src/main/res/layout/activity_media.xml @@ -123,6 +123,7 @@ android:text="@string/add" android:textAllCaps="true" android:textColor="?attr/colorPrimary" + app:strokeColor="?attr/colorPrimary" android:textSize="14sp" android:textStyle="bold" app:cornerRadius="16dp" diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 1b5a3b96..c2a01baa 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -161,16 +161,34 @@ + + + app:iconTint="?attr/colorOnPrimaryContainer" /> diff --git a/app/src/main/res/layout/item_episode_list.xml b/app/src/main/res/layout/item_episode_list.xml index 4480d61f..3c91530f 100644 --- a/app/src/main/res/layout/item_episode_list.xml +++ b/app/src/main/res/layout/item_episode_list.xml @@ -8,7 +8,7 @@ android:layout_margin="8dp" android:backgroundTintMode="src_atop" android:longClickable="true" - app:cardBackgroundColor="?attr/colorSurface" + android:background="@drawable/card_outline" app:cardCornerRadius="16dp"> @@ -65,6 +65,7 @@ android:layout_width="12dp" android:layout_height="match_parent" app:srcCompat="@drawable/ic_round_star_24" + app:tint="?attr/colorOnPrimary" tools:ignore="ContentDescription" /> diff --git a/app/src/main/res/layout/item_media_large.xml b/app/src/main/res/layout/item_media_large.xml index 6778876f..83fcffa8 100644 --- a/app/src/main/res/layout/item_media_large.xml +++ b/app/src/main/res/layout/item_media_large.xml @@ -74,7 +74,7 @@ android:layout_marginStart="2dp" android:fontFamily="@font/poppins_bold" android:paddingTop="2dp" - android:textColor="@color/bg_white" + android:textColor="?attr/colorOnPrimary" android:textSize="12sp" tools:ignore="TextContrastCheck" tools:text="0.0" /> @@ -84,6 +84,7 @@ android:layout_width="12dp" android:layout_height="match_parent" app:srcCompat="@drawable/ic_round_star_24" + app:tint="?attr/colorOnPrimary" tools:ignore="ContentDescription" /> diff --git a/app/src/main/res/layout/item_media_page.xml b/app/src/main/res/layout/item_media_page.xml index dc540bcb..0afa0585 100644 --- a/app/src/main/res/layout/item_media_page.xml +++ b/app/src/main/res/layout/item_media_page.xml @@ -72,7 +72,7 @@ android:layout_marginStart="2dp" android:fontFamily="@font/poppins_bold" android:paddingTop="2dp" - android:textColor="@color/bg_white" + android:textColor="?attr/colorOnPrimary" android:textSize="12sp" tools:ignore="TextContrastCheck" tools:text="0.0" /> @@ -82,6 +82,7 @@ android:layout_width="12dp" android:layout_height="match_parent" app:srcCompat="@drawable/ic_round_star_24" + app:tint="?attr/colorOnPrimary" tools:ignore="ContentDescription" /> diff --git a/app/src/main/res/layout/item_media_page_small.xml b/app/src/main/res/layout/item_media_page_small.xml index dd4236a4..2499ea59 100644 --- a/app/src/main/res/layout/item_media_page_small.xml +++ b/app/src/main/res/layout/item_media_page_small.xml @@ -92,7 +92,7 @@ android:layout_marginStart="2dp" android:fontFamily="@font/poppins_bold" android:paddingTop="2dp" - android:textColor="@color/bg_white" + android:textColor="?attr/colorOnPrimary" android:textSize="12sp" tools:ignore="TextContrastCheck" tools:text="0.0" /> @@ -102,6 +102,7 @@ android:layout_width="12dp" android:layout_height="match_parent" app:srcCompat="@drawable/ic_round_star_24" + app:tint="?attr/colorOnPrimary" tools:ignore="ContentDescription" /> diff --git a/app/src/main/res/layout/item_search_header.xml b/app/src/main/res/layout/item_search_header.xml index 50713209..320cd2a9 100644 --- a/app/src/main/res/layout/item_search_header.xml +++ b/app/src/main/res/layout/item_search_header.xml @@ -60,6 +60,8 @@ android:layout_weight="1" android:layoutDirection="inherit" android:text="@string/list_only" + android:textColor="?attr/colorOnBackground" + app:buttonTint="?attr/colorPrimary" android:visibility="visible" app:checkedState="indeterminate" tools:ignore="TextContrastCheck,TouchTargetSizeCheck" /> @@ -75,7 +77,8 @@ android:text="@string/adult" android:textAlignment="textEnd" android:visibility="visible" - app:buttonTint="?attr/colorPrimaryContainer" + android:textColor="?attr/colorOnBackground" + app:buttonTint="?attr/colorPrimary" tools:ignore="TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/splash_screen.xml b/app/src/main/res/layout/splash_screen.xml index 28b6cc3a..eac727b5 100644 --- a/app/src/main/res/layout/splash_screen.xml +++ b/app/src/main/res/layout/splash_screen.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?android:colorBackground"> + android:background="@color/bg_black"> 5ENbz9`da$r#52t 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 U-64J;A$jSh!uWidACs6E0Ndjd_y7O^ literal 2916 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 M`Q7&3`8kaV0Ayd0j{pDw diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index 2d901348bae86663092ca509f3ca8b90bed83ed1..1c7e6529d03efa9254b1647b37729621895b3dfc 100644 GIT binary patch literal 1994 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 literal 4036 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 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index 7cacbaa45059f84b4a70cc0d06f8c8959c94179c..89d1411f53ace1ed85e9ce9c266e0f3261125b5e 100644 GIT binary patch literal 6482 zcmWIYbaV5PWMBw)bqWXzu<)^yWMI(mKcFlS`f%dE`kC35@mqHty|N%||6j8iGc{9} zbPCH|`xW{nOgqbr7mGf8M|F^e5DcCyr*{aE2+B5d7?o&!GYfs8Qz;&J}<=B+9 z8A;8nWGi{?c3xg*^zzWm3lqx>eqOoR@bQFz)p2R7$%z_9PnW-1lb{q@TJpU>#{bs2 zlJ%CQvTq;qnu_?IdYE%ysn63L{tCvyPq=p~9Zln!`F71~)6H}F&$C&XEaAHvU9dN8 z+479K8ke!gng%-wSW7i@c*v&2?@ z(tGY%S0u9E%C5=%z5VRWb8E^sY|Fh3LT_WUwrrKHUR=Gl^Q&#meDV1=Z+L=aigRw8 zy{hYC-zD?m5C=2pkH9~+ndxwqr|U%%_U4S6+UAyYFtJ}S7Z zD7XII$uFAwythB6Te^6cu3haF_x-yAGQ8g1XZ_bNeV@Vc)47)EY;$f+Hrn5p5w)#F zW4DyZD}P7d|294y1_n%%9ew{ls(JsDb>5SmrSacdA4v;ke9cjc4~g2`a3!r%?|FQp zlXKcLg8%`hPBABijT=*pctqSL`teUXupRx1p z^D+XA@1*I8L^5}=KHL9^J-I#J>&_FE!nuuM`;UKjRsGK8`Bt!8EW(&;uFRBMkH7!B zzhj<&P2VEM!(UQ6jOL{JN27hd71oBlZ2Zqtcf3nLOPKK`{ucft(Kb-MGIE^D`NRvuuzCd$ee{Odw= zNt!9cqhqE^bd8D=JSN7Ms70ptl(H@TbZPb!OP}2qN(&^X?QOcU%(|;pAlc>cmQNFQ zm?>DACI$qXw>h>nDzEYWHk0SYEwdxOenQuownR6(Qk64yqNB1Pm%dEZPwYT zb8r<#?LWDP|99!*RFRo;oW9zqB+TG@WjXVE;z6^y4lY?nQ!lT|{_$qlv@5z%L1ykz zL1w|d)3)eFX}!G=RJnZGs@+?!+*rNznw_p`S#j8{Q*-xpncpvQQV8rQ%xZgJ@Wx@{ z4VPDHw|ZH-o(Ri>M)IeQ?a7D{I0*;hqV$5L@Nz;Oj>+6^z2st!l|+Ax1NY` z3|;8w!?ml9mx1$&PsyoQZ9efnt#=yDA}?t2SBX2{4^sCFKCr+`w3aJ0_3yfO&%bXK zo9X}M2uEQjm*Ao)+KRP23?Hv}mwcS=IPE>>p?fPH2_BMrF@@Wft2QV~aNE0|Qu`_< zZa=`2=%m@_U&qe zVOwAdVXg0aY!sx_L@9DQgt_DqO zU$FQ8U)d7{>|b2kVXxVl{sj)3QBJ zk`$glJ0a^)etbnGu*RV zsken5{^EA`ZqY-{?M#85VmYV37c4SalC-1CN8?!JwHdAHMPWA=Zv3elI&;6JGf$$| z-n>c~=9)hXSxj~(D%@0<(01d-E;h$7&nv#OD|)u38$H+{wCK{+`rmBTeeE$xF>BvN zT>1aG&vVwzH7`xCGBcV6tgkH$&Fb~dmQpi0vuPj43^CJ}@s*;p;*Q3a zGS51hGhxyK&6M|nU8)R1tRaTo$0O1^|b)4(Ie}q)wkWT z`!h?vrZVqN^t!8MgUn$i*(ola&?96sRK zFlhs$SY}I{)(hcJnPsW!YWtY9w>kdDW!o)GJFFl_jfx|Ej;|s-5e)Oxf~` zU*(;)T1)4!oeIg}5#7zN7hJJFnepS}k~jN8-tCesjXa=n&gH#^Xz=O@S3dmCp5Zj9 zmS-=cgOz2Z=8+@Ic{#qS`&zA^9d!7U%`$;^eiLIP1-iB#dq3YbsC2viAIYQf6Iq@A zG%lECK0e_}LHeAXTun!}J?r;LlAqPAbo+)WUoc&3xFPj#IeVC@`LP+Nl_PYrCzn3#4{V9#y%TzEan3;> zHqL8@4o9V?qe})r^>I|3K8t1(Z zIA8O2N>+ZKTKQRDjcSb|hCqFW6H_}UU9=Zrt6S;Jd*AT+t=Y<)t8ZDw2q(P3=nT0$*hsY&LNj{`07x&U=6TsaU%W8s&yxWN%zyY_FPnI`#YX+kxK%nD}m- zzxg;clGWs}?%$VIv@-Gd!6x^+Dgyi1hO-*@X_B4fJ|v z`7~$4`EFPBuq{8|6^ZyL9-OCf-JBui?eypq(sQe#!q0zf7dVt#_-ymjJtu9B{};Gz z^{`<5iz5@`d=wLR2`8;%m|z$cmgb)w@`=ZG@421Pt-Gb1PE=d(UVLBot=o*-EU$0> zEsA72zNyAX(fa9^72WMdMdvm7m7-s|{V&niD$i}{czSla!LijY`(|z2#QW`=#_3CQ zzUrJ3J7Z9gvqdnmd74q!?jD=twjAqMPrrVWe-W4Y(G{oJ#ZKQ!iT&liL~z=cLw$Pk z8uRs^XYFK8<-YX#NtM_|(S|EUObVfM&&TO4kY2QF2mk(8u?6o|afscXWv_Jcc4=~= zan3uDyvE(Z~x+>=PaY8UM^!%HXlj+TmrWuihR$uRoLT zy!g2EOi3^9Gh4QQa#Cr(sX2YA+|9X@e|~M)$mY;??8lR^ zTQL>RJ(X9#Eq0%@$@Pp^@0p1vBqPJs0~cevL=+D}U%p z!J~&;+HU>1@$#C)=LDyUs}Jj|LNu%QW-n&BI(7XGm#MF{FJw92vv%rgd3528h$iP- znxW~lCscX zX@5j~z43ExqkGqcbO4c0|1i z*tsueX4mW2u^DEQKcg&r?iUq9k+u7tA1~OzZMphc#a@w<%VzR8 zE%)n|sxxE=nyQm&yHmJ1lub*tMB?A&(+^+&77jAmR_}XsUso9#O(XcuR7%&T&SDP5H^mUlLH1-|Dwu$!IH&aUs_<7AT$4-I3a+mdTf?RpR^ zwQK+TkR!8r1!PPlDvqrxk?{`8Oy%zRFsb6gcXK=Y*8YCyqz8AEcNnZ#!@Vl~o=C~8 zi<7!_3~HpKGOp?xt7=bswDJxU!%u_1t2-s)PRaL1_w`UJv-t3?NpDw z#X3)Qo0g<8a3%b4fBf;AUD3>Amwy**ijPdzGQa*|+T7-sTQ6#^wJ0f2as9QoK5Zrc zwskUjTmO6NU#=+WKlbtM+O5;7Ygcu>3H~YjVZyB1YNI9gJsX1dzHVRi{@%qB>1G~e7fVDUhOUBIqm4AHDP&jTf@BZ?K zN#8Gb!l(KAE5_HJf);=Y+xw_yKsNjrPq7qjeG&+%W%_!PTp zd7QF{O!Lf`?c7@3S5`dSJME;YoMkN^L)VRGb^E2(zdLaJcpz(GSd4VwwWjIWFTU+t zkh@61S>fVZz3D{~4U3*foRT=wqr>Fj#_-9Je|1Ok*8Trq`F+cy_(%W(OC(HbKEL(0d@_)E zzx>^bB>&aB9OFN$tIQ6WkQNk>x#Zj;XYuoellC;(zu6p=?Yx>nWHWDlw%ojai=~Tp zsL0)KE^fYZ=GDyYe~!Q2Jn2kc*{qV_*0!J(XGE@AC2xvw7E9ug{wQ z;PT`T+m}!Ml(@st>0$Vk+StxxZ_Iyq`5Ue*IC9j_@l(cDZ>eh^U&ij7veajyCWFz} zp4+?T%xtordr(s}``4t3&lfria&O#!>|!7E{`Ac1{P#|7p`maA{f47Ct^cfU1y`_W%L2QS9; ziL%bxH1BcN&biwU#jHPnMk}R3AuqI?q2UsH-prFLKJ4e6c5(lfY{3Sj(1(ZFXWg2A zbqsB|E>eo|SxV`oG@qbN%xze=3_^-`;!2*Zfo1Jb#TT zic1RC2wmc>*c{z!!|U+#XskDbikZ&St}i@mnF5Y5u6S_q#m=>@1_IY~(-K!lPs-+V zc-nbYF-cg}OPQPD$=zoU7(;EE_HEjFpvu*&-|OBc?MBmWUv+u{W@|7y9J*)x?u|rw z)|)%ebY2S^OEWwYdvPkb?2S!we%#*r3&x+cn{8$J98{+-X=i3REf(1>viW(*%0PA5 z1}$0JW^Jx{{##~5#j}^SbNLKjHOujdV*( zE8BUPQRA|R!5Q%-B8Ho-xQ$OYB}`1)zUL03#_f$Z){_G#e2I8}^BKdGb;Y0Rm@e9K zF%M!bD%9dW7CR$yY)N&Tja&E zect>VmB*&`2!_im-`~yPu&%SQIjUq=n1G4V(&^HDkp}&RuPVA_19B4<4mbN z%j5!1zr6TO&Un_>AnMS#k z_phzdG7_3~b5R@f<{7CIA8xoh#cut?hqd2iZ+v_CTD@}*-&H>CsgWnfBfBP=(DAO4yneual|F})|d{%e(j|@ZWxr^Q9*%-`XtjTO1tq z?()&Qy>onLEPG{~rgVCC?XDfyA0@2bXJ=%+drJ43g@$3P>eC!&-PxUQ%AaxPN$_=U znfn5qT+6IN<8JAsZJ*7!z+u6Uw#%ydYtjz-e!pv7{=iZ!?N@MEOtsSF<8kkAoBY%L zeXG*rE*rCd{?;k_t}dKRk5e{ftTLVK@o5Fe-1y8%6OG^6EV;MuzR|wS(!V#N&IWA= znt9K5^Xl%PX6AsU#}3)XOp^I3^=ZF*Z;{dJA5$WytoisNFfRD#d--gciF@BRtO`2* z=+&Ef_fE{JI%wqeSDRtU?Y}Q)Kl?WC7NbVIZqw{5-5nS6qASlHFX4CTI!Y`KQbD_!4bZ*S(9P4rOd*Pl3r$HQ!!@$ALY zu1!wsZ-1EW-gzhPeZu3nN;@_(2Nd4_+1SS%p57jIt;DP=L2~KVskY6}U(B2#ZSi%V z`|V1Hw^=rqS6x$fv-T~!;jMh{OV*|JcFrzld3C1)gUf8bPK!RTDWUY}>e2OURUY{+ zKgV}{*UuSREL-Z9=imK)g}GSR_PN9z=eHLarv;wsnUj)Oet(mRq5fQ}7wp+vFYuM> zq$Jon9XGW;%9Xz4?;h)vzgwi-tcvfu|l);V1Kd-Z+0U2d7C&Z~ z(zQkIEyI-hm)y4*P2V;|l{w^EFF0qs@2&a`MpL~%>)GXHU*5I0+n#&*TUwak}HGu*I=b*;vH>&|N*OnbH$0N1Xb0{{R3 literal 6666 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/bg_white @color/bg_black @color/bg_white - @color/bg_white - @color/bg_black - @color/bg_white - @color/bg_black - @color/bg_white + @color/bg_black + @color/bg_white + @color/bg_black + @color/bg_white + @color/bg_black @color/bg_black @@ -208,4 +208,40 @@ @color/md_1_theme_dark_inverseSurface @color/md_1_theme_dark_inversePrimary + + + + + + + + + + + + + + + \ 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 6344d4c6..a1e9864b 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,6 +1,7 @@ @@ -189,13 +192,13 @@