Show ProgressDrawable when backup
This commit is contained in:
@@ -118,7 +118,7 @@ class MainActivity :
|
||||
onFailure = {
|
||||
Snackbar.make(binding.contents.recyclerview, R.string.settings_backup_failed, Snackbar.LENGTH_LONG).show()
|
||||
}, onSuccess = {
|
||||
Snackbar.make(binding.contents.recyclerview, getString(R.string.settings_restore_success, it.size), Snackbar.LENGTH_LONG).show()
|
||||
Snackbar.make(binding.contents.recyclerview, getString(R.string.settings_restore_success, it), Snackbar.LENGTH_LONG).show()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -19,14 +19,21 @@
|
||||
package xyz.quaver.pupil.ui.fragment
|
||||
|
||||
import android.content.Intent
|
||||
import android.content.res.Resources
|
||||
import android.graphics.PorterDuff
|
||||
import android.graphics.PorterDuffColorFilter
|
||||
import android.os.Bundle
|
||||
import android.widget.EditText
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.graphics.drawable.DrawableCompat
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.swiperefreshlayout.widget.CircularProgressDrawable
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.buildJsonObject
|
||||
import okhttp3.*
|
||||
@@ -35,6 +42,7 @@ import xyz.quaver.pupil.client
|
||||
import xyz.quaver.pupil.util.restore
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
class ManageFavoritesFragment : PreferenceFragmentCompat() {
|
||||
|
||||
@@ -48,6 +56,25 @@ class ManageFavoritesFragment : PreferenceFragmentCompat() {
|
||||
val context = context ?: return
|
||||
|
||||
findPreference<Preference>("backup")?.setOnPreferenceClickListener {
|
||||
val iconSize = (24 * Resources.getSystem().displayMetrics.density).roundToInt()
|
||||
val strokeWidth = (3 * Resources.getSystem().displayMetrics.density)
|
||||
|
||||
val icon = object: CircularProgressDrawable(context) {
|
||||
override fun getIntrinsicHeight(): Int {
|
||||
return iconSize
|
||||
}
|
||||
|
||||
override fun getIntrinsicWidth(): Int {
|
||||
return iconSize
|
||||
}
|
||||
}
|
||||
|
||||
icon.strokeWidth = strokeWidth
|
||||
icon.colorFilter = PorterDuffColorFilter(ContextCompat.getColor(context, R.color.colorAccent), PorterDuff.Mode.SRC_IN)
|
||||
DrawableCompat.setTint(icon, ContextCompat.getColor(context, R.color.colorAccent))
|
||||
icon.start()
|
||||
it.icon = icon
|
||||
|
||||
val favorites = runCatching {
|
||||
Json.parseToJsonElement(File(ContextCompat.getDataDir(context), "favorites.json").readText())
|
||||
}.getOrNull()
|
||||
@@ -73,10 +100,18 @@ class ManageFavoritesFragment : PreferenceFragmentCompat() {
|
||||
client.newCall(request).enqueue(object: Callback {
|
||||
override fun onFailure(call: Call, e: IOException) {
|
||||
val view = view ?: return
|
||||
|
||||
MainScope().launch {
|
||||
it.icon = null
|
||||
}
|
||||
Snackbar.make(view, R.string.settings_backup_failed, Snackbar.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
override fun onResponse(call: Call, response: Response) {
|
||||
MainScope().launch {
|
||||
it.icon = null
|
||||
}
|
||||
|
||||
if (response.code() != 200) {
|
||||
response.close()
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user