Adds Text to the common module.

UserSwitcherActivity refactor: CL 2/7

Following the precedent set by Icon and ContentDescription, Text is a
sealed class that can represent a string that is either already loaded
into memory or is referenced to using a resource ID.

This CL also includes the TextViewBinder.

Bug: 243844359
Test: Manually tested as part of CL 7/7 in the chain
Change-Id: I85bc6866fff9d37e573d4cdeaa74da8efbb35246
This commit is contained in:
Alejandro Nijamkin
2022-08-31 15:45:04 -07:00
parent ee3de9c2a4
commit b120521585
2 changed files with 65 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
/*
* Copyright (C) 2022 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.systemui.common.shared.model
import android.annotation.StringRes
/**
* Models a text, that can either be already [loaded][Text.Loaded] or be a [reference]
* [Text.Resource] to a resource.
*/
sealed class Text {
data class Loaded(
val text: String?,
) : Text()
data class Resource(
@StringRes val res: Int,
) : Text()
}

View File

@@ -0,0 +1,31 @@
/*
* Copyright (C) 2022 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.systemui.common.ui.binder
import android.widget.TextView
import com.android.systemui.common.shared.model.Text
object TextViewBinder {
fun bind(view: TextView, viewModel: Text) {
view.text =
when (viewModel) {
is Text.Resource -> view.context.getString(viewModel.res)
is Text.Loaded -> viewModel.text
}
}
}