Settings search for Data warning & limit

Bug: 358238959
Flag: EXEMPT bug fix
Test: manual - search data warning
Change-Id: Ifc29b8979a5ba523e930b0c3a59fcb3d9ab99571
This commit is contained in:
Chaohui Wang
2024-09-03 17:18:28 +08:00
parent c43be041f5
commit b12a4d30ad
4 changed files with 62 additions and 52 deletions

View File

@@ -98,9 +98,11 @@
settings:searchable="false"
settings:controller="com.android.settings.network.telephony.DataUsagePreferenceController"/>
<!-- Settings search is handled by BillingCycleSearchItem. -->
<com.android.settings.datausage.BillingCyclePreference
android:key="billing_preference"
android:title="@string/billing_cycle"
settings:searchable="false"
settings:controller="com.android.settings.datausage.BillingCyclePreferenceController"/>
<SwitchPreferenceCompat

View File

@@ -1,52 +0,0 @@
/*
* 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.datausage;
import android.content.Context;
import android.net.NetworkTemplate;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.datausage.lib.DataUsageLib;
public class BillingCyclePreferenceController extends BasePreferenceController {
private int mSubscriptionId;
public BillingCyclePreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
}
public void init(int subscriptionId) {
mSubscriptionId = subscriptionId;
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
BillingCyclePreference preference = screen.findPreference(getPreferenceKey());
NetworkTemplate template = DataUsageLib.getMobileTemplate(mContext, mSubscriptionId);
preference.setTemplate(template, mSubscriptionId);
}
@Override
public int getAvailabilityStatus() {
return DataUsageUtils.hasMobileData(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
}

View File

@@ -0,0 +1,58 @@
/*
* 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.datausage
import android.content.Context
import android.telephony.SubscriptionManager
import androidx.preference.PreferenceScreen
import com.android.settings.R
import com.android.settings.core.BasePreferenceController
import com.android.settings.datausage.lib.DataUsageLib.getMobileTemplate
import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchItem
import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchResult
class BillingCyclePreferenceController(context: Context, preferenceKey: String) :
BasePreferenceController(context, preferenceKey) {
private var subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID
fun init(subId: Int) {
this.subId = subId
}
override fun getAvailabilityStatus() =
if (DataUsageUtils.hasMobileData(mContext)) AVAILABLE else CONDITIONALLY_UNAVAILABLE
override fun displayPreference(screen: PreferenceScreen) {
super.displayPreference(screen)
val preference = screen.findPreference<BillingCyclePreference>(preferenceKey)
val template = getMobileTemplate(mContext, subId)
preference?.setTemplate(template, subId)
}
companion object {
class BillingCycleSearchItem(private val context: Context) :
MobileNetworkSettingsSearchItem {
override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? {
if (!DataUsageUtils.hasMobileData(context)) return null
return MobileNetworkSettingsSearchResult(
key = "billing_preference",
title = context.getString(R.string.billing_cycle),
)
}
}
}
}

View File

@@ -20,6 +20,7 @@ import android.content.Context
import android.provider.Settings
import android.telephony.SubscriptionInfo
import com.android.settings.R
import com.android.settings.datausage.BillingCyclePreferenceController.Companion.BillingCycleSearchItem
import com.android.settings.network.SubscriptionUtil
import com.android.settings.network.telephony.CarrierSettingsVersionPreferenceController.Companion.CarrierSettingsVersionSearchItem
import com.android.settings.network.telephony.DataUsagePreferenceController.Companion.DataUsageSearchItem
@@ -117,6 +118,7 @@ class MobileNetworkSettingsSearchIndex(
fun createSearchItems(context: Context): List<MobileNetworkSettingsSearchItem> =
listOf(
BillingCycleSearchItem(context),
CarrierSettingsVersionSearchItem(context),
DataUsageSearchItem(context),
MmsMessageSearchItem(context),