mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Added setup screen :)
This commit is contained in:
parent
65f9c71c44
commit
510dd9c358
15 changed files with 1141 additions and 410 deletions
|
@ -36,6 +36,7 @@ import com.lagradost.cloudstream3.CommonActivity.onUserLeaveHint
|
|||
import com.lagradost.cloudstream3.CommonActivity.showToast
|
||||
import com.lagradost.cloudstream3.CommonActivity.updateLocale
|
||||
import com.lagradost.cloudstream3.mvvm.logError
|
||||
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
|
||||
import com.lagradost.cloudstream3.network.initClient
|
||||
import com.lagradost.cloudstream3.receivers.VideoDownloadRestartReceiver
|
||||
import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.OAuth2Apis
|
||||
|
@ -49,6 +50,7 @@ import com.lagradost.cloudstream3.ui.search.SearchResultBuilder
|
|||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isEmulatorSettings
|
||||
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
|
||||
import com.lagradost.cloudstream3.ui.settings.SettingsGeneral
|
||||
import com.lagradost.cloudstream3.ui.setup.HAS_DONE_SETUP_KEY
|
||||
import com.lagradost.cloudstream3.utils.AppUtils.isCastApiAvailable
|
||||
import com.lagradost.cloudstream3.utils.AppUtils.loadCache
|
||||
import com.lagradost.cloudstream3.utils.AppUtils.loadResult
|
||||
|
@ -56,6 +58,7 @@ import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson
|
|||
import com.lagradost.cloudstream3.utils.BackupUtils.setUpBackup
|
||||
import com.lagradost.cloudstream3.utils.Coroutines.ioSafe
|
||||
import com.lagradost.cloudstream3.utils.Coroutines.main
|
||||
import com.lagradost.cloudstream3.utils.DataStore
|
||||
import com.lagradost.cloudstream3.utils.DataStore.getKey
|
||||
import com.lagradost.cloudstream3.utils.DataStore.removeKey
|
||||
import com.lagradost.cloudstream3.utils.DataStore.setKey
|
||||
|
@ -743,7 +746,18 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
|
|||
ioSafe {
|
||||
migrateResumeWatching()
|
||||
}
|
||||
|
||||
try {
|
||||
if (getKey(HAS_DONE_SETUP_KEY, false) != true) {
|
||||
navController.navigate(R.id.navigation_setup_language)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
logError(e)
|
||||
} finally {
|
||||
setKey(HAS_DONE_SETUP_KEY, true)
|
||||
}
|
||||
/*
|
||||
|
||||
val relativePath = (Environment.DIRECTORY_DOWNLOADS) + File.separatorChar
|
||||
val displayName = "output.dex" //""output.dex"
|
||||
val file = getExternalFilesDir(null)?.absolutePath + File.separatorChar + displayName//"${Environment.getExternalStorageDirectory()}${File.separatorChar}$relativePath$displayName"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.lagradost.cloudstream3.ui.settings
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
|
@ -7,6 +8,7 @@ import androidx.preference.PreferenceManager
|
|||
import com.lagradost.cloudstream3.*
|
||||
import com.lagradost.cloudstream3.APIHolder.getApiDubstatusSettings
|
||||
import com.lagradost.cloudstream3.APIHolder.getApiProviderLangSettings
|
||||
import com.lagradost.cloudstream3.AcraApplication.Companion.removeKey
|
||||
import com.lagradost.cloudstream3.mvvm.logError
|
||||
import com.lagradost.cloudstream3.network.initClient
|
||||
import com.lagradost.cloudstream3.ui.APIRepository
|
||||
|
@ -19,12 +21,19 @@ import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showMultiDialog
|
|||
import com.lagradost.cloudstream3.utils.SubtitleHelper
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard
|
||||
|
||||
class SettingsLang : PreferenceFragmentCompat() {
|
||||
// idk, if you find a way of automating this it would be great
|
||||
// https://www.iemoji.com/view/emoji/1794/flags/antarctica
|
||||
// Emoji Character Encoding Data --> C/C++/Java Src
|
||||
// https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes leave blank for auto
|
||||
private val languages = arrayListOf(
|
||||
fun getCurrentLocale(context: Context): String {
|
||||
val res = context.resources
|
||||
// Change locale settings in the app.
|
||||
// val dm = res.displayMetrics
|
||||
val conf = res.configuration
|
||||
return conf?.locale?.language ?: "en"
|
||||
}
|
||||
|
||||
// idk, if you find a way of automating this it would be great
|
||||
// https://www.iemoji.com/view/emoji/1794/flags/antarctica
|
||||
// Emoji Character Encoding Data --> C/C++/Java Src
|
||||
// https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes leave blank for auto
|
||||
val appLanguages = arrayListOf(
|
||||
Triple("", "Spanish", "es"),
|
||||
Triple("", "English", "en"),
|
||||
Triple("", "Viet Nam", "vi"),
|
||||
|
@ -48,16 +57,9 @@ class SettingsLang : PreferenceFragmentCompat() {
|
|||
Triple("", "Chinese", "zh"),
|
||||
Triple("", "Indonesian", "id"),
|
||||
Triple("", "Czech", "cs"),
|
||||
).sortedBy { it.second } //ye, we go alphabetical, so ppl don't put their lang on top
|
||||
|
||||
private fun getCurrentLocale(): String {
|
||||
val res = requireContext().resources
|
||||
// Change locale settings in the app.
|
||||
// val dm = res.displayMetrics
|
||||
val conf = res.configuration
|
||||
return conf?.locale?.language ?: "en"
|
||||
}
|
||||
).sortedBy { it.second } //ye, we go alphabetical, so ppl don't put their lang on top
|
||||
|
||||
class SettingsLang : PreferenceFragmentCompat() {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
setUpToolbar(R.string.category_preferred_media_and_lang)
|
||||
|
@ -112,22 +114,21 @@ class SettingsLang : PreferenceFragmentCompat() {
|
|||
.putInt(getString(R.string.prefer_media_type_key), prefValues[it])
|
||||
.apply()
|
||||
|
||||
AcraApplication.removeKey(HOMEPAGE_API)
|
||||
(context ?: AcraApplication.context)?.let { ctx -> app.initClient(ctx) }
|
||||
removeKey(HOMEPAGE_API)
|
||||
// (context ?: AcraApplication.context)?.let { ctx -> app.initClient(ctx) }
|
||||
}
|
||||
return@setOnPreferenceClickListener true
|
||||
}
|
||||
|
||||
getPref(R.string.locale_key)?.setOnPreferenceClickListener {
|
||||
val tempLangs = languages.toMutableList()
|
||||
val tempLangs = appLanguages.toMutableList()
|
||||
//if (beneneCount > 100) {
|
||||
// tempLangs.add(Triple("\uD83E\uDD8D", "mmmm... monke", "mo"))
|
||||
//}
|
||||
val current = getCurrentLocale()
|
||||
val current = getCurrentLocale(requireContext())
|
||||
val languageCodes = tempLangs.map { it.third }
|
||||
val languageNames = tempLangs.map { (emoji, name, iso) ->
|
||||
val flag = emoji.ifBlank { SubtitleHelper.getFlagFromIso(iso) ?: "ERROR" }
|
||||
|
||||
"$flag $name"
|
||||
}
|
||||
val index = languageCodes.indexOf(current)
|
||||
|
@ -149,7 +150,8 @@ class SettingsLang : PreferenceFragmentCompat() {
|
|||
|
||||
getPref(R.string.provider_lang_key)?.setOnPreferenceClickListener {
|
||||
activity?.getApiProviderLangSettings()?.let { current ->
|
||||
val langs = APIHolder.apis.map { it.lang }.toSet().sortedBy { SubtitleHelper.fromTwoLettersToLanguage(it) }
|
||||
val langs = APIHolder.apis.map { it.lang }.toSet()
|
||||
.sortedBy { SubtitleHelper.fromTwoLettersToLanguage(it) }
|
||||
|
||||
val currentList = ArrayList<Int>()
|
||||
for (i in current) {
|
||||
|
|
|
@ -7,6 +7,7 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.lagradost.cloudstream3.CommonActivity
|
||||
import com.lagradost.cloudstream3.R
|
||||
|
@ -31,6 +32,7 @@ class SettingsUpdates : PreferenceFragmentCompat() {
|
|||
super.onViewCreated(view, savedInstanceState)
|
||||
setUpToolbar(R.string.category_updates)
|
||||
}
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
hideKeyboard()
|
||||
setPreferencesFromResource(R.xml.settings_updates, rootKey)
|
||||
|
@ -41,6 +43,11 @@ class SettingsUpdates : PreferenceFragmentCompat() {
|
|||
return@setOnPreferenceClickListener true
|
||||
}
|
||||
|
||||
getPref(R.string.redo_setup_key)?.setOnPreferenceClickListener {
|
||||
findNavController().navigate(R.id.navigation_setup_language)
|
||||
return@setOnPreferenceClickListener true
|
||||
}
|
||||
|
||||
getPref(R.string.restore_key)?.setOnPreferenceClickListener {
|
||||
activity?.restorePrompt()
|
||||
return@setOnPreferenceClickListener true
|
||||
|
@ -112,7 +119,11 @@ class SettingsUpdates : PreferenceFragmentCompat() {
|
|||
thread {
|
||||
if (!requireActivity().runAutoUpdate(false)) {
|
||||
activity?.runOnUiThread {
|
||||
CommonActivity.showToast(activity, R.string.no_update_found, Toast.LENGTH_SHORT)
|
||||
CommonActivity.showToast(
|
||||
activity,
|
||||
R.string.no_update_found,
|
||||
Toast.LENGTH_SHORT
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
package com.lagradost.cloudstream3.ui.setup
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.AbsListView
|
||||
import android.widget.ArrayAdapter
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.lagradost.cloudstream3.BuildConfig
|
||||
import com.lagradost.cloudstream3.CommonActivity
|
||||
import com.lagradost.cloudstream3.R
|
||||
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
|
||||
import com.lagradost.cloudstream3.ui.settings.appLanguages
|
||||
import com.lagradost.cloudstream3.ui.settings.getCurrentLocale
|
||||
import com.lagradost.cloudstream3.utils.SubtitleHelper
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar
|
||||
import kotlinx.android.synthetic.main.fragment_setup_language.*
|
||||
import kotlinx.android.synthetic.main.fragment_setup_media.listview1
|
||||
import kotlinx.android.synthetic.main.fragment_setup_media.next_btt
|
||||
|
||||
const val HAS_DONE_SETUP_KEY = "HAS_DONE_SETUP"
|
||||
class SetupFragmentLanguage : Fragment() {
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
return inflater.inflate(R.layout.fragment_setup_language, container, false)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
context?.fixPaddingStatusbar(setup_root)
|
||||
|
||||
// We don't want a crash for all users
|
||||
normalSafeApiCall {
|
||||
with(context) {
|
||||
if (this == null) return@normalSafeApiCall
|
||||
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
||||
|
||||
val arrayAdapter =
|
||||
ArrayAdapter<String>(this, R.layout.sort_bottom_single_choice)
|
||||
|
||||
// Icons may crash on some weird android versions?
|
||||
normalSafeApiCall {
|
||||
val drawable = when {
|
||||
BuildConfig.DEBUG -> R.drawable.cloud_2_gradient_debug
|
||||
BuildConfig.BUILD_TYPE == "prerelease" -> R.drawable.cloud_2_gradient_beta
|
||||
else -> R.drawable.cloud_2_gradient
|
||||
}
|
||||
app_icon_image?.setImageDrawable(ContextCompat.getDrawable(this, drawable))
|
||||
}
|
||||
|
||||
val current = getCurrentLocale(this)
|
||||
val languageCodes = appLanguages.map { it.third }
|
||||
val languageNames = appLanguages.map { (emoji, name, iso) ->
|
||||
val flag = emoji.ifBlank { SubtitleHelper.getFlagFromIso(iso) ?: "ERROR" }
|
||||
"$flag $name"
|
||||
}
|
||||
val index = languageCodes.indexOf(current)
|
||||
|
||||
arrayAdapter.addAll(languageNames)
|
||||
listview1?.adapter = arrayAdapter
|
||||
listview1?.choiceMode = AbsListView.CHOICE_MODE_SINGLE
|
||||
listview1?.setItemChecked(index, true)
|
||||
|
||||
listview1?.setOnItemClickListener { _, _, position, _ ->
|
||||
val code = languageCodes[position]
|
||||
CommonActivity.setLocale(activity, code)
|
||||
settingsManager.edit().putString(getString(R.string.locale_key), code).apply()
|
||||
activity?.recreate()
|
||||
}
|
||||
|
||||
next_btt?.setOnClickListener {
|
||||
findNavController().navigate(R.id.action_navigation_setup_language_to_navigation_setup_provider_languages)
|
||||
}
|
||||
|
||||
skip_btt?.setOnClickListener {
|
||||
findNavController().navigate(R.id.navigation_home)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
package com.lagradost.cloudstream3.ui.setup
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.AbsListView
|
||||
import android.widget.ArrayAdapter
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.lagradost.cloudstream3.R
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar
|
||||
import kotlinx.android.synthetic.main.fragment_setup_layout.*
|
||||
import kotlinx.android.synthetic.main.fragment_setup_media.listview1
|
||||
import kotlinx.android.synthetic.main.fragment_setup_media.next_btt
|
||||
import kotlinx.android.synthetic.main.fragment_setup_media.prev_btt
|
||||
import kotlinx.android.synthetic.main.fragment_setup_media.setup_root
|
||||
import org.acra.ACRA
|
||||
|
||||
|
||||
class SetupFragmentLayout : Fragment() {
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.fragment_setup_layout, container, false)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
context?.fixPaddingStatusbar(setup_root)
|
||||
|
||||
with(context) {
|
||||
if (this == null) return
|
||||
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
||||
|
||||
val prefNames = resources.getStringArray(R.array.app_layout)
|
||||
val prefValues = resources.getIntArray(R.array.app_layout_values)
|
||||
|
||||
val currentLayout =
|
||||
settingsManager.getInt(getString(R.string.app_layout_key), -1)
|
||||
|
||||
val arrayAdapter =
|
||||
ArrayAdapter<String>(this, R.layout.sort_bottom_single_choice)
|
||||
|
||||
arrayAdapter.addAll(prefNames.toList())
|
||||
listview1?.adapter = arrayAdapter
|
||||
listview1?.choiceMode = AbsListView.CHOICE_MODE_SINGLE
|
||||
listview1?.setItemChecked(
|
||||
prefValues.indexOf(currentLayout), true
|
||||
)
|
||||
|
||||
listview1?.setOnItemClickListener { _, _, position, _ ->
|
||||
settingsManager.edit()
|
||||
.putInt(getString(R.string.app_layout_key), prefValues[position])
|
||||
.apply()
|
||||
activity?.recreate()
|
||||
}
|
||||
|
||||
acra_switch?.setOnCheckedChangeListener { _, enableCrashReporting ->
|
||||
// Use same pref as in settings
|
||||
settingsManager.edit().putBoolean(ACRA.PREF_DISABLE_ACRA, !enableCrashReporting)
|
||||
.apply()
|
||||
val text =
|
||||
if (enableCrashReporting) R.string.bug_report_settings_off else R.string.bug_report_settings_on
|
||||
crash_reporting_text?.text = getText(text)
|
||||
}
|
||||
|
||||
val enableCrashReporting = !settingsManager.getBoolean(ACRA.PREF_DISABLE_ACRA, false)
|
||||
acra_switch.isChecked = enableCrashReporting
|
||||
crash_reporting_text.text =
|
||||
getText(
|
||||
if (enableCrashReporting) R.string.bug_report_settings_off else R.string.bug_report_settings_on
|
||||
)
|
||||
|
||||
|
||||
next_btt?.setOnClickListener {
|
||||
findNavController().navigate(R.id.navigation_home)
|
||||
}
|
||||
|
||||
prev_btt?.setOnClickListener {
|
||||
findNavController().popBackStack()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
package com.lagradost.cloudstream3.ui.setup
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.AbsListView
|
||||
import android.widget.ArrayAdapter
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.lagradost.cloudstream3.R
|
||||
import com.lagradost.cloudstream3.utils.DataStore.removeKey
|
||||
import com.lagradost.cloudstream3.utils.HOMEPAGE_API
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar
|
||||
import kotlinx.android.synthetic.main.fragment_setup_media.*
|
||||
|
||||
|
||||
class SetupFragmentMedia : Fragment() {
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.fragment_setup_media, container, false)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
context?.fixPaddingStatusbar(setup_root)
|
||||
|
||||
with(context) {
|
||||
if (this == null) return
|
||||
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
||||
|
||||
val arrayAdapter =
|
||||
ArrayAdapter<String>(this, R.layout.sort_bottom_single_choice)
|
||||
|
||||
val currentPrefMedia =
|
||||
settingsManager.getInt(getString(R.string.prefer_media_type_key), 0)
|
||||
|
||||
val prefNames = resources.getStringArray(R.array.media_type_pref)
|
||||
val prefValues = resources.getIntArray(R.array.media_type_pref_values)
|
||||
|
||||
arrayAdapter.addAll(prefNames.toList())
|
||||
listview1?.adapter = arrayAdapter
|
||||
listview1?.choiceMode = AbsListView.CHOICE_MODE_SINGLE
|
||||
listview1?.setItemChecked(currentPrefMedia, true)
|
||||
|
||||
listview1?.setOnItemClickListener { _, _, position, _ ->
|
||||
settingsManager.edit()
|
||||
.putInt(getString(R.string.prefer_media_type_key), prefValues[position])
|
||||
.apply()
|
||||
|
||||
// Regenerate set homepage
|
||||
removeKey(HOMEPAGE_API)
|
||||
}
|
||||
|
||||
next_btt?.setOnClickListener {
|
||||
findNavController().navigate(R.id.navigation_setup_media_to_navigation_setup_layout)
|
||||
}
|
||||
|
||||
prev_btt?.setOnClickListener {
|
||||
findNavController().popBackStack()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
package com.lagradost.cloudstream3.ui.setup
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.AbsListView
|
||||
import android.widget.ArrayAdapter
|
||||
import androidx.core.util.forEach
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.lagradost.cloudstream3.APIHolder
|
||||
import com.lagradost.cloudstream3.APIHolder.getApiProviderLangSettings
|
||||
import com.lagradost.cloudstream3.R
|
||||
import com.lagradost.cloudstream3.utils.SubtitleHelper
|
||||
import com.lagradost.cloudstream3.utils.UIHelper.fixPaddingStatusbar
|
||||
import kotlinx.android.synthetic.main.fragment_setup_media.*
|
||||
|
||||
class SetupFragmentProviderLanguage : Fragment() {
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
// Inflate the layout for this fragment
|
||||
return inflater.inflate(R.layout.fragment_setup_provider_languages, container, false)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
context?.fixPaddingStatusbar(setup_root)
|
||||
|
||||
with(context) {
|
||||
if (this == null) return
|
||||
val settingsManager = PreferenceManager.getDefaultSharedPreferences(this)
|
||||
|
||||
val arrayAdapter =
|
||||
ArrayAdapter<String>(this, R.layout.sort_bottom_single_choice)
|
||||
|
||||
val current = this.getApiProviderLangSettings()
|
||||
val langs = APIHolder.apis.map { it.lang }.toSet()
|
||||
.sortedBy { SubtitleHelper.fromTwoLettersToLanguage(it) }
|
||||
|
||||
val currentList = current.map { langs.indexOf(it) }
|
||||
val languageNames = langs.map {
|
||||
val emoji = SubtitleHelper.getFlagFromIso(it)
|
||||
val name = SubtitleHelper.fromTwoLettersToLanguage(it)
|
||||
"$emoji $name"
|
||||
}
|
||||
arrayAdapter.addAll(languageNames)
|
||||
|
||||
listview1?.adapter = arrayAdapter
|
||||
listview1?.choiceMode = AbsListView.CHOICE_MODE_MULTIPLE
|
||||
currentList.forEach {
|
||||
listview1.setItemChecked(it, true)
|
||||
}
|
||||
|
||||
listview1?.setOnItemClickListener { _, _, _, _ ->
|
||||
val currentLanguages = mutableListOf<String>()
|
||||
listview1?.checkedItemPositions?.forEach { key, value ->
|
||||
if (value) currentLanguages.add(langs[key])
|
||||
}
|
||||
settingsManager.edit().putStringSet(
|
||||
this.getString(R.string.provider_lang_key),
|
||||
currentLanguages.toSet()
|
||||
).apply()
|
||||
}
|
||||
|
||||
next_btt?.setOnClickListener {
|
||||
findNavController().navigate(R.id.navigation_setup_provider_languages_to_navigation_setup_media)
|
||||
}
|
||||
|
||||
prev_btt?.setOnClickListener {
|
||||
findNavController().popBackStack()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
<vector android:height="24dp" android:tint="?attr/white"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M13.783,15.172l2.121,-2.121l5.996,5.996l-2.121,2.121z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="M17.5,10c1.93,0 3.5,-1.57 3.5,-3.5c0,-0.58 -0.16,-1.12 -0.41,-1.6l-2.7,2.7L16.4,6.11l2.7,-2.7C18.62,3.16 18.08,3 17.5,3C15.57,3 14,4.57 14,6.5c0,0.41 0.08,0.8 0.21,1.16l-1.85,1.85l-1.78,-1.78l0.71,-0.71L9.88,5.61L12,3.49c-1.17,-1.17 -3.07,-1.17 -4.24,0L4.22,7.03l1.41,1.41H2.81L2.1,9.15l3.54,3.54l0.71,-0.71V9.15l1.41,1.41l0.71,-0.71l1.78,1.78l-7.41,7.41l2.12,2.12L16.34,9.79C16.7,9.92 17.09,10 17.5,10z"/>
|
||||
</vector>
|
66
app/src/main/res/layout/fragment_setup_language.xml
Normal file
66
app/src/main/res/layout/fragment_setup_language.xml
Normal file
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/setup_root"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/app_icon_image"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="20dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/app_language"
|
||||
android:textSize="18sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/listview1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_rowWeight="1"
|
||||
android:layout_marginBottom="60dp"
|
||||
android:paddingTop="10dp"
|
||||
android:requiresFadingEdge="vertical"
|
||||
tools:listitem="@layout/sort_bottom_single_choice" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/apply_btt_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginTop="-60dp"
|
||||
android:gravity="bottom|end"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/next_btt"
|
||||
style="@style/WhiteButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/next" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/skip_btt"
|
||||
style="@style/BlackButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/skip_setup">
|
||||
|
||||
<requestFocus />
|
||||
</com.google.android.material.button.MaterialButton>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
102
app/src/main/res/layout/fragment_setup_layout.xml
Normal file
102
app/src/main/res/layout/fragment_setup_layout.xml
Normal file
|
@ -0,0 +1,102 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/setup_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="20dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginHorizontal="50dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/crash_reporting_title"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/crash_reporting_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/bug_report_settings_off" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/acra_switch"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:checked="true">
|
||||
|
||||
</androidx.appcompat.widget.SwitchCompat>
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/app_layout"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/app_layout_subtext">
|
||||
|
||||
</TextView>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/listview1"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
android:layout_height="match_parent"
|
||||
android:layout_rowWeight="1"
|
||||
android:layout_marginBottom="60dp"
|
||||
android:nextFocusLeft="@id/apply_btt"
|
||||
android:nextFocusRight="@id/cancel_btt"
|
||||
android:paddingTop="10dp"
|
||||
android:requiresFadingEdge="vertical"
|
||||
tools:listitem="@layout/sort_bottom_single_choice" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/apply_btt_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginTop="-60dp"
|
||||
android:gravity="bottom|end"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/next_btt"
|
||||
style="@style/WhiteButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/setup_done" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/prev_btt"
|
||||
style="@style/BlackButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/previous" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
60
app/src/main/res/layout/fragment_setup_media.xml
Normal file
60
app/src/main/res/layout/fragment_setup_media.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/setup_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/preferred_media_settings"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/preferred_media_subtext" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/listview1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_rowWeight="1"
|
||||
android:layout_marginBottom="60dp"
|
||||
android:nextFocusLeft="@id/apply_btt"
|
||||
android:nextFocusRight="@id/cancel_btt"
|
||||
android:paddingTop="10dp"
|
||||
android:requiresFadingEdge="vertical"
|
||||
tools:listitem="@layout/sort_bottom_single_choice" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/apply_btt_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginTop="-60dp"
|
||||
android:gravity="bottom|end"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/next_btt"
|
||||
style="@style/WhiteButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/next" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/prev_btt"
|
||||
style="@style/BlackButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/previous" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/setup_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/provider_lang_settings"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="@string/provider_languages_tip">
|
||||
|
||||
</TextView>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/listview1"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
android:layout_height="match_parent"
|
||||
android:layout_rowWeight="1"
|
||||
android:layout_marginBottom="60dp"
|
||||
android:nextFocusLeft="@id/apply_btt"
|
||||
android:nextFocusRight="@id/cancel_btt"
|
||||
android:paddingTop="10dp"
|
||||
android:requiresFadingEdge="vertical"
|
||||
tools:listitem="@layout/sort_bottom_single_choice" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/apply_btt_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginTop="-60dp"
|
||||
android:gravity="bottom|end"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/next_btt"
|
||||
style="@style/WhiteButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/next" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/prev_btt"
|
||||
style="@style/BlackButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:text="@string/previous" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
|
@ -20,16 +20,16 @@
|
|||
app:argType="string" />
|
||||
<argument
|
||||
android:name="startAction"
|
||||
app:argType="integer"
|
||||
android:defaultValue="0" />
|
||||
android:defaultValue="0"
|
||||
app:argType="integer" />
|
||||
<argument
|
||||
android:name="startValue"
|
||||
app:argType="integer"
|
||||
android:defaultValue="0" />
|
||||
android:defaultValue="0"
|
||||
app:argType="integer" />
|
||||
<argument
|
||||
android:name="restart"
|
||||
app:argType="boolean"
|
||||
android:defaultValue="false" />
|
||||
android:defaultValue="false"
|
||||
app:argType="boolean" />
|
||||
</action>
|
||||
<action
|
||||
android:id="@+id/global_to_navigation_player"
|
||||
|
@ -40,16 +40,16 @@
|
|||
app:popExitAnim="@anim/exit_anim">
|
||||
<argument
|
||||
android:name="data"
|
||||
app:argType="string"
|
||||
android:defaultValue="@null" />
|
||||
android:defaultValue="@null"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="uriData"
|
||||
app:argType="string"
|
||||
android:defaultValue="@null" />
|
||||
android:defaultValue="@null"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="resumePosition"
|
||||
app:argType="long"
|
||||
android:defaultValue="0L" />
|
||||
android:defaultValue="0L"
|
||||
app:argType="long" />
|
||||
</action>
|
||||
|
||||
<action
|
||||
|
@ -69,8 +69,8 @@
|
|||
app:popExitAnim="@anim/exit_anim">
|
||||
<argument
|
||||
android:name="hide"
|
||||
app:argType="boolean"
|
||||
android:defaultValue="true" />
|
||||
android:defaultValue="true"
|
||||
app:argType="boolean" />
|
||||
</action>
|
||||
|
||||
<action
|
||||
|
@ -82,14 +82,14 @@
|
|||
app:popExitAnim="@anim/exit_anim">
|
||||
<argument
|
||||
android:name="hide"
|
||||
app:argType="boolean"
|
||||
android:defaultValue="true" />
|
||||
android:defaultValue="true"
|
||||
app:argType="boolean" />
|
||||
</action>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/navigation_settings_player"
|
||||
android:label="@string/title_settings"
|
||||
android:name="com.lagradost.cloudstream3.ui.settings.SettingsPlayer"
|
||||
android:label="@string/title_settings"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
|
@ -112,8 +112,8 @@
|
|||
|
||||
<fragment
|
||||
android:id="@+id/navigation_settings_ui"
|
||||
android:label="@string/title_settings"
|
||||
android:name="com.lagradost.cloudstream3.ui.settings.SettingsUI"
|
||||
android:label="@string/title_settings"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
|
@ -121,8 +121,8 @@
|
|||
|
||||
<fragment
|
||||
android:id="@+id/navigation_settings_general"
|
||||
android:label="@string/title_settings"
|
||||
android:name="com.lagradost.cloudstream3.ui.settings.SettingsGeneral"
|
||||
android:label="@string/title_settings"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
|
@ -130,8 +130,8 @@
|
|||
|
||||
<fragment
|
||||
android:id="@+id/navigation_settings_lang"
|
||||
android:label="@string/title_settings"
|
||||
android:name="com.lagradost.cloudstream3.ui.settings.SettingsLang"
|
||||
android:label="@string/title_settings"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
|
@ -139,8 +139,8 @@
|
|||
|
||||
<fragment
|
||||
android:id="@+id/navigation_settings_updates"
|
||||
android:label="@string/title_settings"
|
||||
android:name="com.lagradost.cloudstream3.ui.settings.SettingsUpdates"
|
||||
android:label="@string/title_settings"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
|
@ -148,8 +148,8 @@
|
|||
|
||||
<fragment
|
||||
android:id="@+id/navigation_settings_account"
|
||||
android:label="@string/title_settings"
|
||||
android:name="com.lagradost.cloudstream3.ui.settings.SettingsAccount"
|
||||
android:label="@string/title_settings"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
|
@ -164,23 +164,23 @@
|
|||
app:popExitAnim="@anim/exit_anim">
|
||||
<argument
|
||||
android:name="mainapi"
|
||||
app:argType="boolean"
|
||||
android:defaultValue="true" />
|
||||
android:defaultValue="true"
|
||||
app:argType="boolean" />
|
||||
<argument
|
||||
android:name="autosearch"
|
||||
app:argType="string"
|
||||
android:defaultValue="@null" />
|
||||
android:defaultValue="@null"
|
||||
app:argType="string" />
|
||||
</action>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/navigation_home"
|
||||
android:name="com.lagradost.cloudstream3.ui.home.HomeFragment"
|
||||
android:label="@string/title_home"
|
||||
tools:layout="@layout/fragment_home"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim">
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_home">
|
||||
<action
|
||||
android:id="@+id/action_navigation_home_to_navigation_results"
|
||||
app:destination="@id/navigation_results"
|
||||
|
@ -201,11 +201,11 @@
|
|||
android:id="@+id/navigation_search"
|
||||
android:name="com.lagradost.cloudstream3.ui.search.SearchFragment"
|
||||
android:label="@string/title_search"
|
||||
tools:layout="@layout/fragment_search"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim">
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_search">
|
||||
<action
|
||||
android:id="@+id/action_navigation_search_to_navigation_results"
|
||||
app:destination="@id/navigation_results"
|
||||
|
@ -219,11 +219,11 @@
|
|||
android:id="@+id/navigation_downloads"
|
||||
android:name="com.lagradost.cloudstream3.ui.download.DownloadFragment"
|
||||
android:label="@string/title_downloads"
|
||||
tools:layout="@layout/fragment_downloads"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim">
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_downloads">
|
||||
|
||||
<action
|
||||
android:id="@+id/action_navigation_downloads_to_navigation_download_child"
|
||||
|
@ -256,14 +256,14 @@
|
|||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/navigation_settings"
|
||||
android:layout_height="match_parent"
|
||||
android:name="com.lagradost.cloudstream3.ui.settings.SettingsFragment"
|
||||
tools:layout="@layout/main_settings"
|
||||
android:layout_height="match_parent"
|
||||
android:label="@string/title_settings"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim">
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/main_settings">
|
||||
<action
|
||||
android:id="@+id/action_navigation_settings_to_navigation_settings_ui"
|
||||
app:destination="@id/navigation_settings_ui"
|
||||
|
@ -300,56 +300,56 @@
|
|||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim" />
|
||||
<action
|
||||
android:id="@+id/action_navigation_settings_to_navigation_settings_general"
|
||||
app:destination="@id/navigation_settings_general"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
android:id="@+id/action_navigation_settings_to_navigation_settings_general"
|
||||
app:destination="@id/navigation_settings_general" />
|
||||
app:popExitAnim="@anim/exit_anim" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/navigation_subtitles"
|
||||
android:layout_height="match_parent"
|
||||
android:name="com.lagradost.cloudstream3.ui.subtitles.SubtitlesFragment"
|
||||
tools:layout="@layout/subtitle_settings"
|
||||
android:layout_height="match_parent"
|
||||
android:label="@string/subtitles_settings"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim" />
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/subtitle_settings" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/navigation_chrome_subtitles"
|
||||
android:layout_height="match_parent"
|
||||
android:name="com.lagradost.cloudstream3.ui.subtitles.ChromecastSubtitlesFragment"
|
||||
tools:layout="@layout/chromecast_subtitle_settings"
|
||||
android:layout_height="match_parent"
|
||||
android:label="@string/chromecast_subtitles_settings"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim" />
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/chromecast_subtitle_settings" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/navigation_quick_search"
|
||||
android:layout_height="match_parent"
|
||||
android:name="com.lagradost.cloudstream3.ui.quicksearch.QuickSearchFragment"
|
||||
tools:layout="@layout/quick_search"
|
||||
android:layout_height="match_parent"
|
||||
android:label="@string/search"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
android:label="@string/search" />
|
||||
tools:layout="@layout/quick_search" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/navigation_download_child"
|
||||
android:layout_height="match_parent"
|
||||
android:name="com.lagradost.cloudstream3.ui.download.DownloadChildFragment"
|
||||
tools:layout="@layout/fragment_child_downloads"
|
||||
android:layout_height="match_parent"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim">
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_child_downloads">
|
||||
<action
|
||||
android:id="@+id/action_navigation_download_child_to_navigation_player"
|
||||
app:destination="@id/navigation_player"
|
||||
|
@ -361,13 +361,13 @@
|
|||
|
||||
<fragment
|
||||
android:id="@+id/navigation_results"
|
||||
android:layout_height="match_parent"
|
||||
android:name="com.lagradost.cloudstream3.ui.result.ResultFragment"
|
||||
tools:layout="@layout/fragment_result_swipe"
|
||||
android:layout_height="match_parent"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim">
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_result_swipe">
|
||||
<action
|
||||
android:id="@+id/action_navigation_results_to_navigation_quick_search"
|
||||
app:destination="@id/navigation_quick_search"
|
||||
|
@ -385,12 +385,76 @@
|
|||
</fragment>
|
||||
|
||||
<fragment
|
||||
tools:layout="@layout/fragment_player"
|
||||
android:id="@+id/navigation_player"
|
||||
android:layout_height="match_parent"
|
||||
android:name="com.lagradost.cloudstream3.ui.player.GeneratorPlayer"
|
||||
android:layout_height="match_parent"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_player" />
|
||||
|
||||
|
||||
<fragment
|
||||
android:id="@+id/navigation_setup_language"
|
||||
android:name="com.lagradost.cloudstream3.ui.setup.SetupFragmentLanguage"
|
||||
android:layout_height="match_parent"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_setup_language">
|
||||
<action
|
||||
android:id="@+id/action_navigation_setup_language_to_navigation_setup_provider_languages"
|
||||
app:destination="@id/navigation_setup_provider_languages"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/navigation_setup_provider_languages"
|
||||
android:name="com.lagradost.cloudstream3.ui.setup.SetupFragmentProviderLanguage"
|
||||
android:layout_height="match_parent"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_setup_provider_languages">
|
||||
<action
|
||||
android:id="@+id/navigation_setup_provider_languages_to_navigation_setup_media"
|
||||
app:destination="@id/navigation_setup_media"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/navigation_setup_media"
|
||||
android:name="com.lagradost.cloudstream3.ui.setup.SetupFragmentMedia"
|
||||
android:layout_height="match_parent"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_setup_media">
|
||||
<action
|
||||
android:id="@+id/navigation_setup_media_to_navigation_setup_layout"
|
||||
app:destination="@id/navigation_setup_layout"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/navigation_setup_layout"
|
||||
android:name="com.lagradost.cloudstream3.ui.setup.SetupFragmentLayout"
|
||||
android:layout_height="match_parent"
|
||||
app:enterAnim="@anim/enter_anim"
|
||||
app:exitAnim="@anim/exit_anim"
|
||||
app:popEnterAnim="@anim/enter_anim"
|
||||
app:popExitAnim="@anim/exit_anim"
|
||||
tools:layout="@layout/fragment_setup_media" />
|
||||
</navigation>
|
|
@ -52,19 +52,20 @@
|
|||
<string name="poster_ui_key" translatable="false">poster_ui_key</string>
|
||||
<string name="subtitles_encoding_key" translatable="false">subtitles_encoding_key</string>
|
||||
<string name="override_site_key" translatable="false">override_site_key</string>
|
||||
<string name="redo_setup_key" translatable="false">redo_setup_key</string>
|
||||
|
||||
<!-- FORMAT MIGHT TRANSLATE, WILL CAUSE CRASH IF APPLIED WRONG -->
|
||||
<string name="extra_info_format" translatable="false" formatted="true">%d %s | %sMB</string>
|
||||
<string name="storage_size_format" translatable="false" formatted="true">%s • %sGB</string>
|
||||
<string name="download_size_format" translatable="false" formatted="true">%sMB / %sMB</string>
|
||||
<string name="mb_format" translatable="false" formatted="true">%dMB</string>
|
||||
<string name="episode_name_format" translatable="false" formatted="true">%s %s</string>
|
||||
<string name="ffw_text_format" translatable="false" formatted="true">+%d</string>
|
||||
<string name="rew_text_format" translatable="false" formatted="true">-%d</string>
|
||||
<string name="ffw_text_regular_format" translatable="false" formatted="true">%d</string>
|
||||
<string name="rew_text_regular_format" translatable="false" formatted="true">%d</string>
|
||||
<string name="rating_format" translatable="false" formatted="true">%.1f/10.0</string>
|
||||
<string name="year_format" translatable="false" formatted="true">%d</string>
|
||||
<string name="extra_info_format" formatted="true" translatable="false">%d %s | %sMB</string>
|
||||
<string name="storage_size_format" formatted="true" translatable="false">%s • %sGB</string>
|
||||
<string name="download_size_format" formatted="true" translatable="false">%sMB / %sMB</string>
|
||||
<string name="mb_format" formatted="true" translatable="false">%dMB</string>
|
||||
<string name="episode_name_format" formatted="true" translatable="false">%s %s</string>
|
||||
<string name="ffw_text_format" formatted="true" translatable="false">+%d</string>
|
||||
<string name="rew_text_format" formatted="true" translatable="false">-%d</string>
|
||||
<string name="ffw_text_regular_format" formatted="true" translatable="false">%d</string>
|
||||
<string name="rew_text_regular_format" formatted="true" translatable="false">%d</string>
|
||||
<string name="rating_format" formatted="true" translatable="false">%.1f/10.0</string>
|
||||
<string name="year_format" formatted="true" translatable="false">%d</string>
|
||||
<string name="app_dub_sub_episode_text_format" formatted="true">%s Ep %d</string>
|
||||
<string name="cast_format" formatted="true">Cast: %s</string>
|
||||
<string name="next_episode_format" formatted="true">Episode %d will be released in</string>
|
||||
|
@ -558,4 +559,14 @@
|
|||
<string name="trailer">Trailer</string>
|
||||
<string name="network_adress_example">Link to stream</string>
|
||||
<string name="referer">Referer</string>
|
||||
<string name="next">Next</string>
|
||||
<string name="provider_languages_tip">Watch videos in these languages</string>
|
||||
<string name="previous">Previous</string>
|
||||
<string name="skip_setup">Skip setup</string>
|
||||
<!-- TODO: Remove or change this placeholder text -->
|
||||
<string name="hello_blank_fragment">Hello blank fragment</string>
|
||||
<string name="app_layout_subtext">Change the look of the app to suit your device</string>
|
||||
<string name="crash_reporting_title">Crash reporting</string>
|
||||
<string name="preferred_media_subtext">What do you want to see</string>
|
||||
<string name="setup_done">Done</string>
|
||||
</resources>
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<Preference
|
||||
android:title="@string/check_for_update"
|
||||
app:summary="@string/app_version"
|
||||
app:icon="@drawable/ic_baseline_system_update_24"
|
||||
app:key="@string/manual_check_update_key"
|
||||
app:icon="@drawable/ic_baseline_system_update_24" />
|
||||
app:summary="@string/app_version" />
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/baseline_save_as_24"
|
||||
|
@ -18,32 +18,36 @@
|
|||
android:title="@string/restore_settings" />
|
||||
|
||||
<Preference
|
||||
android:icon="@drawable/baseline_description_24"
|
||||
android:key="@string/show_logcat_key"
|
||||
android:title="@string/show_log_cat"
|
||||
android:icon="@drawable/baseline_description_24" />
|
||||
android:title="@string/show_log_cat" />
|
||||
<SwitchPreference
|
||||
android:key="acra.disable"
|
||||
android:defaultValue="false"
|
||||
android:icon="@drawable/ic_baseline_bug_report_24"
|
||||
android:title="@string/pref_disable_acra"
|
||||
android:key="acra.disable"
|
||||
android:summaryOff="@string/bug_report_settings_off"
|
||||
android:summaryOn="@string/bug_report_settings_on"
|
||||
android:defaultValue="false" />
|
||||
android:title="@string/pref_disable_acra" />
|
||||
<SwitchPreference
|
||||
app:key="@string/auto_update_key"
|
||||
android:title="@string/updates_settings"
|
||||
android:icon="@drawable/ic_baseline_notifications_active_24"
|
||||
android:summary="@string/updates_settings_des"
|
||||
android:title="@string/updates_settings"
|
||||
app:defaultValue="true"
|
||||
android:icon="@drawable/ic_baseline_notifications_active_24" />
|
||||
app:key="@string/auto_update_key" />
|
||||
<SwitchPreference
|
||||
app:key="@string/prerelease_update_key"
|
||||
android:title="@string/uprereleases_settings"
|
||||
android:icon="@drawable/ic_baseline_developer_mode_24"
|
||||
android:summary="@string/uprereleases_settings_des"
|
||||
android:title="@string/uprereleases_settings"
|
||||
app:defaultValue="false"
|
||||
android:icon="@drawable/ic_baseline_developer_mode_24" />
|
||||
app:key="@string/prerelease_update_key" />
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:icon="@drawable/netflix_download"
|
||||
android:key="@string/killswitch_key"
|
||||
android:defaultValue="true"
|
||||
android:summary="@string/killswitch_settings_des"
|
||||
android:title="@string/killswitch_settings" />
|
||||
<Preference
|
||||
app:key="@string/redo_setup_key"
|
||||
android:icon="@drawable/ic_baseline_construction_24"
|
||||
android:title="Redo setup process" />
|
||||
</PreferenceScreen>
|
Loading…
Reference in a new issue