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