Use the use(), edit() and parseAsHtml() extension functions.

This commit is contained in:
Isira Seneviratne 2022-09-17 14:59:07 +05:30
parent fa0a993418
commit 4fff581457
2 changed files with 35 additions and 68 deletions

View File

@ -7,7 +7,8 @@ import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.Html import androidx.core.text.HtmlCompat
import androidx.core.text.parseAsHtml
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.constants.DONATE_URL import com.github.libretube.constants.DONATE_URL
import com.github.libretube.constants.GITHUB_URL import com.github.libretube.constants.GITHUB_URL
@ -116,19 +117,10 @@ class AboutActivity : BaseActivity() {
} }
private fun showLicense() { private fun showLicense() {
val licenseString = assets val licenseHtml = assets.open("gpl3.html")
?.open("gpl3.html") .bufferedReader()
?.bufferedReader() .use { it.readText() }
.use { .parseAsHtml(HtmlCompat.FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH)
it?.readText()
}
@Suppress("DEPRECATION")
val licenseHtml = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Html.fromHtml(licenseString.toString(), 1)
} else {
Html.fromHtml(licenseString.toString())
}
MaterialAlertDialogBuilder(this) MaterialAlertDialogBuilder(this)
.setPositiveButton(getString(R.string.okay)) { _, _ -> } .setPositiveButton(getString(R.string.okay)) { _, _ -> }

View File

@ -1,47 +1,33 @@
package com.github.libretube.util package com.github.libretube.util
import android.content.Context import android.content.Context
import android.content.SharedPreferences
import android.net.Uri import android.net.Uri
import androidx.core.content.edit
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import java.io.FileInputStream import java.io.FileInputStream
import java.io.FileOutputStream import java.io.FileOutputStream
import java.io.IOException
import java.io.ObjectInputStream import java.io.ObjectInputStream
import java.io.ObjectOutputStream import java.io.ObjectOutputStream
/** /**
* Backup and restore the preferences * Backup and restore the preferences
*/ */
class BackupHelper( class BackupHelper(private val context: Context) {
private val context: Context
) {
/** /**
* Backup the default shared preferences to a file * Backup the default shared preferences to a file
*/ */
fun backupSharedPreferences(uri: Uri?) { fun backupSharedPreferences(uri: Uri?) {
if (uri == null) return if (uri == null) return
var output: ObjectOutputStream? = null
try { try {
val fileDescriptor = context.contentResolver.openFileDescriptor(uri, "w")?.use {
context.contentResolver.openFileDescriptor(uri, "w")?.fileDescriptor ObjectOutputStream(FileOutputStream(it.fileDescriptor)).use { output ->
output = ObjectOutputStream(FileOutputStream(fileDescriptor)) val pref = PreferenceManager.getDefaultSharedPreferences(context)
val pref: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) // write all preference objects to the output file
// write all preference objects to the output file output.writeObject(pref.all)
output.writeObject(pref.all) }
}
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} finally {
try {
// close the outputStream
if (output != null) {
output.flush()
output.close()
}
} catch (ex: IOException) {
ex.printStackTrace()
}
} }
} }
@ -51,42 +37,31 @@ class BackupHelper(
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
fun restoreSharedPreferences(uri: Uri?) { fun restoreSharedPreferences(uri: Uri?) {
if (uri == null) return if (uri == null) return
var input: ObjectInputStream? = null
try { try {
val fileDescriptor = context.contentResolver.openFileDescriptor(uri, "r")?.use {
context.contentResolver.openFileDescriptor(uri, "r")?.fileDescriptor ObjectInputStream(FileInputStream(it.fileDescriptor)).use { input ->
input = ObjectInputStream(FileInputStream(fileDescriptor)) // map all the preference keys and their values
val editor = PreferenceManager.getDefaultSharedPreferences(context).edit() val entries = input.readObject() as Map<String, *>
PreferenceManager.getDefaultSharedPreferences(context).edit(commit = true) {
// clear the previous settings
clear()
// clear the previous settings // decide for each preference which type it is and save it to the
editor.clear() // preferences
for ((key, value) in entries) {
// map all the preference keys and their values when (value) {
val entries = input.readObject() as Map<String, *> is Boolean -> putBoolean(key, value)
is Float -> putFloat(key, value)
// decide for each preference which type it is and save it to the preferences is Int -> putInt(key, value)
for ((key, value) in entries) { is Long -> putLong(key, value)
if (value is Boolean) { is String -> putString(key, value)
editor.putBoolean(key, value) }
} else if (value is Float) { }
editor.putFloat(key, value) }
} else if (value is Int) { }
editor.putInt(key, value)
} else if (value is Long) {
editor.putLong(key, value)
} else if (value is String) editor.putString(key, value)
} }
editor.commit()
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} finally {
try {
if (input != null) {
input.close()
}
} catch (ex: IOException) {
ex.printStackTrace()
}
} }
} }
} }