diff --git a/app/src/main/java/eu/darken/capod/common/preferences/IntentPreference.kt b/app/src/main/java/eu/darken/capod/common/preferences/IntentPreference.kt new file mode 100644 index 00000000..b7c5ea11 --- /dev/null +++ b/app/src/main/java/eu/darken/capod/common/preferences/IntentPreference.kt @@ -0,0 +1,42 @@ +package eu.darken.capod.common.preferences + +import android.content.ActivityNotFoundException +import android.content.Context +import android.content.Intent +import android.util.AttributeSet +import android.widget.Toast +import androidx.annotation.AttrRes +import androidx.annotation.StyleRes +import androidx.preference.Preference +import eu.darken.capod.common.debug.logging.Logging.Priority.ERROR +import eu.darken.capod.common.debug.logging.log +import eu.darken.capod.common.debug.logging.logTag + + +class IntentPreference @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + @AttrRes defStyleAttr: Int = androidx.preference.R.attr.preferenceStyle, + @StyleRes defStyleRes: Int = 0, +) : Preference(context, attrs, defStyleAttr, defStyleRes) { + + override fun setIntent(_intent: Intent?) { + super.setIntent(_intent) + _intent?.let { + intent + setOnPreferenceClickListener { + try { + context.startActivity(intent) + } catch (e: ActivityNotFoundException) { + log(TAG, ERROR) { "Failed to launch $intent: $e" } + Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show() + } + true + } + } + } + + companion object { + private val TAG = logTag("IntentPreference") + } +} \ No newline at end of file diff --git a/app/src/main/res/xml/preferences_acknowledgements.xml b/app/src/main/res/xml/preferences_acknowledgements.xml index 5129c75b..a060a495 100644 --- a/app/src/main/res/xml/preferences_acknowledgements.xml +++ b/app/src/main/res/xml/preferences_acknowledgements.xml @@ -4,7 +4,7 @@ - - - + - - + - - + - + - - - + - - + - - + - - + - - + - - + - - + - + \ No newline at end of file diff --git a/app/src/main/res/xml/preferences_index.xml b/app/src/main/res/xml/preferences_index.xml index a31accc4..4626026c 100644 --- a/app/src/main/res/xml/preferences_index.xml +++ b/app/src/main/res/xml/preferences_index.xml @@ -20,7 +20,7 @@ app:title="@string/settings_support_label" /> - - + - - + - - - + - +