diff --git a/app/src/main/java/de/jrpie/android/launcher/Functions.kt b/app/src/main/java/de/jrpie/android/launcher/Functions.kt index 48b5028..7566f5f 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Functions.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Functions.kt @@ -3,6 +3,8 @@ package de.jrpie.android.launcher import android.app.Activity import android.app.Service import android.app.role.RoleManager +import android.content.ClipData +import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.content.pm.LauncherApps @@ -151,3 +153,21 @@ fun saveListActivityChoice(data: Intent?) { Gesture.byId(forGesture)?.let { Action.setActionForGesture(it, Action.fromIntent(data)) } } + +// used for the bug report button +fun getDeviceInfo(): String { + return """ + µLauncher version: ${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE}) + Android version: ${Build.VERSION.RELEASE} (sdk ${Build.VERSION.SDK_INT}) + Model: ${Build.MODEL} + Device: ${Build.DEVICE} + Brand: ${Build.BRAND} + Manufacturer: ${Build.MANUFACTURER} + """.trimIndent() +} + +fun copyToClipboard(context: Context, text: String) { + val clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clipData = ClipData.newPlainText("Debug Info", text) + clipboardManager.setPrimaryClip(clipData); +} \ No newline at end of file diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt b/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt index d53ea99..fd3a738 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt @@ -7,9 +7,14 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Button +import android.widget.TextView import androidx.fragment.app.Fragment +import de.jrpie.android.launcher.BuildConfig import de.jrpie.android.launcher.R +import de.jrpie.android.launcher.copyToClipboard import de.jrpie.android.launcher.databinding.SettingsMetaBinding +import de.jrpie.android.launcher.getDeviceInfo import de.jrpie.android.launcher.openInBrowser import de.jrpie.android.launcher.preferences.resetPreferences import de.jrpie.android.launcher.ui.LegalInfoActivity @@ -88,13 +93,37 @@ class SettingsFragmentMeta : Fragment(), UIObject { // report a bug binding.settingsMetaButtonReportBug.setOnClickListener { - openInBrowser( - getString(R.string.settings_meta_report_bug_link), - requireContext() - ) + val deviceInfo = getDeviceInfo() + AlertDialog.Builder(context, R.style.AlertDialogCustom).apply { + setView(R.layout.dialog_report_bug) + setTitle(R.string.dialog_report_bug_title) + setPositiveButton(R.string.dialog_report_bug_create_report) { _, _ -> + openInBrowser( + getString(R.string.settings_meta_report_bug_link), + requireContext() + ) + } + setNegativeButton(R.string.dialog_cancel) { _, _ -> } + }.create().also { it.show() }.apply { + val info = findViewById(R.id.dialog_report_bug_device_info) + val buttonClipboard = findViewById