diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index 86615f01..23fc936e 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -330,8 +330,9 @@
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/CommandTemplatesActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/CommandTemplatesActivity.kt
index 0438dec5..803fc890 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/CommandTemplatesActivity.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/CommandTemplatesActivity.kt
@@ -71,7 +71,7 @@ class CommandTemplatesActivity : AppCompatActivity(), TemplatesAdapter.OnItemCli
withContext(Dispatchers.IO){
val count = commandTemplateViewModel.importFromClipboard()
runOnUiThread{
- Toast.makeText(this@CommandTemplatesActivity, "$count items imported!", Toast.LENGTH_LONG).show()
+ Toast.makeText(this@CommandTemplatesActivity, "${getString(R.string.items_imported)} (${count})", Toast.LENGTH_LONG).show()
}
}
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsActivity.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsActivity.kt
index 71268aef..4bb4c60d 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsActivity.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsActivity.kt
@@ -1,20 +1,19 @@
package com.deniscerri.ytdlnis.ui.more.settings
import android.content.Context
-import android.content.res.Configuration
-import android.os.Build
+import android.content.SharedPreferences
import android.os.Bundle
-import android.os.LocaleList
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentManager
import com.deniscerri.ytdlnis.R
import com.google.android.material.appbar.MaterialToolbar
-import java.util.*
class SettingsActivity : AppCompatActivity() {
private var fm: FragmentManager? = null
private var topAppBar: MaterialToolbar? = null
+ private lateinit var sharedPreferences: SharedPreferences
+ private lateinit var editor: SharedPreferences.Editor
var context: Context? = null
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -27,34 +26,4 @@ class SettingsActivity : AppCompatActivity() {
.replace(R.id.settings_frame_layout, SettingsFragment())
.commit()
}
-
- fun setLocale(l: String){
-
- val locale = Locale(l)
- Locale.setDefault(locale)
- val config: Configuration = this.resources.configuration
- if (Build.VERSION.SDK_INT >= 24){
- Locale.setDefault(locale)
- config.setLocales(LocaleList(locale))
- this.resources.updateConfiguration(config, this.resources.displayMetrics)
- onConfigurationChanged(config)
- }else{
- Locale.setDefault(locale)
- config.locale = locale
- config.setLayoutDirection(locale)
- this.resources.updateConfiguration(config, this.resources.displayMetrics)
- onConfigurationChanged(config)
- }
- restartActivity()
-
- }
-
- private fun restartActivity() {
-// val intent = intent
-// finish()
-// startActivity(Intent(this, MainActivity::class.java))
- recreate()
-
- }
-
}
\ No newline at end of file
diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt
index d9cdd173..a69ca73f 100644
--- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt
+++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt
@@ -1,14 +1,17 @@
package com.deniscerri.ytdlnis.ui.more.settings
import android.app.Activity
+import android.content.ClipboardManager
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.provider.Settings
+import android.util.Log
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
+import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.LocaleListCompat
import androidx.preference.*
@@ -16,6 +19,9 @@ import com.deniscerri.ytdlnis.BuildConfig
import com.deniscerri.ytdlnis.R
import com.deniscerri.ytdlnis.util.FileUtil
import com.deniscerri.ytdlnis.util.UpdateUtil
+import kotlinx.serialization.decodeFromString
+import kotlinx.serialization.encodeToString
+import kotlinx.serialization.json.*
import java.util.*
class SettingsFragment : PreferenceFragmentCompat() {
@@ -47,9 +53,15 @@ class SettingsFragment : PreferenceFragmentCompat() {
private var updateYTDL: Preference? = null
private var updateNightlyYTDL: SwitchPreferenceCompat? = null
private var updateApp: SwitchPreferenceCompat? = null
+ private var exportPreferences : Preference? = null
+ private var importPreferences : Preference? = null
private var version: Preference? = null
+
+
private var updateUtil: UpdateUtil? = null
private var fileUtil: FileUtil? = null
+
+ private val jsonFormat = Json { prettyPrint = true }
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.root_preferences, rootKey)
updateUtil = UpdateUtil(requireContext())
@@ -76,7 +88,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
limitRate = findPreference("limit_rate")
aria2 = findPreference("aria2")
logDownloads = findPreference("log_downloads")
- sponsorblockFilters = findPreference("sponsorblock_filter")
+ sponsorblockFilters = findPreference("sponsorblock_filters")
mtime = findPreference("mtime")
embedSubtitles = findPreference("embed_subtitles")
filenameTemplate = findPreference("file_name_template")
@@ -90,6 +102,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
updateYTDL = findPreference("update_ytdl")
updateNightlyYTDL = findPreference("nightly_ytdl")
updateApp = findPreference("update_app")
+ exportPreferences = findPreference("export_preferences")
+ importPreferences = findPreference("import_preferences")
version = findPreference("version")
version!!.summary = BuildConfig.VERSION_NAME
@@ -359,6 +373,75 @@ class SettingsFragment : PreferenceFragmentCompat() {
editor.apply()
true
}
+// exportPreferences!!.onPreferenceClickListener =
+// Preference.OnPreferenceClickListener {
+// val prefs = preferences.all
+// val json = buildJsonObject {
+// putJsonArray("YTDLnis_Preferences") {
+// prefs.forEach {
+// add(buildJsonObject {
+// put("key", it.key)
+// put("value", it.value.toString())
+// put("type", it.value!!::class.simpleName)
+// })
+// }
+// }
+// }
+// val string = jsonFormat.encodeToString(json)
+// val clipboard: ClipboardManager =
+// requireContext().getSystemService(AppCompatActivity.CLIPBOARD_SERVICE) as ClipboardManager
+// clipboard.setText(string)
+// true
+// }
+// importPreferences!!.onPreferenceClickListener =
+// Preference.OnPreferenceClickListener {
+// val clipboard = requireContext().getSystemService(AppCompatActivity.CLIPBOARD_SERVICE) as ClipboardManager
+// val clip = clipboard.primaryClip!!.getItemAt(0).text.toString()
+// try{
+// val preferencesKeys = preferences.all.map { it.key }
+// var count = 0
+// jsonFormat.decodeFromString(clip).run {
+// val prefs = this.jsonObject["YTDLnis_Preferences"]!!.jsonArray
+// prefs.forEach {
+// val key : String = it.jsonObject["key"].toString().replace("\"", "")
+// if (preferencesKeys.contains(key)){
+// when(it.jsonObject["type"].toString().replace("\"", "")){
+// "String" -> {
+// val value = it.jsonObject["value"].toString().replace("\"", "")
+// Log.e("aa", value.toString())
+// editor.putString(key, value)
+// editor.apply()
+// }
+// "Boolean" -> {
+// val value = it.jsonObject["value"].toString().replace("\"", "").toBoolean()
+// Log.e("aa", value.toString())
+// editor.putBoolean(key, value)
+// editor.apply()
+// }
+// "Int" -> {
+// val value = it.jsonObject["value"].toString().replace("\"", "").toInt()
+// Log.e("aa", value.toString())
+// editor.putInt(key, value)
+// editor.apply()
+// }
+// "HashSet" -> {
+// val value = hashSetOf(it.jsonObject["value"].toString().replace("(\")|(\\[)|(])".toRegex(), ""))
+// Log.e("aa", value.toString())
+// editor.putStringSet(key, value)
+// editor.apply()
+// }
+// }
+// count++
+// }
+// }
+// }
+// Toast.makeText(requireContext(), "${getString(R.string.items_imported)} (${count})", Toast.LENGTH_LONG).show()
+// }catch (e: Exception){
+// e.printStackTrace()
+// }
+//
+// true
+// }
version!!.onPreferenceClickListener =
Preference.OnPreferenceClickListener {
if (!updateUtil!!.updateApp()) {
diff --git a/app/src/main/res/drawable/ic_discord.xml b/app/src/main/res/drawable/ic_discord.xml
new file mode 100644
index 00000000..5a653ff5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_discord.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_telegram.xml b/app/src/main/res/drawable/ic_telegram.xml
new file mode 100644
index 00000000..344e12bf
--- /dev/null
+++ b/app/src/main/res/drawable/ic_telegram.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5b5daf9d..f6d2d363 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -214,4 +214,5 @@
Clear Cancelled
Clear Errored
Split By Chapters
+ Items Imported
\ No newline at end of file
diff --git a/app/src/main/res/xml/more_preferences.xml b/app/src/main/res/xml/more_preferences.xml
index 2ec4e2f1..38adf026 100644
--- a/app/src/main/res/xml/more_preferences.xml
+++ b/app/src/main/res/xml/more_preferences.xml
@@ -49,6 +49,27 @@
+
+
+
+
+
+
+
+
@@ -232,10 +232,27 @@
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file