0SVZK&O
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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
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
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
zcmV;#4?FNuNk&Gz4*&pHMM6+kP&iDl4*&o!U%(d-Raue$@6{~j|D5NXw{yCkdvff_
zIp>^b|ND8*^E~IA=gbV?UI#vh9*rD7TYyn0@VV5G4oOu@RMa_V=!JBlvODs!fl<8xGAOFmT>&|1R0jQ;JL(V}
za)QQ9P*;!4GaKM_z^OuAJB1s6BsuB32r_LcR9Ch8_bh>6N0Hhcht9Bp)QU{YSCL@>
zExV2-sGPh6+qTuVRe4L2NqX;n5CzR_DP#zk9nM!J+O};v(r&v`wkyfQ#mhtNvTfV8
zZRFk57gK^{+q7*x+qP}nwr$(CZQJj=^?vi&wr$%w=kAjdCEKmr=3F3@1&Bt{N_^-K
z5(gs*?#$Sb>RBQ7m!ny@2hGB3snO2@lc&Js12FjpOn#i@jTZ%BPpC1^(k!xu#^Ijd
zhcuKG?iOMvRx$$g$Am;rt)=0v5R&ag_$3e)0278H!lDSX^Pt!^?L68UGBeeM6DtAb
z>0m}Gte2woi_Gr*Wd$k@!!3tD+j)BnM
zddzcx)rj$rDE=*o2uy!bZ61ZQP}e
z^Ys$;h+4BD(b|1PFO1NlBK==zD{2D`5;o{W#2S0j7rL35jb6rodmb6hxQRt}JTnb3U
zvh42jEvGe#RI%JqG#Wy!mtj#Ms@7Z%Ky0h1%9wxs5arQWv%6BgIafTJq-7DmH8MwK
zZL!7geLRMdOya71K2kUw@B;Bc6auSgD0Q^dnVMMD2vd&r`(g6;7Y80V$?KB|4!3G|
z*MtWZt37$`RwyYbMKBApP2`dYIMO$M{b^x(2I|%)Okz{&%r~MWt
zK0V?RPMmXDOH^5eAmlqJQovkGtiBsPluqw!r}}(TyT8R+<MDvV57cT$!?XDa`MLd7N#QGEH>R#HRfl1j6jN4=mCve6d4$o~i6FfnZNJu#Y
z$Vg_;1d#eFryZ2ez`(MlZC)qL=+f9AdqKr&m+1b!z7L`_FlbW5m`Bl*MSVVInta@>
z^CgSDURj}hCpcKZ*=BNStkvyrFjh1iAZR=!ik$=?zPQazLs>y+2qg~0isE9{l%EDn
zlTTQ1du;jd7hKjNrH!@29nI+Wju2Q4#Y8R?h;S9f`br;(FIU@XvDoPnn?7yjNnuENS3!5o*j{{6j-AIuM3hOZ@j9_)r=V6{S(M2g*>)7#7?f(fR+ZPSCkJ
z6Ub|~;Y;#-g_U6$mNqR3tmP@qXVA!}WI9GmLvovq3i>@>Kb*!sh*&-zP+d&nD@+SOZj}=u=%?DPP=_i
zi-?u8aTCo~Fr}QfAPvIV7R&0oZSZn;KD1f#6TcPQJLd7nbXs?~qf=VU5r9-_=Kx5;
zBnGX7=>wjUV#Z%bm)*=O$)^-_yC9-Y{d@`2Q(+o3-)0{XW{UBESr^N2&t<-zXxhUp
zF>6`u?V8RK|ApS(UT%1}nFvDiV*pYxi2(qKfXFMpuaeoM+-8%}1^sUMy-qwc&X+Jf
zsY)~V)26y^tCEYDr9basQ5Le)`z=*#%t946`*MxWa;1$)oc#TTPWAc>Ur`bvl->Z4
zhQS3OF);baQ$F8N{;;O%`PkOO9@d?Bn+ey)$_71j7CxM-Y&D?T0}-))HfqMZS(?#R
zT-Cs`i@3R;w|&1p!`Oh81<_KFA~=@S5HT?PP>0;^wmN^j=nTqHd>ztgU0JghXI
zRx}z?alb4#i_rPaa^KJ9Sgv^zBIZS2mCbtb%*ls+>hp1Fv*6L0J5NNT2q5Vz0O=W0
z03;Lef!kiYVzFh{i^MJxK8iXs&zF>6CM~!-w#ezio@_no`Pcg<>UTj~03bt(<={M}
z#hkFTm{l|yBw(ib63mUgChB!KJ6lirRjv6q2Q+Ii?dfTY35FkPwwFY_jt5A6#dFV=
z(KPnkEx+B0<0gXQSDkOYr+zxZwBztGhACC+Ga?{#ziHQBBO
zNBw*mUtxaYGuP9m`PTb#B8z!0xA^N7=E*ARXdAwwct-%FO9f1d8v9T1lrOiP_{1l!
zdODq$o3;-n2lHh8d4)?IQ-xe@r
zIuug=wu|akqxXoixp~Er`I?dljmljBWX!On07$N7)*zdxYBmthi>CV#jORtGsVq%-
z3O93f`=Fj%41}>|UUz`ic^!}pDjC)LID#DkKeN)vJZs0ibh=^!H!o$EH`9I#Cg!Dt
z=~ck@d;r9ESrVBGC@hbZKd*kvVy6q-yn26jUOn;aBPL#)PvYzH!_|~p>8!sAwpda<
zT3A`;^b$X&sp2k|pZHBZ8+D5923TLX6xfxGnRNk>5>oxFx;-hLpcR0uYGfXkxUQKt
zA2<7I&1XdGngyNBU|sW3L3JJykm+`2^AcXXs9*cUpaa9_wlAn7M~87+P(
zXa!9V06AkK&+w^%_T2uTRzNZ-ScLb)-?Qs$Nd)`XPgT-RpO&Ue1)xzwH>9BjNV_
zvbk*3zp{FB8r1A>qGZ~ChL_~iVrMaF6uSo`2TEAEZRnSM=C`I(*Vqt%qGh9jwbh$5
z60Ll(={x%(8hKU;tN-}%hS#w0av&Id3IN#vC_Ze|yWuvst=V4(GGbLP$6mS16(5u~
za_9P2Q@Hvs07`B9l)=C}i6C<^0J5L8WYV{$YJH++f1_r975v9qY|FB{CA;Ny+QiOd
zh%jg