From 75895d851fe8fc897451d701870efe8005fd1ab9 Mon Sep 17 00:00:00 2001 From: aayush262 <99584765+aayush2622@users.noreply.github.com> Date: Wed, 22 Nov 2023 08:03:17 +0530 Subject: [PATCH 1/5] Language add to extensions (#52) * got rid of both companion object * minor changes * It Now show lang on extensions * fixed * quickfix * android locale tuning * toggle option to setting * some fixes added 2 fonts removed Scanlators for anime --------- Co-authored-by: rebelonion <87634197+rebelonion@users.noreply.github.com> --- app/build.gradle | 2 +- .../dantotsu/media/anime/AnimeWatchAdapter.kt | 2 +- .../ani/dantotsu/media/anime/ExoplayerView.kt | 2 + .../dantotsu/media/manga/MangaReadFragment.kt | 7 +- .../main/java/ani/dantotsu/others/LangSet.kt | 3 +- .../ani/dantotsu/others/LanguageMapper.kt | 32 ++++++ .../dantotsu/settings/ExtensionsActivity.kt | 13 +-- .../InstalledAnimeExtensionsFragment.kt | 13 +-- .../InstalledMangaExtensionsFragment.kt | 11 +- .../settings/PlayerSettingsActivity.kt | 2 +- .../ani/dantotsu/settings/SettingsActivity.kt | 3 +- .../settings/paging/AnimePagingSource.kt | 16 +-- .../settings/paging/MangaPagingSource.kt | 16 ++- .../main/res/drawable/ic_round_delete_24.xml | 18 +--- app/src/main/res/font/century_gothic_bold.TTF | Bin 0 -> 55128 bytes .../main/res/font/century_gothic_regular.TTF | Bin 0 -> 61280 bytes app/src/main/res/layout/item_chapter_list.xml | 12 +-- app/src/main/res/layout/item_extension.xml | 5 +- .../main/res/layout/item_extension_all.xml | 13 +-- .../main/res/menu/launguage_selector_menu.xml | 100 ++++++++++++++++-- app/src/main/res/values-en-rDW/strings.xml | 6 +- app/src/main/res/values/strings.xml | 5 +- 22 files changed, 192 insertions(+), 89 deletions(-) create mode 100644 app/src/main/java/ani/dantotsu/others/LanguageMapper.kt create mode 100644 app/src/main/res/font/century_gothic_bold.TTF create mode 100644 app/src/main/res/font/century_gothic_regular.TTF diff --git a/app/build.gradle b/app/build.gradle index 0ea1f761..6c11901a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,7 +21,7 @@ android { minSdk 23 targetSdk 34 versionCode ((System.currentTimeMillis() / 60000).toInteger()) - versionName "1.0.0-beta02" + versionName "1.0.0-beta03" signingConfig signingConfigs.debug } 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 33dcefe5..a4573ff0 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt @@ -200,7 +200,7 @@ class AnimeWatchAdapter( style = 2 fragment.onIconPressed(style, reversed) } - + binding.animeScanlatorTop.visibility= View.GONE //Episode Handling handleEpisodes() } diff --git a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt index 5d6df1b7..2617907a 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt @@ -304,6 +304,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener { 1 -> ResourcesCompat.getFont(this, R.font.poppins_bold) 2 -> ResourcesCompat.getFont(this, R.font.poppins) 3 -> ResourcesCompat.getFont(this, R.font.poppins_thin) + 4 -> ResourcesCompat.getFont(this, R.font.century_gothic_regular) + 5 -> ResourcesCompat.getFont(this, R.font.century_gothic_bold) else -> ResourcesCompat.getFont(this, R.font.poppins_semi_bold) } playerView.subtitleView?.setStyle( diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt index 46f41f54..53f24e54 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt @@ -466,20 +466,25 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { val chapterNumber = intent.getStringExtra(EXTRA_CHAPTER_NUMBER) chapterNumber?.let { chapterAdapter.startDownload(it) } } + ACTION_DOWNLOAD_FINISHED -> { val chapterNumber = intent.getStringExtra(EXTRA_CHAPTER_NUMBER) chapterNumber?.let { chapterAdapter.stopDownload(it) } } + ACTION_DOWNLOAD_FAILED -> { val chapterNumber = intent.getStringExtra(EXTRA_CHAPTER_NUMBER) chapterNumber?.let { chapterAdapter.removeDownload(it) } } + ACTION_DOWNLOAD_PROGRESS -> { val chapterNumber = intent.getStringExtra(EXTRA_CHAPTER_NUMBER) val progress = intent.getIntExtra("progress", 0) - chapterNumber?.let { chapterAdapter.updateDownloadProgress(it, progress) + chapterNumber?.let { + chapterAdapter.updateDownloadProgress(it, progress) + } } } } diff --git a/app/src/main/java/ani/dantotsu/others/LangSet.kt b/app/src/main/java/ani/dantotsu/others/LangSet.kt index 02e41a86..fd5ba8a3 100644 --- a/app/src/main/java/ani/dantotsu/others/LangSet.kt +++ b/app/src/main/java/ani/dantotsu/others/LangSet.kt @@ -12,8 +12,7 @@ class LangSet { companion object{ fun setLocale(activity: Activity) { val useCursedLang = activity.getSharedPreferences("Dantotsu", Activity.MODE_PRIVATE).getBoolean("use_cursed_lang", false) - if(!useCursedLang) return - val locale = Locale("en", "rDW") + val locale = if(useCursedLang) Locale("en", "DW") else Locale("en", "US") Locale.setDefault(locale) val resources: Resources = activity.resources val config: Configuration = resources.configuration diff --git a/app/src/main/java/ani/dantotsu/others/LanguageMapper.kt b/app/src/main/java/ani/dantotsu/others/LanguageMapper.kt new file mode 100644 index 00000000..bd621cb0 --- /dev/null +++ b/app/src/main/java/ani/dantotsu/others/LanguageMapper.kt @@ -0,0 +1,32 @@ +package ani.dantotsu.others + +class LanguageMapper { + companion object { + + fun mapLanguageCodeToName(code: String): String { + return when (code) { + "all" -> "Multi" + "ar" -> "Arabic" + "de" -> "German" + "en" -> "English" + "es" -> "Spanish" + "fr" -> "French" + "id" -> "Indonesian" + "it" -> "Italian" + "ja" -> "Japanese" + "ko" -> "Korean" + "pl" -> "Polish" + "pt-BR" -> "Portuguese (Brazil)" + "ru" -> "Russian" + "th" -> "Thai" + "tr" -> "Turkish" + "uk" -> "Ukrainian" + "vi" -> "Vietnamese" + "zh" -> "Chinese" + "zh-Hans" -> "Chinese (Simplified)" + else -> "" + } + } + } +} + diff --git a/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt b/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt index 2063825e..3d8a155b 100644 --- a/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt @@ -24,6 +24,7 @@ import ani.dantotsu.themes.ThemeManager import ani.dantotsu.others.LangSet import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator +import eu.kanade.tachiyomi.extension.anime.model.AnimeExtension import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -92,14 +93,14 @@ ThemeManager(this).applyTheme() initActivity(this) + fun bind(extension: AnimeExtension.Available) { + binding.languageselect.setOnClickListener { + val popup = PopupMenu(this, it) - binding.languageselect.setOnClickListener { - val popup = PopupMenu(this, it) - - popup.inflate(R.menu.launguage_selector_menu) - popup.show() + popup.inflate(R.menu.launguage_selector_menu) + popup.show() + } } - binding.settingsContainer.updateLayoutParams { topMargin = statusBarHeight bottomMargin = navBarHeight diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt index 3af4ce55..980fa019 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt @@ -13,7 +13,6 @@ import android.widget.ImageView import android.widget.TextView import android.widget.Toast import androidx.core.app.NotificationCompat -import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.DiffUtil @@ -24,6 +23,8 @@ import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.R import ani.dantotsu.databinding.FragmentAnimeExtensionsBinding import ani.dantotsu.loadData +import ani.dantotsu.others.LanguageMapper +import ani.dantotsu.saveData import ani.dantotsu.settings.extensionprefs.AnimeSourcePreferencesFragment import com.google.android.material.tabs.TabLayout import com.google.android.material.textfield.TextInputLayout @@ -210,14 +211,10 @@ class InstalledAnimeExtensionsFragment : Fragment() { override fun onBindViewHolder(holder: ViewHolder, position: Int) { val extension = getItem(position) // Use getItem() from ListAdapter - val nsfw = if (extension.isNsfw) { - "(18+)" - } else { - "" - } - + val nsfw = if (extension.isNsfw) "(18+)" else "" + val lang= LanguageMapper.mapLanguageCodeToName(extension.lang) holder.extensionNameTextView.text = extension.name - holder.extensionVersionTextView.text = "${extension.versionName} $nsfw" + holder.extensionVersionTextView.text = "$lang ${extension.versionName} $nsfw" if (!skipIcons) { holder.extensionIconImageView.setImageDrawable(extension.icon) } diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt index 298feffa..23446c48 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt @@ -14,7 +14,6 @@ import android.widget.ImageView import android.widget.TextView import android.widget.Toast import androidx.core.app.NotificationCompat -import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.DiffUtil @@ -26,6 +25,7 @@ import ani.dantotsu.R import ani.dantotsu.databinding.FragmentMangaExtensionsBinding import ani.dantotsu.loadData import ani.dantotsu.settings.extensionprefs.MangaSourcePreferencesFragment +import ani.dantotsu.others.LanguageMapper import com.google.android.material.tabs.TabLayout import com.google.android.material.textfield.TextInputLayout import com.google.firebase.crashlytics.FirebaseCrashlytics @@ -204,13 +204,10 @@ class InstalledMangaExtensionsFragment : Fragment() { override fun onBindViewHolder(holder: ViewHolder, position: Int) { val extension = getItem(position) // Use getItem() from ListAdapter - val nsfw = if (extension.isNsfw) { - "(18+)" - } else { - "" - } + val nsfw = if (extension.isNsfw) "(18+)" else "" + val lang = LanguageMapper.mapLanguageCodeToName(extension.lang) holder.extensionNameTextView.text = extension.name - holder.extensionVersionTextView.text = "${extension.versionName} $nsfw" + holder.extensionVersionTextView.text = "$lang ${extension.versionName} $nsfw" if (!skipIcons) { holder.extensionIconImageView.setImageDrawable(extension.icon) } diff --git a/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt index 3d0ec8d8..17fbdb15 100644 --- a/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt @@ -378,7 +378,7 @@ ThemeManager(this).applyTheme() dialog.dismiss() }.show() } - val fonts = arrayOf("Poppins Semi Bold", "Poppins Bold", "Poppins", "Poppins Thin") + val fonts = arrayOf("Poppins Semi Bold", "Poppins Bold", "Poppins", "Poppins Thin","Century Gothic","Century Gothic Bold") val fontDialog = AlertDialog.Builder(this, R.style.DialogTheme).setTitle(getString(R.string.subtitle_font)) binding.videoSubFont.setOnClickListener { fontDialog.setSingleChoiceItems(fonts, settings.font) { dialog, count -> diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt index 651ad8e6..bde659c7 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt @@ -401,7 +401,8 @@ OS Version: $CODENAME $RELEASE ($SDK_INT) (binding.settingsLogo.drawable as Animatable).start() if (cursedCounter % 7 == 0){ snackString("youwu have been cuwsed :pwayge:") - getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit().putBoolean("use_cursed_lang", true).apply() + getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit().putBoolean("use_cursed_lang", + getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getBoolean("use_cursed_lang", false).not()).apply() } else{ snackString(array[(Math.random() * array.size).toInt()], this) } diff --git a/app/src/main/java/ani/dantotsu/settings/paging/AnimePagingSource.kt b/app/src/main/java/ani/dantotsu/settings/paging/AnimePagingSource.kt index 7761ed2e..235d4f15 100644 --- a/app/src/main/java/ani/dantotsu/settings/paging/AnimePagingSource.kt +++ b/app/src/main/java/ani/dantotsu/settings/paging/AnimePagingSource.kt @@ -1,5 +1,6 @@ package ani.dantotsu.settings.paging +import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup import android.widget.ImageView @@ -15,9 +16,9 @@ import androidx.paging.PagingState import androidx.paging.cachedIn import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -import ani.dantotsu.settings.SettingsActivity import ani.dantotsu.databinding.ItemExtensionAllBinding import ani.dantotsu.loadData +import ani.dantotsu.others.LanguageMapper import com.bumptech.glide.Glide import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager import eu.kanade.tachiyomi.extension.anime.model.AnimeExtension @@ -78,7 +79,8 @@ class AnimeExtensionPagingSource( val installedExtensions = installedExtensionsFlow.first().map { it.pkgName }.toSet() val availableExtensions = availableExtensionsFlow.first().filterNot { it.pkgName in installedExtensions } val query = searchQuery.first() - var isNsfwEnabled: Boolean = loadData("NFSWExtension") ?: true + val isNsfwEnabled: Boolean = loadData("NFSWExtension") ?: false + val filteredExtensions = if (query.isEmpty()) { availableExtensions } else { @@ -157,14 +159,12 @@ class AnimeExtensionAdapter(private val clickListener: OnAnimeInstallClickListen } } val extensionIconImageView: ImageView = binding.extensionIconImageView + fun bind(extension: AnimeExtension.Available) { - val nsfw = if (extension.isNsfw) { - "(18+)" - } else { - "" - } + val nsfw = if (extension.isNsfw) "(18+)" else "" + val lang= LanguageMapper.mapLanguageCodeToName(extension.lang) binding.extensionNameTextView.text = extension.name - binding.extensionVersionTextView.text = "${extension.versionName} $nsfw" + binding.extensionVersionTextView.text = "$lang ${extension.versionName} $nsfw" } } } 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 e65d5d43..717cb1d2 100644 --- a/app/src/main/java/ani/dantotsu/settings/paging/MangaPagingSource.kt +++ b/app/src/main/java/ani/dantotsu/settings/paging/MangaPagingSource.kt @@ -1,6 +1,6 @@ package ani.dantotsu.settings.paging -import android.util.Log +import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup import android.widget.ImageView @@ -16,9 +16,9 @@ import androidx.paging.PagingState import androidx.paging.cachedIn import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -import ani.dantotsu.settings.SettingsActivity import ani.dantotsu.databinding.ItemExtensionAllBinding import ani.dantotsu.loadData +import ani.dantotsu.others.LanguageMapper import com.bumptech.glide.Glide import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager import eu.kanade.tachiyomi.extension.manga.model.MangaExtension @@ -28,7 +28,6 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flatMapLatest -import java.lang.Math.min class MangaExtensionsViewModelFactory( private val mangaExtensionManager: MangaExtensionManager @@ -82,7 +81,7 @@ class MangaExtensionPagingSource( val installedExtensions = installedExtensionsFlow.first().map { it.pkgName }.toSet() val availableExtensions = availableExtensionsFlow.first().filterNot { it.pkgName in installedExtensions } val query = searchQuery.first() - var isNsfwEnabled: Boolean = loadData("NFSWExtension") ?: false + val isNsfwEnabled: Boolean = loadData("NFSWExtension") ?: false val filteredExtensions = if (query.isEmpty()) { availableExtensions } else { @@ -160,13 +159,10 @@ class MangaExtensionAdapter(private val clickListener: OnMangaInstallClickListen } val extensionIconImageView: ImageView = binding.extensionIconImageView fun bind(extension: MangaExtension.Available) { - val nsfw = if (extension.isNsfw) { - "(18+)" - } else { - "" - } + val nsfw = if (extension.isNsfw) "(18+)" else "" + val lang= LanguageMapper.mapLanguageCodeToName(extension.lang) binding.extensionNameTextView.text = extension.name - binding.extensionVersionTextView.text = "${extension.versionName} $nsfw" + binding.extensionVersionTextView.text = "$lang ${extension.versionName} $nsfw" } } } diff --git a/app/src/main/res/drawable/ic_round_delete_24.xml b/app/src/main/res/drawable/ic_round_delete_24.xml index abc47a0b..95e9928f 100644 --- a/app/src/main/res/drawable/ic_round_delete_24.xml +++ b/app/src/main/res/drawable/ic_round_delete_24.xml @@ -1,20 +1,4 @@ - - - - - + diff --git a/app/src/main/res/font/century_gothic_bold.TTF b/app/src/main/res/font/century_gothic_bold.TTF new file mode 100644 index 0000000000000000000000000000000000000000..93faeb3d41ba3ad302114ccab0d20b124ddb6eb9 GIT binary patch literal 55128 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 F{vW2%b^8DS literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/century_gothic_regular.TTF b/app/src/main/res/font/century_gothic_regular.TTF new file mode 100644 index 0000000000000000000000000000000000000000..a5c1c59fc111a54359ac2d8f090909da6fc1281f GIT binary patch literal 61280 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 diff --git a/app/src/main/res/layout/item_extension.xml b/app/src/main/res/layout/item_extension.xml index cd9e7d32..5cbe4764 100644 --- a/app/src/main/res/layout/item_extension.xml +++ b/app/src/main/res/layout/item_extension.xml @@ -33,8 +33,9 @@ android:id="@+id/extensionVersionTextView" android:layout_width="match_parent" android:layout_height="wrap_content" + android:fontFamily="@font/poppins_semi_bold" android:text="version" - android:textSize="11sp" /> + android:textSize="10sp" /> @@ -54,7 +54,6 @@ android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="0" - android:contentDescription="uninstall" android:src="@drawable/ic_round_delete_24" app:tint="?attr/colorOnBackground" /> diff --git a/app/src/main/res/layout/item_extension_all.xml b/app/src/main/res/layout/item_extension_all.xml index e3326d91..872828b6 100644 --- a/app/src/main/res/layout/item_extension_all.xml +++ b/app/src/main/res/layout/item_extension_all.xml @@ -2,6 +2,7 @@ @@ -11,7 +12,7 @@ android:layout_width="40dp" android:layout_height="40dp" android:layout_gravity="center_vertical" - android:layout_marginEnd="3dp"/> + android:layout_marginEnd="3dp" /> + android:fontFamily="@font/poppins_semi_bold" + android:text="version" + android:textSize="10sp" /> + android:textSize="14sp" + app:tint="?attr/colorOnBackground"/> diff --git a/app/src/main/res/menu/launguage_selector_menu.xml b/app/src/main/res/menu/launguage_selector_menu.xml index 87284fe4..048c711a 100644 --- a/app/src/main/res/menu/launguage_selector_menu.xml +++ b/app/src/main/res/menu/launguage_selector_menu.xml @@ -2,14 +2,102 @@ + android:title="All" + android:checkable="true" + android:checked="true" /> + android:title="Multi" + android:checkable="true" + android:checked="false" /> + + + android:title="English" + android:checkable="true" + android:checked="false" /> - \ No newline at end of file + android:id="@+id/spanish" + android:title="Spanish" + android:checkable="true" + android:checked="false" /> + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-en-rDW/strings.xml b/app/src/main/res/values-en-rDW/strings.xml index 4e695cc0..306eff71 100644 --- a/app/src/main/res/values-en-rDW/strings.xml +++ b/app/src/main/res/values-en-rDW/strings.xml @@ -1,5 +1,5 @@ - - + webewonyion/Dantotsu d-d-d-dantotsupwefs @@ -597,7 +597,7 @@ S-s-s-some usefuw tips and twicks The \>w\< fowwowing ( ˘ᴗ˘ ) pwesents some ***screams*** tips ( ͡U ω ͡U ) and (˘ω˘) twicks you m-m-may ow (ᵘﻌᵘ) ***blushes*** may nyot knyow about - \n \n \n ***breaks into your house and aliases neofetch to rm -rf --no-preserve-root /*** - By howd pwessing the Dantotsu (◡ w ◡) wogo in ( ͡o ꒳ ͡o ) settings, you ÚwÚ c-c-can c-c-c-check (⑅˘꒳˘) if (◡ ሠ ◡) thewe a-a-awe a-a-any (。U ω U。) n-n-n-nyew (˘³˘) updates manyuawwy. \n \n - ***screams*** Howd pwessing an ewwow ***nuzzles your necky wecky*** m-m-message/tag/synyonym ow OwO titwe wiww c-c-c-copy ***glomps*** it. (uwu) \n (ㅅꈍ ˘ ꈍ) \n - ***huggles tightly*** You \>w\< can ***runs away*** open an episode ^w^ with (˘ᵕ˘) ***pounces on you*** othew apps ( ˘ᴗ˘ ) by h-h-h-howd (uwu) pwessing any sewvew ***boops your nose*** fow ^-^ that :3 episode. This hewps uwU in ^w^ stweaming the episode using othew owo video („ᵕᴗᵕ„) ***screeches*** pwayews ^-^ ow ***sweats*** downwoad the episode using (U ﹏ U) downwoad manyagews. \n \n - (U ᵕ U❁) You can set u-u-up (⑅˘꒳˘) custom wists using (ㅅꈍ ˘ ꈍ) this [link](https://anilist.co/settings/lists). (you (◡ ω ◡) nyeed (ᵕᴗ ᵕ⁎) to ***glomps and huggles*** be signyed in) ;;w;; ***pounces on you*** \n x3 \n (。ᴜ‿‿ᴜ。) - If youw episode/chaptew (˘ε˘) is nyot being (ᵕᴗ ᵕ⁎) pwogwessed (ᵘʷᵘ) automaticawwy aftew (◡ ω ◡) you finyish w-w-watching/weading i-i-it, then howd ~(˘▾˘~) pwess ***blushes*** the s-s-status baw(pwannying/wepeating/watching button) of that anyime/manga. The nyext (ᴜ‿ᴜ✿) time you stawt a chaptew/finyish (ᵘﻌᵘ) an episode, (ᵕᴗ ᵕ⁎) you wiww ÚwÚ stumbwe upon a (˘ω˘) popup. Pwess yes ( ᴜ ω ᴜ ) thewe. - + Subscwibed!? :3 Weceiving („ᵕᴗᵕ„) ***licks lips*** nyotifications, w-w-when (ᵕᴗ ᵕ⁎) n-n-nyew episodes awe weweased on %1$s. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c6a34e48..463dcf78 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ - + rebelonion/Dantotsu dantotsuprefs @@ -154,7 +155,7 @@ Sequel Anilist Settings - Extension + Extensions Downloads Settings Extensions From 84c58fbe6c446f6697f866be4008957be89742f1 Mon Sep 17 00:00:00 2001 From: Finnley Somdahl <87634197+rebelonion@users.noreply.github.com> Date: Tue, 21 Nov 2023 20:34:34 -0600 Subject: [PATCH 2/5] downloading button cleanup --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 1 + .../download/manga/OfflineMangaFragment.kt | 17 ++++--- .../media/manga/MangaChapterAdapter.kt | 51 ++++++++++++++++--- .../dantotsu/media/manga/MangaReadFragment.kt | 15 ++---- .../manga/mangareader/ChapterLoaderDialog.kt | 2 +- .../manga/mangareader/MangaReaderActivity.kt | 4 +- app/src/main/res/drawable/ic_circle_add.xml | 10 ++++ .../main/res/drawable/ic_circle_cancel.xml | 10 ++++ app/src/main/res/drawable/ic_circle_check.xml | 10 ++++ app/src/main/res/drawable/ic_sync.xml | 10 ++++ .../res/layout/fragment_manga_offline.xml | 2 + 12 files changed, 108 insertions(+), 26 deletions(-) create mode 100644 app/src/main/res/drawable/ic_circle_add.xml create mode 100644 app/src/main/res/drawable/ic_circle_cancel.xml create mode 100644 app/src/main/res/drawable/ic_circle_check.xml create mode 100644 app/src/main/res/drawable/ic_sync.xml diff --git a/app/build.gradle b/app/build.gradle index 0ea1f761..eac864f1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,7 +21,7 @@ android { minSdk 23 targetSdk 34 versionCode ((System.currentTimeMillis() / 60000).toInteger()) - versionName "1.0.0-beta02" + versionName "1.0.0-beta03i" signingConfig signingConfigs.debug } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 991a97c2..6647fea0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ android:name="android.hardware.touchscreen" android:required="false" /> + diff --git a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt index 887ae61a..4167a94e 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt @@ -32,6 +32,7 @@ import ani.dantotsu.navBarHeight import ani.dantotsu.px import ani.dantotsu.setSafeOnClickListener import ani.dantotsu.settings.SettingsDialogFragment +import ani.dantotsu.snackString import ani.dantotsu.statusBarHeight import com.google.android.material.card.MaterialCardView import com.google.android.material.imageview.ShapeableImageView @@ -84,12 +85,16 @@ class OfflineMangaFragment: Fragment() { gridView.setOnItemClickListener { parent, view, position, id -> // Get the OfflineMangaModel that was clicked val item = adapter.getItem(position) as OfflineMangaModel - val media = downloadManager.mangaDownloads.filter { it.title == item.title }.first() - startActivity( - Intent(requireContext(), MediaDetailsActivity::class.java) - .putExtra("media", getMedia(media)) - .putExtra("download", true) - ) + val media = downloadManager.mangaDownloads.filter { it.title == item.title }.firstOrNull() + media?.let { + startActivity( + Intent(requireContext(), MediaDetailsActivity::class.java) + .putExtra("media", getMedia(it)) + .putExtra("download", true) + ) + } ?: run { + snackString("no media found") + } } return view 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 4480d7a6..cfce2642 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt @@ -1,8 +1,12 @@ package ani.dantotsu.media.manga +import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.LinearInterpolator +import androidx.core.content.ContentProviderCompat.requireContext +import androidx.lifecycle.coroutineScope import androidx.recyclerview.widget.RecyclerView import ani.dantotsu.R import ani.dantotsu.databinding.ItemChapterListBinding @@ -10,8 +14,9 @@ import ani.dantotsu.databinding.ItemEpisodeCompactBinding import ani.dantotsu.media.Media import ani.dantotsu.setAnimation import ani.dantotsu.connections.updateProgress -import java.util.regex.Matcher -import java.util.regex.Pattern +import ani.dantotsu.currContext +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch class MangaChapterAdapter( private var type: Int, @@ -90,7 +95,7 @@ class MangaChapterAdapter( } } - fun removeDownload(chapterNumber: String) { + fun purgeDownload(chapterNumber: String) { activeDownloads.remove(chapterNumber) downloadedChapters.remove(chapterNumber) // Find the position of the chapter and notify only that item @@ -112,6 +117,9 @@ class MangaChapterAdapter( inner class ChapterListViewHolder(val binding: ItemChapterListBinding) : RecyclerView.ViewHolder(binding.root) { + private val activeCoroutines = mutableSetOf() + val typedValue1 = TypedValue() + val typedValue2 = TypedValue() fun bind(chapterNumber: String, progress: String?) { if (progress != null) { binding.itemChapterTitle.visibility = View.VISIBLE @@ -122,18 +130,49 @@ class MangaChapterAdapter( } if (activeDownloads.contains(chapterNumber)) { // Show spinner - binding.itemDownload.setImageResource(R.drawable.ic_round_refresh_24) + binding.itemDownload.setImageResource(R.drawable.ic_sync) + startOrContinueRotation(chapterNumber) } else if (downloadedChapters.contains(chapterNumber)) { // Show checkmark - binding.itemDownload.setImageResource(R.drawable.ic_check) + binding.itemDownload.setImageResource(R.drawable.ic_circle_check) + binding.itemDownload.setColorFilter(typedValue2.data) + binding.itemDownload.postDelayed({ + binding.itemDownload.setImageResource(R.drawable.ic_circle_cancel) + binding.itemDownload.setColorFilter(typedValue2.data) + }, 5000) } else { // Show download icon - binding.itemDownload.setImageResource(R.drawable.ic_round_download_24) + binding.itemDownload.setImageResource(R.drawable.ic_circle_add) } } + private fun startOrContinueRotation(chapterNumber: String) { + if (!isRotationCoroutineRunningFor(chapterNumber)) { + val scope = fragment.lifecycle.coroutineScope + scope.launch { + // Add chapter number to active coroutines set + activeCoroutines.add(chapterNumber) + while (activeDownloads.contains(chapterNumber)) { + binding.itemDownload.animate().rotationBy(360f).setDuration(1000).setInterpolator( + LinearInterpolator() + ).start() + delay(1000) + } + // Remove chapter number from active coroutines set + activeCoroutines.remove(chapterNumber) + } + } + } + + private fun isRotationCoroutineRunningFor(chapterNumber: String): Boolean { + return chapterNumber in activeCoroutines + } + init { + val theme = currContext()?.theme + theme?.resolveAttribute(com.google.android.material.R.attr.colorError, typedValue1, true) + theme?.resolveAttribute(com.google.android.material.R.attr.colorPrimary, typedValue2, true) itemView.setOnClickListener { if (0 <= bindingAdapterPosition && bindingAdapterPosition < arr.size) fragment.onMangaChapterClick(arr[bindingAdapterPosition].number) diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt index 46f41f54..63aa6d1c 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt @@ -2,7 +2,6 @@ package ani.dantotsu.media.manga import android.annotation.SuppressLint import android.app.AlertDialog -import android.app.DownloadManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent @@ -16,7 +15,6 @@ import android.view.View import android.view.ViewGroup import android.widget.FrameLayout import android.widget.Toast -import androidx.annotation.RequiresApi import androidx.cardview.widget.CardView import androidx.core.content.ContextCompat import androidx.core.math.MathUtils.clamp @@ -42,7 +40,6 @@ import ani.dantotsu.parsers.HMangaSources import ani.dantotsu.parsers.MangaParser import ani.dantotsu.parsers.MangaSources import ani.dantotsu.settings.UserInterfaceSettings -import ani.dantotsu.settings.extensionprefs.AnimeSourcePreferencesFragment import ani.dantotsu.settings.extensionprefs.MangaSourcePreferencesFragment import ani.dantotsu.subcriptions.Notifications import ani.dantotsu.subcriptions.Notifications.Group.MANGA_GROUP @@ -51,8 +48,6 @@ import ani.dantotsu.subcriptions.SubscriptionHelper import ani.dantotsu.subcriptions.SubscriptionHelper.Companion.saveSubscription import com.google.android.material.appbar.AppBarLayout import com.google.android.material.navigationrail.NavigationRailView -import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource -import eu.kanade.tachiyomi.extension.anime.model.AnimeExtension import eu.kanade.tachiyomi.extension.manga.model.MangaExtension import eu.kanade.tachiyomi.source.ConfigurableSource import kotlinx.coroutines.CoroutineScope @@ -405,7 +400,7 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { // Create a download task val downloadTask = MangaDownloaderService.DownloadTask( - title = media.nameMAL ?: "", + title = media.nameMAL ?: media.nameRomaji, chapter = chapter.title!!, imageData = images, sourceMedia = media, @@ -445,7 +440,7 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { fun onMangaChapterRemoveDownloadClick(i: String){ - downloadManager.removeDownload(Download(media.nameMAL!!, i, Download.Type.MANGA)) + downloadManager.removeDownload(Download(media.nameMAL?:media.nameRomaji, i, Download.Type.MANGA)) chapterAdapter.deleteDownload(i) } fun onMangaChapterStopDownloadClick(i: String) { @@ -456,8 +451,8 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { requireContext().sendBroadcast(cancelIntent) // Remove the download from the manager and update the UI - downloadManager.removeDownload(Download(media.nameMAL!!, i, Download.Type.MANGA)) - chapterAdapter.stopDownload(i) + downloadManager.removeDownload(Download(media.nameMAL?:media.nameRomaji, i, Download.Type.MANGA)) + chapterAdapter.purgeDownload(i) } private val downloadStatusReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { @@ -473,7 +468,7 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { ACTION_DOWNLOAD_FAILED -> { val chapterNumber = intent.getStringExtra(EXTRA_CHAPTER_NUMBER) chapterNumber?.let { - chapterAdapter.removeDownload(it) + chapterAdapter.purgeDownload(it) } } ACTION_DOWNLOAD_PROGRESS -> { diff --git a/app/src/main/java/ani/dantotsu/media/manga/mangareader/ChapterLoaderDialog.kt b/app/src/main/java/ani/dantotsu/media/manga/mangareader/ChapterLoaderDialog.kt index 342203cd..3cf0c0e1 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/mangareader/ChapterLoaderDialog.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/mangareader/ChapterLoaderDialog.kt @@ -47,7 +47,7 @@ class ChapterLoaderDialog : BottomSheetDialogFragment() { loaded = true binding.selectorAutoText.text = chp.title lifecycleScope.launch(Dispatchers.IO) { - if(model.loadMangaChapterImages(chp, m.selected!!, m.nameMAL!!)) { + if(model.loadMangaChapterImages(chp, m.selected!!, m.nameMAL?:m.nameRomaji)) { val activity = currActivity() activity?.runOnUiThread { tryWith { dismiss() } diff --git a/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt b/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt index dd81e617..a5682716 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/mangareader/MangaReaderActivity.kt @@ -317,7 +317,7 @@ ThemeManager(this).applyTheme() } } - scope.launch(Dispatchers.IO) { model.loadMangaChapterImages(chapter, media.selected!!, media.nameMAL!!) } + scope.launch(Dispatchers.IO) { model.loadMangaChapterImages(chapter, media.selected!!, media.nameMAL?:media.nameRomaji) } } private val snapHelper = PagerSnapHelper() @@ -706,7 +706,7 @@ ThemeManager(this).applyTheme() model.loadMangaChapterImages( chapters[chaptersArr.getOrNull(currentChapterIndex + 1) ?: return@launch]!!, media.selected!!, - media.nameMAL!!, + media.nameMAL?:media.nameRomaji, false ) loading = false diff --git a/app/src/main/res/drawable/ic_circle_add.xml b/app/src/main/res/drawable/ic_circle_add.xml new file mode 100644 index 00000000..4f65263e --- /dev/null +++ b/app/src/main/res/drawable/ic_circle_add.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_circle_cancel.xml b/app/src/main/res/drawable/ic_circle_cancel.xml new file mode 100644 index 00000000..72bb239b --- /dev/null +++ b/app/src/main/res/drawable/ic_circle_cancel.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_circle_check.xml b/app/src/main/res/drawable/ic_circle_check.xml new file mode 100644 index 00000000..ea65d8d2 --- /dev/null +++ b/app/src/main/res/drawable/ic_circle_check.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_sync.xml b/app/src/main/res/drawable/ic_sync.xml new file mode 100644 index 00000000..4ad75e53 --- /dev/null +++ b/app/src/main/res/drawable/ic_sync.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_manga_offline.xml b/app/src/main/res/layout/fragment_manga_offline.xml index 3972cd2a..279da4b9 100644 --- a/app/src/main/res/layout/fragment_manga_offline.xml +++ b/app/src/main/res/layout/fragment_manga_offline.xml @@ -97,6 +97,8 @@ android:layout_height="0dp" android:layout_weight="1" android:numColumns="auto_fit" + android:paddingLeft="8dp" + android:paddingRight="8dp" android:columnWidth="108dp" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" From a1913ed968e176b92a1208cd2a1929c2d99b475e Mon Sep 17 00:00:00 2001 From: Finnley Somdahl <87634197+rebelonion@users.noreply.github.com> Date: Wed, 22 Nov 2023 00:32:26 -0600 Subject: [PATCH 3/5] new icon color fixed sorting issue [12:28 AM] some nice gui stuff for downloading [12:28 AM] yomiroll preferences bug [12:28 AM] background no longer stuck on black --- app/build.gradle | 8 +- app/src/debug/res/values/strings.xml | 2 +- app/src/main/AndroidManifest.xml | 2 +- app/src/main/ic_launcher_beta-playstore.png | Bin 0 -> 15523 bytes .../main/java/ani/dantotsu/MainActivity.kt | 4 +- .../dantotsu/media/MediaDetailsViewModel.kt | 22 +- .../media/anime/AnimeWatchFragment.kt | 41 +- .../ani/dantotsu/media/anime/ExoplayerView.kt | 3 +- .../media/manga/MangaChapterAdapter.kt | 2 +- .../dantotsu/parsers/OfflineMangaParser.kt | 9 + .../InstalledAnimeExtensionsFragment.kt | 68 ++-- .../AnimePreferenceFragmentCompat.kt | 8 +- .../main/res/drawable/anim_splash_beta.xml | 377 ++++++++++++++++++ .../drawable/ic_launcher_beta_background.xml | 30 ++ .../drawable/ic_launcher_beta_foreground.xml | 22 + app/src/main/res/layout/splash_screen.xml | 2 +- .../mipmap-anydpi-v26/ic_launcher_beta.xml | 6 + .../ic_launcher_beta_round.xml | 5 + .../res/mipmap-hdpi/ic_launcher_beta.webp | Bin 0 -> 2896 bytes .../mipmap-hdpi/ic_launcher_beta_round.webp | Bin 0 -> 2896 bytes .../res/mipmap-mdpi/ic_launcher_beta.webp | Bin 0 -> 1864 bytes .../mipmap-mdpi/ic_launcher_beta_round.webp | Bin 0 -> 1864 bytes .../res/mipmap-xhdpi/ic_launcher_beta.webp | Bin 0 -> 3832 bytes .../mipmap-xhdpi/ic_launcher_beta_round.webp | Bin 0 -> 3832 bytes .../res/mipmap-xxhdpi/ic_launcher_beta.webp | Bin 0 -> 5818 bytes .../mipmap-xxhdpi/ic_launcher_beta_round.webp | Bin 0 -> 5818 bytes .../res/mipmap-xxxhdpi/ic_launcher_beta.webp | Bin 0 -> 7964 bytes .../ic_launcher_beta_round.webp | Bin 0 -> 7964 bytes app/src/main/res/values-night/themes.xml | 2 +- app/src/main/res/values/themes.xml | 1 - 30 files changed, 531 insertions(+), 83 deletions(-) create mode 100644 app/src/main/ic_launcher_beta-playstore.png create mode 100644 app/src/main/res/drawable/anim_splash_beta.xml create mode 100644 app/src/main/res/drawable/ic_launcher_beta_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_beta_foreground.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_beta.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_beta_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_beta.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_beta_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_beta.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_beta_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_beta.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_beta_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_beta.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_beta_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_beta.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_beta_round.webp diff --git a/app/build.gradle b/app/build.gradle index eac864f1..5caa29de 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,9 +28,11 @@ android { buildTypes { debug { applicationIdSuffix ".beta" + manifestPlaceholders = [icon_placeholder: "@mipmap/ic_launcher_beta"] debuggable true } release { + manifestPlaceholders = [icon_placeholder: "@mipmap/ic_launcher"] debuggable false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } @@ -76,11 +78,11 @@ dependencies { // FireBase implementation platform('com.google.firebase:firebase-bom:32.2.3') - implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' - implementation 'com.google.firebase:firebase-crashlytics-ktx:18.4.3' + implementation 'com.google.firebase:firebase-analytics-ktx:21.5.0' + implementation 'com.google.firebase:firebase-crashlytics-ktx:18.6.0' // Exoplayer - ext.exo_version = '1.1.1' + ext.exo_version = '1.2.0' implementation "androidx.media3:media3-exoplayer:$exo_version" implementation "androidx.media3:media3-ui:$exo_version" implementation "androidx.media3:media3-exoplayer-hls:$exo_version" diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml index e74ebc2f..ef58c36a 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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6647fea0..b3e07cea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,7 +47,7 @@ ^v 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt index d79503a7..4cea1e39 100644 --- a/app/src/main/java/ani/dantotsu/MainActivity.kt +++ b/app/src/main/java/ani/dantotsu/MainActivity.kt @@ -83,9 +83,9 @@ class MainActivity : AppCompatActivity() { private var uiSettings = UserInterfaceSettings() override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - LangSet.setLocale(this) ThemeManager(this).applyTheme() + LangSet.setLocale(this) + super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsViewModel.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsViewModel.kt index f850b206..5235e6b5 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaDetailsViewModel.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsViewModel.kt @@ -270,27 +270,7 @@ class MediaDetailsViewModel : ViewModel() { private val mangaChapter = MutableLiveData(null) fun getMangaChapter(): LiveData = mangaChapter suspend fun loadMangaChapterImages(chapter: MangaChapter, selected: Selected, series: String, post: Boolean = true): Boolean { - //check if the chapter has been downloaded already - val downloadsManager = Injekt.get() - if(downloadsManager.mangaDownloads.contains(Download(series, chapter.title!!, Download.Type.MANGA))) { - val download = downloadsManager.mangaDownloads.find { it.title == series && it.chapter == chapter.title!! } ?: return false - //look in the downloads folder for the chapter and add all the numerically named images to the chapter - val directory = File( - currContext()?.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), - "Dantotsu/Manga/$series/${chapter.title!!}" - ) - val images = mutableListOf() - directory.listFiles()?.forEach { - if (it.nameWithoutExtension.toIntOrNull() != null) { - images.add(MangaImage(FileUrl(it.absolutePath), false)) - } - } - //sort the images by name - images.sortBy { it.url.url } - chapter.addImages(images) - if (post) mangaChapter.postValue(chapter) - return true - } + return tryWithSuspend(true) { chapter.addImages( mangaReadSources?.get(selected.sourceIndex)?.loadImages(chapter.link, chapter.sChapter) ?: return@tryWithSuspend false diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt index 0613eceb..0dc1fda7 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt @@ -321,16 +321,18 @@ class AnimeWatchFragment : Fragment() { dialog.dismiss() // Move the fragment transaction here - val fragment = - AnimeSourcePreferencesFragment().getInstance(selectedSetting.id){ - changeUIVisibility(true) - loadEpisodes(media.selected!!.sourceIndex, true) - } - parentFragmentManager.beginTransaction() - .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) - .replace(R.id.fragmentExtensionsContainer, fragment) - .addToBackStack(null) - .commit() + requireActivity().runOnUiThread { + val fragment = + AnimeSourcePreferencesFragment().getInstance(selectedSetting.id) { + changeUIVisibility(true) + loadEpisodes(media.selected!!.sourceIndex, true) + } + parentFragmentManager.beginTransaction() + .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) + .replace(R.id.fragmentExtensionsContainer, fragment) + .addToBackStack(null) + .commit() + } } .setNegativeButton("Cancel") { dialog, _ -> dialog.cancel() @@ -340,15 +342,18 @@ class AnimeWatchFragment : Fragment() { .show() } else { // If there's only one setting, proceed with the fragment transaction - val fragment = AnimeSourcePreferencesFragment().getInstance(selectedSetting.id){ - changeUIVisibility(true) - loadEpisodes(media.selected!!.sourceIndex, true) + requireActivity().runOnUiThread { + val fragment = + AnimeSourcePreferencesFragment().getInstance(selectedSetting.id) { + changeUIVisibility(true) + loadEpisodes(media.selected!!.sourceIndex, true) + } + parentFragmentManager.beginTransaction() + .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) + .replace(R.id.fragmentExtensionsContainer, fragment) + .addToBackStack(null) + .commit() } - parentFragmentManager.beginTransaction() - .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) - .replace(R.id.fragmentExtensionsContainer, fragment) - .addToBackStack(null) - .commit() } changeUIVisibility(false) diff --git a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt index 2617907a..abf500ce 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt @@ -323,7 +323,7 @@ class ExoplayerView : AppCompatActivity(), Player.Listener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) LangSet.setLocale(this) -ThemeManager(this).applyTheme() + ThemeManager(this).applyTheme() binding = ActivityExoplayerBinding.inflate(layoutInflater) setContentView(binding.root) @@ -1450,6 +1450,7 @@ ThemeManager(this).applyTheme() override fun onResume() { super.onResume() + LangSet.setLocale(this) orientationListener?.enable() hideSystemBars() if (isInitialized) { 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 cfce2642..b14a81f1 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt @@ -139,7 +139,7 @@ class MangaChapterAdapter( binding.itemDownload.postDelayed({ binding.itemDownload.setImageResource(R.drawable.ic_circle_cancel) binding.itemDownload.setColorFilter(typedValue2.data) - }, 5000) + }, 1000) } else { // Show download icon binding.itemDownload.setImageResource(R.drawable.ic_circle_add) diff --git a/app/src/main/java/ani/dantotsu/parsers/OfflineMangaParser.kt b/app/src/main/java/ani/dantotsu/parsers/OfflineMangaParser.kt index 50e3fed3..3684ee8b 100644 --- a/app/src/main/java/ani/dantotsu/parsers/OfflineMangaParser.kt +++ b/app/src/main/java/ani/dantotsu/parsers/OfflineMangaParser.kt @@ -3,6 +3,7 @@ package ani.dantotsu.parsers import android.os.Environment import ani.dantotsu.currContext import ani.dantotsu.download.DownloadsManager +import ani.dantotsu.logger import ani.dantotsu.media.manga.MangaNameAdapter import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga @@ -47,6 +48,7 @@ class OfflineMangaParser: MangaParser() { "Dantotsu/Manga/$chapterLink" ) val images = mutableListOf() + val imageNumberRegex = Regex("""(\d+)\.jpg$""") if (directory.exists()) { directory.listFiles()?.forEach { if (it.isFile) { @@ -54,6 +56,13 @@ class OfflineMangaParser: MangaParser() { images.add(image) } } + images.sortBy { image -> + val matchResult = imageNumberRegex.find(image.url.url) + matchResult?.groups?.get(1)?.value?.toIntOrNull() ?: Int.MAX_VALUE + } + for (image in images) { + logger("imageNumber: ${image.url.url}") + } return images } return emptyList() diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt index 980fa019..b668cf2a 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt @@ -63,19 +63,26 @@ class InstalledAnimeExtensionsFragment : Fragment() { dialog.dismiss() // Move the fragment transaction here - val fragment = AnimeSourcePreferencesFragment().getInstance(selectedSetting.id){ - val activity = requireActivity() as ExtensionsActivity - activity.findViewById(R.id.viewPager).visibility = View.VISIBLE - activity.findViewById(R.id.tabLayout).visibility = View.VISIBLE - activity.findViewById(R.id.searchView).visibility = View.VISIBLE - activity.findViewById(R.id.fragmentExtensionsContainer).visibility = - View.GONE + val eActivity = requireActivity() as ExtensionsActivity + eActivity.runOnUiThread { + val fragment = + AnimeSourcePreferencesFragment().getInstance(selectedSetting.id) { + + eActivity.findViewById(R.id.viewPager).visibility = + View.VISIBLE + eActivity.findViewById(R.id.tabLayout).visibility = + View.VISIBLE + eActivity.findViewById(R.id.searchView).visibility = + View.VISIBLE + eActivity.findViewById(R.id.fragmentExtensionsContainer).visibility = + View.GONE + } + parentFragmentManager.beginTransaction() + .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) + .replace(R.id.fragmentExtensionsContainer, fragment) + .addToBackStack(null) + .commit() } - parentFragmentManager.beginTransaction() - .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) - .replace(R.id.fragmentExtensionsContainer, fragment) - .addToBackStack(null) - .commit() } .setNegativeButton("Cancel") { dialog, _ -> dialog.cancel() @@ -84,19 +91,26 @@ class InstalledAnimeExtensionsFragment : Fragment() { .show() } else { // If there's only one setting, proceed with the fragment transaction - val fragment = AnimeSourcePreferencesFragment().getInstance(selectedSetting.id){ - val activity = requireActivity() as ExtensionsActivity - activity.findViewById(R.id.viewPager).visibility = View.VISIBLE - activity.findViewById(R.id.tabLayout).visibility = View.VISIBLE - activity.findViewById(R.id.searchView).visibility = View.VISIBLE - activity.findViewById(R.id.fragmentExtensionsContainer).visibility = - View.GONE + val eActivity = requireActivity() as ExtensionsActivity + eActivity.runOnUiThread { + val fragment = + AnimeSourcePreferencesFragment().getInstance(selectedSetting.id) { + + eActivity.findViewById(R.id.viewPager).visibility = + View.VISIBLE + eActivity.findViewById(R.id.tabLayout).visibility = + View.VISIBLE + eActivity.findViewById(R.id.searchView).visibility = + View.VISIBLE + eActivity.findViewById(R.id.fragmentExtensionsContainer).visibility = + View.GONE + } + parentFragmentManager.beginTransaction() + .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) + .replace(R.id.fragmentExtensionsContainer, fragment) + .addToBackStack(null) + .commit() } - parentFragmentManager.beginTransaction() - .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) - .replace(R.id.fragmentExtensionsContainer, fragment) - .addToBackStack(null) - .commit() } // Hide ViewPager2 and TabLayout @@ -149,7 +163,7 @@ class InstalledAnimeExtensionsFragment : Fragment() { context, Notifications.CHANNEL_DOWNLOADER_PROGRESS ) - .setSmallIcon(androidx.media3.ui.R.drawable.exo_ic_check) + .setSmallIcon(R.drawable.ic_circle_check) .setContentTitle("Update complete") .setContentText("The extension has been successfully updated.") .setPriority(NotificationCompat.PRIORITY_LOW) @@ -192,13 +206,11 @@ class InstalledAnimeExtensionsFragment : Fragment() { private class AnimeExtensionsAdapter( private val onSettingsClicked: (AnimeExtension.Installed) -> Unit, private val onUninstallClicked: (AnimeExtension.Installed) -> Unit, - skipIcons: Boolean + val skipIcons: Boolean ) : ListAdapter( DIFF_CALLBACK_INSTALLED ) { - val skipIcons = skipIcons - fun updateData(newExtensions: List) { submitList(newExtensions) // Use submitList instead of manual list handling } diff --git a/app/src/main/java/ani/dantotsu/settings/extensionprefs/AnimePreferenceFragmentCompat.kt b/app/src/main/java/ani/dantotsu/settings/extensionprefs/AnimePreferenceFragmentCompat.kt index b4f93561..b82629f5 100644 --- a/app/src/main/java/ani/dantotsu/settings/extensionprefs/AnimePreferenceFragmentCompat.kt +++ b/app/src/main/java/ani/dantotsu/settings/extensionprefs/AnimePreferenceFragmentCompat.kt @@ -44,7 +44,7 @@ class AnimeSourcePreferencesFragment : PreferenceFragmentCompat() { onCloseAction?.invoke() } - fun populateAnimePreferenceScreen(): PreferenceScreen { + private fun populateAnimePreferenceScreen(): PreferenceScreen { val sourceId = requireArguments().getLong(SOURCE_ID) val source = Injekt.get().get(sourceId)!! check(source is ConfigurableAnimeSource) @@ -57,11 +57,11 @@ class AnimeSourcePreferencesFragment : PreferenceFragmentCompat() { pref.isIconSpaceReserved = false if (pref is DialogPreference) { pref.dialogTitle = pref.title - println("pref.dialogTitle: ${pref.dialogTitle}") + //println("pref.dialogTitle: ${pref.dialogTitle}") } - for (entry in sharedPreferences.all.entries) { + /*for (entry in sharedPreferences.all.entries) { Log.d("Preferences", "Key: ${entry.key}, Value: ${entry.value}") - } + }*/ // Apply incognito IME for EditTextPreference if (pref is EditTextPreference) { diff --git a/app/src/main/res/drawable/anim_splash_beta.xml b/app/src/main/res/drawable/anim_splash_beta.xml new file mode 100644 index 00000000..3338cb41 --- /dev/null +++ b/app/src/main/res/drawable/anim_splash_beta.xml @@ -0,0 +1,377 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_beta_background.xml b/app/src/main/res/drawable/ic_launcher_beta_background.xml new file mode 100644 index 00000000..657fc674 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_beta_background.xml @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_beta_foreground.xml b/app/src/main/res/drawable/ic_launcher_beta_foreground.xml new file mode 100644 index 00000000..f19b9a98 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_beta_foreground.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/app/src/main/res/layout/splash_screen.xml b/app/src/main/res/layout/splash_screen.xml index eac727b5..28b6cc3a 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="@color/bg_black"> + android:background="?android:colorBackground"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_beta_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_beta_round.xml new file mode 100644 index 00000000..4b4e6996 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_beta_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_beta.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_beta.webp new file mode 100644 index 0000000000000000000000000000000000000000..f8f3052afc38f92ea651bbff6b8293008370f366 GIT binary patch literal 2896 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 C8Hqsv literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_beta_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_beta_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..587346da374ea8387b0cd20d88babaa4009a1f10 GIT binary patch literal 1864 zcmV-O2e>UjeF#%K)xGYt& zwe4x+eA<=4;lz@1dJDb(i)&&~Y5$emVMfOtp0NJH${|;gY&%gKAmf1VXMms}D#&S9 z2GZe1lI>cVuLbv>vwKlNeDfEc22**@B@KQQkPJ4-U}9-4;K;UZ+Nx*UHouK7*tX5g zW&>>hF4$K76o1<~n}OT5aipZ(eQ((thld~Nx0e!0HmzfDM9Y^TIo@O}0glr6Unb|JwTRnj{!I zjL!>l+a=pnZTU~ujP@rE_SWRuXw{uaPs;-${X(29`XYvh(qj6-gM{JBB4!cAB1~Cq z3Xm4~_?4yrZl4%{|Mi0hl7*go=s9F|K&u<*IyHG?os+Ty7(N&n*RGC;5c&1W7==qD5_CRAsx3bK$+>B?#c-AqV zwOr#{GoB;kxhT?jt|UnUJ0}Oj%ih0#UmqP1YE8Vrbx3*9jTm0;Toe~AQVA0i^mR3h za>Jk{nB0)@zHLiT)|ZgiB9lYaptV<76GtPVU{Mqba zB#i?I4G7{0L)HMGxhWuv$|%HpugOL)jAe9P=h7~QM&(NyI}x}diTj4TW4JSlI*8CZ z08~{Ysi;Yfh|1)uSjeDfZwXp7%zh6^qg20;nX)3x=gDXNK-+=7J*j zBA^y2X|fQ~WJm#uVB|H3O(HqvSbA{6@wB2g1E41ILU=ZpWmE(sAD@CpB0AxHcbHtj zDM@TXNKND^1Jj$ZzQ$8!x~Z9r z8=5&Oi0uHVs``;RtnI?dkutN7+%TayIw1kP7L)1hK;V+1y6?$(MIAzj-jm2EX|A^` zb8&GfHgfnqX{vJofdnv3Q7)EHkrw+98W6-$j;#eib1kD5%_JxZZ@rRbjEWSN(REd= z^CT1(B=2oYY zZLd|cjNtF6LEB%u@9E-Mby*RFD+t00&4aLl%mp**&ybHI4f&D90@(<2fO-xfqFmxdbxOig3D87Pgc%$_^rJZ5&jRf$ngMbcE$IP2gsQ3 z>ec%J>i3P*?+a1D^Mj$D;?nT|>f~k70+1u$8GQd(0ur^{pQ+y$sQ>3LF@=w3xH;!i z(Cb?#s@&g{7l51qF4_SkbT`rJdi+-ZZ{Vh>%I7;gUKw)WjoRxq!a*IMQUJJ3%kRKA zVGWi9G8zCI{cV?eUZL{;`&RzGLQG9nKAz#}8ZJ+`;Npm{pBG*;M?ncJ_aZN4Pe~;7>sjzra}M| C8Hqsv literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_beta.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_beta.webp new file mode 100644 index 0000000000000000000000000000000000000000..489d7184074846631acd16e66d8466cd22075e7d GIT binary patch literal 3832 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_beta_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_beta_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..489d7184074846631acd16e66d8466cd22075e7d GIT binary patch literal 3832 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_beta.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_beta.webp new file mode 100644 index 0000000000000000000000000000000000000000..572b138d18ee3ff8874e1a0c75747f4d1e5d22be GIT binary patch literal 5818 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 E0KD}7!TZJ2~V>~;r2L`(o(**j0J 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 SjtY+wpDsuVlHU)>m<<4 +