diff --git a/app/src/main/java/ani/dantotsu/Functions.kt b/app/src/main/java/ani/dantotsu/Functions.kt
index 5dd9dbc3..c8962104 100644
--- a/app/src/main/java/ani/dantotsu/Functions.kt
+++ b/app/src/main/java/ani/dantotsu/Functions.kt
@@ -270,6 +270,32 @@ fun Activity.setNavigationTheme() {
}
}
+fun Activity.reloadActivity() {
+ Refresh.all()
+ finish()
+ startActivity(Intent(this, this::class.java))
+ initActivity(this)
+}
+
+fun Context.restartApp(view: View) {
+ val mainIntent = Intent.makeRestartActivityTask(
+ packageManager.getLaunchIntentForPackage(this.packageName)!!.component
+ )
+ val component = ComponentName(this@restartApp.packageName, this@restartApp::class.qualifiedName!!)
+ Snackbar.make(view, R.string.restart_app, Snackbar.LENGTH_INDEFINITE).apply {
+ setAction(R.string.do_it) {
+ this.dismiss()
+ try {
+ startActivity(Intent().setComponent(component))
+ } catch (anything: Exception) {
+ startActivity(mainIntent)
+ }
+ Runtime.getRuntime().exit(0)
+ }
+ show()
+ }
+}
+
open class BottomSheetDialogFragment : BottomSheetDialogFragment() {
override fun onStart() {
super.onStart()
@@ -1272,7 +1298,7 @@ fun blurImage(imageView: ImageView, banner: String?) {
val url = PrefManager.getVal(PrefName.ImageUrl).ifEmpty { banner }
Glide.with(context as Context)
.load(GlideUrl(url))
- .diskCacheStrategy(DiskCacheStrategy.ALL).override(400)
+ .diskCacheStrategy(DiskCacheStrategy.RESOURCE).override(400)
.apply(RequestOptions.bitmapTransform(BlurTransformation(radius, sampling)))
.into(imageView)
}
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 3b69477f..2f798a22 100644
--- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt
+++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt
@@ -159,8 +159,7 @@ class AnimeWatchAdapter(
}
subscribeButton(false)
fragment.loadEpisodes(media.selected!!.sourceIndex, true)
- } ?: run {
- }
+ } ?: run { }
}
//settings
@@ -430,6 +429,22 @@ class AnimeWatchAdapter(
val sourceFound = media.anime.episodes!!.isNotEmpty()
binding.animeSourceNotFound.isGone = sourceFound
binding.faqbutton.isGone = sourceFound
+ if (!sourceFound && PrefManager.getVal(PrefName.SearchSources)) {
+ if (binding.animeSource.adapter.count > media.selected!!.sourceIndex + 1) {
+ val nextIndex = media.selected!!.sourceIndex + 1
+ binding.animeSource.setText(binding.animeSource.adapter
+ .getItem(nextIndex).toString(), false)
+ fragment.onSourceChange(nextIndex).apply {
+ binding.animeSourceTitle.text = showUserText
+ showUserTextListener = { MainScope().launch { binding.animeSourceTitle.text = it } }
+ binding.animeSourceDubbed.isChecked = selectDub
+ binding.animeSourceDubbedCont.isVisible = isDubAvailableSeparately()
+ setLanguageList(0, nextIndex)
+ }
+ subscribeButton(false)
+ fragment.loadEpisodes(nextIndex, false)
+ }
+ }
} else {
binding.animeSourceContinue.visibility = View.GONE
binding.animeSourceNotFound.visibility = View.GONE
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 8d0d1d64..259cfb89 100644
--- a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt
+++ b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt
@@ -481,7 +481,7 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
playerView.subtitleView?.alpha = when (PrefManager.getVal(PrefName.Subtitles)) {
- true -> 1f
+ true -> PrefManager.getVal(PrefName.SubAlpha)
false -> 0f
}
val fontSize = PrefManager.getVal(PrefName.FontSize).toFloat()
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 16cd3ed0..08a9bfb9 100644
--- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt
+++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt
@@ -481,6 +481,22 @@ class MangaReadAdapter(
val sourceFound = media.manga.chapters!!.isNotEmpty()
binding.animeSourceNotFound.isGone = sourceFound
binding.faqbutton.isGone = sourceFound
+ if (!sourceFound && PrefManager.getVal(PrefName.SearchSources)) {
+ if (binding.animeSource.adapter.count > media.selected!!.sourceIndex + 1) {
+ val nextIndex = media.selected!!.sourceIndex + 1
+ binding.animeSource.setText(binding.animeSource.adapter
+ .getItem(nextIndex).toString(), false)
+ fragment.onSourceChange(nextIndex).apply {
+ binding.animeSourceTitle.text = showUserText
+ showUserTextListener = { MainScope().launch { binding.animeSourceTitle.text = it } }
+ setLanguageList(0, nextIndex)
+ }
+ subscribeButton(false)
+ // invalidate if it's the last source
+ val invalidate = nextIndex == mangaReadSources.names.size - 1
+ fragment.loadChapters(nextIndex, invalidate)
+ }
+ }
} else {
binding.animeSourceContinue.visibility = View.GONE
binding.animeSourceNotFound.visibility = View.GONE
diff --git a/app/src/main/java/ani/dantotsu/others/Xpandable.kt b/app/src/main/java/ani/dantotsu/others/Xpandable.kt
index 527380ef..c4025c58 100644
--- a/app/src/main/java/ani/dantotsu/others/Xpandable.kt
+++ b/app/src/main/java/ani/dantotsu/others/Xpandable.kt
@@ -13,6 +13,7 @@ class Xpandable @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null
) : LinearLayout(context, attrs) {
var expanded: Boolean = false
+ private var listener: OnChangeListener? = null
init {
context.withStyledAttributes(attrs, R.styleable.Xpandable) {
@@ -37,7 +38,6 @@ class Xpandable @JvmOverloads constructor(
super.onAttachedToWindow()
}
-
private fun hideAll() {
children.forEach {
if (it != getChildAt(0)) {
@@ -48,8 +48,10 @@ class Xpandable @JvmOverloads constructor(
it.visibility = GONE
}, 300)
}
-
}
+ postDelayed({
+ listener?.onRetract()
+ }, 300)
}
private fun showAll() {
@@ -61,6 +63,19 @@ class Xpandable @JvmOverloads constructor(
ObjectAnimator.ofFloat(it, "alpha", 0f, 1f).setDuration(200).start()
}
}
+ postDelayed({
+ listener?.onExpand()
+ }, 300)
+ }
+
+ @Suppress("unused")
+ fun setOnChangeListener(listener: OnChangeListener) {
+ this.listener = listener
+ }
+
+ interface OnChangeListener {
+ fun onExpand()
+ fun onRetract()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt
index 0a7b7d9e..ff18527d 100644
--- a/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt
+++ b/app/src/main/java/ani/dantotsu/settings/PlayerSettingsActivity.kt
@@ -1,14 +1,17 @@
package ani.dantotsu.settings
import android.app.AlertDialog
-import android.content.Intent
+import android.content.res.Resources
+import android.graphics.Color
import android.os.Build
import android.os.Bundle
+import android.util.TypedValue
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.res.ResourcesCompat
import androidx.core.view.updateLayoutParams
import androidx.core.widget.addTextChangedListener
import ani.dantotsu.R
@@ -16,6 +19,7 @@ import ani.dantotsu.databinding.ActivityPlayerSettingsBinding
import ani.dantotsu.initActivity
import ani.dantotsu.media.Media
import ani.dantotsu.navBarHeight
+import ani.dantotsu.others.Xpandable
import ani.dantotsu.others.getSerialized
import ani.dantotsu.parsers.Subtitle
import ani.dantotsu.settings.saving.PrefManager
@@ -24,7 +28,7 @@ import ani.dantotsu.snackString
import ani.dantotsu.statusBarHeight
import ani.dantotsu.themes.ThemeManager
import ani.dantotsu.toast
-import com.google.android.material.snackbar.Snackbar
+import com.google.android.material.slider.Slider.OnChangeListener
import kotlin.math.roundToInt
@@ -35,6 +39,9 @@ class PlayerSettingsActivity : AppCompatActivity() {
var media: Media? = null
var subtitle: Subtitle? = null
+ private val Int.toSP get() = TypedValue.applyDimension(
+ TypedValue.COMPLEX_UNIT_SP, this.toFloat(), Resources.getSystem().displayMetrics
+ )
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -273,66 +280,33 @@ class PlayerSettingsActivity : AppCompatActivity() {
dialog.window?.setDimAmount(0.8f)
}
- fun restartApp() {
- Snackbar.make(
- binding.root,
- R.string.restart_app, Snackbar.LENGTH_SHORT
- ).apply {
- val mainIntent =
- Intent.makeRestartActivityTask(
- context.packageManager.getLaunchIntentForPackage(
- context.packageName
- )!!.component
- )
- setAction("Do it!") {
- context.startActivity(mainIntent)
- Runtime.getRuntime().exit(0)
- }
- show()
- }
- }
-
- fun toggleButton(button: android.widget.Button, toggle: Boolean) {
- button.isClickable = toggle
- button.alpha = when (toggle) {
- true -> 1f
- false -> 0.5f
- }
- }
-
fun toggleSubOptions(isChecked: Boolean) {
- toggleButton(binding.videoSubColorPrimary, isChecked)
- toggleButton(binding.videoSubColorSecondary, isChecked)
- toggleButton(binding.videoSubOutline, isChecked)
- toggleButton(binding.videoSubFont, isChecked)
- binding.subtitleFontSizeCard.isEnabled = isChecked
- binding.subtitleFontSizeCard.isClickable = isChecked
- binding.subtitleFontSizeCard.alpha = when (isChecked) {
- true -> 1f
- false -> 0.5f
- }
- binding.subtitleFontSize.isEnabled = isChecked
- binding.subtitleFontSize.isClickable = isChecked
- binding.subtitleFontSize.alpha = when (isChecked) {
- true -> 1f
- false -> 0.5f
- }
- ActivityPlayerSettingsBinding.bind(binding.root).subtitleFontSizeText.isEnabled =
- isChecked
- ActivityPlayerSettingsBinding.bind(binding.root).subtitleFontSizeText.isClickable =
- isChecked
- ActivityPlayerSettingsBinding.bind(binding.root).subtitleFontSizeText.alpha =
- when (isChecked) {
+ arrayOf(
+ binding.videoSubColorPrimary,
+ binding.videoSubColorSecondary,
+ binding.videoSubOutline,
+ binding.videoSubColorBackground,
+ binding.videoSubAlphaButton,
+ binding.videoSubColorWindow,
+ binding.videoSubFont,
+ binding.videoSubAlpha,
+ binding.subtitleFontSizeText,
+ binding.subtitleFontSize
+ ).forEach {
+ it.isEnabled = isChecked
+ it.isClickable = isChecked
+ it.alpha = when (isChecked) {
true -> 1f
false -> 0.5f
}
+ }
}
binding.subSwitch.isChecked = PrefManager.getVal(PrefName.Subtitles)
binding.subSwitch.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.Subtitles, isChecked)
toggleSubOptions(isChecked)
- restartApp()
}
+ toggleSubOptions(binding.subSwitch.isChecked)
val colorsPrimary =
arrayOf(
"Black",
@@ -356,6 +330,7 @@ class PlayerSettingsActivity : AppCompatActivity() {
) { dialog, count ->
PrefManager.setVal(PrefName.PrimaryColor, count)
dialog.dismiss()
+ updateSubPreview()
}.show()
dialog.window?.setDimAmount(0.8f)
}
@@ -382,6 +357,7 @@ class PlayerSettingsActivity : AppCompatActivity() {
) { dialog, count ->
PrefManager.setVal(PrefName.SecondaryColor, count)
dialog.dismiss()
+ updateSubPreview()
}.show()
dialog.window?.setDimAmount(0.8f)
}
@@ -395,6 +371,7 @@ class PlayerSettingsActivity : AppCompatActivity() {
) { dialog, count ->
PrefManager.setVal(PrefName.Outline, count)
dialog.dismiss()
+ updateSubPreview()
}.show()
dialog.window?.setDimAmount(0.8f)
}
@@ -421,6 +398,7 @@ class PlayerSettingsActivity : AppCompatActivity() {
) { dialog, count ->
PrefManager.setVal(PrefName.SubBackground, count)
dialog.dismiss()
+ updateSubPreview()
}.show()
dialog.window?.setDimAmount(0.8f)
}
@@ -448,9 +426,19 @@ class PlayerSettingsActivity : AppCompatActivity() {
) { dialog, count ->
PrefManager.setVal(PrefName.SubWindow, count)
dialog.dismiss()
+ updateSubPreview()
}.show()
dialog.window?.setDimAmount(0.8f)
}
+
+ binding.videoSubAlpha.value = PrefManager.getVal(PrefName.SubAlpha)
+ binding.videoSubAlpha.addOnChangeListener(OnChangeListener { _, value, fromUser ->
+ if (fromUser) {
+ PrefManager.setVal(PrefName.SubAlpha, value)
+ updateSubPreview()
+ }
+ })
+
val fonts = arrayOf(
"Poppins Semi Bold",
"Poppins Bold",
@@ -469,6 +457,7 @@ class PlayerSettingsActivity : AppCompatActivity() {
) { dialog, count ->
PrefManager.setVal(PrefName.Font, count)
dialog.dismiss()
+ updateSubPreview()
}.show()
dialog.window?.setDimAmount(0.8f)
}
@@ -483,8 +472,79 @@ class PlayerSettingsActivity : AppCompatActivity() {
val size = binding.subtitleFontSize.text.toString().toIntOrNull()
if (size != null) {
PrefManager.setVal(PrefName.FontSize, size)
+ updateSubPreview()
}
}
- toggleSubOptions(PrefManager.getVal(PrefName.Subtitles))
+ binding.subtitleTest.setOnChangeListener(object: Xpandable.OnChangeListener {
+ override fun onExpand() {
+ updateSubPreview()
+ }
+ override fun onRetract() {}
+ })
+ updateSubPreview()
+ }
+
+ private fun updateSubPreview() {
+ binding.subtitleTestWindow.run {
+ alpha = PrefManager.getVal(PrefName.SubAlpha)
+ setBackgroundColor(when (PrefManager.getVal(PrefName.SubWindow)) {
+ 0 -> Color.TRANSPARENT
+ 1 -> Color.BLACK
+ 2 -> Color.DKGRAY
+ 3 -> Color.GRAY
+ 4 -> Color.LTGRAY
+ 5 -> Color.WHITE
+ 6 -> Color.RED
+ 7 -> Color.YELLOW
+ 8 -> Color.GREEN
+ 9 -> Color.CYAN
+ 10 -> Color.BLUE
+ 11 -> Color.MAGENTA
+ else -> Color.TRANSPARENT
+ })
+ }
+ binding.subtitleTestText.run {
+ textSize = PrefManager.getVal(PrefName.FontSize).toSP
+ typeface = when (PrefManager.getVal(PrefName.Font)) {
+ 0 -> ResourcesCompat.getFont(this.context, R.font.poppins_semi_bold)
+ 1 -> ResourcesCompat.getFont(this.context, R.font.poppins_bold)
+ 2 -> ResourcesCompat.getFont(this.context, R.font.poppins)
+ 3 -> ResourcesCompat.getFont(this.context, R.font.poppins_thin)
+ 4 -> ResourcesCompat.getFont(this.context, R.font.century_gothic_regular)
+ 5 -> ResourcesCompat.getFont(this.context, R.font.levenim_mt_bold)
+ 6 -> ResourcesCompat.getFont(this.context, R.font.blocky)
+ else -> ResourcesCompat.getFont(this.context, R.font.poppins_semi_bold)
+ }
+ setTextColor(when (PrefManager.getVal(PrefName.PrimaryColor)) {
+ 0 -> Color.BLACK
+ 1 -> Color.DKGRAY
+ 2 -> Color.GRAY
+ 3 -> Color.LTGRAY
+ 4 -> Color.WHITE
+ 5 -> Color.RED
+ 6 -> Color.YELLOW
+ 7 -> Color.GREEN
+ 8 -> Color.CYAN
+ 9 -> Color.BLUE
+ 10 -> Color.MAGENTA
+ 11 -> Color.TRANSPARENT
+ else -> Color.WHITE
+ })
+ setBackgroundColor(when (PrefManager.getVal(PrefName.SubBackground)) {
+ 0 -> Color.TRANSPARENT
+ 1 -> Color.BLACK
+ 2 -> Color.DKGRAY
+ 3 -> Color.GRAY
+ 4 -> Color.LTGRAY
+ 5 -> Color.WHITE
+ 6 -> Color.RED
+ 7 -> Color.YELLOW
+ 8 -> Color.GREEN
+ 9 -> Color.CYAN
+ 10 -> Color.BLUE
+ 11 -> Color.MAGENTA
+ else -> Color.TRANSPARENT
+ })
+ }
}
}
diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt
index 12b0701d..a5b9a984 100644
--- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt
+++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt
@@ -1,6 +1,5 @@
package ani.dantotsu.settings
-import android.annotation.SuppressLint
import android.app.AlarmManager
import android.app.AlertDialog
import android.content.Context
@@ -33,7 +32,6 @@ import androidx.media3.common.util.UnstableApi
import androidx.media3.exoplayer.offline.DownloadService
import ani.dantotsu.BuildConfig
import ani.dantotsu.R
-import ani.dantotsu.Refresh
import ani.dantotsu.connections.anilist.Anilist
import ani.dantotsu.connections.anilist.api.NotificationType
import ani.dantotsu.connections.discord.Discord
@@ -66,6 +64,8 @@ import ani.dantotsu.openSettings
import ani.dantotsu.others.AppUpdater
import ani.dantotsu.others.CustomBottomDialog
import ani.dantotsu.pop
+import ani.dantotsu.reloadActivity
+import ani.dantotsu.restartApp
import ani.dantotsu.savePrefsToDownloads
import ani.dantotsu.setSafeOnClickListener
import ani.dantotsu.settings.saving.PrefManager
@@ -79,7 +79,6 @@ import ani.dantotsu.statusBarHeight
import ani.dantotsu.themes.ThemeManager
import ani.dantotsu.toast
import ani.dantotsu.util.Logger
-import com.google.android.material.snackbar.Snackbar
import com.google.android.material.textfield.TextInputEditText
import eltos.simpledialogfragment.SimpleDialog
import eltos.simpledialogfragment.SimpleDialog.OnDialogResultListener.BUTTON_POSITIVE
@@ -144,7 +143,7 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
return@passwordAlertDialog
}
if (PreferencePackager.unpack(decryptedJson))
- restartApp()
+ restartApp(binding.root)
} else {
toast(getString(R.string.password_cannot_be_empty))
}
@@ -152,7 +151,7 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
} else if (name.endsWith(".ani")) {
val decryptedJson = jsonString.toString(Charsets.UTF_8)
if (PreferencePackager.unpack(decryptedJson))
- restartApp()
+ restartApp(binding.root)
} else {
toast(getString(R.string.unknown_file_type))
}
@@ -316,7 +315,7 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
settingsUseMaterialYou.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.UseMaterialYou, isChecked)
if (isChecked) settingsUseCustomTheme.isChecked = false
- restartApp()
+ restartApp(binding.root)
}
settingsUseCustomTheme.isChecked =
@@ -327,20 +326,20 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
settingsUseMaterialYou.isChecked = false
}
- restartApp()
+ restartApp(binding.root)
}
settingsUseSourceTheme.isChecked =
PrefManager.getVal(PrefName.UseSourceTheme)
settingsUseSourceTheme.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.UseSourceTheme, isChecked)
- restartApp()
+ restartApp(binding.root)
}
settingsUseOLED.isChecked = PrefManager.getVal(PrefName.UseOLED)
settingsUseOLED.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.UseOLED, isChecked)
- restartApp()
+ restartApp(binding.root)
}
val themeString: String = PrefManager.getVal(PrefName.Theme)
@@ -359,17 +358,15 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
PrefManager.setVal(PrefName.Theme, ThemeManager.Companion.Theme.entries[i].theme)
//ActivityHelper.shouldRefreshMainActivity = true
themeSwitcher.clearFocus()
- restartApp()
-
+ restartApp(binding.root)
}
-
customTheme.setOnClickListener {
val originalColor: Int = PrefManager.getVal(PrefName.CustomThemeInt)
class CustomColorDialog : SimpleColorDialog() { //idk where to put it
override fun onPositiveButtonClick() {
- restartApp()
+ restartApp(binding.root)
super.onPositiveButtonClick()
}
}
@@ -398,10 +395,7 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
previous = current
current.alpha = 1f
PrefManager.setVal(PrefName.DarkMode, mode)
- Refresh.all()
- finish()
- startActivity(Intent(this@SettingsActivity, SettingsActivity::class.java))
- initActivity(this@SettingsActivity)
+ reloadActivity()
}
settingsUiAuto.setOnClickListener {
@@ -688,7 +682,7 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
settingsExtensionDns.setOnItemClickListener { _, _, i, _ ->
PrefManager.setVal(PrefName.DohProvider, i)
settingsExtensionDns.clearFocus()
- restartApp()
+ restartApp(binding.root)
}
settingsDownloadInSd.isChecked = PrefManager.getVal(PrefName.SdDl)
@@ -710,6 +704,11 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
PrefManager.setVal(PrefName.ContinueMedia, isChecked)
}
+ settingsSearchSources.isChecked = PrefManager.getVal(PrefName.SearchSources)
+ settingsSearchSources.setOnCheckedChangeListener { _, isChecked ->
+ PrefManager.setVal(PrefName.SearchSources, isChecked)
+ }
+
settingsRecentlyListOnly.isChecked = PrefManager.getVal(PrefName.RecentlyListOnly)
settingsRecentlyListOnly.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.RecentlyListOnly, isChecked)
@@ -968,7 +967,7 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
settingsLogToFile.isChecked = PrefManager.getVal(PrefName.LogToFile)
settingsLogToFile.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.LogToFile, isChecked)
- restartApp()
+ restartApp(binding.root)
}
settingsShareLog.setOnClickListener {
@@ -1050,25 +1049,6 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene
return true
}
- private fun restartApp() {
- Snackbar.make(
- binding.root,
- R.string.restart_app, Snackbar.LENGTH_SHORT
- ).apply {
- val mainIntent =
- Intent.makeRestartActivityTask(
- context.packageManager.getLaunchIntentForPackage(
- context.packageName
- )!!.component
- )
- setAction(getString(R.string.do_it)) {
- context.startActivity(mainIntent)
- Runtime.getRuntime().exit(0)
- }
- show()
- }
- }
-
private fun passwordAlertDialog(isExporting: Boolean, callback: (CharArray?) -> Unit) {
val password = CharArray(16).apply { fill('0') }
diff --git a/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt
index 3dedb3c2..f2a96778 100644
--- a/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt
+++ b/app/src/main/java/ani/dantotsu/settings/UserInterfaceSettingsActivity.kt
@@ -10,6 +10,7 @@ import ani.dantotsu.R
import ani.dantotsu.databinding.ActivityUserInterfaceSettingsBinding
import ani.dantotsu.initActivity
import ani.dantotsu.navBarHeight
+import ani.dantotsu.restartApp
import ani.dantotsu.settings.saving.PrefManager
import ani.dantotsu.settings.saving.PrefName
import ani.dantotsu.statusBarHeight
@@ -49,7 +50,7 @@ class UserInterfaceSettingsActivity : AppCompatActivity() {
}
setPositiveButton("Done") { _, _ ->
PrefManager.setVal(PrefName.HomeLayoutShow, set)
- restartApp()
+ restartApp(binding.root)
}
}.show()
dialog.window?.setDimAmount(0.8f)
@@ -58,24 +59,24 @@ class UserInterfaceSettingsActivity : AppCompatActivity() {
binding.uiSettingsSmallView.isChecked = PrefManager.getVal(PrefName.SmallView)
binding.uiSettingsSmallView.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.SmallView, isChecked)
- restartApp()
+ restartApp(binding.root)
}
binding.uiSettingsImmersive.isChecked = PrefManager.getVal(PrefName.ImmersiveMode)
binding.uiSettingsImmersive.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.ImmersiveMode, isChecked)
- restartApp()
+ restartApp(binding.root)
}
binding.uiSettingsBannerAnimation.isChecked = PrefManager.getVal(PrefName.BannerAnimations)
binding.uiSettingsBannerAnimation.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.BannerAnimations, isChecked)
- restartApp()
+ restartApp(binding.root)
}
binding.uiSettingsLayoutAnimation.isChecked = PrefManager.getVal(PrefName.LayoutAnimations)
binding.uiSettingsLayoutAnimation.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.LayoutAnimations, isChecked)
- restartApp()
+ restartApp(binding.root)
}
val map = mapOf(
@@ -94,41 +95,22 @@ class UserInterfaceSettingsActivity : AppCompatActivity() {
mapReverse[PrefManager.getVal(PrefName.AnimationSpeed)] ?: 1f
binding.uiSettingsAnimationSpeed.addOnChangeListener { _, value, _ ->
PrefManager.setVal(PrefName.AnimationSpeed, map[value] ?: 1f)
- restartApp()
+ restartApp(binding.root)
}
binding.uiSettingsBlurBanners.isChecked = PrefManager.getVal(PrefName.BlurBanners)
binding.uiSettingsBlurBanners.setOnCheckedChangeListener { _, isChecked ->
PrefManager.setVal(PrefName.BlurBanners, isChecked)
- restartApp()
+ restartApp(binding.root)
}
binding.uiSettingsBlurRadius.value = (PrefManager.getVal(PrefName.BlurRadius) as Float)
binding.uiSettingsBlurRadius.addOnChangeListener { _, value, _ ->
PrefManager.setVal(PrefName.BlurRadius, value)
- restartApp()
+ restartApp(binding.root)
}
binding.uiSettingsBlurSampling.value = (PrefManager.getVal(PrefName.BlurSampling) as Float)
binding.uiSettingsBlurSampling.addOnChangeListener { _, value, _ ->
PrefManager.setVal(PrefName.BlurSampling, value)
- restartApp()
- }
- }
-
- private fun restartApp() {
- Snackbar.make(
- binding.root,
- R.string.restart_app, Snackbar.LENGTH_SHORT
- ).apply {
- val mainIntent =
- Intent.makeRestartActivityTask(
- context.packageManager.getLaunchIntentForPackage(
- context.packageName
- )!!.component
- )
- setAction("Do it!") {
- context.startActivity(mainIntent)
- Runtime.getRuntime().exit(0)
- }
- show()
+ restartApp(binding.root)
}
}
}
diff --git a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt
index 5149c031..28fb7a9a 100644
--- a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt
+++ b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt
@@ -15,6 +15,7 @@ enum class PrefName(val data: Pref) { //TODO: Split this into multiple files
NSFWExtension(Pref(Location.General, Boolean::class, true)),
SdDl(Pref(Location.General, Boolean::class, false)),
ContinueMedia(Pref(Location.General, Boolean::class, true)),
+ SearchSources(Pref(Location.General, Boolean::class, true)),
RecentlyListOnly(Pref(Location.General, Boolean::class, false)),
SettingsPreferDub(Pref(Location.General, Boolean::class, false)),
SubscriptionCheckingNotifications(Pref(Location.General, Boolean::class, true)),
@@ -86,6 +87,7 @@ enum class PrefName(val data: Pref) { //TODO: Split this into multiple files
Outline(Pref(Location.Player, Int::class, 0)),
SubBackground(Pref(Location.Player, Int::class, 0)),
SubWindow(Pref(Location.Player, Int::class, 0)),
+ SubAlpha(Pref(Location.Player, Float::class, 1f)),
Font(Pref(Location.Player, Int::class, 0)),
FontSize(Pref(Location.Player, Int::class, 20)),
Locale(Pref(Location.Player, Int::class, 2)),
diff --git a/app/src/main/res/drawable/ic_round_search_sources_24.xml b/app/src/main/res/drawable/ic_round_search_sources_24.xml
new file mode 100644
index 00000000..48e31b13
--- /dev/null
+++ b/app/src/main/res/drawable/ic_round_search_sources_24.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_player_settings.xml b/app/src/main/res/layout/activity_player_settings.xml
index 6ae585a4..729a4788 100644
--- a/app/src/main/res/layout/activity_player_settings.xml
+++ b/app/src/main/res/layout/activity_player_settings.xml
@@ -166,6 +166,44 @@
app:drawableEndCompat="@drawable/ic_round_arrow_drop_down_24"
tools:ignore="TextContrastCheck" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Settings
Extensions
Player Settings
- Only show My Shows in Recently Updated
+ Only show my content in \"Recently Updated\"
Download Manager
Download in SD card
No SD card was Found.
@@ -243,6 +243,8 @@
Subtitle Window Color
"The subtitle window is the part left and right from them. (where the background isn\'t)"
Note: Changing above settings only affects Soft-Subtitles!
+ Subtitle Transparency
+ Example Subtitle
Subtitle Font
Subtitle Size
@@ -344,14 +346,7 @@
Reload
Share
Skip
- Show Skip Time Stamp Button
- Always Load Time Stamps
- Auto Hide Time Stampsstring
- Hide Skip Button
- Time Stamps
Other
- Auto Skip OP / ED
- Requires Time Stamps to be Enabled
TOTAL REPEATS
Custom Lists
Want to support Dantotsu\'s Maintainer?\nConsider Donating
@@ -369,7 +364,8 @@
Planned Anime
Planned Manga
Open image by Long Clicking
- Always continue Shows
+ Always continue previous items
+ Search next available source
Useful if you are getting Handshake Fails
Use Proxy for Timestamps
Always check for App Updates
@@ -428,6 +424,13 @@
Seems like that wasn\'t found on Anilist.
Disabled Auto Skipping OP & ED
Auto Skipping OP & ED
+ Show Skip Time Stamp Button
+ Always Load Time Stamps
+ Auto Hide Time Stampsstring
+ Time Stamps
+ Auto Skip OP / ED
+ Requires Time Stamps to be Enabled
+ Make the skip time stamp button disappear after 5 seconds
Copied to Clipboard
This is the 1st Episode!
You can long click List Editor button to Reset Auto Update