Merge "Settings search for Vo5G" into main

This commit is contained in:
Chaohui Wang
2024-08-01 07:19:08 +00:00
committed by Android (Google) Code Review
4 changed files with 25 additions and 3 deletions

View File

@@ -293,10 +293,10 @@
settings:controller=
"com.android.settings.network.telephony.NullAlgorithmsPreferenceController"/>
<!-- Settings search is handled by NrAdvancedCallingSearchItem. -->
<com.android.settings.spa.preference.ComposePreference
android:key="nr_advanced_calling"
android:title="@string/nr_advanced_calling_title"
settings:keywords="@string/keywords_nr_advanced_calling"
settings:searchable="false"
settings:controller="com.android.settings.network.telephony.NrAdvancedCallingPreferenceController"/>
</PreferenceCategory>

View File

@@ -22,6 +22,7 @@ import android.telephony.SubscriptionInfo
import com.android.settings.R
import com.android.settings.network.SubscriptionUtil
import com.android.settings.network.telephony.MmsMessagePreferenceController.Companion.MmsMessageSearchItem
import com.android.settings.network.telephony.NrAdvancedCallingPreferenceController.Companion.NrAdvancedCallingSearchItem
import com.android.settings.spa.SpaSearchLanding.BundleValue
import com.android.settings.spa.SpaSearchLanding.SpaSearchLandingFragment
import com.android.settings.spa.SpaSearchLanding.SpaSearchLandingKey
@@ -41,6 +42,9 @@ class MobileNetworkSettingsSearchIndex(
val title: String
val keywords: String?
get() = null
fun isAvailable(subId: Int): Boolean
}
@@ -89,6 +93,7 @@ class MobileNetworkSettingsSearchIndex(
context = context,
spaSearchLandingKey = key,
itemTitle = searchItem.title,
keywords = searchItem.keywords,
indexableClass = MobileNetworkSettings::class.java,
pageTitle = "$simsTitle > ${subInfo.displayName}",
)
@@ -107,6 +112,7 @@ class MobileNetworkSettingsSearchIndex(
fun createSearchItems(context: Context): List<MobileNetworkSettingsSearchItem> =
listOf(
MmsMessageSearchItem(context),
NrAdvancedCallingSearchItem(context),
)
}
}

View File

@@ -25,6 +25,7 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.settings.R
import com.android.settings.network.telephony.MobileNetworkSettingsSearchIndex.MobileNetworkSettingsSearchItem
import com.android.settings.spa.preference.ComposePreferenceController
import com.android.settingslib.spa.widget.preference.SwitchPreference
import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel
@@ -41,6 +42,7 @@ class NrAdvancedCallingPreferenceController @JvmOverloads constructor(
) : ComposePreferenceController(context, key) {
private var subId: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID
private var repository: VoNrRepository? = null
private val searchItem = NrAdvancedCallingSearchItem(context)
/** Initial this PreferenceController. */
@JvmOverloads
@@ -50,7 +52,7 @@ class NrAdvancedCallingPreferenceController @JvmOverloads constructor(
}
override fun getAvailabilityStatus() =
if (repository?.isVoNrAvailable() == true) AVAILABLE else CONDITIONALLY_UNAVAILABLE
if (searchItem.isAvailable(subId)) AVAILABLE else CONDITIONALLY_UNAVAILABLE
@Composable
override fun Content() {
@@ -73,4 +75,16 @@ class NrAdvancedCallingPreferenceController @JvmOverloads constructor(
}
})
}
companion object {
class NrAdvancedCallingSearchItem(private val context: Context) :
MobileNetworkSettingsSearchItem {
override val key = "nr_advanced_calling"
override val title: String = context.getString(R.string.nr_advanced_calling_title)
override val keywords: String = context.getString(R.string.keywords_nr_advanced_calling)
override fun isAvailable(subId: Int): Boolean =
VoNrRepository(context, subId).isVoNrAvailable()
}
}
}

View File

@@ -93,10 +93,12 @@ class SpaSearchRepository(
itemTitle: String,
indexableClass: Class<*>,
pageTitle: String,
keywords: String? = null,
) =
SearchIndexableRaw(context).apply {
key = spaSearchLandingKey.toByteString().toStringUtf8()
title = itemTitle
this.keywords = keywords
intentAction = SEARCH_LANDING_ACTION
intentTargetClass = SpaSearchLandingActivity::class.qualifiedName
packageName = context.packageName