diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt index c6ba256..599e9d3 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt @@ -1,6 +1,7 @@ package im.angry.openeuicc.ui import android.icu.text.SimpleDateFormat +import android.os.Build import android.os.Bundle import android.view.Menu import android.view.MenuItem @@ -32,9 +33,19 @@ class LogsActivity : AppCompatActivity() { SimpleDateFormat.getDateTimeInstance().format(Date()) ) }, - getLogText = { logStr } + getLogText = ::buildLogText ) + private fun buildLogText() = buildString { + appendLine("Manufacturer: ${Build.MANUFACTURER}") + appendLine("Brand: ${Build.BRAND}") + appendLine("Model: ${Build.MODEL}") + appendLine("SDK Version: ${Build.VERSION.SDK_INT}") + appendLine("App Version: $selfAppVersion") + appendLine("-".repeat(10)) + appendLine(logStr) + } + override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt index ef4ef8b..fab680f 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt @@ -29,7 +29,7 @@ open class SettingsFragment: PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.pref_settings, rootKey) - developerPref = findPreference("pref_developer")!! + developerPref = requirePreference("pref_developer") // Show / hide developer preference based on whether it is enabled lifecycleScope.launch { @@ -38,14 +38,14 @@ open class SettingsFragment: PreferenceFragmentCompat() { .collect() } - findPreference("pref_info_app_version")?.apply { + requirePreference("pref_info_app_version").apply { summary = requireContext().selfAppVersion // Enable developer options when this is clicked for 7 times setOnPreferenceClickListener(::onAppVersionClicked) } - findPreference("pref_advanced_language")?.apply { + requirePreference("pref_advanced_language").apply { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) return@apply isVisible = true intent = Intent(Settings.ACTION_APP_LOCALE_SETTINGS).apply { @@ -53,32 +53,35 @@ open class SettingsFragment: PreferenceFragmentCompat() { } } - findPreference("pref_advanced_logs")?.apply { + requirePreference("pref_advanced_logs").apply { intent = Intent(requireContext(), LogsActivity::class.java) } - findPreference("pref_notifications_download") - ?.bindBooleanFlow(preferenceRepository.notificationDownloadFlow) + requirePreference("pref_notifications_download") + .bindBooleanFlow(preferenceRepository.notificationDownloadFlow) - findPreference("pref_notifications_delete") - ?.bindBooleanFlow(preferenceRepository.notificationDeleteFlow) + requirePreference("pref_notifications_delete") + .bindBooleanFlow(preferenceRepository.notificationDeleteFlow) - findPreference("pref_notifications_switch") - ?.bindBooleanFlow(preferenceRepository.notificationSwitchFlow) + requirePreference("pref_notifications_switch") + .bindBooleanFlow(preferenceRepository.notificationSwitchFlow) - findPreference("pref_advanced_disable_safeguard_removable_esim") - ?.bindBooleanFlow(preferenceRepository.disableSafeguardFlow) + requirePreference("pref_advanced_disable_safeguard_removable_esim") + .bindBooleanFlow(preferenceRepository.disableSafeguardFlow) - findPreference("pref_advanced_verbose_logging") - ?.bindBooleanFlow(preferenceRepository.verboseLoggingFlow) + requirePreference("pref_advanced_verbose_logging") + .bindBooleanFlow(preferenceRepository.verboseLoggingFlow) - findPreference("pref_developer_unfiltered_profile_list") - ?.bindBooleanFlow(preferenceRepository.unfilteredProfileListFlow) + requirePreference("pref_developer_unfiltered_profile_list") + .bindBooleanFlow(preferenceRepository.unfilteredProfileListFlow) - findPreference("pref_ignore_tls_certificate") - ?.bindBooleanFlow(preferenceRepository.ignoreTLSCertificateFlow) + requirePreference("pref_developer_ignore_tls_certificate") + .bindBooleanFlow(preferenceRepository.ignoreTLSCertificateFlow) } + protected fun requirePreference(key: CharSequence) = + findPreference(key)!! + override fun onStart() { super.onStart() setupRootViewInsets(requireView().requireViewById(R.id.recycler_view)) @@ -133,8 +136,8 @@ open class SettingsFragment: PreferenceFragmentCompat() { } protected fun mergePreferenceOverlay(overlayKey: String, targetKey: String) { - val overlayCat = findPreference(overlayKey)!! - val targetCat = findPreference(targetKey)!! + val overlayCat = requirePreference(overlayKey) + val targetCat = requirePreference(targetKey) val prefs = buildList { for (i in 0.. + android:hint="@string/profile_download_code" + app:passwordToggleEnabled="true"> + android:hint="@string/profile_download_confirmation_code" + app:passwordToggleEnabled="true"> ("pref_info_ara_m")?.apply { + requirePreference("pref_info_ara_m").apply { summary = firstSigner.encodeHex() setOnPreferenceClickListener { requireContext().getSystemService(ClipboardManager::class.java)!!