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

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

Merge "Move AppItem into AppListModel"

parents 0645cbbb 1445d985
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.template.app.AppList
import com.android.settingslib.spaprivileged.template.app.AppListInput
import com.android.settingslib.spaprivileged.template.app.AppListItem
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import com.android.settingslib.spaprivileged.template.app.AppListPage
import com.android.settingslib.spaprivileged.template.app.getStorageSize
import kotlinx.coroutines.flow.Flow
@@ -70,9 +71,7 @@ fun AllAppListPage(
        showInstantApps = true,
        moreOptions = { ResetAppPreferences(resetAppDialogPresenter::open) },
        appList = appList,
    ) {
        AppListItem(onClick = AppInfoSettingsProvider.navigator(app = record.app))
    }
    )
}

data class AppRecordWithSize(
@@ -88,4 +87,9 @@ class AllAppListModel(

    @Composable
    override fun getSummary(option: Int, record: AppRecordWithSize) = record.app.getSummary()

    @Composable
    override fun AppListItemModel<AppRecordWithSize>.AppItem() {
        AppListItem(onClick = AppInfoSettingsProvider.navigator(app = record.app))
    }
}
+1 −13
Original line number Diff line number Diff line
@@ -21,11 +21,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.android.settings.R
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.rememberContext
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spaprivileged.template.app.AppListItem
import com.android.settingslib.spaprivileged.template.app.AppListPage

object UsageStatsPageProvider : SettingsPageProvider {
@@ -37,14 +33,6 @@ object UsageStatsPageProvider : SettingsPageProvider {
            title = stringResource(R.string.testing_usage_stats),
            listModel = rememberContext(::UsageStatsListModel),
            primaryUserOnly = true,
        ) { AppListItem {} }
    }

    @Composable
    fun EntryItem() {
        Preference(object : PreferenceModel {
            override val title = stringResource(R.string.testing_usage_stats)
            override val onClick = navigator(name)
        })
        )
    }
}
+1 −40
Original line number Diff line number Diff line
@@ -16,27 +16,17 @@

package com.android.settings.spa.notification

import android.app.settings.SettingsEnums
import android.content.Context
import android.content.pm.ApplicationInfo
import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.produceState
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import com.android.settings.R
import com.android.settings.applications.AppInfoBase
import com.android.settings.notification.app.AppNotificationSettings
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.rememberContext
import com.android.settingslib.spa.framework.compose.toState
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import com.android.settingslib.spaprivileged.template.app.AppListPage
import com.android.settingslib.spaprivileged.template.app.AppListSwitchItem

object AppListNotificationsPageProvider : SettingsPageProvider {
    override val name = "AppListNotifications"
@@ -46,7 +36,7 @@ object AppListNotificationsPageProvider : SettingsPageProvider {
        AppListPage(
            title = stringResource(R.string.app_notifications_title),
            listModel = rememberContext(::AppNotificationsListModel),
        ) { AppNotificationsItem() }
        )
    }

    @Composable
@@ -58,32 +48,3 @@ object AppListNotificationsPageProvider : SettingsPageProvider {
        })
    }
}

@Composable
private fun AppListItemModel<AppNotificationsRecord>.AppNotificationsItem() {
    val appNotificationsRepository = rememberContext(::AppNotificationRepository)
    val context = LocalContext.current
    AppListSwitchItem(
        onClick = {
            navigateToAppNotificationSettings(
                context = context,
                app = record.app,
            )
        },
        checked = record.controller.isEnabled.observeAsState(),
        changeable = produceState(initialValue = false) {
            value = appNotificationsRepository.isChangeable(record.app)
        },
        onCheckedChange = record.controller::setEnabled,
    )
}

private fun navigateToAppNotificationSettings(context: Context, app: ApplicationInfo) {
    AppInfoBase.startAppInfoFragment(
        AppNotificationSettings::class.java,
        context.getString(R.string.notifications_title),
        app,
        context,
        SettingsEnums.MANAGE_APPLICATIONS_NOTIFICATIONS,
    )
}
+29 −0
Original line number Diff line number Diff line
@@ -16,11 +16,16 @@

package com.android.settings.spa.notification

import android.app.settings.SettingsEnums
import android.content.Context
import android.content.pm.ApplicationInfo
import android.icu.text.RelativeDateTimeFormatter
import androidx.compose.runtime.Composable
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.produceState
import com.android.settings.R
import com.android.settings.applications.AppInfoBase
import com.android.settings.notification.app.AppNotificationSettings
import com.android.settings.spa.notification.SpinnerItem.Companion.toSpinnerItem
import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.framework.util.asyncFilter
@@ -28,6 +33,8 @@ import com.android.settingslib.spa.framework.util.asyncForEach
import com.android.settingslib.spaprivileged.model.app.AppEntry
import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import com.android.settingslib.spaprivileged.template.app.AppListSwitchItem
import com.android.settingslib.utils.StringUtil
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
@@ -114,6 +121,28 @@ class AppNotificationsListModel(
            )
        }
    }

    @Composable
    override fun AppListItemModel<AppNotificationsRecord>.AppItem() {
        AppListSwitchItem(
            onClick = { navigateToAppNotificationSettings(app = record.app) },
            checked = record.controller.isEnabled.observeAsState(),
            changeable = produceState(initialValue = false) {
                value = repository.isChangeable(record.app)
            },
            onCheckedChange = record.controller::setEnabled,
        )
    }

    private fun navigateToAppNotificationSettings(app: ApplicationInfo) {
        AppInfoBase.startAppInfoFragment(
            AppNotificationSettings::class.java,
            context.getString(R.string.notifications_title),
            app,
            context,
            SettingsEnums.MANAGE_APPLICATIONS_NOTIFICATIONS,
        )
    }
}

private enum class SpinnerItem(val stringResId: Int) {
+2 −20
Original line number Diff line number Diff line
@@ -16,17 +16,13 @@

package com.android.settings.spa.system

import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.android.settings.R
import com.android.settings.localepicker.AppLocalePickerActivity
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.rememberContext
@@ -35,8 +31,6 @@ import com.android.settingslib.spa.framework.theme.SettingsDimension
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.ui.SettingsBody
import com.android.settingslib.spaprivileged.template.app.AppListItem
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import com.android.settingslib.spaprivileged.template.app.AppListPage

object AppLanguagesPageProvider : SettingsPageProvider {
@@ -52,7 +46,7 @@ object AppLanguagesPageProvider : SettingsPageProvider {
                    SettingsBody(stringResource(R.string.desc_app_locale_selection_supported))
                }
            },
        ) { AppLanguageItem() }
        )
    }

    @Composable
@@ -64,15 +58,3 @@ object AppLanguagesPageProvider : SettingsPageProvider {
        })
    }
}

@Composable
private fun AppListItemModel<AppLanguagesRecord>.AppLanguageItem() {
    val context = LocalContext.current
    AppListItem {
        val intent = Intent(context, AppLocalePickerActivity::class.java).apply {
            data = Uri.parse("package:${record.app.packageName}")
            putExtra("uid", record.app.uid)
        }
        context.startActivity(intent)
    }
}
Loading