diff --git a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt index b91bb55a..f9beeaf3 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaAdapter.kt @@ -1,11 +1,13 @@ package ani.dantotsu.download.manga +import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter import android.widget.ImageView +import android.widget.LinearLayout import android.widget.TextView import androidx.cardview.widget.CardView import ani.dantotsu.R @@ -32,10 +34,18 @@ class OfflineMangaAdapter( return position.toLong() } + @SuppressLint("SetTextI18n") override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { + + val style = context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getInt("offline_view", 0) + var view = convertView - if (view == null) { - view = inflater.inflate(R.layout.item_media_compact, parent, false) + + if (view == null && style == 0 ) { + view = inflater.inflate(R.layout.item_media_large, parent, false) // large view + } + else if (view == null && style == 1){ + view = inflater.inflate(R.layout.item_media_compact, parent, false) // compact view } val item = getItem(position) as OfflineMangaModel @@ -44,11 +54,31 @@ class OfflineMangaAdapter( val itemScore = view.findViewById(R.id.itemCompactScore) val itemScoreBG = view.findViewById(R.id.itemCompactScoreBG) val ongoing = view.findViewById(R.id.itemCompactOngoing) + val totalchapter = view.findViewById(R.id.itemCompactTotal) + val type = view.findViewById(R.id.itemCompactRelation) + val typeView = view.findViewById(R.id.itemCompactType) + + if (style == 0){ + val bannerView = view.findViewById(R.id.itemCompactBanner) // for large view + val chapters = view.findViewById(R.id.itemTotal) + chapters.text = " Chapters" + bannerView.setImageURI(item.banner) + totalchapter.text = item.totalchapter + } + + else if (style == 1){ + val readchapter = view.findViewById(R.id.itemCompactUserProgress) // for compact view + readchapter.text = item.readchapter + totalchapter.text = " | "+item.totalchapter + } + // Bind item data to the views - // For example: + type.text = item.type + typeView.visibility = View.VISIBLE imageView.setImageURI(item.image) titleTextView.text = item.title itemScore.text = item.score + if (item.isOngoing) { ongoing.visibility = View.VISIBLE } else { 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 e81d2817..a3d330a4 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaFragment.kt @@ -2,6 +2,7 @@ package ani.dantotsu.download.manga import android.animation.ObjectAnimator import android.content.Context +import android.app.Activity import android.content.Intent import android.net.Uri import android.os.Build @@ -16,17 +17,23 @@ import android.view.ViewGroup import android.view.animation.OvershootInterpolator import android.widget.AutoCompleteTextView import android.widget.GridView +import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.cardview.widget.CardView +import androidx.core.app.ActivityCompat.recreate import androidx.fragment.app.Fragment import ani.dantotsu.R +import ani.dantotsu.Refresh +import ani.dantotsu.currActivity import ani.dantotsu.currContext import ani.dantotsu.download.Download import ani.dantotsu.download.DownloadsManager +import ani.dantotsu.initActivity import ani.dantotsu.logger import ani.dantotsu.media.Media import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.setSafeOnClickListener +import ani.dantotsu.settings.SettingsActivity import ani.dantotsu.settings.SettingsDialogFragment import ani.dantotsu.snackString import ani.dantotsu.statusBarHeight @@ -45,6 +52,7 @@ import kotlin.math.max import kotlin.math.min class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener { + private val downloadManager = Injekt.get() private var downloads: List = listOf() private lateinit var gridView: GridView @@ -91,15 +99,49 @@ class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener { override fun afterTextChanged(s: Editable?) { } - override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int, ) { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { onSearchQuery(s.toString()) } }) + var style = context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE) + ?.getInt("offline_view", 0) + val layoutList = view.findViewById(R.id.downloadedList) + val layoutcompact = view.findViewById(R.id.downloadedGrid) + var selected = when (style) { + 0 -> layoutList + 1 -> layoutcompact + else -> layoutList + } + selected.alpha = 1f - gridView = view.findViewById(R.id.gridView) + fun selected(it: ImageView) { + selected.alpha = 0.33f + selected = it + selected.alpha = 1f + } + + layoutList.setOnClickListener { + selected(it as ImageView) + style = 0 + context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() + ?.putInt("offline_view", style!!)?.apply() + recreate(requireActivity()) + + } + + layoutcompact.setOnClickListener { + selected(it as ImageView) + style = 1 + context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() + ?.putInt("offline_view", style!!)?.apply() + recreate(requireActivity()) + } + + gridView = if(style == 0) view.findViewById(R.id.gridView) else view.findViewById(R.id.gridView1) + gridView.visibility = View.VISIBLE getDownloads() adapter = OfflineMangaAdapter(requireContext(), downloads, this) gridView.adapter = adapter @@ -286,20 +328,25 @@ class OfflineMangaFragment : Fragment(), OfflineMangaSearchListener { val cover = File(directory, "cover.jpg") val coverUri: Uri? = if (cover.exists()) { Uri.fromFile(cover) - } else { - null - } + } else null + val banner = File(directory, "banner.jpg") + val bannerUri: Uri? = if (banner.exists()) { + Uri.fromFile(banner) + } else null val title = mediaModel.nameMAL ?: mediaModel.nameRomaji val score = ((if (mediaModel.userScore == 0) (mediaModel.meanScore ?: 0) else mediaModel.userScore) / 10.0).toString() - val isOngoing = false + val isOngoing = mediaModel.status == currActivity()!!.getString(R.string.status_releasing) val isUserScored = mediaModel.userScore != 0 - return OfflineMangaModel(title, score, isOngoing, isUserScored, coverUri) + val readchapter = (mediaModel.userProgress ?: "~").toString() + val totalchapter = "${mediaModel.manga?.totalChapters ?: "??"}" + val chapters = " Chapters" + return OfflineMangaModel(title, score, totalchapter, readchapter, type, chapters, isOngoing, isUserScored, coverUri , bannerUri ) } catch (e: Exception) { logger("Error loading media.json: ${e.message}") logger(e.printStackTrace()) FirebaseCrashlytics.getInstance().recordException(e) - return OfflineMangaModel("unknown", "0", false, false, null) + return OfflineMangaModel("unknown", "0", "??", "??","movie" ,"hmm", false, false, null , null) } } } diff --git a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaModel.kt b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaModel.kt index 568081ee..3cebc6f6 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaModel.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/OfflineMangaModel.kt @@ -5,7 +5,12 @@ import android.net.Uri data class OfflineMangaModel( val title: String, val score: String, + val totalchapter: String, + val readchapter : String, + val type: String, + val chapters: String, val isOngoing: Boolean, val isUserScored: Boolean, - val image: Uri? + val image: Uri?, + val banner: Uri? ) \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/media/MediaAdaptor.kt b/app/src/main/java/ani/dantotsu/media/MediaAdaptor.kt index fd04eb58..6483909f 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaAdaptor.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaAdaptor.kt @@ -136,7 +136,7 @@ class MediaAdaptor( val media = mediaList?.get(position) if (media != null) { b.itemCompactImage.loadImage(media.cover) - b.itemCompactBanner.loadImage(media.banner ?: media.cover, 400) + b.itemCompactBanner.loadImage(media.banner ?: media.cover) b.itemCompactOngoing.visibility = if (media.status == currActivity()!!.getString(R.string.status_releasing)) View.VISIBLE else View.GONE b.itemCompactTitle.text = media.userPreferredName diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt index bdbcb7ca..49489825 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledAnimeExtensionsFragment.kt @@ -1,5 +1,6 @@ package ani.dantotsu.settings +import android.annotation.SuppressLint import android.app.AlertDialog import android.app.NotificationManager import android.content.Context @@ -49,6 +50,19 @@ class InstalledAnimeExtensionsFragment : Fragment(), SearchQueryHandler { private val animeExtensionManager: AnimeExtensionManager = Injekt.get() private val extensionsAdapter = AnimeExtensionsAdapter( { pkg -> + val name= pkg.name + val changeUIVisibility: (Boolean) -> Unit = { show -> + val activity = requireActivity() as ExtensionsActivity + val visibility = if (show) View.VISIBLE else View.GONE + activity.findViewById(R.id.viewPager).visibility = visibility + activity.findViewById(R.id.tabLayout).visibility = visibility + activity.findViewById(R.id.searchView).visibility = visibility + activity.findViewById(R.id.languageselect).visibility = visibility + activity.findViewById(R.id.extensions).text = if (show) getString(R.string.extensions) else name + activity.findViewById(R.id.fragmentExtensionsContainer).visibility = + if (show) View.GONE else View.VISIBLE + } + var itemSelected = false val allSettings = pkg.sources.filterIsInstance() if (allSettings.isNotEmpty()) { var selectedSetting = allSettings[0] @@ -58,65 +72,44 @@ class InstalledAnimeExtensionsFragment : Fragment(), SearchQueryHandler { val dialog = AlertDialog.Builder(requireContext(), R.style.MyPopup) .setTitle("Select a Source") .setSingleChoiceItems(names, selectedIndex) { dialog, which -> + itemSelected = true selectedIndex = which selectedSetting = allSettings[selectedIndex] dialog.dismiss() - // Move the fragment transaction here - 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() + val fragment = + AnimeSourcePreferencesFragment().getInstance(selectedSetting.id) { + changeUIVisibility(true) + } + parentFragmentManager.beginTransaction() + .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) + .replace(R.id.fragmentExtensionsContainer, fragment) + .addToBackStack(null) + .commit() + } + .setOnDismissListener { + if (!itemSelected) { + changeUIVisibility(true) } } .show() dialog.window?.setDimAmount(0.8f) } else { // If there's only one setting, proceed with the fragment transaction - val eActivity = requireActivity() as ExtensionsActivity - eActivity.runOnUiThread { - val fragment = - AnimeSourcePreferencesFragment().getInstance(selectedSetting.id) { + val fragment = + AnimeSourcePreferencesFragment().getInstance(selectedSetting.id) { + changeUIVisibility(true) + } + parentFragmentManager.beginTransaction() + .setCustomAnimations(R.anim.slide_up, R.anim.slide_down) + .replace(R.id.fragmentExtensionsContainer, fragment) + .addToBackStack(null) + .commit() - 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() - } } // Hide ViewPager2 and TabLayout - val activity = requireActivity() as ExtensionsActivity - activity.findViewById(R.id.viewPager).visibility = View.GONE - activity.findViewById(R.id.tabLayout).visibility = View.GONE - activity.findViewById(R.id.searchView).visibility = View.GONE - activity.findViewById(R.id.fragmentExtensionsContainer).visibility = - View.VISIBLE + changeUIVisibility(false) } else { Toast.makeText(requireContext(), "Source is not configurable", Toast.LENGTH_SHORT) .show() @@ -225,6 +218,7 @@ class InstalledAnimeExtensionsFragment : Fragment(), SearchQueryHandler { return ViewHolder(view) } + @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ViewHolder, position: Int) { val extension = getItem(position) // Use getItem() from ListAdapter val nsfw = if (extension.isNsfw) "(18+)" else "" diff --git a/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt b/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt index ecef2e58..f31319d9 100644 --- a/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/InstalledMangaExtensionsFragment.kt @@ -47,15 +47,19 @@ class InstalledMangaExtensionsFragment : Fragment(), SearchQueryHandler { val skipIcons = loadData("skip_extension_icons") ?: false private val mangaExtensionManager: MangaExtensionManager = Injekt.get() private val extensionsAdapter = MangaExtensionsAdapter({ pkg -> + val name= pkg.name val changeUIVisibility: (Boolean) -> Unit = { show -> val activity = requireActivity() as ExtensionsActivity val visibility = if (show) View.VISIBLE else View.GONE activity.findViewById(R.id.viewPager).visibility = visibility activity.findViewById(R.id.tabLayout).visibility = visibility activity.findViewById(R.id.searchView).visibility = visibility + activity.findViewById(R.id.languageselect).visibility = visibility + activity.findViewById(R.id.extensions).text = if (show) getString(R.string.extensions) else name activity.findViewById(R.id.fragmentExtensionsContainer).visibility = if (show) View.GONE else View.VISIBLE } + var itemSelected = false val allSettings = pkg.sources.filterIsInstance() if (allSettings.isNotEmpty()) { var selectedSetting = allSettings[0] @@ -65,6 +69,7 @@ class InstalledMangaExtensionsFragment : Fragment(), SearchQueryHandler { val dialog = AlertDialog.Builder(requireContext(), R.style.MyPopup) .setTitle("Select a Source") .setSingleChoiceItems(names, selectedIndex) { dialog, which -> + itemSelected = true selectedIndex = which selectedSetting = allSettings[selectedIndex] dialog.dismiss() @@ -80,6 +85,11 @@ class InstalledMangaExtensionsFragment : Fragment(), SearchQueryHandler { .addToBackStack(null) .commit() } + .setOnDismissListener { + if (!itemSelected) { + changeUIVisibility(true) + } + } .show() dialog.window?.setDimAmount(0.8f) } else { diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt index c037959a..d5255095 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt @@ -178,13 +178,18 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListen binding.customTheme.setOnClickListener { - val originalColor = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getInt( + val originalColor = getSharedPreferences("Dantotsu", MODE_PRIVATE).getInt( "custom_theme_int", Color.parseColor("#6200EE") ) + class CustomColorDialog : SimpleColorDialog() { //idk where to put it + override fun onPositiveButtonClick() { + restartApp() + super.onPositiveButtonClick() + } + } val tag = "colorPicker" - SimpleColorDialog.build() - .title("Custom Theme") + CustomColorDialog().title("Custom Theme") .colorPreset(originalColor) .colors(this, SimpleColorDialog.BEIGE_COLOR_PALLET) .allowCustom(true) @@ -251,9 +256,9 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListen binding.skipExtensionIcons.setOnCheckedChangeListener { _, isChecked -> saveData("skip_extension_icons", isChecked) } - binding.NSFWExtension.isChecked = loadData("NFSWExtension") ?: true + binding.NSFWExtension.isChecked = loadData("NSFWExtension") ?: true binding.NSFWExtension.setOnCheckedChangeListener { _, isChecked -> - saveData("NFSWExtension", isChecked) + saveData("NSFWExtension", isChecked) } @@ -427,6 +432,7 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListen initActivity(this) } + binding.uiSettingsAnime.setOnClickListener { uiTheme(0, it) } @@ -793,4 +799,4 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListen show() } } -} \ No newline at end of file +} 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 045ca140..5ead2138 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.view.animation.LinearInterpolator @@ -91,18 +92,14 @@ class AnimeExtensionPagingSource( val availableExtensions = availableExtensionsFlow.filterNot { it.pkgName in installedExtensions } val query = searchQuery - val isNsfwEnabled: Boolean = loadData("NFSWExtension") ?: true + val isNsfwEnabled: Boolean = loadData("NSFWExtension") ?: true val filteredExtensions = if (query.isEmpty()) { availableExtensions } else { availableExtensions.filter { it.name.contains(query, ignoreCase = true) } } - val filternfsw = if (isNsfwEnabled) { - filteredExtensions - } else { - filteredExtensions.filterNot { it.isNsfw } - } + val filternfsw = if (isNsfwEnabled) filteredExtensions else filteredExtensions.filterNot { it.isNsfw } return try { val sublist = filternfsw.subList( fromIndex = position, @@ -198,6 +195,7 @@ class AnimeExtensionAdapter(private val clickListener: OnAnimeInstallClickListen val extensionIconImageView: ImageView = binding.extensionIconImageView + @SuppressLint("SetTextI18n") fun bind(extension: AnimeExtension.Available) { val nsfw = if (extension.isNsfw) "(18+)" else "" val lang = LanguageMapper.mapLanguageCodeToName(extension.lang) 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 0ae7e01d..eed5bccc 100644 --- a/app/src/main/java/ani/dantotsu/settings/paging/MangaPagingSource.kt +++ b/app/src/main/java/ani/dantotsu/settings/paging/MangaPagingSource.kt @@ -1,5 +1,6 @@ package ani.dantotsu.settings.paging +import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup import android.view.animation.LinearInterpolator @@ -91,17 +92,13 @@ class MangaExtensionPagingSource( val availableExtensions = availableExtensionsFlow.filterNot { it.pkgName in installedExtensions } val query = searchQuery - val isNsfwEnabled: Boolean = loadData("NFSWExtension") ?: true + val isNsfwEnabled: Boolean = loadData("NSFWExtension") ?: true val filteredExtensions = if (query.isEmpty()) { availableExtensions } else { availableExtensions.filter { it.name.contains(query, ignoreCase = true) } } - val filternfsw = if (isNsfwEnabled) { - filteredExtensions - } else { - filteredExtensions.filterNot { it.isNsfw } - } + val filternfsw = if (isNsfwEnabled) filteredExtensions else filteredExtensions.filterNot { it.isNsfw } return try { val sublist = filternfsw.subList( fromIndex = position, @@ -194,6 +191,7 @@ class MangaExtensionAdapter(private val clickListener: OnMangaInstallClickListen } val extensionIconImageView: ImageView = binding.extensionIconImageView + @SuppressLint("SetTextI18n") fun bind(extension: MangaExtension.Available) { val nsfw = if (extension.isNsfw) "(18+)" else "" val lang = LanguageMapper.mapLanguageCodeToName(extension.lang) diff --git a/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt b/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt index 2029177b..8ee3f62d 100644 --- a/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt +++ b/app/src/main/java/ani/dantotsu/themes/ThemeManager.kt @@ -42,14 +42,15 @@ class ThemeManager(private val context: Context) { .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 + "PURPLE" -> if (useOLED) R.style.Theme_Dantotsu_PurpleOLED else R.style.Theme_Dantotsu_Purple "PINK" -> if (useOLED) R.style.Theme_Dantotsu_PinkOLED else R.style.Theme_Dantotsu_Pink + "SAIKOU" -> if (useOLED) R.style.Theme_Dantotsu_SaikouOLED else R.style.Theme_Dantotsu_Saikou "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 + "EMERALD" -> if (useOLED) R.style.Theme_Dantotsu_EmeraldOLED else R.style.Theme_Dantotsu_Emerald "MONOCHROME (BETA)" -> if (useOLED) R.style.Theme_Dantotsu_MonochromeOLED else R.style.Theme_Dantotsu_Monochrome - "SAIKOU" -> if (useOLED) R.style.Theme_Dantotsu_SaikouOLED else R.style.Theme_Dantotsu_Saikou else -> if (useOLED) R.style.Theme_Dantotsu_PurpleOLED else R.style.Theme_Dantotsu_Purple } @@ -109,14 +110,15 @@ class ThemeManager(private val context: Context) { companion object { enum class Theme(val theme: String) { - PURPLE("PURPLE"), BLUE("BLUE"), GREEN("GREEN"), + PURPLE("PURPLE"), PINK("PINK"), + SAIKOU("SAIKOU"), RED("RED"), LAVENDER("LAVENDER"), - MONOCHROME("MONOCHROME (BETA)"), - SAIKOU("SAIKOU"); + EMERALD("EMERALD"), + MONOCHROME("MONOCHROME (BETA)"); companion object { fun fromString(value: String): Theme { diff --git a/app/src/main/res/layout/fragment_manga_offline.xml b/app/src/main/res/layout/fragment_manga_offline.xml index 995953ea..be95cc1a 100644 --- a/app/src/main/res/layout/fragment_manga_offline.xml +++ b/app/src/main/res/layout/fragment_manga_offline.xml @@ -80,7 +80,43 @@ + + + + + + + + - + + android:paddingStart="25dp" + android:paddingEnd="25dp" + android:gravity="center" + android:scrollbars="none" + android:visibility="gone"/> + + diff --git a/app/src/main/res/layout/item_media_large.xml b/app/src/main/res/layout/item_media_large.xml index 83fcffa8..91aa35c7 100644 --- a/app/src/main/res/layout/item_media_large.xml +++ b/app/src/main/res/layout/item_media_large.xml @@ -150,7 +150,43 @@ android:text="@string/eps" /> + + + + + + diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 73a2114d..fbda0709 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -65,32 +65,32 @@ + + + + + + + + - - - - - - + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 34281556..06f9958b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -24,6 +24,14 @@ #CD201F #a3a2a2 #E8EDEDED + #93DB00 + #68AF86 + #0096AE + #000000 + #FFE1F5FE + #FF81D4FA + #FF039BE5 + #FF01579B #00658e @@ -88,6 +96,7 @@ #41484D #000000 + #426916 #426916 #FFFFFF @@ -150,6 +159,7 @@ #44483D #000000 + #7c4997 #7C4997 #FFFFFF @@ -181,37 +191,38 @@ #7C4997 #CEC3CE #000000 - #E7B3FF - #4A1765 - #62307D - #F6D9FF - #D3C0D8 - #382C3E - #504255 - #F0DCF4 - #F5B7B7 - #4C2526 - #663B3B - #FFDAD9 - #FFB4AB - #93000A - #690005 - #FFDAD6 - #1D1B1E - #E8E0E5 - #1D1B1E - #E8E0E5 - #4B444D - #CEC3CE - #978E98 - #1D1B1E - #E8E0E5 - #7C4997 - #000000 - #E7B3FF - #4B444D - #000000 + #E7B3FF + #4A1765 + #62307D + #F6D9FF + #D3C0D8 + #382C3E + #504255 + #F0DCF4 + #F5B7B7 + #4C2526 + #663B3B + #FFDAD9 + #FFB4AB + #93000A + #690005 + #FFDAD6 + #1D1B1E + #E8E0E5 + #1D1B1E + #E8E0E5 + #4B444D + #CEC3CE + #978E98 + #1D1B1E + #E8E0E5 + #7C4997 + #000000 + #E7B3FF + #4B444D + #000000 + #e800ac #B30084 #FFFFFF @@ -274,7 +285,8 @@ #504349 #000000 - #FF007F + + #FF007F #FF007F #EEEEEE @@ -330,7 +342,7 @@ #00FF00 #00FF00 #00FF00 - #1C1B20 + #1C1B1E #EEEEEE #1C1B20 #EEEEEE @@ -345,135 +357,195 @@ #00FF00 #00FF00 - #c9000b - #C0000A - #FFFFFF - #FFDAD5 - #410001 - #775652 - #FFFFFF - #FFDAD5 - #2C1512 - #705C2E - #FFFFFF - #FCDFA6 - #261A00 - #BA1A1A - #FFDAD6 - #FFFFFF - #410002 - #FFFBFF - #201A19 - #FFFBFF - #201A19 - #F5DDDA - #534341 - #857370 - #FBEEEC - #362F2E - #FFB4AA - #000000 - #C0000A - #D8C2BE - #000000 - #FFB4AA - #690003 - #930005 - #FFDAD5 - #E7BDB7 - #442926 - #5D3F3B - #FFDAD5 - #DFC38C - #3E2E04 - #574419 - #FCDFA6 - #FFB4AB - #93000A - #690005 - #FFDAD6 - #201A19 - #EDE0DE - #201A19 - #EDE0DE - #534341 - #D8C2BE - #A08C89 - #201A19 - #EDE0DE - #C0000A - #000000 - #FFB4AA - #534341 - #000000 + + #c9000b + #C0000A + #FFFFFF + #FFDAD5 + #410001 + #775652 + #FFFFFF + #FFDAD5 + #2C1512 + #705C2E + #FFFFFF + #FCDFA6 + #261A00 + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FFFBFF + #201A19 + #FFFBFF + #201A19 + #F5DDDA + #534341 + #857370 + #FBEEEC + #362F2E + #FFB4AA + #000000 + #C0000A + #D8C2BE + #000000 + #FFB4AA + #690003 + #930005 + #FFDAD5 + #E7BDB7 + #442926 + #5D3F3B + #FFDAD5 + #DFC38C + #3E2E04 + #574419 + #FCDFA6 + #FFB4AB + #93000A + #690005 + #FFDAD6 + #201A19 + #EDE0DE + #201A19 + #EDE0DE + #534341 + #D8C2BE + #A08C89 + #201A19 + #EDE0DE + #C0000A + #000000 + #FFB4AA + #534341 + #000000 + + + #6750A4 + #6750A4 + #FFFFFF + #E9DDFF + #22005D + #625B71 + #FFFFFF + #E8DEF8 + #1E192B + #7E5260 + #FFFFFF + #FFD9E3 + #31101D + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FFFBFF + #1C1B1E + #FFFBFF + #1C1B1E + #E7E0EB + #49454E + #7A757F + #F4EFF4 + #313033 + #CFBCFF + #000000 + #6750A4 + #CAC4CF + #000000 + #CFBCFF + #381E72 + #4F378A + #E9DDFF + #CBC2DB + #332D41 + #4A4458 + #E8DEF8 + #EFB8C8 + #4A2532 + #633B48 + #FFD9E3 + #FFB4AB + #93000A + #690005 + #FFDAD6 + #1C1B1E + #E6E1E6 + #1C1B1E + #E6E1E6 + #49454E + #CAC4CF + #948F99 + #1C1B1E + #E6E1E6 + #6750A4 + #000000 + #CFBCFF + #49454E + #000000 + + + #14AEA7 + #006A65 + #FFFFFF + #70F7EF + #00201E + #4A6361 + #FFFFFF + #CCE8E5 + #051F1E + #48607B + #FFFFFF + #D0E4FF + #001D34 + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FAFDFB + #191C1C + #FAFDFB + #191C1C + #DAE5E3 + #3F4948 + #6F7978 + #EFF1F0 + #2D3131 + #4FDAD2 + #000000 + #006A65 + #BEC9C7 + #000000 + #4FDAD2 + #003734 + #00504C + #70F7EF + #B0CCC9 + #1B3533 + #324B49 + #CCE8E5 + #B0C9E7 + #19324A + #314962 + #D0E4FF + #FFB4AB + #93000A + #690005 + #FFDAD6 + #191C1C + #E0E3E2 + #191C1C + #E0E3E2 + #3F4948 + #BEC9C7 + #889391 + #191C1C + #E0E3E2 + #006A65 + #000000 + #4FDAD2 + #3F4948 + #000000 + + - #6750A4 - #6750A4 - #FFFFFF - #E9DDFF - #22005D - #625B71 - #FFFFFF - #E8DEF8 - #1E192B - #7E5260 - #FFFFFF - #FFD9E3 - #31101D - #BA1A1A - #FFDAD6 - #FFFFFF - #410002 - #FFFBFF - #1C1B1E - #FFFBFF - #1C1B1E - #E7E0EB - #49454E - #7A757F - #F4EFF4 - #313033 - #CFBCFF - #000000 - #6750A4 - #CAC4CF - #000000 - #CFBCFF - #381E72 - #4F378A - #E9DDFF - #CBC2DB - #332D41 - #4A4458 - #E8DEF8 - #EFB8C8 - #4A2532 - #633B48 - #FFD9E3 - #FFB4AB - #93000A - #690005 - #FFDAD6 - #1C1B1E - #E6E1E6 - #1C1B1E - #E6E1E6 - #49454E - #CAC4CF - #948F99 - #1C1B1E - #E6E1E6 - #6750A4 - #000000 - #CFBCFF - #49454E - #000000 - #93DB00 - #68AF86 - #0096AE - #000000 - #FFE1F5FE - #FF81D4FA - #FF039BE5 - #FF01579B diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index d672ba53..5b893737 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -198,93 +198,6 @@ @color/md_theme_light_4_inversePrimary - - - - - - + + + + + + + +