Loading res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,9 @@ <!--Title for a grid option, describing the number of columns and rows, eg: 4x4 [CHAR LIMIT=10] --> <string name="grid_title_pattern"><xliff:g name="num_cols" example="1">%1$d</xliff:g>x<xliff:g name="num_rows" example="1">%2$d</xliff:g></string> <!--Copntent description for a grid option, describing the number of columns and rows, eg: 4 by 4 [CHAR LIMIT=10] --> <string name="grid_content_description"><xliff:g name="num_cols" example="1">%1$d</xliff:g> by <xliff:g name="num_rows" example="1">%2$d</xliff:g></string> <!-- Label of what will happen when user tap on apply button to change grid. [CHAR LIMIT=50] --> <string name="apply_grid_btn_note">Changing grid size will reload workspace and may take a few seconds.</string> Loading src/com/android/customization/picker/grid/ui/viewmodel/GridScreenViewModel.kt +14 −14 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.lifecycle.viewModelScope import com.android.customization.model.ResourceConstants import com.android.customization.picker.grid.domain.interactor.GridInteractor import com.android.customization.picker.grid.shared.model.GridOptionItemsModel import com.android.themepicker.R import com.android.wallpaper.picker.common.text.ui.viewmodel.Text import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel import kotlinx.coroutines.flow.Flow Loading @@ -34,10 +35,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch class GridScreenViewModel( context: Context, private val interactor: GridInteractor, ) : ViewModel() { class GridScreenViewModel(context: Context, private val interactor: GridInteractor) : ViewModel() { @SuppressLint("StaticFieldLeak") // We're not leaking this context as it is the app context. private val applicationContext = context.applicationContext Loading @@ -46,7 +44,7 @@ class GridScreenViewModel( interactor.options.map { model -> toViewModel(model) } private fun toViewModel( model: GridOptionItemsModel, model: GridOptionItemsModel ): List<OptionItemViewModel<GridIconViewModel>> { val iconShapePath = applicationContext.resources.getString( Loading @@ -72,6 +70,14 @@ class GridScreenViewModel( path = iconShapePath, ), text = text, contentDescription = Text.Loaded( applicationContext.resources.getString( R.string.grid_content_description, option.cols, option.rows, ) ), isSelected = option.isSelected, onClicked = option.isSelected.map { isSelected -> Loading @@ -87,20 +93,14 @@ class GridScreenViewModel( } } class Factory( context: Context, private val interactor: GridInteractor, ) : ViewModelProvider.Factory { class Factory(context: Context, private val interactor: GridInteractor) : ViewModelProvider.Factory { private val applicationContext = context.applicationContext @Suppress("UNCHECKED_CAST") override fun <T : ViewModel> create(modelClass: Class<T>): T { return GridScreenViewModel( context = applicationContext, interactor = interactor, ) as T return GridScreenViewModel(context = applicationContext, interactor = interactor) as T } } } Loading
res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,9 @@ <!--Title for a grid option, describing the number of columns and rows, eg: 4x4 [CHAR LIMIT=10] --> <string name="grid_title_pattern"><xliff:g name="num_cols" example="1">%1$d</xliff:g>x<xliff:g name="num_rows" example="1">%2$d</xliff:g></string> <!--Copntent description for a grid option, describing the number of columns and rows, eg: 4 by 4 [CHAR LIMIT=10] --> <string name="grid_content_description"><xliff:g name="num_cols" example="1">%1$d</xliff:g> by <xliff:g name="num_rows" example="1">%2$d</xliff:g></string> <!-- Label of what will happen when user tap on apply button to change grid. [CHAR LIMIT=50] --> <string name="apply_grid_btn_note">Changing grid size will reload workspace and may take a few seconds.</string> Loading
src/com/android/customization/picker/grid/ui/viewmodel/GridScreenViewModel.kt +14 −14 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import androidx.lifecycle.viewModelScope import com.android.customization.model.ResourceConstants import com.android.customization.picker.grid.domain.interactor.GridInteractor import com.android.customization.picker.grid.shared.model.GridOptionItemsModel import com.android.themepicker.R import com.android.wallpaper.picker.common.text.ui.viewmodel.Text import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel import kotlinx.coroutines.flow.Flow Loading @@ -34,10 +35,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch class GridScreenViewModel( context: Context, private val interactor: GridInteractor, ) : ViewModel() { class GridScreenViewModel(context: Context, private val interactor: GridInteractor) : ViewModel() { @SuppressLint("StaticFieldLeak") // We're not leaking this context as it is the app context. private val applicationContext = context.applicationContext Loading @@ -46,7 +44,7 @@ class GridScreenViewModel( interactor.options.map { model -> toViewModel(model) } private fun toViewModel( model: GridOptionItemsModel, model: GridOptionItemsModel ): List<OptionItemViewModel<GridIconViewModel>> { val iconShapePath = applicationContext.resources.getString( Loading @@ -72,6 +70,14 @@ class GridScreenViewModel( path = iconShapePath, ), text = text, contentDescription = Text.Loaded( applicationContext.resources.getString( R.string.grid_content_description, option.cols, option.rows, ) ), isSelected = option.isSelected, onClicked = option.isSelected.map { isSelected -> Loading @@ -87,20 +93,14 @@ class GridScreenViewModel( } } class Factory( context: Context, private val interactor: GridInteractor, ) : ViewModelProvider.Factory { class Factory(context: Context, private val interactor: GridInteractor) : ViewModelProvider.Factory { private val applicationContext = context.applicationContext @Suppress("UNCHECKED_CAST") override fun <T : ViewModel> create(modelClass: Class<T>): T { return GridScreenViewModel( context = applicationContext, interactor = interactor, ) as T return GridScreenViewModel(context = applicationContext, interactor = interactor) as T } } }