From f0f0a24e1de3c397c5b33bbfb34059eb6e777121 Mon Sep 17 00:00:00 2001 From: rayhanp1402 <rayhan.hanif14maulana@gmail.com> Date: Wed, 3 Apr 2024 08:21:05 +0700 Subject: [PATCH] feat: Storage permission for save transaction --- .../bondoyap/ui/settings/SettingsFragment.kt | 49 +++++++++++++------ 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/example/bondoyap/ui/settings/SettingsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/settings/SettingsFragment.kt index c621207..4f41598 100644 --- a/app/src/main/java/com/example/bondoyap/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/com/example/bondoyap/ui/settings/SettingsFragment.kt @@ -3,12 +3,15 @@ package com.example.bondoyap.ui.settings import android.app.AlertDialog import android.content.DialogInterface import android.content.Intent +import android.content.pm.PackageManager import android.os.Bundle import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModelProvider @@ -19,6 +22,7 @@ import com.example.bondoyap.ui.login.LoginActivity import com.example.bondoyap.ui.transactions.TransactionsApplication import com.example.bondoyap.ui.transactions.TransactionsViewModel import com.example.bondoyap.ui.transactions.TransactionsViewModelFactory +import android.Manifest class SettingsFragment : Fragment() { @@ -36,6 +40,11 @@ class SettingsFragment : Fragment() { savedInstanceState: Bundle? ): View { _binding = FragmentSettingsBinding.inflate(inflater, container, false) + + if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(requireActivity(), arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), PERMISSION_REQUEST_CODE) + } + return binding.root } @@ -85,25 +94,29 @@ class SettingsFragment : Fragment() { val exporter = TransactionsExporter(transactionsViewModel, requireContext()) saveButton.setOnClickListener { - Toast.makeText(appContext, "Menyimpan transaksi...", Toast.LENGTH_SHORT).show() - - val formats = arrayOf("XLS", "XLSX") - val builder = AlertDialog.Builder(requireContext()) - builder.setTitle("Pilih Format File") - builder.setItems(formats) { dialog: DialogInterface, which: Int -> - when (which) { - 0 -> { - exporter.exportToXLS() - } - 1 -> { - exporter.exportToXLSX() + if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + Toast.makeText(appContext, "Allow storage permission untuk menyimpan transaksi ke file xls/xlsx", Toast.LENGTH_SHORT).show() + } else { + val formats = arrayOf("XLS", "XLSX") + val builder = AlertDialog.Builder(requireContext()) + builder.setTitle("Pilih Format File") + builder.setItems(formats) { dialog: DialogInterface, which: Int -> + when (which) { + 0 -> { + Toast.makeText(appContext, "Menyimpan transaksi ke xls...", Toast.LENGTH_SHORT).show() + exporter.exportToXLS() + Toast.makeText(appContext, "Penyimpanan xls pada folder Documents berhasil...", Toast.LENGTH_SHORT).show() + } + 1 -> { + Toast.makeText(appContext, "Menyimpan transaksi ke xlsx...", Toast.LENGTH_SHORT).show() + exporter.exportToXLSX() + Toast.makeText(appContext, "Penyimpanan xlsx pada folder Documents berhasil...", Toast.LENGTH_SHORT).show() + } } + dialog.dismiss() } - dialog.dismiss() + builder.create().show() } - builder.create().show() - - Toast.makeText(appContext, "Penyimpanan pada folder Documents berhasil...", Toast.LENGTH_SHORT).show() } sendButton.setOnClickListener { @@ -113,6 +126,10 @@ class SettingsFragment : Fragment() { } + companion object { + private const val PERMISSION_REQUEST_CODE = 1001 + } + override fun onDestroyView() { super.onDestroyView() _binding = null -- GitLab