@@ -4,14 +4,20 @@ import android.app.AlertDialog
44import android.content.SharedPreferences
55import android.os.Bundle
66import android.util.Log
7+ import android.widget.Toast
78import androidx.preference.CheckBoxPreference
89import androidx.preference.ListPreference
910import androidx.preference.Preference
1011import androidx.preference.PreferenceFragmentCompat
1112import com.fieldbook.tracker.R
1213import com.fieldbook.tracker.activities.PreferencesActivity
14+ import com.fieldbook.tracker.fragments.ExportDatabaseFragment
1315import com.google.firebase.crashlytics.FirebaseCrashlytics
1416import dagger.hilt.android.AndroidEntryPoint
17+ import org.phenoapps.utils.BaseDocumentTreeUtil
18+ import java.text.SimpleDateFormat
19+ import java.util.Calendar
20+ import java.util.Locale
1521import java.util.UUID
1622import javax.inject.Inject
1723
@@ -54,6 +60,33 @@ class SystemPreferencesFragment : PreferenceFragmentCompat(),
5460 .show()
5561 true
5662 }
63+
64+ val debugApplicationPref = findPreference<Preference >(" pref_debug_application" )
65+ debugApplicationPref?.onPreferenceClickListener = Preference .OnPreferenceClickListener {
66+ if (checkDirectory()) {
67+ val timestamp = SimpleDateFormat (" yyyy-MM-dd-hh-mm-ss" , Locale .getDefault())
68+ .format(Calendar .getInstance().time)
69+ val args = Bundle ().apply {
70+ putString(ExportDatabaseFragment .EXTRA_FILE_NAME , " debug_$timestamp " )
71+ }
72+ val exportFragment = ExportDatabaseFragment ().apply { arguments = args }
73+ childFragmentManager.beginTransaction()
74+ .add(exportFragment, ExportDatabaseFragment .TAG )
75+ .addToBackStack(null )
76+ .commit()
77+ }
78+ true
79+ }
80+ }
81+
82+ private fun checkDirectory (): Boolean {
83+ val ctx = context ? : return false
84+ return if (BaseDocumentTreeUtil .getDirectory(ctx, R .string.dir_database) != null ) {
85+ true
86+ } else {
87+ Toast .makeText(ctx, R .string.error_storage_directory, Toast .LENGTH_LONG ).show()
88+ false
89+ }
5790 }
5891
5992 override fun onPreferenceChange (preference : Preference , newValue : Any ): Boolean {
0 commit comments