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

Commit 2b309391 authored by Sunny Goyal's avatar Sunny Goyal Committed by Android (Google) Code Review
Browse files

Merge "Converting UserIconInfo to data class" into main

parents 48a34c93 4f9ac623
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -40,8 +40,8 @@ import com.android.launcher3.icons.IconNormalizer.ICON_VISIBLE_AREA_FACTOR
import com.android.launcher3.icons.ShadowGenerator.BLUR_FACTOR
import com.android.launcher3.util.FlagOp
import com.android.launcher3.util.UserIconInfo
import com.android.launcher3.util.UserIconInfo.TYPE_MAIN
import com.android.launcher3.util.UserIconInfo.TYPE_WORK
import com.android.launcher3.util.UserIconInfo.Companion.TYPE_MAIN
import com.android.launcher3.util.UserIconInfo.Companion.TYPE_WORK
import com.android.systemui.shared.Flags.extendibleThemeManager
import java.lang.ref.WeakReference
import kotlin.annotation.AnnotationRetention.SOURCE
+0 −81
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 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.launcher3.util;

import static com.android.launcher3.icons.BitmapInfo.FLAG_CLONE;
import static com.android.launcher3.icons.BitmapInfo.FLAG_PRIVATE;
import static com.android.launcher3.icons.BitmapInfo.FLAG_WORK;

import android.os.UserHandle;

import androidx.annotation.IntDef;
import androidx.annotation.NonNull;

/**
 * Data class which stores various properties of a {@link android.os.UserHandle}
 * which affects rendering
 */
public class UserIconInfo {

    public static final int TYPE_MAIN = 0;
    public static final int TYPE_WORK = 1;
    public static final int TYPE_CLONED = 2;

    public static final int TYPE_PRIVATE = 3;

    @IntDef({TYPE_MAIN, TYPE_WORK, TYPE_CLONED, TYPE_PRIVATE})
    public @interface UserType { }

    public final UserHandle user;
    @UserType
    public final int type;

    public final long userSerial;

    public UserIconInfo(UserHandle user, @UserType int type) {
        this(user, type, user != null ? user.hashCode() : 0);
    }

    public UserIconInfo(UserHandle user, @UserType int type, long userSerial) {
        this.user = user;
        this.type = type;
        this.userSerial = userSerial;
    }

    public boolean isMain() {
        return type == TYPE_MAIN;
    }

    public boolean isWork() {
        return type == TYPE_WORK;
    }

    public boolean isCloned() {
        return type == TYPE_CLONED;
    }

    public boolean isPrivate() {
        return type == TYPE_PRIVATE;
    }

    @NonNull
    public FlagOp applyBitmapInfoFlags(@NonNull FlagOp op) {
        return op.setFlag(FLAG_WORK, isWork())
                .setFlag(FLAG_CLONE, isCloned())
                .setFlag(FLAG_PRIVATE, isPrivate());
    }
}
+59 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 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.launcher3.util

import android.os.UserHandle
import androidx.annotation.IntDef
import com.android.launcher3.icons.BitmapInfo

/**
 * Data class which stores various properties of a [android.os.UserHandle] which affects rendering
 */
data class UserIconInfo
@JvmOverloads
constructor(
    @JvmField val user: UserHandle,
    @JvmField @UserType val type: Int,
    @JvmField val userSerial: Long = user.hashCode().toLong(),
) {
    @Target(AnnotationTarget.PROPERTY, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE)
    @IntDef(TYPE_MAIN, TYPE_WORK, TYPE_CLONED, TYPE_PRIVATE)
    annotation class UserType

    val isMain: Boolean
        get() = type == TYPE_MAIN

    val isWork: Boolean
        get() = type == TYPE_WORK

    val isCloned: Boolean
        get() = type == TYPE_CLONED

    val isPrivate: Boolean
        get() = type == TYPE_PRIVATE

    fun applyBitmapInfoFlags(op: FlagOp): FlagOp =
        op.setFlag(BitmapInfo.FLAG_WORK, isWork)
            .setFlag(BitmapInfo.FLAG_CLONE, isCloned)
            .setFlag(BitmapInfo.FLAG_PRIVATE, isPrivate)

    companion object {
        const val TYPE_MAIN: Int = 0
        const val TYPE_WORK: Int = 1
        const val TYPE_CLONED: Int = 2
        const val TYPE_PRIVATE: Int = 3
    }
}