mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 16:00:31 +05:30
add settings entry
This commit is contained in:
parent
26ec53f654
commit
9fa7bb9c6d
@ -1,7 +1,10 @@
|
|||||||
package com.github.libretube.dialogs
|
package com.github.libretube.dialogs
|
||||||
|
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
@ -9,10 +12,24 @@ import com.github.libretube.adapters.BackupOptionsAdapter
|
|||||||
import com.github.libretube.databinding.DialogBackupBinding
|
import com.github.libretube.databinding.DialogBackupBinding
|
||||||
import com.github.libretube.db.DatabaseHolder
|
import com.github.libretube.db.DatabaseHolder
|
||||||
import com.github.libretube.obj.BackupFile
|
import com.github.libretube.obj.BackupFile
|
||||||
|
import com.github.libretube.util.BackupHelper
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
class BackupDialog() : DialogFragment() {
|
class BackupDialog() : DialogFragment() {
|
||||||
private lateinit var binding: DialogBackupBinding
|
private lateinit var binding: DialogBackupBinding
|
||||||
|
private lateinit var createBackupFile: ActivityResultLauncher<String>
|
||||||
|
|
||||||
|
val backupFile = BackupFile()
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
createBackupFile = registerForActivityResult(
|
||||||
|
ActivityResultContracts.CreateDocument("application/json")
|
||||||
|
) { uri: Uri? ->
|
||||||
|
BackupHelper(requireContext()).advancedBackup(uri, backupFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
val backupOptions = listOf(
|
val backupOptions = listOf(
|
||||||
@ -25,8 +42,6 @@ class BackupDialog() : DialogFragment() {
|
|||||||
|
|
||||||
val selected = mutableListOf(false, false, false, false, false)
|
val selected = mutableListOf(false, false, false, false, false)
|
||||||
|
|
||||||
val backupFile = BackupFile()
|
|
||||||
|
|
||||||
binding = DialogBackupBinding.inflate(layoutInflater)
|
binding = DialogBackupBinding.inflate(layoutInflater)
|
||||||
binding.backupOptionsRecycler.layoutManager = LinearLayoutManager(context)
|
binding.backupOptionsRecycler.layoutManager = LinearLayoutManager(context)
|
||||||
binding.backupOptionsRecycler.adapter = BackupOptionsAdapter(backupOptions) { position, isChecked ->
|
binding.backupOptionsRecycler.adapter = BackupOptionsAdapter(backupOptions) { position, isChecked ->
|
||||||
@ -43,6 +58,8 @@ class BackupDialog() : DialogFragment() {
|
|||||||
if (selected[2]) backupFile.searchHistory = DatabaseHolder.db.searchHistoryDao().getAll()
|
if (selected[2]) backupFile.searchHistory = DatabaseHolder.db.searchHistoryDao().getAll()
|
||||||
if (selected[3]) backupFile.localSubscriptions = DatabaseHolder.db.localSubscriptionDao().getAll()
|
if (selected[3]) backupFile.localSubscriptions = DatabaseHolder.db.localSubscriptionDao().getAll()
|
||||||
if (selected[4]) backupFile.customInstances = DatabaseHolder.db.customInstanceDao().getAll()
|
if (selected[4]) backupFile.customInstances = DatabaseHolder.db.customInstanceDao().getAll()
|
||||||
|
|
||||||
|
createBackupFile.launch("application/json")
|
||||||
}
|
}
|
||||||
.create()
|
.create()
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import androidx.preference.Preference
|
|||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.activities.SettingsActivity
|
import com.github.libretube.activities.SettingsActivity
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
|
import com.github.libretube.dialogs.BackupDialog
|
||||||
import com.github.libretube.util.BackupHelper
|
import com.github.libretube.util.BackupHelper
|
||||||
import com.github.libretube.util.ImageHelper
|
import com.github.libretube.util.ImageHelper
|
||||||
import com.github.libretube.util.PreferenceHelper
|
import com.github.libretube.util.PreferenceHelper
|
||||||
@ -18,24 +19,32 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|||||||
|
|
||||||
class AdvancedSettings : MaterialPreferenceFragment() {
|
class AdvancedSettings : MaterialPreferenceFragment() {
|
||||||
|
|
||||||
/**
|
// backup and restore prefs
|
||||||
* result listeners for importing and exporting subscriptions
|
private lateinit var getPrefFile: ActivityResultLauncher<String>
|
||||||
*/
|
private lateinit var createPrefFile: ActivityResultLauncher<String>
|
||||||
private lateinit var getContent: ActivityResultLauncher<String>
|
|
||||||
private lateinit var createFile: ActivityResultLauncher<String>
|
// backup and restore database
|
||||||
|
private lateinit var getBackupFile: ActivityResultLauncher<String>
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
getContent =
|
getPrefFile =
|
||||||
registerForActivityResult(
|
registerForActivityResult(
|
||||||
ActivityResultContracts.GetContent()
|
ActivityResultContracts.GetContent()
|
||||||
) { uri: Uri? ->
|
) { uri: Uri? ->
|
||||||
BackupHelper(requireContext()).restoreSharedPreferences(uri)
|
BackupHelper(requireContext()).restoreSharedPreferences(uri)
|
||||||
}
|
}
|
||||||
createFile = registerForActivityResult(
|
createPrefFile = registerForActivityResult(
|
||||||
CreateDocument("application/json")
|
CreateDocument("application/json")
|
||||||
) { uri: Uri? ->
|
) { uri: Uri? ->
|
||||||
BackupHelper(requireContext()).backupSharedPreferences(uri)
|
BackupHelper(requireContext()).backupSharedPreferences(uri)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getBackupFile =
|
||||||
|
registerForActivityResult(
|
||||||
|
ActivityResultContracts.GetContent()
|
||||||
|
) { uri: Uri? ->
|
||||||
|
BackupHelper(requireContext()).restoreAdvancedBackup(uri)
|
||||||
|
}
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,18 +68,31 @@ class AdvancedSettings : MaterialPreferenceFragment() {
|
|||||||
|
|
||||||
val backupSettings = findPreference<Preference>(PreferenceKeys.BACKUP_SETTINGS)
|
val backupSettings = findPreference<Preference>(PreferenceKeys.BACKUP_SETTINGS)
|
||||||
backupSettings?.setOnPreferenceClickListener {
|
backupSettings?.setOnPreferenceClickListener {
|
||||||
createFile.launch("preferences.xml")
|
createPrefFile.launch("preferences.xml")
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
val restoreSettings = findPreference<Preference>(PreferenceKeys.RESTORE_SETTINGS)
|
val restoreSettings = findPreference<Preference>(PreferenceKeys.RESTORE_SETTINGS)
|
||||||
restoreSettings?.setOnPreferenceClickListener {
|
restoreSettings?.setOnPreferenceClickListener {
|
||||||
getContent.launch("*/*")
|
getPrefFile.launch("*/*")
|
||||||
// reset the token
|
// reset the token
|
||||||
PreferenceHelper.setToken("")
|
PreferenceHelper.setToken("")
|
||||||
activity?.recreate()
|
activity?.recreate()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val advancesBackup = findPreference<Preference>("backup")
|
||||||
|
advancesBackup?.setOnPreferenceClickListener {
|
||||||
|
BackupDialog()
|
||||||
|
.show(childFragmentManager, null)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
val restoreAdvancedBackup = findPreference<Preference>("restore")
|
||||||
|
restoreAdvancedBackup?.setOnPreferenceClickListener {
|
||||||
|
getBackupFile.launch("application/json")
|
||||||
|
true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showResetDialog() {
|
private fun showResetDialog() {
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory app:title="@string/backup_restore">
|
<PreferenceCategory app:title="@string/preferences">
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:icon="@drawable/ic_backup"
|
android:icon="@drawable/ic_backup"
|
||||||
@ -46,4 +46,18 @@
|
|||||||
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
<PreferenceCategory app:title="@string/backup_restore">
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:icon="@drawable/ic_backup"
|
||||||
|
app:key="backup"
|
||||||
|
app:title="@string/backup" />
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:icon="@drawable/ic_restore"
|
||||||
|
app:key="restore"
|
||||||
|
app:title="@string/restore" />
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
Loading…
x
Reference in New Issue
Block a user