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