Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d5bdef8 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[Catalyst] Remove PreferenceScreenBinding" into main

parents 9ba88952 b12b709e
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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 {
+10 −4
Original line number Diff line number Diff line
@@ -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

@@ -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)
            }
@@ -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) {
+0 −1
Original line number Diff line number Diff line
@@ -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
            }
+0 −27
Original line number Diff line number Diff line
@@ -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 {

+2 −2
Original line number Diff line number Diff line
@@ -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

@@ -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
        }