Added a option to toggle fast forward / Added NSFW extension toggle to extension settings (#48)
* Remove 18+ extension if Anilist 18+ is off ~requested by @arif * Translation filter for extension(WIP) * Added a option to toggle fast forward suggested by arif * Added NFSW toggle to extension settings now it will be more easy rather then going to anilist to toggle it ~suggested by arif * Forgot to undo this * changed icons in extension setting * get rid of companion object (todo) * get rid of companion object (todo) --------- Co-authored-by: rebelonion <87634197+rebelonion@users.noreply.github.com>
This commit is contained in:
parent
5543d29317
commit
736b06bdbe
23 changed files with 192 additions and 55 deletions
|
@ -823,7 +823,9 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
|||
|
||||
//FastRewind (Left Panel)
|
||||
val fastRewindDetector = GestureDetector(this, object : GesturesListener() {
|
||||
override fun onLongClick(event: MotionEvent) = fastForward()
|
||||
override fun onLongClick(event: MotionEvent) {
|
||||
if (settings.fastforward) fastForward()
|
||||
}
|
||||
|
||||
override fun onDoubleClick(event: MotionEvent) {
|
||||
doubleTap(false, event)
|
||||
|
@ -853,8 +855,9 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
|||
|
||||
//FastForward (Right Panel)
|
||||
val fastForwardDetector = GestureDetector(this, object : GesturesListener() {
|
||||
override fun onLongClick(event: MotionEvent) = fastForward()
|
||||
|
||||
override fun onLongClick(event: MotionEvent) {
|
||||
if (settings.fastforward) fastForward()
|
||||
}
|
||||
override fun onDoubleClick(event: MotionEvent) {
|
||||
doubleTap(true, event)
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ class DevelopersDialogFragment : BottomSheetDialogFragment() {
|
|||
private val developers = arrayOf(
|
||||
Developer("rebelonion","https://avatars.githubusercontent.com/u/87634197?v=4","Owner and Maintainer","https://github.com/rebelonion"),
|
||||
Developer("Wai What", "https://avatars.githubusercontent.com/u/149729762?v=4", "Icon Designer", "https://github.com/WaiWhat"),
|
||||
Developer("Aayush262", "https://avatars.githubusercontent.com/u/99584765?v=4", "Contributor", "https://github.com/aayush2622"),
|
||||
)
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
|
|
|
@ -6,12 +6,14 @@ import android.os.Build.VERSION.*
|
|||
import android.os.Bundle
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.AutoCompleteTextView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.SearchView
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
|
@ -21,6 +23,9 @@ import ani.dantotsu.databinding.ActivityExtensionsBinding
|
|||
import ani.dantotsu.themes.ThemeManager
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class ExtensionsActivity : AppCompatActivity() {
|
||||
private val restartMainActivity = object : OnBackPressedCallback(false) {
|
||||
|
@ -86,6 +91,12 @@ class ExtensionsActivity : AppCompatActivity() {
|
|||
initActivity(this)
|
||||
|
||||
|
||||
binding.languageselect.setOnClickListener {
|
||||
val popup = PopupMenu(this, it)
|
||||
|
||||
popup.inflate(R.menu.launguage_selector_menu)
|
||||
popup.show()
|
||||
}
|
||||
|
||||
binding.settingsContainer.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||
topMargin = statusBarHeight
|
||||
|
|
|
@ -222,15 +222,9 @@ class InstalledAnimeExtensionsFragment : Fragment() {
|
|||
holder.extensionIconImageView.setImageDrawable(extension.icon)
|
||||
}
|
||||
if (extension.hasUpdate) {
|
||||
holder.closeTextView.text = "Update"
|
||||
holder.closeTextView.setTextColor(
|
||||
ContextCompat.getColor(
|
||||
holder.itemView.context,
|
||||
R.color.warning
|
||||
)
|
||||
)
|
||||
holder.closeTextView.setImageResource(R.drawable.ic_round_sync_24)
|
||||
} else {
|
||||
holder.closeTextView.text = "Uninstall"
|
||||
holder.closeTextView.setImageResource(R.drawable.ic_round_delete_24)
|
||||
}
|
||||
holder.closeTextView.setOnClickListener {
|
||||
onUninstallClicked(extension)
|
||||
|
@ -245,7 +239,7 @@ class InstalledAnimeExtensionsFragment : Fragment() {
|
|||
val extensionVersionTextView: TextView = view.findViewById(R.id.extensionVersionTextView)
|
||||
val settingsImageView: ImageView = view.findViewById(R.id.settingsImageView)
|
||||
val extensionIconImageView: ImageView = view.findViewById(R.id.extensionIconImageView)
|
||||
val closeTextView: TextView = view.findViewById(R.id.closeTextView)
|
||||
val closeTextView: ImageView = view.findViewById(R.id.closeTextView)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -215,15 +215,9 @@ class InstalledMangaExtensionsFragment : Fragment() {
|
|||
holder.extensionIconImageView.setImageDrawable(extension.icon)
|
||||
}
|
||||
if (extension.hasUpdate) {
|
||||
holder.closeTextView.text = "Update"
|
||||
holder.closeTextView.setTextColor(
|
||||
ContextCompat.getColor(
|
||||
holder.itemView.context,
|
||||
R.color.warning
|
||||
)
|
||||
)
|
||||
holder.closeTextView.setImageResource(R.drawable.ic_round_sync_24)
|
||||
} else {
|
||||
holder.closeTextView.text = "Uninstall"
|
||||
holder.closeTextView.setImageResource(R.drawable.ic_round_delete_24)
|
||||
}
|
||||
holder.closeTextView.setOnClickListener {
|
||||
onUninstallClicked(extension)
|
||||
|
@ -238,7 +232,7 @@ class InstalledMangaExtensionsFragment : Fragment() {
|
|||
val extensionVersionTextView: TextView = view.findViewById(R.id.extensionVersionTextView)
|
||||
val settingsImageView: ImageView = view.findViewById(R.id.settingsImageView)
|
||||
val extensionIconImageView: ImageView = view.findViewById(R.id.extensionIconImageView)
|
||||
val closeTextView: TextView = view.findViewById(R.id.closeTextView)
|
||||
val closeTextView: ImageView = view.findViewById(R.id.closeTextView)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -40,6 +40,7 @@ data class PlayerSettings(
|
|||
var focusPause: Boolean = true,
|
||||
var gestures: Boolean = true,
|
||||
var doubleTap: Boolean = true,
|
||||
var fastforward: Boolean = true,
|
||||
var seekTime: Int = 10,
|
||||
var skipTime: Int = 85,
|
||||
|
||||
|
|
|
@ -183,7 +183,11 @@ class PlayerSettingsActivity : AppCompatActivity() {
|
|||
settings.doubleTap = isChecked
|
||||
saveData(player, settings)
|
||||
}
|
||||
|
||||
binding.playerSettingsFastForward.isChecked = settings.fastforward
|
||||
binding.playerSettingsFastForward.setOnCheckedChangeListener { _, isChecked ->
|
||||
settings.fastforward = isChecked
|
||||
saveData(player, settings)
|
||||
}
|
||||
binding.playerSettingsSeekTime.value = settings.seekTime.toFloat()
|
||||
binding.playerSettingsSeekTime.addOnChangeListener { _, value, _ ->
|
||||
settings.seekTime = value.toInt()
|
||||
|
|
|
@ -50,6 +50,11 @@ class SettingsActivity : AppCompatActivity() {
|
|||
private val restartMainActivity = object : OnBackPressedCallback(false) {
|
||||
override fun handleOnBackPressed() = startMainActivity(this@SettingsActivity)
|
||||
}
|
||||
|
||||
companion object {
|
||||
@Volatile
|
||||
var isNsfwEnabled: Boolean = loadData("NFSWExtension") ?: false
|
||||
}
|
||||
lateinit var binding: ActivitySettingsBinding
|
||||
private val extensionInstaller = Injekt.get<BasePreferences>().extensionInstaller()
|
||||
private val networkPreferences = Injekt.get<NetworkPreferences>()
|
||||
|
@ -167,6 +172,12 @@ OS Version: $CODENAME $RELEASE ($SDK_INT)
|
|||
binding.skipExtensionIcons.setOnCheckedChangeListener { _, isChecked ->
|
||||
saveData("skip_extension_icons", isChecked)
|
||||
}
|
||||
binding.NSFWExtension.isChecked = loadData("NFSWExtension") ?: false
|
||||
binding.NSFWExtension.setOnCheckedChangeListener { _, isChecked ->
|
||||
isNsfwEnabled = isChecked
|
||||
saveData("NFSWExtension", isChecked)
|
||||
|
||||
}
|
||||
|
||||
binding.userAgent.setText(networkPreferences.defaultUserAgent().get())
|
||||
binding.userAgent.setOnEditorActionListener { _, _, _ ->
|
||||
|
|
|
@ -15,6 +15,7 @@ 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 com.bumptech.glide.Glide
|
||||
|
@ -82,16 +83,20 @@ class AnimeExtensionPagingSource(
|
|||
} else {
|
||||
availableExtensions.filter { it.name.contains(query, ignoreCase = true) }
|
||||
}
|
||||
|
||||
val filternfsw = if(SettingsActivity.isNsfwEnabled) {//TODO
|
||||
filteredExtensions
|
||||
} else {
|
||||
filteredExtensions.filterNot { it.isNsfw }
|
||||
}
|
||||
return try {
|
||||
val sublist = filteredExtensions.subList(
|
||||
val sublist = filternfsw.subList(
|
||||
fromIndex = position,
|
||||
toIndex = (position + params.loadSize).coerceAtMost(filteredExtensions.size)
|
||||
toIndex = (position + params.loadSize).coerceAtMost(filternfsw.size)
|
||||
)
|
||||
LoadResult.Page(
|
||||
data = sublist,
|
||||
prevKey = if (position == 0) null else position - params.loadSize,
|
||||
nextKey = if (position + params.loadSize >= filteredExtensions.size) null else position + params.loadSize
|
||||
nextKey = if (position + params.loadSize >= filternfsw.size) null else position + params.loadSize
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
LoadResult.Error(e)
|
||||
|
|
|
@ -16,6 +16,7 @@ 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 com.bumptech.glide.Glide
|
||||
|
@ -86,16 +87,20 @@ class MangaExtensionPagingSource(
|
|||
} else {
|
||||
availableExtensions.filter { it.name.contains(query, ignoreCase = true) }
|
||||
}
|
||||
|
||||
val filternfsw = if(SettingsActivity.isNsfwEnabled) {//TODO
|
||||
filteredExtensions
|
||||
} else {
|
||||
filteredExtensions.filterNot { it.isNsfw }
|
||||
}
|
||||
return try {
|
||||
val sublist = filteredExtensions.subList(
|
||||
val sublist = filternfsw.subList(
|
||||
fromIndex = position,
|
||||
toIndex = (position + params.loadSize).coerceAtMost(filteredExtensions.size)
|
||||
toIndex = (position + params.loadSize).coerceAtMost(filternfsw.size)
|
||||
)
|
||||
LoadResult.Page(
|
||||
data = sublist,
|
||||
prevKey = if (position == 0) null else position - params.loadSize,
|
||||
nextKey = if (position + params.loadSize >= filteredExtensions.size) null else position + params.loadSize
|
||||
nextKey = if (position + params.loadSize >= filternfsw.size) null else position + params.loadSize
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
LoadResult.Error(e)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue