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

Commit a6d45e93 authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "Settings search for Carrier settings version" into main

parents 370445b7 b3ee1d70
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -176,12 +176,11 @@
            settings:searchable="false"
            settings:controller="com.android.settings.network.telephony.EnabledNetworkModePreferenceController"/>

        <!-- Settings search is handled by CarrierSettingsVersionSearchItem. -->
        <Preference
            android:key="carrier_settings_version_key"
            android:title="@string/carrier_settings_version"
            android:enabled="false"
            android:shouldDisableView="false"
            android:selectable="false"
            settings:searchable="false"
            settings:controller="com.android.settings.network.telephony.CarrierSettingsVersionPreferenceController"
            settings:enableCopying="true"/>

+1 −1
Original line number Diff line number Diff line
@@ -199,7 +199,7 @@ class CarrierConfigRepository(private val context: Context) {
        }

        @VisibleForTesting
        fun setStringForTest(subId: Int, key: String, value: String) {
        fun setStringForTest(subId: Int, key: String, value: String?) {
            check(key.endsWith("_string")) { "String key should ends with _string" }
            getPerSubCache(subId)[key] = StringConfigValue(value)
        }
+0 −56
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.network.telephony;

import android.content.Context;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import android.text.TextUtils;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.CarrierConfigCache;

public class CarrierSettingsVersionPreferenceController extends BasePreferenceController {

    private int mSubscriptionId;
    private CarrierConfigCache mCarrierConfigCache;

    public CarrierSettingsVersionPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mCarrierConfigCache = CarrierConfigCache.getInstance(context);
        mSubscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    }

    public void init(int subscriptionId) {
        mSubscriptionId = subscriptionId;
    }

    @Override
    public CharSequence getSummary() {
        final PersistableBundle config = mCarrierConfigCache.getConfigForSubId(mSubscriptionId);
        if (config == null) {
            return null;
        }
        return config.getString(CarrierConfigManager.KEY_CARRIER_CONFIG_VERSION_STRING);
    }

    @Override
    public int getAvailabilityStatus() {
        return TextUtils.isEmpty(getSummary()) ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
    }
}
+62 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.network.telephony

import android.content.Context
import android.telephony.CarrierConfigManager
import android.telephony.SubscriptionManager
import com.android.settings.R
import com.android.settings.core.BasePreferenceController
import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchItem
import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchResult

class CarrierSettingsVersionPreferenceController(context: Context, preferenceKey: String) :
    BasePreferenceController(context, preferenceKey) {

    private var subId: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID
    private val searchItem = CarrierSettingsVersionSearchItem(context)

    fun init(subId: Int) {
        this.subId = subId
    }

    override fun getSummary() = searchItem.getSummary(subId)

    override fun getAvailabilityStatus() =
        if (searchItem.isAvailable(subId)) AVAILABLE else CONDITIONALLY_UNAVAILABLE

    companion object {
        class CarrierSettingsVersionSearchItem(private val context: Context) :
            MobileNetworkSettingsSearchItem {
            private val carrierConfigRepository = CarrierConfigRepository(context)

            fun getSummary(subId: Int): String? =
                carrierConfigRepository.getString(
                    subId, CarrierConfigManager.KEY_CARRIER_CONFIG_VERSION_STRING)

            fun isAvailable(subId: Int): Boolean = !getSummary(subId).isNullOrEmpty()

            override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? {
                if (!isAvailable(subId)) return null
                return MobileNetworkSettingsSearchResult(
                    key = "carrier_settings_version_key",
                    title = context.getString(R.string.carrier_settings_version),
                )
            }
        }
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.provider.Settings
import android.telephony.SubscriptionInfo
import com.android.settings.R
import com.android.settings.network.SubscriptionUtil
import com.android.settings.network.telephony.CarrierSettingsVersionPreferenceController.Companion.CarrierSettingsVersionSearchItem
import com.android.settings.network.telephony.DataUsagePreferenceController.Companion.DataUsageSearchItem
import com.android.settings.network.telephony.MmsMessagePreferenceController.Companion.MmsMessageSearchItem
import com.android.settings.network.telephony.NrAdvancedCallingPreferenceController.Companion.NrAdvancedCallingSearchItem
@@ -115,6 +116,7 @@ class MobileNetworkSettingsSearchIndex(

        fun createSearchItems(context: Context): List<MobileNetworkSettingsSearchItem> =
            listOf(
                CarrierSettingsVersionSearchItem(context),
                DataUsageSearchItem(context),
                MmsMessageSearchItem(context),
                NrAdvancedCallingSearchItem(context),
Loading