Loading packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/Utils.kt +7 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,13 @@ package com.android.settingslib.metadata import android.content.Context /** Returns the preference screen title. */ fun PreferenceScreenMetadata.getPreferenceScreenTitle(context: Context): CharSequence? = when { screenTitle != 0 -> context.getString(screenTitle) else -> getScreenTitle(context) ?: (this as? PreferenceTitleProvider)?.getTitle(context) } /** Returns the preference title. */ fun PreferenceMetadata.getPreferenceTitle(context: Context): CharSequence? = when { Loading packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBinding.kt +10 −4 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.getPreferenceIcon import com.android.settingslib.metadata.getPreferenceScreenTitle import com.android.settingslib.metadata.getPreferenceSummary import com.android.settingslib.metadata.getPreferenceTitle Loading Loading @@ -77,17 +78,22 @@ interface PreferenceBinding { preference.icon = null } val isPreferenceScreen = preference is PreferenceScreen val screenMetadata = this as? PreferenceScreenMetadata // extras preference.peekExtras()?.clear() extras(context)?.let { preference.extras.putAll(it) } if (!isPreferenceScreen && this is PreferenceScreenMetadata) { if (!isPreferenceScreen && screenMetadata != null) { val extras = preference.extras // Pass the preference key to fragment, so that the fragment could find associated // preference screen registered in PreferenceScreenRegistry extras.putString(EXTRA_BINDING_SCREEN_KEY, preference.key) arguments?.let { extras.putBundle(EXTRA_BINDING_SCREEN_ARGS, it) } screenMetadata.arguments?.let { extras.putBundle(EXTRA_BINDING_SCREEN_ARGS, it) } } preference.title = when { isPreferenceScreen -> screenMetadata?.getPreferenceScreenTitle(context) else -> getPreferenceTitle(context) } preference.title = getPreferenceTitle(context) if (!isPreferenceScreen) { preference.summary = getPreferenceSummary(context) } Loading @@ -100,7 +106,7 @@ interface PreferenceBinding { // IllegalStateException when call Preference.setDependency preference.dependency = null if (!isPreferenceScreen) { // avoid recursive loop when build graph preference.fragment = (this as? PreferenceScreenMetadata)?.fragmentClass()?.name preference.fragment = screenMetadata?.fragmentClass()?.name preference.intent = intent(context) } if (preference is DialogPreference) { Loading packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindingFactory.kt +0 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,6 @@ open class DefaultPreferenceBindingFactory : PreferenceBindingFactory { ?: when (metadata) { is SwitchPreference -> SwitchPreferenceBinding.INSTANCE is PreferenceCategory -> PreferenceCategoryBinding.INSTANCE is PreferenceScreenCreator -> PreferenceScreenBinding.INSTANCE is MainSwitchPreference -> MainSwitchPreferenceBinding.INSTANCE else -> DefaultPreferenceBinding } Loading packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindings.kt +0 −27 Original line number Diff line number Diff line Loading @@ -19,38 +19,11 @@ package com.android.settingslib.preference import android.content.Context import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceScreen import androidx.preference.SwitchPreferenceCompat import androidx.preference.TwoStatePreference import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.PreferenceTitleProvider import com.android.settingslib.widget.MainSwitchPreference /** Binding of preference group associated with [PreferenceCategory]. */ interface PreferenceScreenBinding : PreferenceBinding { override fun bind(preference: Preference, metadata: PreferenceMetadata) { super.bind(preference, metadata) if (preference is PreferenceScreen) { val context = preference.context val screenMetadata = metadata as PreferenceScreenMetadata val screenTitle = screenMetadata.screenTitle preference.title = if (screenTitle != 0) { context.getString(screenTitle) } else { screenMetadata.getScreenTitle(context) ?: (screenMetadata as? PreferenceTitleProvider)?.getTitle(context) } } } companion object { @JvmStatic val INSTANCE = object : PreferenceScreenBinding {} } } /** Binding of preference category associated with [PreferenceCategory]. */ interface PreferenceCategoryBinding : PreferenceBinding { Loading packages/SettingsLib/src/com/android/settingslib/PreferenceBindings.kt→packages/SettingsLib/src/com/android/settingslib/PrimarySwitchPreferenceBinding.kt +2 −2 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ @file:Suppress("ktlint:standard:filename") // remove once we have more bindings package com.android.settingslib Loading @@ -29,7 +28,8 @@ interface PrimarySwitchPreferenceBinding : PreferenceBinding { override fun bind(preference: Preference, metadata: PreferenceMetadata) { super.bind(preference, metadata) (preference as PrimarySwitchPreference).apply { // Could bind on PreferenceScreen (preference as? PrimarySwitchPreference)?.apply { isChecked = preferenceDataStore!!.getBoolean(key, false) isSwitchEnabled = isEnabled } Loading Loading
packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/Utils.kt +7 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,13 @@ package com.android.settingslib.metadata import android.content.Context /** Returns the preference screen title. */ fun PreferenceScreenMetadata.getPreferenceScreenTitle(context: Context): CharSequence? = when { screenTitle != 0 -> context.getString(screenTitle) else -> getScreenTitle(context) ?: (this as? PreferenceTitleProvider)?.getTitle(context) } /** Returns the preference title. */ fun PreferenceMetadata.getPreferenceTitle(context: Context): CharSequence? = when { Loading
packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBinding.kt +10 −4 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.getPreferenceIcon import com.android.settingslib.metadata.getPreferenceScreenTitle import com.android.settingslib.metadata.getPreferenceSummary import com.android.settingslib.metadata.getPreferenceTitle Loading Loading @@ -77,17 +78,22 @@ interface PreferenceBinding { preference.icon = null } val isPreferenceScreen = preference is PreferenceScreen val screenMetadata = this as? PreferenceScreenMetadata // extras preference.peekExtras()?.clear() extras(context)?.let { preference.extras.putAll(it) } if (!isPreferenceScreen && this is PreferenceScreenMetadata) { if (!isPreferenceScreen && screenMetadata != null) { val extras = preference.extras // Pass the preference key to fragment, so that the fragment could find associated // preference screen registered in PreferenceScreenRegistry extras.putString(EXTRA_BINDING_SCREEN_KEY, preference.key) arguments?.let { extras.putBundle(EXTRA_BINDING_SCREEN_ARGS, it) } screenMetadata.arguments?.let { extras.putBundle(EXTRA_BINDING_SCREEN_ARGS, it) } } preference.title = when { isPreferenceScreen -> screenMetadata?.getPreferenceScreenTitle(context) else -> getPreferenceTitle(context) } preference.title = getPreferenceTitle(context) if (!isPreferenceScreen) { preference.summary = getPreferenceSummary(context) } Loading @@ -100,7 +106,7 @@ interface PreferenceBinding { // IllegalStateException when call Preference.setDependency preference.dependency = null if (!isPreferenceScreen) { // avoid recursive loop when build graph preference.fragment = (this as? PreferenceScreenMetadata)?.fragmentClass()?.name preference.fragment = screenMetadata?.fragmentClass()?.name preference.intent = intent(context) } if (preference is DialogPreference) { Loading
packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindingFactory.kt +0 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,6 @@ open class DefaultPreferenceBindingFactory : PreferenceBindingFactory { ?: when (metadata) { is SwitchPreference -> SwitchPreferenceBinding.INSTANCE is PreferenceCategory -> PreferenceCategoryBinding.INSTANCE is PreferenceScreenCreator -> PreferenceScreenBinding.INSTANCE is MainSwitchPreference -> MainSwitchPreferenceBinding.INSTANCE else -> DefaultPreferenceBinding } Loading
packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBindings.kt +0 −27 Original line number Diff line number Diff line Loading @@ -19,38 +19,11 @@ package com.android.settingslib.preference import android.content.Context import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceScreen import androidx.preference.SwitchPreferenceCompat import androidx.preference.TwoStatePreference import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.PreferenceTitleProvider import com.android.settingslib.widget.MainSwitchPreference /** Binding of preference group associated with [PreferenceCategory]. */ interface PreferenceScreenBinding : PreferenceBinding { override fun bind(preference: Preference, metadata: PreferenceMetadata) { super.bind(preference, metadata) if (preference is PreferenceScreen) { val context = preference.context val screenMetadata = metadata as PreferenceScreenMetadata val screenTitle = screenMetadata.screenTitle preference.title = if (screenTitle != 0) { context.getString(screenTitle) } else { screenMetadata.getScreenTitle(context) ?: (screenMetadata as? PreferenceTitleProvider)?.getTitle(context) } } } companion object { @JvmStatic val INSTANCE = object : PreferenceScreenBinding {} } } /** Binding of preference category associated with [PreferenceCategory]. */ interface PreferenceCategoryBinding : PreferenceBinding { Loading
packages/SettingsLib/src/com/android/settingslib/PreferenceBindings.kt→packages/SettingsLib/src/com/android/settingslib/PrimarySwitchPreferenceBinding.kt +2 −2 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ @file:Suppress("ktlint:standard:filename") // remove once we have more bindings package com.android.settingslib Loading @@ -29,7 +28,8 @@ interface PrimarySwitchPreferenceBinding : PreferenceBinding { override fun bind(preference: Preference, metadata: PreferenceMetadata) { super.bind(preference, metadata) (preference as PrimarySwitchPreference).apply { // Could bind on PreferenceScreen (preference as? PrimarySwitchPreference)?.apply { isChecked = preferenceDataStore!!.getBoolean(key, false) isSwitchEnabled = isEnabled } Loading