diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c9a4970..090f594 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -88,27 +88,22 @@ dependencies { implementation(libs.androidx.activity.ktx) implementation(libs.androidx.appcompat) implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.compose.material) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.compose.runtime) + implementation(libs.androidx.compose.ui.graphics) implementation(libs.androidx.constraintlayout) implementation(libs.androidx.core.ktx) implementation(libs.androidx.gridlayout) - // implementation(libs.androidx.lifecycle.runtime.ktx) - // implementation(libs.androidx.material3) implementation(libs.androidx.palette.ktx) implementation(libs.androidx.preference.ktx) implementation(libs.androidx.recyclerview) - // implementation(libs.androidx.ui) - // implementation(libs.androidx.ui.graphics) - // implementation(libs.androidx.ui.tooling.preview) implementation(libs.google.material) implementation(libs.kotlinx.serialization.json) implementation(libs.jonahbauer.android.preference.annotations) + implementation(libs.androidx.ui.tooling.preview.android) kapt(libs.jonahbauer.android.preference.annotations) testImplementation(libs.junit) - // androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.espresso.core) - // androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.test.ext.junit) - // androidTestImplementation(libs.androidx.ui.test.junit4) - // debugImplementation(libs.androidx.ui.test.manifest) - // debugImplementation(libs.androidx.ui.tooling) } \ 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 759d8cd..b17a867 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 @@ -1,18 +1,35 @@ package de.jrpie.android.launcher.ui.settings.meta -import android.app.AlertDialog +import android.content.Context import android.content.Intent 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.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Warning +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.platform.ComposeView +import androidx.compose.ui.res.colorResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.DialogProperties 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.openTutorial @@ -30,13 +47,21 @@ import de.jrpie.android.launcher.ui.UIObject */ class SettingsFragmentMeta : Fragment(), UIObject { - private lateinit var binding: SettingsMetaBinding override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, + inflater: LayoutInflater, + container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding = SettingsMetaBinding.inflate(inflater, container, false) - return binding.root + return ComposeView(requireContext()).apply { + setContent { + MaterialTheme { + SettingsMetaScreen( + context = requireContext(), + onResetConfirmed = { requireActivity().finish() } + ) + } + } + } } override fun onStart() { @@ -45,99 +70,204 @@ class SettingsFragmentMeta : Fragment(), UIObject { } override fun setOnClicks() { - - fun bindURL(view: View, urlRes: Int) { - view.setOnClickListener { - openInBrowser( - getString(urlRes), - requireContext() - ) - } - } - - binding.settingsMetaButtonViewTutorial.setOnClickListener { - openTutorial(requireContext()) - } - - // prompting for settings-reset confirmation - binding.settingsMetaButtonResetSettings.setOnClickListener { - AlertDialog.Builder(this.requireContext(), R.style.AlertDialogCustom) - .setTitle(getString(R.string.settings_meta_reset)) - .setMessage(getString(R.string.settings_meta_reset_confirm)) - .setPositiveButton( - android.R.string.ok - ) { _, _ -> - resetPreferences(this.requireContext()) - requireActivity().finish() - } - .setNegativeButton(android.R.string.cancel, null) - .setIcon(android.R.drawable.ic_dialog_alert) - .show() - } - - - // view code - bindURL(binding.settingsMetaButtonViewCode, R.string.settings_meta_link_github) - - // report a bug - binding.settingsMetaButtonReportBug.setOnClickListener { - 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