diff --git a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt index 08b281b1..a242e2b1 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt @@ -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() } ) } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt index 108472e7..55731398 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt @@ -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("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