Skip to content

Commit 3d4e2c5

Browse files
authored
Merge pull request #1438 from PhenoApps/debug-setting
add new debug preference
2 parents 6b865c2 + e9fd392 commit 3d4e2c5

3 files changed

Lines changed: 43 additions & 1 deletion

File tree

app/src/main/java/com/fieldbook/tracker/preferences/SystemPreferencesFragment.kt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,20 @@ import android.app.AlertDialog
44
import android.content.SharedPreferences
55
import android.os.Bundle
66
import android.util.Log
7+
import android.widget.Toast
78
import androidx.preference.CheckBoxPreference
89
import androidx.preference.ListPreference
910
import androidx.preference.Preference
1011
import androidx.preference.PreferenceFragmentCompat
1112
import com.fieldbook.tracker.R
1213
import com.fieldbook.tracker.activities.PreferencesActivity
14+
import com.fieldbook.tracker.fragments.ExportDatabaseFragment
1315
import com.google.firebase.crashlytics.FirebaseCrashlytics
1416
import 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
1521
import java.util.UUID
1622
import 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 {

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,9 @@
890890
<string name="preferences_profile_device_name_default_format">Default: %s</string>
891891

892892
<string name="preferences_profile_crashlytics" translatable="false">Crashlytics</string>
893+
<string name="preferences_system_debugging_title">Debugging</string>
894+
<string name="pref_debug_application_title">Debug Application</string>
895+
<string name="pref_debug_application_summary">Obtain a file to help developers debug issues in the app</string>
893896
<string name="pref_profile_crashlytics_user_id_enabled">Unique ID</string>
894897
<string name="pref_profile_crashlytics_user_id_enabled_summary">Include an anonymous, unique ID in crash logs to help the development team fix bugs</string>
895898
<string name="pref_profile_crashlytics_refresh_title">Refresh ID</string>

app/src/main/res/xml/preferences_system.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,15 @@
5050

5151
<PreferenceCategory
5252
android:key="crashlytics_category"
53-
android:title="@string/preferences_profile_crashlytics"
53+
android:title="@string/preferences_system_debugging_title"
5454
app:iconSpaceReserved="false">
5555

56+
<Preference
57+
android:icon="@drawable/ic_trait_disease_rating"
58+
android:key="pref_debug_application"
59+
android:summary="@string/pref_debug_application_summary"
60+
android:title="@string/pref_debug_application_title" />
61+
5662
<CheckBoxPreference
5763
android:defaultValue="false"
5864
android:icon="@drawable/ic_card_account_details_outline"

0 commit comments

Comments
 (0)