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

Commit b1205215 authored by Alejandro Nijamkin's avatar Alejandro Nijamkin
Browse files

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
parent ee3de9c2
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
/*
 * 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()
}
+31 −0
Original line number Diff line number Diff line
/*
 * 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
            }
    }
}