1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.settingslib.graph 18 19 import com.android.settingslib.graph.proto.BundleProto 20 import com.android.settingslib.graph.proto.BundleProto.BundleValue 21 import com.android.settingslib.graph.proto.IntentProto 22 import com.android.settingslib.graph.proto.ParameterizedPreferenceScreenProto 23 import com.android.settingslib.graph.proto.PreferenceGroupProto 24 import com.android.settingslib.graph.proto.PreferenceOrGroupProto 25 import com.android.settingslib.graph.proto.PreferenceProto 26 import com.android.settingslib.graph.proto.PreferenceProto.ActionTarget 27 import com.android.settingslib.graph.proto.PreferenceScreenProto 28 import com.android.settingslib.graph.proto.PreferenceValueDescriptorProto 29 import com.android.settingslib.graph.proto.PreferenceValueProto 30 import com.android.settingslib.graph.proto.RangeValueProto 31 import com.android.settingslib.graph.proto.TextProto 32 33 /** Returns root or null. */ 34 val PreferenceScreenProto.rootOrNull 35 get() = if (hasRoot()) root else null 36 37 /** Kotlin DSL-style builder for [PreferenceScreenProto]. */ 38 @JvmSynthetic preferenceScreenProtonull39inline fun preferenceScreenProto( 40 init: PreferenceScreenProto.Builder.() -> Unit 41 ): PreferenceScreenProto = PreferenceScreenProto.newBuilder().also(init).build() 42 43 /** Kotlin DSL-style builder for [PreferenceScreenProto]. */ 44 inline fun parameterizedPreferenceScreenProto( 45 init: ParameterizedPreferenceScreenProto.Builder.() -> Unit 46 ): ParameterizedPreferenceScreenProto = 47 ParameterizedPreferenceScreenProto.newBuilder().also(init).build() 48 49 /** Returns preference or null. */ 50 val PreferenceOrGroupProto.preferenceOrNull 51 get() = if (hasPreference()) preference else null 52 53 /** Returns group or null. */ 54 val PreferenceOrGroupProto.groupOrNull 55 get() = if (hasGroup()) group else null 56 57 /** Kotlin DSL-style builder for [PreferenceOrGroupProto]. */ 58 @JvmSynthetic 59 inline fun preferenceOrGroupProto( 60 init: PreferenceOrGroupProto.Builder.() -> Unit 61 ): PreferenceOrGroupProto = PreferenceOrGroupProto.newBuilder().also(init).build() 62 63 /** Returns preference or null. */ 64 val PreferenceGroupProto.preferenceOrNull 65 get() = if (hasPreference()) preference else null 66 67 /** Kotlin DSL-style builder for [PreferenceGroupProto]. */ 68 @JvmSynthetic 69 inline fun preferenceGroupProto( 70 init: PreferenceGroupProto.Builder.() -> Unit 71 ): PreferenceGroupProto = PreferenceGroupProto.newBuilder().also(init).build() 72 73 /** Returns title or null. */ 74 val PreferenceProto.titleOrNull 75 get() = if (hasTitle()) title else null 76 77 /** Returns summary or null. */ 78 val PreferenceProto.summaryOrNull 79 get() = if (hasSummary()) summary else null 80 81 /** Returns actionTarget or null. */ 82 val PreferenceProto.actionTargetOrNull 83 get() = if (hasActionTarget()) actionTarget else null 84 85 /** Kotlin DSL-style builder for [PreferenceProto]. */ 86 @JvmSynthetic 87 inline fun preferenceProto(init: PreferenceProto.Builder.() -> Unit): PreferenceProto = 88 PreferenceProto.newBuilder().also(init).build() 89 90 /** Returns intent or null. */ 91 val ActionTarget.intentOrNull 92 get() = if (hasIntent()) intent else null 93 94 /** Kotlin DSL-style builder for [ActionTarget]. */ 95 @JvmSynthetic 96 inline fun actionTargetProto(init: ActionTarget.Builder.() -> Unit): ActionTarget = 97 ActionTarget.newBuilder().also(init).build() 98 99 /** Kotlin DSL-style builder for [PreferenceValueProto]. */ 100 @JvmSynthetic 101 inline fun preferenceValueProto( 102 init: PreferenceValueProto.Builder.() -> Unit 103 ): PreferenceValueProto = PreferenceValueProto.newBuilder().also(init).build() 104 105 /** Kotlin DSL-style builder for [PreferenceValueDescriptorProto]. */ 106 @JvmSynthetic 107 inline fun preferenceValueDescriptorProto( 108 init: PreferenceValueDescriptorProto.Builder.() -> Unit 109 ): PreferenceValueDescriptorProto = PreferenceValueDescriptorProto.newBuilder().also(init).build() 110 111 /** Kotlin DSL-style builder for [RangeValueProto]. */ 112 @JvmSynthetic 113 inline fun rangeValueProto(init: RangeValueProto.Builder.() -> Unit): RangeValueProto = 114 RangeValueProto.newBuilder().also(init).build() 115 116 /** Kotlin DSL-style builder for [TextProto]. */ 117 @JvmSynthetic 118 inline fun textProto(init: TextProto.Builder.() -> Unit): TextProto = 119 TextProto.newBuilder().also(init).build() 120 121 /** Kotlin DSL-style builder for [IntentProto]. */ 122 @JvmSynthetic 123 inline fun intentProto(init: IntentProto.Builder.() -> Unit): IntentProto = 124 IntentProto.newBuilder().also(init).build() 125 126 /** Kotlin DSL-style builder for [BundleProto]. */ 127 @JvmSynthetic 128 inline fun bundleProto(init: BundleProto.Builder.() -> Unit): BundleProto = 129 BundleProto.newBuilder().also(init).build() 130 131 /** Kotlin DSL-style builder for [BundleValue]. */ 132 @JvmSynthetic 133 inline fun bundleValueProto(init: BundleValue.Builder.() -> Unit): BundleValue = 134 BundleValue.newBuilder().also(init).build() 135