1 /* 2 * Copyright (C) 2023 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.settings.network.telephony 18 19 import android.content.Context 20 import androidx.preference.Preference 21 import androidx.preference.PreferenceScreen 22 import com.android.settings.core.BasePreferenceController 23 24 /** 25 * Preference controller for "Calling" category 26 */ 27 class CallingPreferenceCategoryController(context: Context, key: String) : 28 BasePreferenceController(context, key) { 29 30 private val visibleChildren = mutableSetOf<String>() 31 private var preference: Preference? = null 32 getAvailabilityStatusnull33 override fun getAvailabilityStatus() = AVAILABLE 34 35 override fun displayPreference(screen: PreferenceScreen) { 36 // Not call super here, to avoid preference.isVisible changed unexpectedly 37 preference = screen.findPreference(preferenceKey) 38 } 39 updateChildVisiblenull40 fun updateChildVisible(key: String, isVisible: Boolean) { 41 if (isVisible) { 42 visibleChildren.add(key) 43 } else { 44 visibleChildren.remove(key) 45 } 46 preference?.isVisible = visibleChildren.isNotEmpty() 47 } 48 } 49