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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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/ani/dantotsu/Functions.kt b/app/src/main/java/ani/dantotsu/Functions.kt index f175ff5c..25a415f9 100644 --- a/app/src/main/java/ani/dantotsu/Functions.kt +++ b/app/src/main/java/ani/dantotsu/Functions.kt @@ -188,6 +188,9 @@ fun Activity.hideStatusBar() { open class BottomSheetDialogFragment : BottomSheetDialogFragment() { override fun onStart() { super.onStart() + val window = dialog?.window + val decorView: View = window?.decorView ?: return + decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN if (this.resources.configuration.orientation != Configuration.ORIENTATION_PORTRAIT) { val behavior = BottomSheetBehavior.from(requireView().parent as View) behavior.state = BottomSheetBehavior.STATE_EXPANDED diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt index 488f3e59..73334e60 100644 --- a/app/src/main/java/ani/dantotsu/MainActivity.kt +++ b/app/src/main/java/ani/dantotsu/MainActivity.kt @@ -90,7 +90,7 @@ class MainActivity : AppCompatActivity() { val bottomBar = findViewById(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"> 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 SxEH`+W2LfjUvC`vk^%tR;}ZA) literal 2916 zcmV-q3!C&(Nk&Fo3jhFDMM6+kP&iCb3jhEwN5Byf6$gU0Z4>i{z3rzE5fjim4~C)8 zPlb-2=}gA8u+eJUO@cc%I@9c7~4wnFPSCr*urN8xk>Q*+AC7Pq&(CWF3)vetT?=$JB@H`@^Y3t6s zwj_z=X5Svu>((Z!TFesx^OeL@&Rb!r3`Nh?HtQ~{i%qRuR8}`WmdTdX+4y0PH@m<5_m^jPu!KdU zosa~pA{Q?zt82XGi*HkFXBFWnrpcBz0~3V`8wu~>WY4=g)vILqpTEL2?ZQO$A3SLs z!!m`+>XpND=C6mj@Xw}N#`l}{{ib}B*p(B8e8;O^^9wIKoQy2;%gzRf%(B_{zqo)( zHpS$(9J8=U{P(9dDw8O<0~6k+qs!oG*K{&-XM8-H;AHf|g0RQOmNc}S2@}dhxw|AX zx=u{rY8ErMzlV|p1)Bu#D zh9w97DQ^X-mZ%&VfO{NSAftGDSPNE_<&t-Vm(U;D5NZGlKtsw(ICEjJ?}5D~FIu** zZPL?oo3^ZShnEh7N!K_+sh7 zUn626AP5?q@$?Gzo_wJr)VDD}SU=x&6UUE>S#kR8nBPq%WsQdE+4&Wa(u!~b7Qkly z+e5GV5T{I#ImQ$EC;+)?^^+yyE-j;T8iCT|zK5y`lJx^P)KLwztR4$;fD7A*%lcYK z>soF31R#<*BlA+tFAAg)L7X$X1<~=M!}jGi05L^6jc18Kkwm81AZbVF4 zb6Ml6#9ORMU8lHR&D`BCjb@n0?q?ld3h|OSqgi&6#F-3&H9S5wZG_NF|ES^tV!+pZ;t3N&sk_WLtZ~$ zTew>~bidn*Y*GQ{rMPK!BfzGy3)|m6s*~Lq$Xw7*a<}*xQ{`e!qD5sRTDS zbYlW702)kI*x2*-Qcu5KXAMjCtVtZjhwVu5al2sK-x6yens@4c74X{8ZX#if$FCfR z$w>;J8xyoR&;B|%%KlH!Zf|na7%^eqBssF0k<6QbiA{AE9X4vdm?t4BhyTe0nM=BH zJ`1D^?dmaEc3GpUUh`Xm0zxn%Pnx)gU=)3@;vg<7=YpKV#0EhuD z6>&2;Q@~Fv`5C^_=p=wjAwM%M+K*Zv8h{XBG3$DVWJwwMy-xfo_&tfY0GCWKwYSXr z&XfQhWyyIwp`zf2s{lnm?8v)_j4vqJTY$c7k@guDlysH{OA^U#`~Z5S31NJE97Q}f zesBoRe%50W-M0Zq0B#j_G>PIZml-TQ?O{cv^^Xd1>NYa6OfY@K>9F)5wUh&lrfL^) zEShEKPQRN-NU9C%r}HO(7HLH+1PyF4{wcsmTfaO4YfrwQq$B&~HfbMv#dWJsq;evy z=yVhLE$WH9y(q+Sh4D&|0m`ytzl<;f*aJ&riGU~Y{{#-=y9u9u|GdvXaEi4hFHHGY zfMb+KR8ByztctiMl{0Vm)*zn1H8?Z<{X(A8O6h0ZCh{oh0N|{-h$wK6xN)Qf;cz7Y zSPx%;bTRK57EH;@J?!3*1bU@S7T=vFQOpCg2*7UrfswGK4NNE#q%P=&bt7rC*^Dz5 zD#C+Lf^3R7Fa2gqTR1N*JTkzzlK)^NjU)giAXpDuI6idd+=`f$1+Aamo*xO?&)7O^W{4P>lQ>#D{0HpA`dFF_Z)J*7%88mM$u;%qS*1S1~&NABZ@c%=z zthn8rP1qh9*H#wb1C+Hy9Wo$8=f8#3P+q5`?*Y{>C*nH|2mA_1*ZSo!C39Sa8OL0K z$ur$A763B8t_VlC1V9e30;0i5kCu^WMH&k6vERl+y!LK*{HQ~(T&Ny zp9>N1{gNeFs3l9nEr=99ze!1kO*i2Q$abHxY7jO+j0b+nm02-#Ban-|emL6AnKE>1=u6Hnf zjLi92k7H^F$ptmZACzQJ4-2^$1@vfEFR$OU-%Ar!e*DBUcfJRRpHl;c8mI*HXavXI z`oVF(;i_Hst$}iO&c*ND`OL)ed78X(fTVvgz&Li=o$CR+c?eyZBd!*U%1`t!c#ytVWD^Nrh>O)xQ880&ZU%_(cBu6sBrQF>m zn<6LTsxQKFXOMH-wy|gTJdSPW2iQ()+jjCiZ*1GPZB?jkTcwjyA0Y_=*ha^+;b-bw{06q z-MhVeg!v&Wy}<-YLgm+qN@~ zg2l`jz=x;6Z5t&$X1+h1IR3={PaxD@ig5c)>GiT9>*&;2P-F35uVfvZ>HWMV)M2ww zrz!aV3u>nTnA!E?DAo3iY_n4p4b>Ppboo{(c4yP`DGPFS`lA_Gm99VCPsLe?ZImQlB3CZ1w4`?T zNgDi1VEa>)E|WZJklGD*>YAxoq#}xxrDe&T&asds+WfxhT)=fdC$Iw{%j8UDe&S(Tm(?O63*qUw7qW zmjC|^l6pTA68ekiC3jjgk@`*a>|yLsrhijtVxS5%7anmQ4_^UXo8db8bE9L*=$NF@ zHsLh7ri_^_W9gut#>$Zn%J#}Z+qT}`-hAVPvb;RGfWn~nT;|y1dUt^rm?BFM5yK%ZsIqEh7xTSHw#ma&OjMVcn3884`gip@KZQnmM8c)W zzV?2usz~dSec6Bf76a5nV9PPucm#+8v`S$~1idP;nD}8dMrGB~f$mBxQnTB|M|^e; z0NY9I5X0Kfu+~$=5`ZQmz#XAWLR?#MCqZUtS4CKeJH(NtQQ96ghbt!M)2W|sjJB6% zT)ldA7tL5rVlxon&JY^wlUZP4O2EnI`V7Dc0l*e@=k&7-puG(1s&fa;ScxOk0P;TK z=f&_YK`}CwM0A}KAP51#(`bOq)q^x+GleYxzz=C&5rO6ky|++E5FiQRt43pVu3lY7 z5z`Rhjh!ojN+~sDp^!L076L#-V6YBrNo*=W-q^Z|OH3SL`HX6)Whuf2pfqSSNOul0 ztZgK=0CDg`Dyc+oFLTFOy~N=yU00=LA<+;(F$q8@n&>36i)O9Dk?8<=e}$nPOdMk6 z4Er}Yx|J4-^LdL)CIaA(_J<2U-2m;O8F6Vh%~(TVvk>6U5Lg;x=@dKHIJ}jnX{V1P z$>_Pdz8}KxzTF=6GaG=d6mj**CW=@JkoZr!WF@o>3`m_ET&YNj5NH&-X?twLoRePV zRjR0|MydB8E(EBDz*gYM1O$i!Sdu8^W=e&sy^*CDp82cBsH|$*X}qp_JP@+EY_gAj z&Tp1-GI4NC#LVW2(AtDMg~AAzUGIaDq+kp{l7^j4;yrp03GoT+EwqgeNu?bfEi8e# zgDmjKrG0?BI_JNYuJVE5{1~2p{b6|iVh!uhgm^Lj9_ncVz37@s@d#;tX-Qd4f%o3T z6$%X>8h(dLAZoz%_7{JD@aMZEvHbbL+Z&E=rA?XHJ{34wX*m>*IrZCb0CTVeqFN+* z9rEil`1f1+`%@Dqk1sg6(^MQ06U@t8Do%gk^+IJy^5r;OTH#n z5y*(3qZ8x!+*21PK7y!8r>gXIg`X=d&4?(re6On|33>mT-iSaE$O}FI5;x*lo?Qlz z)EnZ2LZQw-^`IBhG$7d&aw|>&94%o(g-T&QNC|vhILL(zk#4&g0XU`z-}A=YJ|WeK z40kFwVge_=I#W)VkjkB;vVGVmq-Jh|^qW6@2gqoLelT_A;{h|f{&8l0klFmz3SkJ4 z`R-|;DNX?lfZV3>_C$vx(Ka4g)}T=s_m}RJZRbsNJbe0R$1X+;0EGVlY3LSJonqeA zGyVABJv+(5_K!sT0*(Bi&%)04;5j?FcYR+qsRE?`TZ%E%(gr~G58${8$O9AsiszR% cuP*$%w-M?qMgVJL2_ObY-=AIDcp50>0fQ9S!TZp5^Y3+c-wbz$`=6)(-8+KhWbV#yi<}d<`vv?0WE_Buh|Jxc6Hw&t`u$JP zMf#7>j4B7RZKtWSB@iQmySsY?OIrFrkOTlMBmHI=)MMLT+q!wT#&{;!7psbGn`)zv zG8#xAfm%xVzSm~(^a)zvqsJK(GxU^2Xra5GXi z#x6iQDUuOer!gwr$&$ZO?R`PFG;tsBH5#;#5ZeC;1)*ZW}2|x663=hnX{; z!QBB5(|VXLYc;xV9l=crsRiqOi5qH_Rr+#dxbk?R;+&xcL%a0;vQr!LgI$h z8R?2#(}0_6-z86DUQ3W6vp|Xnsf(l=fDa=jk`>cxqL+2ttR(AIIuserghvyh{(zxV z+%s6M$9!NhvjV9yDoG26rG;%)e2OK06_ny9fs6e?qWKwS3~BU zjc(Hl9?N@(8}`s8R(H-Q6acWPU!maWwAPptu&*RB=9vxIUVYrC`L0!emP(%iB4XAQ z9t^1za_pve7*e{^xY?0QL>p)G%y#%EM0>%t6kL7UDSrh#V$PCS-qOknr;y^&j@dk1 zBttx;xt1Pq(^_zKaf4?jw@(~fQxz@%jBz*i&7{k5HJ>R+OhRH5QiFi%0ftAKa*8)f zuI}-|)d*L28hQ4ZD~eMWuK;$I*1R0T z=wXihx+WvxM8+b~3k;7EF>5&kGQMm2C@xFtw(Qf6r#i4$eE=X+&5|MRhh2RPQU}HTJ(PXueAPTMQe;|KQ*ME~IFXT6 zdII>RVyOFJM`sDKjwm`kMiNqT551FaQID;h^#`d&(dg)t|9gNFEkC9-c<3a_*>~!0 z$UIz?Zfh3?cz}4oGnF9{*HjAR=S%1AjvWjHO3bhRtWfs;C!N<}piV2-09FV9rbv~X zW&7a*qn|%SCx_nnn^iDXLcCQ0s1yq8gn(4}rNSo_Ilz0HQGZ5=+V2{z@4no_BIeZq zUI+jVOpKgm=iw4JQ~NieexD{p@Tr7My9UU18cKRCRl|{zep}e2FJO@<>wCd=Q?OZu<*eIOJDKqb32?e; zaSFN688-Z7$pb)cfQgB-Y~NpC`16O)fmTDHS%u~4R+T~k;J~r4Ny>@A1$`6!*JoJJ zof#kt0leH)+hqdI6szYRb9);MJa!}s&ro-U=gXx6aZYE zmM`r@R4D|7LAa(8006I)3zY($+dF+bN|y~-bj)wBhOnYG7%cRhq#7k-qA$-qNi-NU zZ$^dI%=xjp>W!}~8|r>ZIRqFX>a!i9==21+3Mqk%pj683#{+4>M?7d5J-L>s7YwoA zCgYwQi_~ID6UV0* zAk*Gxz38i#zOPn#zIstEp?E?rI+#XK$UtiFFe@FlQ-PwP8 zCH?m|IP|vv_JZEaBW}>j{-^$@tvv+@HJ#k5CV)UKg)Wg=x!>_;bG%5a^?r)Prn%7j zDA%^}7%nD@rT1=UO(w3oSdAtZrSd@KZJU42aiMXwcF=74y1x@5ZBd6p6M`yQf+U4Xd9s-F!0uKEMMIfs?Tu zO*74D?ab;RFJevsa|U#0MITuYiH#H*@j0!%**g~ikz3EJDil(=y!B`akN`*lq+Wmd cZt2n1av6%NssN1gIY0;yKUjQTPJ>T>0I(veX8-^I diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 869b067cda847848141427b9599f4228b05e56b2..4dcbec764a606568ab17ecc96c233eef7243339d 100644 GIT binary patch literal 4166 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 QS}m7X>XysZs%POC0IkIx0ssI2 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 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 literal 9028 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 diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 6fbc7a99..18ecc728 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -143,11 +143,11 @@ @color/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 @@