UserManagerCompatVL.java revision 18bf8e2ffde3444d53aaa9654da02cdedd0b7cd1
1ed13187a745866483139e2878037e1f8427ce567Kenny Guy
2ed13187a745866483139e2878037e1f8427ce567Kenny Guy/*
3ed13187a745866483139e2878037e1f8427ce567Kenny Guy * Copyright (C) 2014 The Android Open Source Project
4ed13187a745866483139e2878037e1f8427ce567Kenny Guy *
5ed13187a745866483139e2878037e1f8427ce567Kenny Guy * Licensed under the Apache License, Version 2.0 (the "License");
6ed13187a745866483139e2878037e1f8427ce567Kenny Guy * you may not use this file except in compliance with the License.
7ed13187a745866483139e2878037e1f8427ce567Kenny Guy * You may obtain a copy of the License at
8ed13187a745866483139e2878037e1f8427ce567Kenny Guy *
9ed13187a745866483139e2878037e1f8427ce567Kenny Guy *      http://www.apache.org/licenses/LICENSE-2.0
10ed13187a745866483139e2878037e1f8427ce567Kenny Guy *
11ed13187a745866483139e2878037e1f8427ce567Kenny Guy * Unless required by applicable law or agreed to in writing, software
12ed13187a745866483139e2878037e1f8427ce567Kenny Guy * distributed under the License is distributed on an "AS IS" BASIS,
13ed13187a745866483139e2878037e1f8427ce567Kenny Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14ed13187a745866483139e2878037e1f8427ce567Kenny Guy * See the License for the specific language governing permissions and
15ed13187a745866483139e2878037e1f8427ce567Kenny Guy * limitations under the License.
16ed13187a745866483139e2878037e1f8427ce567Kenny Guy */
17ed13187a745866483139e2878037e1f8427ce567Kenny Guy
18ed13187a745866483139e2878037e1f8427ce567Kenny Guypackage com.android.launcher3.compat;
19ed13187a745866483139e2878037e1f8427ce567Kenny Guy
20ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.content.Context;
2118bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyalimport android.content.SharedPreferences;
22f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokaniimport android.content.pm.PackageManager;
23ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.graphics.drawable.Drawable;
24ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.os.UserHandle;
2518bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal
2618bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyalimport com.android.launcher3.LauncherAppState;
27ed13187a745866483139e2878037e1f8427ce567Kenny Guy
28ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport java.util.ArrayList;
29c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guyimport java.util.Collections;
30ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport java.util.List;
31ed13187a745866483139e2878037e1f8427ce567Kenny Guy
32ed13187a745866483139e2878037e1f8427ce567Kenny Guypublic class UserManagerCompatVL extends UserManagerCompatV17 {
3318bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal    private static final String USER_CREATION_TIME_KEY = "user_creation_time_";
3418bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal
35f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani    private final PackageManager mPm;
3618bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal    private final Context mContext;
37ed13187a745866483139e2878037e1f8427ce567Kenny Guy
38ed13187a745866483139e2878037e1f8427ce567Kenny Guy    UserManagerCompatVL(Context context) {
39ed13187a745866483139e2878037e1f8427ce567Kenny Guy        super(context);
40f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        mPm = context.getPackageManager();
4118bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal        mContext = context;
42ed13187a745866483139e2878037e1f8427ce567Kenny Guy    }
43ed13187a745866483139e2878037e1f8427ce567Kenny Guy
446075170b838bfe7a040bbff25c2c22859b7d6ee5Dharmesh Mokani    @Override
45ed13187a745866483139e2878037e1f8427ce567Kenny Guy    public List<UserHandleCompat> getUserProfiles() {
46c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        List<UserHandle> users = mUserManager.getUserProfiles();
47c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        if (users == null) {
48c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy            return Collections.EMPTY_LIST;
49ed13187a745866483139e2878037e1f8427ce567Kenny Guy        }
50c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        ArrayList<UserHandleCompat> compatUsers = new ArrayList<UserHandleCompat>(
51c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy                users.size());
52c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        for (UserHandle user : users) {
53c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy            compatUsers.add(UserHandleCompat.fromUser(user));
54c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        }
55c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        return compatUsers;
56ed13187a745866483139e2878037e1f8427ce567Kenny Guy    }
57ed13187a745866483139e2878037e1f8427ce567Kenny Guy
586075170b838bfe7a040bbff25c2c22859b7d6ee5Dharmesh Mokani    @Override
59ed13187a745866483139e2878037e1f8427ce567Kenny Guy    public Drawable getBadgedDrawableForUser(Drawable unbadged, UserHandleCompat user) {
603d0854e4b8c0a6daaa80ac14c6bc7572a4e90916Dharmesh Mokani        return mPm.getUserBadgedIcon(unbadged, user.getUser());
61c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy    }
62c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy
636075170b838bfe7a040bbff25c2c22859b7d6ee5Dharmesh Mokani    @Override
64d6fe52636dcaa96ec1e10ce2daebe98b820c9739Kenny Guy    public CharSequence getBadgedLabelForUser(CharSequence label, UserHandleCompat user) {
65c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        if (user == null) {
66c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy            return label;
67ed13187a745866483139e2878037e1f8427ce567Kenny Guy        }
683d0854e4b8c0a6daaa80ac14c6bc7572a4e90916Dharmesh Mokani        return mPm.getUserBadgedLabel(label, user.getUser());
69ed13187a745866483139e2878037e1f8427ce567Kenny Guy    }
7018bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal
7118bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal    @Override
7218bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal    public long getUserCreationTime(UserHandleCompat user) {
7318bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal        // TODO: Use system API once available.
7418bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal        SharedPreferences prefs = mContext.getSharedPreferences(
7518bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal                LauncherAppState.getSharedPreferencesKey(), Context.MODE_PRIVATE);
7618bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal        String key = USER_CREATION_TIME_KEY + getSerialNumberForUser(user);
7718bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal        if (!prefs.contains(key)) {
7818bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal            prefs.edit().putLong(key, System.currentTimeMillis()).apply();
7918bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal        }
8018bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal        return prefs.getLong(key, 0);
8118bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal    }
82ed13187a745866483139e2878037e1f8427ce567Kenny Guy}
83ed13187a745866483139e2878037e1f8427ce567Kenny Guy
84