PlayerAndroid/app/src/main/java/code/name/monkey/retromusic/fragments/backup/BackupFragment.kt

80 lines
2.6 KiB
Kotlin
Raw Normal View History

2021-10-09 08:28:21 +00:00
package code.name.monkey.retromusic.fragments.backup
import android.os.Bundle
2021-10-09 08:28:21 +00:00
import android.view.View
import androidx.core.view.isVisible
2021-10-09 08:28:21 +00:00
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
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.adapter.backup.BackupAdapter
2021-10-09 08:28:21 +00:00
import code.name.monkey.retromusic.databinding.FragmentBackupBinding
import code.name.monkey.retromusic.helper.BackupHelper
import kotlinx.coroutines.launch
2021-10-09 07:59:14 +00:00
import java.io.File
2021-10-09 08:28:21 +00:00
class BackupFragment : Fragment(R.layout.fragment_backup), BackupAdapter.BackupClickedListener {
private val backupViewModel by viewModels<BackupViewModel>()
private var backupAdapter: BackupAdapter? = null
2021-10-09 08:28:21 +00:00
private var _binding: FragmentBackupBinding? = null
private val binding get() = _binding!!
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = FragmentBackupBinding.bind(view)
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 {
2021-10-09 08:28:21 +00:00
BackupHelper.createBackup(requireContext())
backupViewModel.loadBackups()
}
}
}
private fun initAdapter() {
2021-10-09 08:28:21 +00:00
backupAdapter = BackupAdapter(requireContext(), 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
}
}
2021-10-09 07:59:14 +00:00
override fun onBackupClicked(file: File) {
lifecycleScope.launch {
2021-10-09 08:28:21 +00:00
backupViewModel.restoreBackup(requireActivity(), file)
2021-10-09 07:59:14 +00:00
}
}
}