InternetPreferenceController V2 (3/n)

Add DataSubscriptionRepository, when cellular connection,
show the active subscription name.

Bug: 339884322
Flag: com.android.settings.flags.internet_preference_controller_v2
Test: manual - on Internet
Test: unit test
Change-Id: If2a3e7f8df1b1ed89bc760ec5165182b3e9b64a8
This commit is contained in:
Chaohui Wang
2024-06-12 14:27:25 +08:00
parent 7ae5aaa69d
commit 2717f70ac0
7 changed files with 312 additions and 50 deletions

View File

@@ -46,6 +46,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import com.android.settings.R
import com.android.settings.network.SubscriptionInfoListViewModel
import com.android.settings.network.telephony.DataSubscriptionRepository
import com.android.settings.network.telephony.TelephonyRepository
import com.android.settings.spa.network.PrimarySimRepository.PrimarySimInfo
import com.android.settings.wifi.WifiPickerTrackerHelper
@@ -158,7 +159,7 @@ open class NetworkCellularGroupProvider : SettingsPageProvider {
selectableSubscriptionInfoListFlow,
context.defaultVoiceSubscriptionFlow(),
context.defaultSmsSubscriptionFlow(),
context.defaultDefaultDataSubscriptionFlow(),
DataSubscriptionRepository(context).defaultDataSubscriptionIdFlow(),
this::refreshUiStates,
).flowOn(Dispatchers.Default)
@@ -370,15 +371,6 @@ private fun Context.defaultSmsSubscriptionFlow(): Flow<Int> =
).map { SubscriptionManager.getDefaultSmsSubscriptionId() }
.conflate().flowOn(Dispatchers.Default)
private fun Context.defaultDefaultDataSubscriptionFlow(): Flow<Int> =
merge(
flowOf(null), // kick an initial value
broadcastReceiverFlow(
IntentFilter(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)
),
).map { SubscriptionManager.getDefaultDataSubscriptionId() }
.conflate().flowOn(Dispatchers.Default)
suspend fun setDefaultVoice(
subscriptionManager: SubscriptionManager?,
subId: Int