mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
added settings to disable HD, SUB, DUB & Title. Now stop complaining
This commit is contained in:
parent
a114c8658e
commit
1499b2be40
9 changed files with 180 additions and 71 deletions
|
@ -36,7 +36,7 @@ android {
|
||||||
targetSdkVersion 30
|
targetSdkVersion 30
|
||||||
|
|
||||||
versionCode 47
|
versionCode 47
|
||||||
versionName "2.9.24"
|
versionName "2.9.25"
|
||||||
|
|
||||||
resValue "string", "app_version",
|
resValue "string", "app_version",
|
||||||
"${defaultConfig.versionName}${versionNameSuffix ?: ""}"
|
"${defaultConfig.versionName}${versionNameSuffix ?: ""}"
|
||||||
|
|
|
@ -44,6 +44,7 @@ import com.lagradost.cloudstream3.syncproviders.OAuth2API.Companion.appString
|
||||||
import com.lagradost.cloudstream3.ui.APIRepository
|
import com.lagradost.cloudstream3.ui.APIRepository
|
||||||
import com.lagradost.cloudstream3.ui.download.DOWNLOAD_NAVIGATE_TO
|
import com.lagradost.cloudstream3.ui.download.DOWNLOAD_NAVIGATE_TO
|
||||||
import com.lagradost.cloudstream3.ui.result.ResultFragment
|
import com.lagradost.cloudstream3.ui.result.ResultFragment
|
||||||
|
import com.lagradost.cloudstream3.ui.search.SearchResultBuilder
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isEmulatorSettings
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isEmulatorSettings
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
||||||
import com.lagradost.cloudstream3.utils.AppUtils.isCastApiAvailable
|
import com.lagradost.cloudstream3.utils.AppUtils.isCastApiAvailable
|
||||||
|
@ -109,7 +110,8 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
||||||
super.onConfigurationChanged(newConfig)
|
super.onConfigurationChanged(newConfig)
|
||||||
updateLocale() // android fucks me by chaining lang when rotating the phone
|
updateLocale() // android fucks me by chaining lang when rotating the phone
|
||||||
|
|
||||||
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
val navHostFragment =
|
||||||
|
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
||||||
navHostFragment.navController.currentDestination?.let { updateNavBar(it) }
|
navHostFragment.navController.currentDestination?.let { updateNavBar(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -349,6 +351,8 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
||||||
api.init()
|
api.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SearchResultBuilder.updateCache(this)
|
||||||
|
|
||||||
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
||||||
val downloadFromGithub = try {
|
val downloadFromGithub = try {
|
||||||
settingsManager.getBoolean(getString(R.string.killswitch_key), true)
|
settingsManager.getBoolean(getString(R.string.killswitch_key), true)
|
||||||
|
@ -365,57 +369,68 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
fun addNginxToJson(data: java.util.HashMap<String, ProvidersInfoJson>): java.util.HashMap<String, ProvidersInfoJson>? {
|
|
||||||
try {
|
|
||||||
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
|
||||||
val nginxUrl =
|
|
||||||
settingsManager.getString(getString(R.string.nginx_url_key), "nginx_url_key").toString()
|
|
||||||
val nginxCredentials =
|
|
||||||
settingsManager.getString(getString(R.string.nginx_credentials), "nginx_credentials")
|
|
||||||
.toString()
|
|
||||||
val StoredNginxProvider = NginxProvider()
|
|
||||||
if (nginxUrl == "nginx_url_key" || nginxUrl == "") { // if key is default value, or empty:
|
|
||||||
data[StoredNginxProvider.javaClass.simpleName] = ProvidersInfoJson(
|
|
||||||
url = nginxUrl,
|
|
||||||
name = StoredNginxProvider.name,
|
|
||||||
status = PROVIDER_STATUS_DOWN, // the provider will not be display
|
|
||||||
credentials = nginxCredentials
|
|
||||||
)
|
|
||||||
} else { // valid url
|
|
||||||
data[StoredNginxProvider.javaClass.simpleName] = ProvidersInfoJson(
|
|
||||||
url = nginxUrl,
|
|
||||||
name = StoredNginxProvider.name,
|
|
||||||
status = PROVIDER_STATUS_OK,
|
|
||||||
credentials = nginxCredentials
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return data
|
fun addNginxToJson(data: java.util.HashMap<String, ProvidersInfoJson>): java.util.HashMap<String, ProvidersInfoJson>? {
|
||||||
} catch (e: Exception) {
|
try {
|
||||||
logError(e)
|
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
||||||
return data
|
val nginxUrl =
|
||||||
}
|
settingsManager.getString(getString(R.string.nginx_url_key), "nginx_url_key")
|
||||||
}
|
.toString()
|
||||||
fun createNginxJson() : ProvidersInfoJson? { //java.util.HashMap<String, ProvidersInfoJson>
|
val nginxCredentials =
|
||||||
return try {
|
settingsManager.getString(
|
||||||
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
getString(R.string.nginx_credentials),
|
||||||
val nginxUrl = settingsManager.getString(getString(R.string.nginx_url_key), "nginx_url_key").toString()
|
"nginx_credentials"
|
||||||
val nginxCredentials = settingsManager.getString(getString(R.string.nginx_credentials), "nginx_credentials").toString()
|
)
|
||||||
if (nginxUrl == "nginx_url_key" || nginxUrl == "") { // if key is default value or empty:
|
.toString()
|
||||||
null // don't overwrite anything
|
val StoredNginxProvider = NginxProvider()
|
||||||
} else {
|
if (nginxUrl == "nginx_url_key" || nginxUrl == "") { // if key is default value, or empty:
|
||||||
ProvidersInfoJson(
|
data[StoredNginxProvider.javaClass.simpleName] = ProvidersInfoJson(
|
||||||
url = nginxUrl,
|
url = nginxUrl,
|
||||||
name = NginxProvider().name,
|
name = StoredNginxProvider.name,
|
||||||
status = PROVIDER_STATUS_OK,
|
status = PROVIDER_STATUS_DOWN, // the provider will not be display
|
||||||
credentials = nginxCredentials
|
credentials = nginxCredentials
|
||||||
)
|
)
|
||||||
|
} else { // valid url
|
||||||
|
data[StoredNginxProvider.javaClass.simpleName] = ProvidersInfoJson(
|
||||||
|
url = nginxUrl,
|
||||||
|
name = StoredNginxProvider.name,
|
||||||
|
status = PROVIDER_STATUS_OK,
|
||||||
|
credentials = nginxCredentials
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return data
|
||||||
|
} catch (e: Exception) {
|
||||||
|
logError(e)
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun createNginxJson(): ProvidersInfoJson? { //java.util.HashMap<String, ProvidersInfoJson>
|
||||||
|
return try {
|
||||||
|
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
||||||
|
val nginxUrl =
|
||||||
|
settingsManager.getString(getString(R.string.nginx_url_key), "nginx_url_key")
|
||||||
|
.toString()
|
||||||
|
val nginxCredentials = settingsManager.getString(
|
||||||
|
getString(R.string.nginx_credentials),
|
||||||
|
"nginx_credentials"
|
||||||
|
).toString()
|
||||||
|
if (nginxUrl == "nginx_url_key" || nginxUrl == "") { // if key is default value or empty:
|
||||||
|
null // don't overwrite anything
|
||||||
|
} else {
|
||||||
|
ProvidersInfoJson(
|
||||||
|
url = nginxUrl,
|
||||||
|
name = NginxProvider().name,
|
||||||
|
status = PROVIDER_STATUS_OK,
|
||||||
|
credentials = nginxCredentials
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
logError(e)
|
||||||
|
null
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
|
||||||
logError(e)
|
|
||||||
null
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// this pulls the latest data so ppl don't have to update to simply change provider url
|
// this pulls the latest data so ppl don't have to update to simply change provider url
|
||||||
if (downloadFromGithub) {
|
if (downloadFromGithub) {
|
||||||
|
@ -435,13 +450,15 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
||||||
tryParseJson<HashMap<String, ProvidersInfoJson>>(txt)
|
tryParseJson<HashMap<String, ProvidersInfoJson>>(txt)
|
||||||
setKey(PROVIDER_STATUS_KEY, txt)
|
setKey(PROVIDER_STATUS_KEY, txt)
|
||||||
MainAPI.overrideData = newCache // update all new providers
|
MainAPI.overrideData = newCache // update all new providers
|
||||||
|
|
||||||
val newUpdatedCache = newCache?.let { addNginxToJson(it) ?: it }
|
|
||||||
|
|
||||||
for (api in apis) { // update current providers
|
val newUpdatedCache =
|
||||||
newUpdatedCache?.get(api.javaClass.simpleName)?.let { data ->
|
newCache?.let { addNginxToJson(it) ?: it }
|
||||||
api.overrideWithNewData(data)
|
|
||||||
}
|
for (api in apis) { // update current providers
|
||||||
|
newUpdatedCache?.get(api.javaClass.simpleName)
|
||||||
|
?.let { data ->
|
||||||
|
api.overrideWithNewData(data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logError(e)
|
logError(e)
|
||||||
|
@ -456,7 +473,8 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
||||||
newCache
|
newCache
|
||||||
}?.let { providersJsonMap ->
|
}?.let { providersJsonMap ->
|
||||||
MainAPI.overrideData = providersJsonMap
|
MainAPI.overrideData = providersJsonMap
|
||||||
val providersJsonMapUpdated = addNginxToJson(providersJsonMap)?: providersJsonMap // if return null, use unchanged one
|
val providersJsonMapUpdated = addNginxToJson(providersJsonMap)
|
||||||
|
?: providersJsonMap // if return null, use unchanged one
|
||||||
val acceptableProviders =
|
val acceptableProviders =
|
||||||
providersJsonMapUpdated.filter { it.value.status == PROVIDER_STATUS_OK || it.value.status == PROVIDER_STATUS_SLOW }
|
providersJsonMapUpdated.filter { it.value.status == PROVIDER_STATUS_OK || it.value.status == PROVIDER_STATUS_SLOW }
|
||||||
.map { it.key }.toSet()
|
.map { it.key }.toSet()
|
||||||
|
@ -524,7 +542,8 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
||||||
setUpBackup()
|
setUpBackup()
|
||||||
|
|
||||||
CommonActivity.init(this)
|
CommonActivity.init(this)
|
||||||
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
val navHostFragment =
|
||||||
|
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
||||||
val navController = navHostFragment.navController
|
val navController = navHostFragment.navController
|
||||||
//val navController = findNavController(R.id.nav_host_fragment)
|
//val navController = findNavController(R.id.nav_host_fragment)
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package com.lagradost.cloudstream3.ui.search
|
package com.lagradost.cloudstream3.ui.search
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.ProgressBar
|
import android.widget.ProgressBar
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.cardview.widget.CardView
|
import androidx.cardview.widget.CardView
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
|
import androidx.preference.PreferenceManager
|
||||||
import com.lagradost.cloudstream3.*
|
import com.lagradost.cloudstream3.*
|
||||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTrueTvSettings
|
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTrueTvSettings
|
||||||
import com.lagradost.cloudstream3.utils.AppUtils.getNameFull
|
import com.lagradost.cloudstream3.utils.AppUtils.getNameFull
|
||||||
|
@ -15,6 +17,17 @@ import com.lagradost.cloudstream3.utils.UIHelper.setImage
|
||||||
import kotlinx.android.synthetic.main.home_result_grid.view.*
|
import kotlinx.android.synthetic.main.home_result_grid.view.*
|
||||||
|
|
||||||
object SearchResultBuilder {
|
object SearchResultBuilder {
|
||||||
|
private val showCache: MutableMap<String, Boolean> = mutableMapOf()
|
||||||
|
|
||||||
|
fun updateCache(context: Context?) {
|
||||||
|
if (context == null) return
|
||||||
|
val settingsManager = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
|
||||||
|
for (k in context.resources.getStringArray(R.array.poster_ui_options_values)) {
|
||||||
|
showCache[k] = settingsManager.getBoolean(k, showCache[k] ?: true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param nextFocusBehavior True if first, False if last, Null if between.
|
* @param nextFocusBehavior True if first, False if last, Null if between.
|
||||||
* Used to prevent escaping the adapter horizontally (focus wise).
|
* Used to prevent escaping the adapter horizontally (focus wise).
|
||||||
|
@ -34,6 +47,7 @@ object SearchResultBuilder {
|
||||||
val textIsDub: TextView? = itemView.text_is_dub
|
val textIsDub: TextView? = itemView.text_is_dub
|
||||||
val textIsSub: TextView? = itemView.text_is_sub
|
val textIsSub: TextView? = itemView.text_is_sub
|
||||||
val textQuality: TextView? = itemView.text_quality
|
val textQuality: TextView? = itemView.text_quality
|
||||||
|
val shadow: View? = itemView.title_shadow
|
||||||
|
|
||||||
val bg: CardView = itemView.background_card
|
val bg: CardView = itemView.background_card
|
||||||
|
|
||||||
|
@ -47,6 +61,13 @@ object SearchResultBuilder {
|
||||||
textIsDub?.isVisible = false
|
textIsDub?.isVisible = false
|
||||||
textIsSub?.isVisible = false
|
textIsSub?.isVisible = false
|
||||||
|
|
||||||
|
val showSub = showCache[textIsDub?.context?.getString(R.string.show_sub_key)] ?: false
|
||||||
|
val showDub = showCache[textIsDub?.context?.getString(R.string.show_dub_key)] ?: false
|
||||||
|
val showTitle = showCache[cardText?.context?.getString(R.string.show_title_key)] ?: false
|
||||||
|
val showHd = showCache[textQuality?.context?.getString(R.string.show_title_key)] ?: false
|
||||||
|
|
||||||
|
shadow?.isVisible = showTitle
|
||||||
|
|
||||||
when (card.quality) {
|
when (card.quality) {
|
||||||
SearchQuality.BlueRay -> R.string.quality_blueray
|
SearchQuality.BlueRay -> R.string.quality_blueray
|
||||||
SearchQuality.Cam -> R.string.quality_cam
|
SearchQuality.Cam -> R.string.quality_cam
|
||||||
|
@ -67,14 +88,15 @@ object SearchResultBuilder {
|
||||||
null -> null
|
null -> null
|
||||||
}?.let { textRes ->
|
}?.let { textRes ->
|
||||||
textQuality?.setText(textRes)
|
textQuality?.setText(textRes)
|
||||||
textQuality?.isVisible = true
|
textQuality?.isVisible = showHd
|
||||||
} ?: run {
|
} ?: run {
|
||||||
textQuality?.isVisible = false
|
textQuality?.isVisible = false
|
||||||
}
|
}
|
||||||
|
|
||||||
cardText?.text = card.name
|
cardText?.text = card.name
|
||||||
|
cardText?.isVisible = showTitle
|
||||||
cardView.isVisible = true
|
cardView.isVisible = true
|
||||||
|
|
||||||
if (!cardView.setImage(card.posterUrl, card.posterHeaders)) {
|
if (!cardView.setImage(card.posterUrl, card.posterHeaders)) {
|
||||||
cardView.setImageResource(R.drawable.default_cover)
|
cardView.setImageResource(R.drawable.default_cover)
|
||||||
}
|
}
|
||||||
|
@ -185,10 +207,10 @@ object SearchResultBuilder {
|
||||||
val dubStatus = card.dubStatus
|
val dubStatus = card.dubStatus
|
||||||
if (!dubStatus.isNullOrEmpty()) {
|
if (!dubStatus.isNullOrEmpty()) {
|
||||||
if (dubStatus.contains(DubStatus.Dubbed)) {
|
if (dubStatus.contains(DubStatus.Dubbed)) {
|
||||||
textIsDub?.visibility = View.VISIBLE
|
textIsDub?.isVisible = showDub
|
||||||
}
|
}
|
||||||
if (dubStatus.contains(DubStatus.Subbed)) {
|
if (dubStatus.contains(DubStatus.Subbed)) {
|
||||||
textIsSub?.visibility = View.VISIBLE
|
textIsSub?.isVisible = showSub
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,7 @@ import com.lagradost.cloudstream3.syncproviders.OAuth2API
|
||||||
import com.lagradost.cloudstream3.syncproviders.OAuth2API.Companion.aniListApi
|
import com.lagradost.cloudstream3.syncproviders.OAuth2API.Companion.aniListApi
|
||||||
import com.lagradost.cloudstream3.syncproviders.OAuth2API.Companion.malApi
|
import com.lagradost.cloudstream3.syncproviders.OAuth2API.Companion.malApi
|
||||||
import com.lagradost.cloudstream3.ui.APIRepository
|
import com.lagradost.cloudstream3.ui.APIRepository
|
||||||
|
import com.lagradost.cloudstream3.ui.search.SearchResultBuilder
|
||||||
import com.lagradost.cloudstream3.ui.subtitles.ChromecastSubtitlesFragment
|
import com.lagradost.cloudstream3.ui.subtitles.ChromecastSubtitlesFragment
|
||||||
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment
|
import com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment
|
||||||
import com.lagradost.cloudstream3.utils.BackupUtils.backup
|
import com.lagradost.cloudstream3.utils.BackupUtils.backup
|
||||||
|
@ -339,6 +340,34 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
||||||
return@setOnPreferenceClickListener true
|
return@setOnPreferenceClickListener true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPref(R.string.poster_ui_key)?.setOnPreferenceClickListener {
|
||||||
|
val prefNames = resources.getStringArray(R.array.poster_ui_options)
|
||||||
|
val keys = resources.getStringArray(R.array.poster_ui_options_values)
|
||||||
|
val prefValues = keys.map {
|
||||||
|
settingsManager.getBoolean(it, true)
|
||||||
|
}.mapIndexedNotNull { index, b ->
|
||||||
|
if (b) {
|
||||||
|
index
|
||||||
|
} else null
|
||||||
|
}
|
||||||
|
|
||||||
|
activity?.showMultiDialog(
|
||||||
|
prefNames.toList(),
|
||||||
|
prefValues,
|
||||||
|
getString(R.string.poster_ui_settings),
|
||||||
|
{}) { list ->
|
||||||
|
val edit = settingsManager.edit()
|
||||||
|
for ((i, key) in keys.withIndex()) {
|
||||||
|
edit.putBoolean(key, list.contains(i))
|
||||||
|
}
|
||||||
|
edit.apply()
|
||||||
|
SearchResultBuilder.updateCache(it.context)
|
||||||
|
}
|
||||||
|
|
||||||
|
return@setOnPreferenceClickListener true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
val syncApis =
|
val syncApis =
|
||||||
listOf(Pair(R.string.mal_key, malApi), Pair(R.string.anilist_key, aniListApi))
|
listOf(Pair(R.string.mal_key, malApi), Pair(R.string.anilist_key, aniListApi))
|
||||||
for ((key, api) in syncApis) {
|
for ((key, api) in syncApis) {
|
||||||
|
@ -487,28 +516,34 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
||||||
return@setOnPreferenceClickListener true
|
return@setOnPreferenceClickListener true
|
||||||
}
|
}
|
||||||
|
|
||||||
getPref(R.string.nginx_url_key)?.setOnPreferenceClickListener {
|
getPref(R.string.nginx_url_key)?.setOnPreferenceClickListener {
|
||||||
|
|
||||||
activity?.showNginxTextInputDialog(
|
activity?.showNginxTextInputDialog(
|
||||||
settingsManager.getString(getString(R.string.nginx_url_pref), "Nginx server url").toString(),
|
settingsManager.getString(getString(R.string.nginx_url_pref), "Nginx server url")
|
||||||
settingsManager.getString(getString(R.string.nginx_url_key), "").toString(), // key: the actual you use rn
|
.toString(),
|
||||||
|
settingsManager.getString(getString(R.string.nginx_url_key), "")
|
||||||
|
.toString(), // key: the actual you use rn
|
||||||
android.text.InputType.TYPE_TEXT_VARIATION_URI, // uri
|
android.text.InputType.TYPE_TEXT_VARIATION_URI, // uri
|
||||||
{}) {
|
{}) {
|
||||||
settingsManager.edit()
|
settingsManager.edit()
|
||||||
.putString(getString(R.string.nginx_url_key), it).apply() // change the stored url in nginx_url_key to it
|
.putString(getString(R.string.nginx_url_key), it)
|
||||||
|
.apply() // change the stored url in nginx_url_key to it
|
||||||
}
|
}
|
||||||
return@setOnPreferenceClickListener true
|
return@setOnPreferenceClickListener true
|
||||||
}
|
}
|
||||||
|
|
||||||
getPref(R.string.nginx_credentials)?.setOnPreferenceClickListener {
|
getPref(R.string.nginx_credentials)?.setOnPreferenceClickListener {
|
||||||
|
|
||||||
activity?.showNginxTextInputDialog(
|
activity?.showNginxTextInputDialog(
|
||||||
settingsManager.getString(getString(R.string.nginx_credentials_title), "Nginx Credentials").toString(),
|
settingsManager.getString(
|
||||||
settingsManager.getString(getString(R.string.nginx_credentials), "").toString(), // key: the actual you use rn
|
getString(R.string.nginx_credentials_title),
|
||||||
|
"Nginx Credentials"
|
||||||
|
).toString(),
|
||||||
|
settingsManager.getString(getString(R.string.nginx_credentials), "")
|
||||||
|
.toString(), // key: the actual you use rn
|
||||||
android.text.InputType.TYPE_TEXT_VARIATION_URI,
|
android.text.InputType.TYPE_TEXT_VARIATION_URI,
|
||||||
{}) {
|
{}) {
|
||||||
settingsManager.edit()
|
settingsManager.edit()
|
||||||
.putString(getString(R.string.nginx_credentials), it).apply() // change the stored url in nginx_url_key to it
|
.putString(getString(R.string.nginx_credentials), it)
|
||||||
|
.apply() // change the stored url in nginx_url_key to it
|
||||||
}
|
}
|
||||||
return@setOnPreferenceClickListener true
|
return@setOnPreferenceClickListener true
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="50dp"
|
android:layout_height="50dp"
|
||||||
|
android:id="@+id/title_shadow"
|
||||||
android:src="@drawable/title_shadow"
|
android:src="@drawable/title_shadow"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="50dp"
|
android:layout_height="50dp"
|
||||||
|
android:id="@+id/title_shadow"
|
||||||
android:src="@drawable/title_shadow"
|
android:src="@drawable/title_shadow"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
@ -55,6 +56,7 @@
|
||||||
android:paddingStart="5dp"
|
android:paddingStart="5dp"
|
||||||
android:paddingEnd="5dp"
|
android:paddingEnd="5dp"
|
||||||
android:ellipsize="end" />
|
android:ellipsize="end" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
tools:text="@string/quality_hd"
|
tools:text="@string/quality_hd"
|
||||||
android:id="@+id/text_quality"
|
android:id="@+id/text_quality"
|
||||||
|
@ -67,6 +69,7 @@
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/app_dubbed_text"
|
android:text="@string/app_dubbed_text"
|
||||||
android:id="@+id/text_is_dub"
|
android:id="@+id/text_is_dub"
|
||||||
|
|
|
@ -143,6 +143,20 @@
|
||||||
<item>500</item>
|
<item>500</item>
|
||||||
</array>
|
</array>
|
||||||
|
|
||||||
|
<array name="poster_ui_options">
|
||||||
|
<item>@string/show_hd</item>
|
||||||
|
<item>@string/show_dub</item>
|
||||||
|
<item>@string/show_sub</item>
|
||||||
|
<item>@string/show_title</item>
|
||||||
|
</array>
|
||||||
|
|
||||||
|
<array name="poster_ui_options_values">
|
||||||
|
<item>@string/show_hd_key</item>
|
||||||
|
<item>@string/show_dub_key</item>
|
||||||
|
<item>@string/show_sub_key</item>
|
||||||
|
<item>@string/show_title_key</item>
|
||||||
|
</array>
|
||||||
|
|
||||||
<array name="episode_long_click_options">
|
<array name="episode_long_click_options">
|
||||||
<item>@string/episode_action_chromecast_episode</item>
|
<item>@string/episode_action_chromecast_episode</item>
|
||||||
<item>@string/episode_action_chromecast_mirror</item>
|
<item>@string/episode_action_chromecast_mirror</item>
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
<string name="log_enabled_key" translatable="false">log_enabled_key</string>
|
<string name="log_enabled_key" translatable="false">log_enabled_key</string>
|
||||||
<string name="show_logcat_key" translatable="false">show_logcat_key</string>
|
<string name="show_logcat_key" translatable="false">show_logcat_key</string>
|
||||||
<string name="bottom_title_key" translatable="false">bottom_title_key</string>
|
<string name="bottom_title_key" translatable="false">bottom_title_key</string>
|
||||||
|
<string name="poster_ui_key" translatable="false">poster_ui_key</string>
|
||||||
|
|
||||||
<!-- FORMAT MIGHT TRANSLATE, WILL CAUSE CRASH IF APPLIED WRONG -->
|
<!-- FORMAT MIGHT TRANSLATE, WILL CAUSE CRASH IF APPLIED WRONG -->
|
||||||
<string name="extra_info_format" translatable="false" formatted="true">%d %s | %sMB</string>
|
<string name="extra_info_format" translatable="false" formatted="true">%d %s | %sMB</string>
|
||||||
|
@ -342,6 +343,16 @@
|
||||||
<string name="episode_action_reload_links">Reload links</string>
|
<string name="episode_action_reload_links">Reload links</string>
|
||||||
<string name="episode_action_download_subtitle">Download subtitles</string>
|
<string name="episode_action_download_subtitle">Download subtitles</string>
|
||||||
|
|
||||||
|
<string name="show_hd">Quality label</string>
|
||||||
|
<string name="show_dub">Dub label</string>
|
||||||
|
<string name="show_sub">Sub label</string>
|
||||||
|
<string name="show_title">Title</string>
|
||||||
|
<string name="show_hd_key" translatable="false">show_hd_key</string>
|
||||||
|
<string name="show_dub_key" translatable="false">show_dub_key</string>
|
||||||
|
<string name="show_sub_key" translatable="false">show_sub_key</string>
|
||||||
|
<string name="show_title_key" translatable="false">show_title_key</string>
|
||||||
|
<string name="poster_ui_settings">Toggle UI elements on poster</string>
|
||||||
|
|
||||||
<string name="no_update_found">No Update Found</string>
|
<string name="no_update_found">No Update Found</string>
|
||||||
<string name="check_for_update">Check for Update</string>
|
<string name="check_for_update">Check for Update</string>
|
||||||
|
|
||||||
|
|
|
@ -166,6 +166,10 @@
|
||||||
android:key="@string/bottom_title_key"
|
android:key="@string/bottom_title_key"
|
||||||
android:summary="@string/bottom_title_settings_des"
|
android:summary="@string/bottom_title_settings_des"
|
||||||
android:title="@string/bottom_title_settings" />
|
android:title="@string/bottom_title_settings" />
|
||||||
|
<Preference
|
||||||
|
android:icon="@drawable/ic_baseline_tv_24"
|
||||||
|
android:key="@string/poster_ui_key"
|
||||||
|
android:title="@string/poster_ui_settings" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="search"
|
android:key="search"
|
||||||
|
|
Loading…
Reference in a new issue