mirror of
https://github.com/whyorean/AuroraStore.git
synced 2026-06-17 20:18:35 -04:00
Implement Material3 based EditTextPreference
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -44,7 +44,7 @@ fun View.invisible() {
|
||||
fun View.showKeyboard() {
|
||||
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
this.requestFocus()
|
||||
imm.showSoftInput(this, 0)
|
||||
imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
|
||||
}
|
||||
|
||||
fun View.hideKeyboard(): Boolean {
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.aurora.store.view.custom.preference
|
||||
|
||||
import android.app.Dialog
|
||||
import android.os.Bundle
|
||||
import android.view.WindowManager
|
||||
import androidx.preference.EditTextPreferenceDialogFragmentCompat
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
|
||||
class M3EditTextPreference : EditTextPreferenceDialogFragmentCompat() {
|
||||
|
||||
companion object {
|
||||
const val PREFERENCE_DIALOG_FRAGMENT_TAG = "androidx.preference.PreferenceFragment.DIALOG"
|
||||
|
||||
fun newInstance(key: String?): M3EditTextPreference {
|
||||
val fragment = M3EditTextPreference()
|
||||
val bundle = Bundle(1)
|
||||
bundle.putString(ARG_KEY, key)
|
||||
fragment.arguments = bundle
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val builder = MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(preference.dialogTitle)
|
||||
.setIcon(preference.dialogIcon)
|
||||
.setPositiveButton(preference.positiveButtonText, this)
|
||||
.setNegativeButton(preference.negativeButtonText, this)
|
||||
|
||||
val contentView = onCreateDialogView(requireContext())
|
||||
if (contentView != null) {
|
||||
onBindDialogView(contentView)
|
||||
builder.setView(contentView)
|
||||
} else {
|
||||
builder.setMessage(preference.dialogMessage)
|
||||
}
|
||||
|
||||
onPrepareDialogBuilder(builder)
|
||||
return builder.create()
|
||||
}
|
||||
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
|
||||
}
|
||||
}
|
||||
@@ -5,13 +5,13 @@ import android.os.Bundle
|
||||
import androidx.preference.ListPreferenceDialogFragmentCompat
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
class ListPreferenceMaterialDialogFragmentCompat : ListPreferenceDialogFragmentCompat() {
|
||||
class M3ListPreference : ListPreferenceDialogFragmentCompat() {
|
||||
|
||||
companion object {
|
||||
const val PREFERENCE_DIALOG_FRAGMENT_TAG = "androidx.preference.PreferenceFragment.DIALOG"
|
||||
|
||||
fun newInstance(key: String?): ListPreferenceMaterialDialogFragmentCompat {
|
||||
val fragment = ListPreferenceMaterialDialogFragmentCompat()
|
||||
fun newInstance(key: String?): M3ListPreference {
|
||||
val fragment = M3ListPreference()
|
||||
val bundle = Bundle(1)
|
||||
bundle.putString(ARG_KEY, key)
|
||||
fragment.arguments = bundle
|
||||
@@ -1,21 +1,33 @@
|
||||
package com.aurora.store.view.ui.preferences
|
||||
|
||||
import androidx.preference.EditTextPreference
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.aurora.store.view.custom.preference.ListPreferenceMaterialDialogFragmentCompat
|
||||
import com.aurora.store.view.custom.preference.M3EditTextPreference
|
||||
import com.aurora.store.view.custom.preference.M3ListPreference
|
||||
|
||||
abstract class BasePreferenceFragment : PreferenceFragmentCompat() {
|
||||
|
||||
override fun onDisplayPreferenceDialog(preference: Preference) {
|
||||
if (preference is ListPreference) {
|
||||
val dialogFragment = ListPreferenceMaterialDialogFragmentCompat.newInstance(preference.getKey())
|
||||
dialogFragment.setTargetFragment(this, 0)
|
||||
dialogFragment.show(parentFragmentManager,
|
||||
ListPreferenceMaterialDialogFragmentCompat.PREFERENCE_DIALOG_FRAGMENT_TAG
|
||||
)
|
||||
} else {
|
||||
super.onDisplayPreferenceDialog(preference)
|
||||
when (preference) {
|
||||
is EditTextPreference -> {
|
||||
val dialogFragment = M3EditTextPreference.newInstance(preference.getKey())
|
||||
dialogFragment.setTargetFragment(this, 0)
|
||||
dialogFragment.show(
|
||||
parentFragmentManager,
|
||||
M3EditTextPreference.PREFERENCE_DIALOG_FRAGMENT_TAG
|
||||
)
|
||||
}
|
||||
is ListPreference -> {
|
||||
val dialogFragment = M3ListPreference.newInstance(preference.getKey())
|
||||
dialogFragment.setTargetFragment(this, 0)
|
||||
dialogFragment.show(
|
||||
parentFragmentManager,
|
||||
M3ListPreference.PREFERENCE_DIALOG_FRAGMENT_TAG
|
||||
)
|
||||
}
|
||||
else -> super.onDisplayPreferenceDialog(preference)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user