01e0009b71
Since there is no system broadcast with Intent.ACTION_MANAGED_PROFILE_ADDED, UserCache's user list does not get updated when a new profile is installed until launcher is restarted. This change fixes that problem by getting the freshest list of users directly from UserManager. This change also applies the proper padding to work apps recycler-view after work mode switch is attached. Test: Manual Bug: 201191227 Change-Id: I0f570eba44ebb845d0d6f8c5f14a63f9a8c18539
74 lines
2.4 KiB
Java
74 lines
2.4 KiB
Java
/*
|
|
* Copyright (C) 2018 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.model;
|
|
|
|
import android.os.UserHandle;
|
|
import android.os.UserManager;
|
|
import android.util.LongSparseArray;
|
|
import android.util.SparseBooleanArray;
|
|
|
|
import com.android.launcher3.pm.UserCache;
|
|
|
|
/**
|
|
* Utility class to manager store and user manager state at any particular time
|
|
*/
|
|
public class UserManagerState {
|
|
|
|
public final LongSparseArray<UserHandle> allUsers = new LongSparseArray<>();
|
|
|
|
private final LongSparseArray<Boolean> mQuietUsersSerialNoMap = new LongSparseArray<>();
|
|
private final SparseBooleanArray mQuietUsersHashCodeMap = new SparseBooleanArray();
|
|
|
|
/**
|
|
* Initialises the state values for all users
|
|
*/
|
|
public void init(UserCache userCache, UserManager userManager) {
|
|
for (UserHandle user : userManager.getUserProfiles()) {
|
|
long serialNo = userCache.getSerialNumberForUser(user);
|
|
boolean isUserQuiet = userManager.isQuietModeEnabled(user);
|
|
allUsers.put(serialNo, user);
|
|
mQuietUsersHashCodeMap.put(user.hashCode(), isUserQuiet);
|
|
mQuietUsersSerialNoMap.put(serialNo, isUserQuiet);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns true if quiet mode is enabled for the provided user
|
|
*/
|
|
public boolean isUserQuiet(long serialNo) {
|
|
return mQuietUsersSerialNoMap.get(serialNo);
|
|
}
|
|
|
|
/**
|
|
* Returns true if quiet mode is enabled for the provided user
|
|
*/
|
|
public boolean isUserQuiet(UserHandle user) {
|
|
return mQuietUsersHashCodeMap.get(user.hashCode());
|
|
}
|
|
|
|
/**
|
|
* Returns true if any user profile has quiet mode enabled.
|
|
*/
|
|
public boolean isAnyProfileQuietModeEnabled() {
|
|
for (int i = mQuietUsersHashCodeMap.size() - 1; i >= 0; i--) {
|
|
if (mQuietUsersHashCodeMap.valueAt(i)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|