Merge "Fix for badge updates in PredictionRowView" into ub-launcher3-master
diff --git a/res/layout/work_tab_footer.xml b/res/layout/work_tab_footer.xml
index e3416ac..dc0fdd4 100644
--- a/res/layout/work_tab_footer.xml
+++ b/res/layout/work_tab_footer.xml
@@ -73,7 +73,6 @@
android:lines="1"
android:minHeight="24dp"
android:paddingStart="12dp"
- android:text="@string/managed_by_your_organisation"
android:textColor="?android:attr/textColorHint"
android:textSize="13sp"/>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d77065c..ee09946 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -324,13 +324,16 @@
<!-- Label of tab to indicate work apps -->
<string name="all_apps_work_tab">Work</string>
- <!-- Label of the work mode toggle -->
+ <!-- This string is in the work profile tab when a user has All Apps open on their phone. This is a label for a toggle to turn the work profile on and off. "Work profile" means a separate profile on a user's phone that's specifically for their work apps and managed by their company. "Work" is used as an adjective.-->
<string name="work_profile_toggle_label">Work profile</string>
- <!-- Title in bottom user education view in work tab -->
+ <!-- Title of an overlay in All Apps. This overlay is letting a user know about their work profile, which is managed by their employer. "Work apps" are apps in a user's work profile.-->
<string name="bottom_work_tab_user_education_title">Find work apps here</string>
- <!-- Body text in bottom user education view in work tab -->
- <string name="bottom_work_tab_user_education_body">Each work app has an orange badge, which means it\'s kept secure by your organization. Work apps can be moved to your Home Screen for easier access.</string>
- <!-- Label in work tab to tell users that work profile is managed by their organisation. -->
- <string name="managed_by_your_organisation">Managed by your organisation</string>
+ <!-- Text in an overlay in All Apps. This overlay is letting a user know about their work profile, which is managed by their employer.-->
+ <string name="bottom_work_tab_user_education_body">Each work app has an orange badge and is kept secure by your organization. Move apps to your Home screen for easier access.</string>
+ <!-- This string is in the work profile tab when a user has All Apps open on their phone. It describes the label of a toggle, "Work profile," as being managed by the user's employer.
+ "Organization" is used to represent a variety of businesses, non-profits, and educational institutions).-->
+ <string name="work_mode_on_label">Managed by your organization</string>
+ <!-- This string appears under a the label of a toggle in the work profile tab on a user's phone. It describes the status of the toggle, "Work profile," when it's turned off. "Work profile" means a separate profile on a user's phone that's speficially for their work apps and is managed by their company.-->
+ <string name="work_mode_off_label">Notifications and apps are off</string>
</resources>
diff --git a/src/com/android/launcher3/BaseRecyclerView.java b/src/com/android/launcher3/BaseRecyclerView.java
index 76c7845..cc13263 100644
--- a/src/com/android/launcher3/BaseRecyclerView.java
+++ b/src/com/android/launcher3/BaseRecyclerView.java
@@ -91,7 +91,7 @@
// Move to mScrollbar's coordinate system.
// We need to take parent into account (view pager's location)
ViewGroup parent = (ViewGroup) getParent();
- int left = parent.getLeft() + getLeft() - mScrollbar.getLeft();
+ int left = parent.getLeft() - mScrollbar.getLeft();
int top = parent.getTop() + getTop() - mScrollbar.getTop() - getScrollBarTop();
ev.offsetLocation(left, top);
try {
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index a279633..164efe5 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -102,8 +102,6 @@
// All apps
public int allAppsCellHeightPx;
- public int allAppsNumCols;
- public int allAppsNumPredictiveCols;
public int allAppsIconSizePx;
public int allAppsIconDrawablePaddingPx;
public float allAppsIconTextSizePx;
@@ -385,10 +383,6 @@
return mInsets;
}
- public void updateAppsViewNumCols() {
- allAppsNumCols = allAppsNumPredictiveCols = inv.numColumns;
- }
-
public Point getCellSize() {
Point result = new Point();
// Since we are only concerned with the overall padding, layout direction does
diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java
index 1f5aa13..25eacb5 100644
--- a/src/com/android/launcher3/Hotseat.java
+++ b/src/com/android/launcher3/Hotseat.java
@@ -46,7 +46,7 @@
private CellLayout mContent;
@ViewDebug.ExportedProperty(category = "launcher")
- private final boolean mHasVerticalHotseat;
+ private boolean mHasVerticalHotseat;
public Hotseat(Context context) {
this(context, null);
@@ -59,7 +59,6 @@
public Hotseat(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mLauncher = Launcher.getLauncher(context);
- mHasVerticalHotseat = mLauncher.getDeviceProfile().isVerticalBarLayout();
}
public CellLayout getLayout() {
@@ -91,13 +90,7 @@
@Override
protected void onFinishInflate() {
super.onFinishInflate();
- DeviceProfile grid = mLauncher.getDeviceProfile();
- mContent = (CellLayout) findViewById(R.id.layout);
- if (grid.isVerticalBarLayout()) {
- mContent.setGridSize(1, grid.inv.numHotseatIcons);
- } else {
- mContent.setGridSize(grid.inv.numHotseatIcons, 1);
- }
+ mContent = findViewById(R.id.layout);
resetLayout();
}
@@ -165,7 +158,11 @@
public void setInsets(Rect insets) {
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams();
DeviceProfile grid = mLauncher.getDeviceProfile();
+ mHasVerticalHotseat = mLauncher.getDeviceProfile().isVerticalBarLayout();
+
if (mHasVerticalHotseat) {
+ mContent.setGridSize(1, grid.inv.numHotseatIcons);
+
lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
if (insets.left > insets.right) {
lp.gravity = Gravity.LEFT;
@@ -180,6 +177,8 @@
grid.hotseatBarSidePaddingPx, insets.top, insets.right, insets.bottom);
}
} else {
+ mContent.setGridSize(grid.inv.numHotseatIcons, 1);
+
lp.gravity = Gravity.BOTTOM;
lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
lp.height = grid.hotseatBarSizePx + insets.bottom;
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 2a5f453..e3682b4 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2552,10 +2552,6 @@
return bounceAnim;
}
- public boolean useVerticalBarLayout() {
- return mDeviceProfile.isVerticalBarLayout();
- }
-
/**
* Add the icons for all apps.
*
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 893d820..de3b09a 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -207,7 +207,7 @@
private boolean mStripScreensOnPageStopMoving = false;
private DragPreviewProvider mOutlineProvider = null;
- private final boolean mWorkspaceFadeInAdjacentScreens;
+ private boolean mWorkspaceFadeInAdjacentScreens;
final WallpaperOffsetInterpolator mWallpaperOffset;
private boolean mUnlockWallpaperFromDefaultPageOnLayout;
@@ -292,8 +292,6 @@
mLauncher = Launcher.getLauncher(context);
mStateTransitionAnimation = new WorkspaceStateTransitionAnimation(mLauncher, this);
- DeviceProfile grid = mLauncher.getDeviceProfile();
- mWorkspaceFadeInAdjacentScreens = grid.shouldFadeAdjacentWorkspaceScreens();
mWallpaperManager = WallpaperManager.getInstance(context);
mWallpaperOffset = new WallpaperOffsetInterpolator(this);
@@ -312,6 +310,9 @@
mInsets.set(insets);
DeviceProfile grid = mLauncher.getDeviceProfile();
+ mMaxDistanceForFolderCreation = (0.55f * grid.iconSizePx);
+ mWorkspaceFadeInAdjacentScreens = grid.shouldFadeAdjacentWorkspaceScreens();
+
Rect padding = grid.workspacePadding;
setPadding(padding.left, padding.top, padding.right, padding.bottom);
@@ -324,6 +325,13 @@
// We assume symmetrical padding in portrait mode.
setPageSpacing(Math.max(grid.defaultPageSpacingPx, padding.left + 1));
}
+
+ int paddingLeftRight = grid.cellLayoutPaddingLeftRightPx;
+ int paddingBottom = grid.cellLayoutBottomPaddingPx;
+ for (int i = mWorkspaceScreens.size() - 1; i >= 0; i--) {
+ mWorkspaceScreens.valueAt(i)
+ .setPadding(paddingLeftRight, 0, paddingLeftRight, paddingBottom);
+ }
}
/**
@@ -445,12 +453,9 @@
*/
protected void initWorkspace() {
mCurrentPage = DEFAULT_PAGE;
- DeviceProfile grid = mLauncher.getDeviceProfile();
- setWillNotDraw(false);
setClipToPadding(false);
setupLayoutTransition();
- mMaxDistanceForFolderCreation = (0.55f * grid.iconSizePx);
// Set the wallpaper dimensions when Launcher starts up
setWallpaperDimension();
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index 47dc566..59bdf4b 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -275,8 +275,6 @@
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
DeviceProfile grid = mLauncher.getDeviceProfile();
- // Update the number of items in the grid before we measure the view
- grid.updateAppsViewNumCols();
if (mNumAppsPerRow != grid.inv.numColumns ||
mNumPredictedAppsPerRow != grid.inv.numColumns) {
diff --git a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java
index 234eb81..769f9ba 100644
--- a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java
+++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java
@@ -41,6 +41,7 @@
import com.android.launcher3.Utilities;
import com.android.launcher3.allapps.AlphabeticalAppsList.AdapterItem;
import com.android.launcher3.anim.SpringAnimationHandler;
+import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.discovery.AppDiscoveryAppInfo;
import com.android.launcher3.discovery.AppDiscoveryItemView;
@@ -377,6 +378,11 @@
case VIEW_TYPE_WORK_TAB_FOOTER:
WorkModeSwitch workModeToggle = holder.itemView.findViewById(R.id.work_mode_toggle);
workModeToggle.refresh();
+ TextView managedByLabel = holder.itemView.findViewById(R.id.managed_by_label);
+ boolean anyProfileQuietModeEnabled = UserManagerCompat.getInstance(
+ managedByLabel.getContext()).isAnyProfileQuietModeEnabled();
+ managedByLabel.setText(anyProfileQuietModeEnabled
+ ? R.string.work_mode_off_label : R.string.work_mode_on_label);
break;
}
if (mBindViewCallback != null) {
diff --git a/src/com/android/launcher3/allapps/WorkModeSwitch.java b/src/com/android/launcher3/allapps/WorkModeSwitch.java
index 05d5e53..e7cf092 100644
--- a/src/com/android/launcher3/allapps/WorkModeSwitch.java
+++ b/src/com/android/launcher3/allapps/WorkModeSwitch.java
@@ -55,22 +55,9 @@
}
public void refresh() {
- setCheckedInternal(!isAnyProfileQuietModeEnabled());
- setEnabled(true);
- }
-
- private boolean isAnyProfileQuietModeEnabled() {
UserManagerCompat userManager = UserManagerCompat.getInstance(getContext());
- List<UserHandle> userProfiles = userManager.getUserProfiles();
- for (UserHandle userProfile : userProfiles) {
- if (Process.myUserHandle().equals(userProfile)) {
- continue;
- }
- if (userManager.isQuietModeEnabled(userProfile)) {
- return true;
- }
- }
- return false;
+ setCheckedInternal(!userManager.isAnyProfileQuietModeEnabled());
+ setEnabled(true);
}
private void trySetQuietModeEnabledToAllProfilesAsync(boolean enabled) {
diff --git a/src/com/android/launcher3/compat/UserManagerCompat.java b/src/com/android/launcher3/compat/UserManagerCompat.java
index ddb244a..62055dc 100644
--- a/src/com/android/launcher3/compat/UserManagerCompat.java
+++ b/src/com/android/launcher3/compat/UserManagerCompat.java
@@ -64,4 +64,5 @@
public abstract boolean isDemoUser();
public abstract boolean requestQuietModeEnabled(boolean enableQuietMode, UserHandle user);
+ public abstract boolean isAnyProfileQuietModeEnabled();
}
diff --git a/src/com/android/launcher3/compat/UserManagerCompatVL.java b/src/com/android/launcher3/compat/UserManagerCompatVL.java
index 5585fe4..e57786d 100644
--- a/src/com/android/launcher3/compat/UserManagerCompatVL.java
+++ b/src/com/android/launcher3/compat/UserManagerCompatVL.java
@@ -88,6 +88,11 @@
}
@Override
+ public boolean isAnyProfileQuietModeEnabled() {
+ return false;
+ }
+
+ @Override
public void enableAndResetCache() {
synchronized (this) {
mUsers = new LongArrayMap<>();
diff --git a/src/com/android/launcher3/compat/UserManagerCompatVN.java b/src/com/android/launcher3/compat/UserManagerCompatVN.java
index 50a0217..3733565 100644
--- a/src/com/android/launcher3/compat/UserManagerCompatVN.java
+++ b/src/com/android/launcher3/compat/UserManagerCompatVN.java
@@ -19,8 +19,11 @@
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
+import android.os.Process;
import android.os.UserHandle;
+import java.util.List;
+
@TargetApi(Build.VERSION_CODES.N)
public class UserManagerCompatVN extends UserManagerCompatVM {
@@ -37,5 +40,19 @@
public boolean isUserUnlocked(UserHandle user) {
return mUserManager.isUserUnlocked(user);
}
+
+ @Override
+ public boolean isAnyProfileQuietModeEnabled() {
+ List<UserHandle> userProfiles = getUserProfiles();
+ for (UserHandle userProfile : userProfiles) {
+ if (Process.myUserHandle().equals(userProfile)) {
+ continue;
+ }
+ if (isQuietModeEnabled(userProfile)) {
+ return true;
+ }
+ }
+ return false;
+ }
}