Converted BackupActivity to fragment

This commit is contained in:
Prathamesh More 2021-10-09 13:58:21 +05:30
parent 5a73565182
commit 6e3c1aa742
11 changed files with 134 additions and 177 deletions

View file

@ -64,6 +64,7 @@ class SettingsActivity : AbsThemeActivity(), ColorCallback, OnThemeChangedListen
R.id.personalizeSettingsFragment -> R.string.personalize
R.id.themeSettingsFragment -> R.string.general_settings_title
R.id.aboutActivity -> R.string.action_about
R.id.backup_restore_settings -> R.string.backup_restore_title
else -> R.id.action_settings
}
return getString(idRes)

View file

@ -1,92 +0,0 @@
package code.name.monkey.retromusic.activities.backup
import android.os.Bundle
import android.widget.Toast
import androidx.activity.viewModels
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsThemeActivity
import code.name.monkey.retromusic.adapter.backup.BackupAdapter
import code.name.monkey.retromusic.databinding.ActivityBackupBinding
import code.name.monkey.retromusic.helper.BackupHelper
import com.google.android.material.shape.MaterialShapeDrawable
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
class BackupActivity : AbsThemeActivity(), BackupAdapter.BackupClickedListener {
private val backupViewModel by viewModels<BackupViewModel>()
private var backupAdapter: BackupAdapter? = null
lateinit var binding: ActivityBackupBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityBackupBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.appBarLayout.statusBarForeground =
MaterialShapeDrawable.createWithElevationOverlay(this)
binding.toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black)
initAdapter()
setupRecyclerview()
backupViewModel.backupsLiveData.observe(this) {
if (it.isNotEmpty())
backupAdapter?.swapDataset(it)
else
backupAdapter?.swapDataset(listOf())
}
backupViewModel.loadBackups()
setupButtons()
}
private fun setupButtons() {
binding.createBackup.setOnClickListener {
lifecycleScope.launch {
BackupHelper.createBackup(this@BackupActivity)
backupViewModel.loadBackups()
withContext(Dispatchers.Main) {
Toast.makeText(
this@BackupActivity,
"Backup Completed Successfully",
Toast.LENGTH_SHORT
).show()
}
}
}
}
private fun initAdapter() {
backupAdapter = BackupAdapter(this@BackupActivity, ArrayList(), this)
backupAdapter?.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
override fun onChanged() {
super.onChanged()
checkIsEmpty()
}
})
}
private fun checkIsEmpty() {
binding.emptyText.setText(R.string.no_backups_found)
(backupAdapter!!.itemCount == 0).run {
binding.empty.isVisible = this
binding.backupTitle.isVisible = this
}
}
fun setupRecyclerview() {
binding.backupRecyclerview.apply {
layoutManager = LinearLayoutManager(context)
adapter = backupAdapter
}
}
override fun onBackupClicked(file: File) {
lifecycleScope.launch {
backupViewModel.restoreBackup(this@BackupActivity, file)
}
}
}

View file

@ -1,41 +0,0 @@
package code.name.monkey.retromusic.activities.backup
import android.app.Activity
import android.content.Intent
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import code.name.monkey.retromusic.helper.BackupHelper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
import kotlin.system.exitProcess
class BackupViewModel : ViewModel() {
private val backupsMutableLiveData = MutableLiveData<List<File>>()
val backupsLiveData = backupsMutableLiveData
fun loadBackups() {
viewModelScope.launch {
File(BackupHelper.backupRootPath).listFiles { _, name ->
return@listFiles name.endsWith(BackupHelper.BACKUP_EXTENSION)
}?.toList()?.let {
backupsMutableLiveData.value = it
}
}
}
suspend fun restoreBackup(activity: Activity, file: File) {
BackupHelper.restoreBackup(activity, file)
withContext(Dispatchers.Main) {
val intent = Intent(
activity,
activity::class.java
)
activity.startActivity(intent)
exitProcess(0)
}
}
}

View file

@ -1,12 +0,0 @@
package code.name.monkey.retromusic.activities.backup
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import code.name.monkey.retromusic.R
class RestoreActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_restore)
}
}