mirror of
https://github.com/cmclark00/RetroMusicPlayer.git
synced 2025-05-21 09:25:21 +01:00
[Backup & Restore] Better Backup & Restore
Removed Playing Queue, Most Played, History, etc. from Backup. Better Backup & Restore for Playlists & Custom Artist Images.
This commit is contained in:
parent
076fc1d9c5
commit
1d77b3155a
40 changed files with 96 additions and 114 deletions
|
@ -29,7 +29,8 @@ class BackupViewModel : ViewModel() {
|
|||
|
||||
suspend fun restoreBackup(activity: Activity, inputStream: InputStream?, contents: List<BackupContent>) {
|
||||
BackupHelper.restoreBackup(activity, inputStream, contents)
|
||||
if (contents.contains(BackupContent.SETTINGS)) {
|
||||
if (contents.contains(BackupContent.SETTINGS) or contents.contains(BackupContent.CUSTOM_ARTIST_IMAGES)) {
|
||||
// We have to restart App when Preferences i.e. Settings or Artist Images are to be restored
|
||||
withContext(Dispatchers.Main) {
|
||||
val intent = Intent(
|
||||
activity,
|
||||
|
|
|
@ -3,9 +3,11 @@ package code.name.monkey.retromusic.fragments.backup
|
|||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.provider.MediaStore
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import code.name.monkey.retromusic.databinding.ActivityRestoreBinding
|
||||
import code.name.monkey.retromusic.helper.BackupContent
|
||||
|
@ -27,6 +29,7 @@ class RestoreActivity : AppCompatActivity() {
|
|||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityRestoreBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
setWidth()
|
||||
val backupUri = intent?.data
|
||||
binding.backupName.setText(getFileName(backupUri))
|
||||
binding.cancelButton.setOnClickListener {
|
||||
|
@ -35,7 +38,6 @@ class RestoreActivity : AppCompatActivity() {
|
|||
binding.restoreButton.setOnClickListener {
|
||||
val backupContents = mutableListOf<BackupContent>()
|
||||
if (binding.checkSettings.isChecked) backupContents.add(SETTINGS)
|
||||
if (binding.checkQueue.isChecked) backupContents.add(QUEUE)
|
||||
if (binding.checkDatabases.isChecked) backupContents.add(PLAYLISTS)
|
||||
if (binding.checkArtistImages.isChecked) backupContents.add(CUSTOM_ARTIST_IMAGES)
|
||||
if (binding.checkUserImages.isChecked) backupContents.add(USER_IMAGES)
|
||||
|
@ -82,4 +84,9 @@ class RestoreActivity : AppCompatActivity() {
|
|||
}
|
||||
return "Backup"
|
||||
}
|
||||
|
||||
private fun setWidth() {
|
||||
val width = resources.displayMetrics.widthPixels * 0.8
|
||||
binding.root.updateLayoutParams<ViewGroup.LayoutParams> { this.width = width.toInt() }
|
||||
}
|
||||
}
|
|
@ -29,6 +29,7 @@ import android.widget.Toast
|
|||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import code.name.monkey.retromusic.Constants.USER_BANNER
|
||||
import code.name.monkey.retromusic.Constants.USER_PROFILE
|
||||
|
@ -50,7 +51,6 @@ import com.bumptech.glide.request.target.Target
|
|||
import com.github.dhaval2404.imagepicker.ImagePicker
|
||||
import com.github.dhaval2404.imagepicker.constant.ImageProvider
|
||||
import com.google.android.material.transition.MaterialContainerTransform
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
@ -202,15 +202,15 @@ class UserInfoFragment : Fragment() {
|
|||
}
|
||||
|
||||
private fun saveImage(bitmap: Bitmap, fileName: String) {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
val appDir = requireContext().filesDir
|
||||
val file = File(appDir, fileName)
|
||||
var successful = false
|
||||
runCatching {
|
||||
val os = BufferedOutputStream(FileOutputStream(file))
|
||||
successful = ImageUtil.resizeBitmap(bitmap, 2048)
|
||||
.compress(Bitmap.CompressFormat.WEBP, 100, os)
|
||||
withContext(Dispatchers.IO) { os.close() }
|
||||
BufferedOutputStream(FileOutputStream(file)).use {
|
||||
successful = ImageUtil.resizeBitmap(bitmap, 2048)
|
||||
.compress(Bitmap.CompressFormat.WEBP, 100, it)
|
||||
}
|
||||
}.onFailure {
|
||||
it.printStackTrace()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue