am a4d0ef3c: (-s ours) am 7c9f3348: Merge remote-tracking branch \'goog/ub-now-lunchbox\' into lunchbox-release
* commit 'a4d0ef3c84cb5a9951d7d967c2c99d54d573f927':
Fix issue of extra blank screen after uninstall (issue 12372657)
Fix build
Changed behaviour of the wallpaper picker.
Guard against null default wallpaper
Avoid stripping empty screens if the workspace is still loading (issue 12523285)
Changed inconsistency when selecting default wallpaper, where it did not go back to home.
skip backup if launcher is in a bad state
Revert "Disabled the wallpaper when completely in -1 Now space."
Updating Read/Write settings permission protectionLevels. (Bug 11372484)
Fixed visibility issue of save button in case the url loading failed
Import translations. DO NOT MERGE
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d4cd6a2..36fa4c1 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -25,7 +25,7 @@
<permission
android:name="com.android.launcher3.permission.PRELOAD_WORKSPACE"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="signatureOrSystem" />
+ android:protectionLevel="system|signature" />
<permission
android:name="com.android.launcher.permission.INSTALL_SHORTCUT"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
@@ -47,7 +47,7 @@
<permission
android:name="com.android.launcher3.permission.WRITE_SETTINGS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
- android:protectionLevel="signatureOrSystem"
+ android:protectionLevel="normal"
android:label="@string/permlab_write_settings"
android:description="@string/permdesc_write_settings"/>
@@ -106,7 +106,7 @@
<activity
android:name="com.android.launcher3.LauncherWallpaperPickerActivity"
- android:theme="@style/Theme.WallpaperPicker"
+ android:theme="@style/Theme.WallpaperCropper"
android:label="@string/pick_wallpaper"
android:icon="@mipmap/ic_launcher_wallpaper"
android:finishOnCloseSystemDialogs="true"
diff --git a/WallpaperPicker/res/layout/actionbar_set_wallpaper.xml b/WallpaperPicker/res/layout/actionbar_set_wallpaper.xml
index 8e349b7..2a0188a 100644
--- a/WallpaperPicker/res/layout/actionbar_set_wallpaper.xml
+++ b/WallpaperPicker/res/layout/actionbar_set_wallpaper.xml
@@ -18,15 +18,18 @@
*/
-->
-<com.android.launcher3.AlphaDisableableButton
- xmlns:android="http://schemas.android.com/apk/res/android"
- style="@style/ActionBarSetWallpaperStyle"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ style="?android:actionButtonStyle"
android:id="@+id/set_wallpaper_button"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingRight="20dp"
- android:drawableLeft="@drawable/ic_actionbar_accept"
- android:drawablePadding="8dp"
- android:gravity="start|center_vertical"
- android:text="@string/wallpaper_instructions">
-</com.android.launcher3.AlphaDisableableButton>
+ android:layout_height="match_parent" >
+ <TextView style="?android:actionBarTabTextStyle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="start|center_vertical"
+ android:paddingRight="20dp"
+ android:drawableLeft="@drawable/ic_actionbar_accept"
+ android:drawablePadding="8dp"
+ android:gravity="center_vertical"
+ android:text="@string/wallpaper_instructions" />
+</FrameLayout>
diff --git a/WallpaperPicker/res/values-sw720dp-v19/styles.xml b/WallpaperPicker/res/values-sw720dp-v19/styles.xml
deleted file mode 100644
index 9107851..0000000
--- a/WallpaperPicker/res/values-sw720dp-v19/styles.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* 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.
-*/
--->
-
-<resources>
- <style name="Theme" parent="android:Theme.Holo.Wallpaper.NoTitleBar">
- <item name="android:windowActionModeOverlay">true</item>
- <item name="android:windowTranslucentStatus">true</item>
- <item name="android:windowTranslucentNavigation">true</item>
- </style>
-</resources>
diff --git a/WallpaperPicker/res/values-sw720dp/styles.xml b/WallpaperPicker/res/values-sw720dp/styles.xml
index b489090..9107851 100644
--- a/WallpaperPicker/res/values-sw720dp/styles.xml
+++ b/WallpaperPicker/res/values-sw720dp/styles.xml
@@ -20,5 +20,7 @@
<resources>
<style name="Theme" parent="android:Theme.Holo.Wallpaper.NoTitleBar">
<item name="android:windowActionModeOverlay">true</item>
+ <item name="android:windowTranslucentStatus">true</item>
+ <item name="android:windowTranslucentNavigation">true</item>
</style>
</resources>
diff --git a/WallpaperPicker/res/values-v19/styles.xml b/WallpaperPicker/res/values-v19/styles.xml
deleted file mode 100644
index 85a989d..0000000
--- a/WallpaperPicker/res/values-v19/styles.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* 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.
-*/
--->
-
-<resources>
- <style name="Theme.WallpaperCropper" parent="@android:style/Theme.Holo">
- <item name="android:actionBarStyle">@style/WallpaperCropperActionBar</item>
- <item name="android:windowFullscreen">true</item>
- <item name="android:windowActionBarOverlay">true</item>
- <item name="android:windowTranslucentNavigation">true</item>
- </style>
-
- <style name="Theme" parent="@android:style/Theme.Holo.Wallpaper.NoTitleBar">
- <item name="android:windowTranslucentStatus">true</item>
- <item name="android:windowTranslucentNavigation">true</item>
- </style>
-</resources>
diff --git a/WallpaperPicker/res/values/styles.xml b/WallpaperPicker/res/values/styles.xml
index 16b11f2..0e48dda 100644
--- a/WallpaperPicker/res/values/styles.xml
+++ b/WallpaperPicker/res/values/styles.xml
@@ -22,12 +22,7 @@
<item name="android:actionBarStyle">@style/WallpaperCropperActionBar</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowActionBarOverlay">true</item>
- </style>
-
- <style name="Theme.WallpaperPicker" parent="Theme.WallpaperCropper">
- <item name="android:windowBackground">@android:color/transparent</item>
- <item name="android:colorBackgroundCacheHint">@null</item>
- <item name="android:windowShowWallpaper">true</item>
+ <item name="android:windowTranslucentNavigation">true</item>
</style>
<style name="WallpaperCropperActionBar" parent="android:style/Widget.Holo.ActionBar">
@@ -36,9 +31,7 @@
</style>
<style name="Theme" parent="@android:style/Theme.Holo.Wallpaper.NoTitleBar">
- </style>
-
- <style name="ActionBarSetWallpaperStyle" parent="@android:style/Widget.Holo.ActionButton">
- <item name="android:textColor">#ffffffff</item>
+ <item name="android:windowTranslucentStatus">true</item>
+ <item name="android:windowTranslucentNavigation">true</item>
</style>
</resources>
diff --git a/WallpaperPicker/src/com/android/launcher3/AlphaDisableableButton.java b/WallpaperPicker/src/com/android/launcher3/AlphaDisableableButton.java
deleted file mode 100644
index f0796c3..0000000
--- a/WallpaperPicker/src/com/android/launcher3/AlphaDisableableButton.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2014 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;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.Button;
-
-/**
- * A Button which becomes translucent when it is disabled
- */
-public class AlphaDisableableButton extends Button {
- public static float DISABLED_ALPHA_VALUE = 0.4f;
- public AlphaDisableableButton(Context context) {
- this(context, null);
- }
-
- public AlphaDisableableButton(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public AlphaDisableableButton(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- setLayerType(LAYER_TYPE_HARDWARE, null);
- }
-
- @Override
- public void setEnabled(boolean enabled) {
- super.setEnabled(enabled);
- if(enabled) {
- setAlpha(1.0f);
- } else {
- setAlpha(DISABLED_ALPHA_VALUE);
- }
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java b/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java
index 88f4461..60b2537 100644
--- a/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java
+++ b/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java
@@ -122,7 +122,7 @@
Intent preview = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
preview.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
mInfo.getComponent());
- a.onLiveWallpaperPickerLaunch(mInfo);
+ a.onLiveWallpaperPickerLaunch();
a.startActivityForResultSafely(preview, WallpaperPickerActivity.PICK_LIVE_WALLPAPER);
}
}
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
index 561c4bb..23fbe73 100644
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
@@ -75,7 +75,7 @@
protected CropView mCropView;
protected Uri mUri;
- protected View mSetWallpaperButton;
+ private View mSetWallpaperButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -117,7 +117,7 @@
// Load image in background
final BitmapRegionTileSource.UriBitmapSource bitmapSource =
new BitmapRegionTileSource.UriBitmapSource(this, imageUri, 1024);
- mSetWallpaperButton.setEnabled(false);
+ mSetWallpaperButton.setVisibility(View.INVISIBLE);
Runnable onLoad = new Runnable() {
public void run() {
if (bitmapSource.getLoadingState() != BitmapSource.State.LOADED) {
@@ -126,7 +126,7 @@
Toast.LENGTH_LONG).show();
finish();
} else {
- mSetWallpaperButton.setEnabled(true);
+ mSetWallpaperButton.setVisibility(View.VISIBLE);
}
}
};
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
index 013606a..aa43def 100644
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
@@ -16,6 +16,7 @@
package com.android.launcher3;
+import android.animation.Animator;
import android.animation.LayoutTransition;
import android.app.ActionBar;
import android.app.Activity;
@@ -32,6 +33,7 @@
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
+import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PorterDuff;
import android.graphics.Rect;
@@ -58,7 +60,6 @@
import android.view.ViewPropertyAnimator;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
-import android.view.WindowManager;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.widget.BaseAdapter;
@@ -87,9 +88,9 @@
private static final String SELECTED_INDEX = "SELECTED_INDEX";
private static final String OLD_DEFAULT_WALLPAPER_THUMBNAIL_FILENAME = "default_thumb.jpg";
private static final String DEFAULT_WALLPAPER_THUMBNAIL_FILENAME = "default_thumb2.jpg";
- private static final int FLAG_POST_DELAY_MILLIS = 200;
private View mSelectedTile;
+ private View mSetWallpaperButton;
private boolean mIgnoreNextTap;
private OnClickListener mThumbnailOnClickListener;
@@ -104,8 +105,7 @@
ArrayList<Uri> mTempWallpaperTiles = new ArrayList<Uri>();
private SavedWallpaperImages mSavedImages;
private WallpaperInfo mLiveWallpaperInfoOnPickerLaunch;
- private int mSelectedIndex = -1;
- private WallpaperInfo mLastClickedLiveWallpaperInfo;
+ private int mSelectedIndex;
public static abstract class WallpaperTileInfo {
protected View mView;
@@ -147,13 +147,13 @@
onLoad = null;
} else {
mFirstClick = false;
- a.mSetWallpaperButton.setEnabled(false);
+ a.mSetWallpaperButton.setVisibility(View.INVISIBLE);
onLoad = new Runnable() {
public void run() {
if (mBitmapSource != null &&
mBitmapSource.getLoadingState() == BitmapSource.State.LOADED) {
a.selectTile(mView);
- a.mSetWallpaperButton.setEnabled(true);
+ a.mSetWallpaperButton.setVisibility(View.VISIBLE);
} else {
ViewGroup parent = (ViewGroup) mView.getParent();
if (parent != null) {
@@ -220,7 +220,6 @@
wallpaperSize.x, wallpaperSize.y, false);
v.setScale(wallpaperSize.x / crop.width());
v.setTouchEnabled(false);
- a.setSystemWallpaperVisiblity(false);
}
@Override
public void onSave(WallpaperPickerActivity a) {
@@ -249,23 +248,15 @@
Drawable defaultWallpaper = WallpaperManager.getInstance(a).getBuiltInDrawable(
c.getWidth(), c.getHeight(), false, 0.5f, 0.5f);
- if (defaultWallpaper == null) {
- Log.w(TAG, "Null default wallpaper encountered.");
- c.setTileSource(null, null);
- return;
- }
-
c.setTileSource(
new DrawableTileSource(a, defaultWallpaper, DrawableTileSource.MAX_PREVIEW_SIZE), null);
c.setScale(1f);
c.setTouchEnabled(false);
- a.setSystemWallpaperVisiblity(false);
}
@Override
public void onSave(WallpaperPickerActivity a) {
try {
WallpaperManager.getInstance(a).clear();
- a.setResult(RESULT_OK);
} catch (IOException e) {
Log.w("Setting wallpaper to default threw exception", e);
}
@@ -285,70 +276,11 @@
mWallpaperStrip.setPadding(0, 0, 0, (int) offset);
}
- /**
- * shows the system wallpaper behind the window and hides the {@link
- * #mCropView} if visible
- * @param visible should the system wallpaper be shown
- */
- protected void setSystemWallpaperVisiblity(final boolean visible) {
- // hide our own wallpaper preview if necessary
- if(!visible) {
- mCropView.setVisibility(View.VISIBLE);
- } else {
- changeWallpaperFlags(visible);
- }
- // the change of the flag must be delayed in order to avoid flickering,
- // a simple post / double post does not suffice here
- mCropView.postDelayed(new Runnable() {
- @Override
- public void run() {
- if(!visible) {
- changeWallpaperFlags(visible);
- } else {
- mCropView.setVisibility(View.INVISIBLE);
- }
- }
- }, FLAG_POST_DELAY_MILLIS);
- }
-
- private void changeWallpaperFlags(boolean visible) {
- int desiredWallpaperFlag = visible ? WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER : 0;
- int currentWallpaperFlag = getWindow().getAttributes().flags
- & WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
- if (desiredWallpaperFlag != currentWallpaperFlag) {
- getWindow().setFlags(desiredWallpaperFlag,
- WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);
- }
- }
-
- @Override
- public void setCropViewTileSource(BitmapSource bitmapSource,
- boolean touchEnabled,
- boolean moveToLeft,
- final Runnable postExecute) {
- // we also want to show our own wallpaper instead of the one in the background
- Runnable showPostExecuteRunnable = new Runnable() {
- @Override
- public void run() {
- if(postExecute != null) {
- postExecute.run();
- }
- setSystemWallpaperVisiblity(false);
- }
- };
- super.setCropViewTileSource(bitmapSource,
- touchEnabled,
- moveToLeft,
- showPostExecuteRunnable);
- }
-
// called by onCreate; this is subclassed to overwrite WallpaperCropActivity
protected void init() {
setContentView(R.layout.wallpaper_picker);
mCropView = (CropView) findViewById(R.id.cropView);
- mCropView.setVisibility(View.INVISIBLE);
-
mWallpaperStrip = findViewById(R.id.wallpaper_strip);
mCropView.setTouchCallback(new CropView.TouchCallback() {
ViewPropertyAnimator mAnim;
@@ -402,7 +334,6 @@
}
return;
}
- mSetWallpaperButton.setEnabled(true);
WallpaperTileInfo info = (WallpaperTileInfo) v.getTag();
if (info.isSelectable() && v.getVisibility() == View.VISIBLE) {
selectTile(v);
@@ -487,15 +418,13 @@
// Add a tile for the default wallpaper
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
DefaultWallpaperInfo defaultWallpaperInfo = getDefaultWallpaper();
- if (defaultWallpaperInfo != null) {
- FrameLayout defaultWallpaperTile = (FrameLayout) createImageTileView(
- getLayoutInflater(), 0, null, mWallpapersView, defaultWallpaperInfo.mThumb);
- setWallpaperItemPaddingToZero(defaultWallpaperTile);
- defaultWallpaperTile.setTag(defaultWallpaperInfo);
- mWallpapersView.addView(defaultWallpaperTile, 0);
- defaultWallpaperTile.setOnClickListener(mThumbnailOnClickListener);
- defaultWallpaperInfo.setView(defaultWallpaperTile);
- }
+ FrameLayout defaultWallpaperTile = (FrameLayout) createImageTileView(
+ getLayoutInflater(), 0, null, mWallpapersView, defaultWallpaperInfo.mThumb);
+ setWallpaperItemPaddingToZero(defaultWallpaperTile);
+ defaultWallpaperTile.setTag(defaultWallpaperInfo);
+ mWallpapersView.addView(defaultWallpaperTile, 0);
+ defaultWallpaperTile.setOnClickListener(mThumbnailOnClickListener);
+ defaultWallpaperInfo.setView(defaultWallpaperTile);
}
// Select the first item; wait for a layout pass so that we initialize the dimensions of
@@ -508,7 +437,6 @@
if (mSelectedIndex >= 0 && mSelectedIndex < mWallpapersView.getChildCount()) {
mThumbnailOnClickListener.onClick(
mWallpapersView.getChildAt(mSelectedIndex));
- setSystemWallpaperVisiblity(false);
}
v.removeOnLayoutChangeListener(this);
}
@@ -538,10 +466,6 @@
if (mSelectedTile != null) {
WallpaperTileInfo info = (WallpaperTileInfo) mSelectedTile.getTag();
info.onSave(WallpaperPickerActivity.this);
- } else {
- // no tile was selected, so we just finish the activity and go back
- setResult(Activity.RESULT_OK);
- finish();
}
}
});
@@ -592,7 +516,6 @@
if (itemId == R.id.menu_delete) {
int childCount = mWallpapersView.getChildCount();
ArrayList<View> viewsToRemove = new ArrayList<View>();
- boolean selectedTileRemoved = false;
for (int i = 0; i < childCount; i++) {
CheckableFrameLayout c =
(CheckableFrameLayout) mWallpapersView.getChildAt(i);
@@ -600,19 +523,11 @@
WallpaperTileInfo info = (WallpaperTileInfo) c.getTag();
info.onDelete(WallpaperPickerActivity.this);
viewsToRemove.add(c);
- if (i == mSelectedIndex) {
- selectedTileRemoved = true;
- }
}
}
for (View v : viewsToRemove) {
mWallpapersView.removeView(v);
}
- if (selectedTileRemoved) {
- mSelectedIndex = -1;
- mSelectedTile = null;
- setSystemWallpaperVisiblity(true);
- }
updateTileIndices();
mode.finish(); // Action picked, so close the CAB
return true;
@@ -629,9 +544,7 @@
CheckableFrameLayout c = (CheckableFrameLayout) mWallpapersView.getChildAt(i);
c.setChecked(false);
}
- if (mSelectedTile != null) {
- mSelectedTile.setSelected(true);
- }
+ mSelectedTile.setSelected(true);
mActionMode = null;
}
};
@@ -703,7 +616,7 @@
for (Uri uri : uris) {
addTemporaryWallpaperTile(uri, true);
}
- mSelectedIndex = savedInstanceState.getInt(SELECTED_INDEX, -1);
+ mSelectedIndex = savedInstanceState.getInt(SELECTED_INDEX, 0);
}
private void populateWallpapersFromAdapter(ViewGroup parent, BaseAdapter adapter,
@@ -861,15 +774,11 @@
} else if (requestCode == PICK_LIVE_WALLPAPER) {
WallpaperManager wm = WallpaperManager.getInstance(this);
final WallpaperInfo oldLiveWallpaper = mLiveWallpaperInfoOnPickerLaunch;
- final WallpaperInfo clickedWallpaper = mLastClickedLiveWallpaperInfo;
WallpaperInfo newLiveWallpaper = wm.getWallpaperInfo();
// Try to figure out if a live wallpaper was set;
if (newLiveWallpaper != null &&
- (oldLiveWallpaper == null
- || !oldLiveWallpaper.getComponent()
- .equals(newLiveWallpaper.getComponent())
- || clickedWallpaper.getComponent()
- .equals(oldLiveWallpaper.getComponent()))) {
+ (oldLiveWallpaper == null ||
+ !oldLiveWallpaper.getComponent().equals(newLiveWallpaper.getComponent()))) {
// Return if a live wallpaper was set
setResult(RESULT_OK);
finish();
@@ -1029,8 +938,7 @@
return mSavedImages;
}
- public void onLiveWallpaperPickerLaunch(WallpaperInfo info) {
- mLastClickedLiveWallpaperInfo = info;
+ public void onLiveWallpaperPickerLaunch() {
mLiveWallpaperInfoOnPickerLaunch = WallpaperManager.getInstance(this).getWallpaperInfo();
}
diff --git a/WallpaperPicker/src/com/android/photos/views/TiledImageView.java b/WallpaperPicker/src/com/android/photos/views/TiledImageView.java
index 94063b0..af4199c 100644
--- a/WallpaperPicker/src/com/android/photos/views/TiledImageView.java
+++ b/WallpaperPicker/src/com/android/photos/views/TiledImageView.java
@@ -112,18 +112,6 @@
//setTileSource(new ColoredTiles());
}
- @Override
- public void setVisibility(int visibility) {
- super.setVisibility(visibility);
- // need to update inner view's visibility because it seems like we're causing it to draw
- // from {@link #dispatchDraw} or {@link #invalidate} even if we are invisible.
- if (USE_TEXTURE_VIEW) {
- mTextureView.setVisibility(visibility);
- } else {
- mGLSurfaceView.setVisibility(visibility);
- }
- }
-
public void destroy() {
if (!IS_SUPPORTED) {
return;
diff --git a/res/layout/custom_workspace_cling.xml b/res/layout/custom_workspace_cling.xml
new file mode 100644
index 0000000..3744f2e
--- /dev/null
+++ b/res/layout/custom_workspace_cling.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+<!-- dummy layout, to be replaced in overlays -->
+<com.android.launcher3.Cling
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ launcher:drawIdentifier="workspace_custom">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textSize="20dp"
+ android:textColor="@android:color/holo_blue_light"
+ android:text="@string/dummy_custom_cling_error_message"
+ android:gravity="start"
+ android:layout_gravity="bottom|start"
+ />
+</com.android.launcher3.Cling>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index b5c17c5..53b5b5a 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Vouer is gesluit"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Vouer hernoem na <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Vouer: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Legstukke"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Muurpapiere"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Instellings"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index ea64f6f..b0c862d 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"አቃፊ ተዘግቷል"</string>
<string name="folder_renamed" msgid="1794088362165669656">"አቃፊ <xliff:g id="NAME">%1$s</xliff:g> ተብሎ ዳግም ተሰይሟል"</string>
<string name="folder_name_format" msgid="6629239338071103179">"አቃፊ፦ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"ፍርግሞች"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"የግድግዳ ወረቀቶች"</string>
<string name="settings_button_text" msgid="8119458837558863227">"ቅንብሮች"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 7eb37d3..98dce5f 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"تم إغلاق المجلد"</string>
<string name="folder_renamed" msgid="1794088362165669656">"تمت إعادة تسمية المجلد إلى <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"المجلد: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"الأدوات"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"الخلفيات"</string>
<string name="settings_button_text" msgid="8119458837558863227">"الإعدادات"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 13c0118..9082929 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Папката бе затворена"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Папката е преименувана на „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Папка: „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Приспособления"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Тапети"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Настройки"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 3e6bedb..865d0e0 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Carpeta tancada"</string>
<string name="folder_renamed" msgid="1794088362165669656">"S\'ha canviat el nom de la carpeta a <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fons de pantalla"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Configuració"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 3a0e672..0255709 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Složka je uzavřena"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Složka přejmenována na <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Složka: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgety"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Tapety"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Nastavení"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 7d41489..68ceb5b 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Mappen er lukket"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Mappen er omdøbt til <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Mappe: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Baggrunde"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Indstillinger"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index c11a651..4bd04b2 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Ordner geschlossen"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Ordner umbenannt in <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Ordner: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Hintergründe"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Einstellungen"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index ec05ae5..b6a9855 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Ο φάκελος έκλεισε"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Ο φάκελος μετονομάστηκε σε <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Φάκελος: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Γραφικά στοιχεία"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Ταπετσαρίες"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Ρυθμίσεις"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index cab1707..9f732e0 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Folder closed"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Folder renamed to <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpapers"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Settings"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index cab1707..9f732e0 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Folder closed"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Folder renamed to <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpapers"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Settings"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 278f0d8..95e4a99 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Carpeta cerrada"</string>
<string name="folder_renamed" msgid="1794088362165669656">"El nombre de la carpeta se cambió a <xliff:g id="NAME">%1$s</xliff:g>."</string>
<string name="folder_name_format" msgid="6629239338071103179">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fondos de pantalla"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Configuración"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f9cf809..e5beb90 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Carpeta cerrada"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Se ha cambiado el nombre de la carpeta a <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fondos de pantalla"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Ajustes"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 92985d2..a2f3125 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Kaust on suletud"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Kausta uus nimi: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Kaust: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Vidinad"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Taustapildid"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Seaded"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index a01ea79..9f22f93 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"پوشه بسته شد"</string>
<string name="folder_renamed" msgid="1794088362165669656">"نام پوشه به <xliff:g id="NAME">%1$s</xliff:g> تغییر کرد"</string>
<string name="folder_name_format" msgid="6629239338071103179">"پوشه: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"ابزارکها"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"کاغذدیواریها"</string>
<string name="settings_button_text" msgid="8119458837558863227">"تنظیمات"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 9a48ab3..af461a5 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Kansio on suljettu"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Kansion nimeksi vaihdettiin <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Kansio: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgetit"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Taustakuvat"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Asetukset"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 92c5cc4..0334351 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Dossier fermé"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Nouveau nom du dossier : <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Dossier : <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fonds d\'écran"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Paramètres"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 18732f8..5f0607e 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Dossier fermé"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Nouveau nom du dossier : <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Dossier \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fonds d\'écran"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Paramètres"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index a5481a1..058f534 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"फ़ोल्डर बंद किया गया"</string>
<string name="folder_renamed" msgid="1794088362165669656">"फ़ोल्डर का नाम बदलकर <xliff:g id="NAME">%1$s</xliff:g> किया गया"</string>
<string name="folder_name_format" msgid="6629239338071103179">"फ़ोल्डर: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"विजेट"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"वॉलपेपर"</string>
<string name="settings_button_text" msgid="8119458837558863227">"सेटिंग"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 32f3feb..52a91a3 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Mapa je zatvorena"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Mapa je preimenovana u <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Mapa: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgeti"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Pozadinske slike"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Postavke"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 37d5059..38b6b5c 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Mappa lezárva"</string>
<string name="folder_renamed" msgid="1794088362165669656">"A mappa új neve: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Mappa: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Modulok"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Háttérképek"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Beállítások"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 6e9491b..1faae76 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Թղթապանակը փակ է"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Թղթապանակը վերանվանվեց <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Թղթապանակ՝ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Վիջեթներ"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Պաստառներ"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Կարգավորումներ"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index d5df63b..732dd45 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Folder ditutup"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Folder diganti namanya menjadi <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpaper"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Setelan"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 20451d1..f379ae7 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Cartella chiusa"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Nome della cartella sostituito con <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Cartella: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Sfondi"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Impostazioni"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 08d9653..af853a8 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"התיקיה נסגרה"</string>
<string name="folder_renamed" msgid="1794088362165669656">"שם התיקיה שונה ל-<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"תיקיה: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"רכיבי ווידג\'ט"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"טפטים"</string>
<string name="settings_button_text" msgid="8119458837558863227">"הגדרות"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index ad5e8ff..b396893 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"フォルダは閉じています"</string>
<string name="folder_renamed" msgid="1794088362165669656">"フォルダの名前を「<xliff:g id="NAME">%1$s</xliff:g>」に変更しました"</string>
<string name="folder_name_format" msgid="6629239338071103179">"フォルダ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"ウィジェット"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"壁紙"</string>
<string name="settings_button_text" msgid="8119458837558863227">"設定"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 086df72..4c53cc8 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"საქაღალდე დაიხურა"</string>
<string name="folder_renamed" msgid="1794088362165669656">"საქაღალდეს შეეცვალა სახელი „<xliff:g id="NAME">%1$s</xliff:g>“-ად"</string>
<string name="folder_name_format" msgid="6629239338071103179">"საქაღალდე: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"ვიჯეტები"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ფონები"</string>
<string name="settings_button_text" msgid="8119458837558863227">"პარამეტრები"</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index bf2f01c..eb30a16 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"បានបិទថត"</string>
<string name="folder_renamed" msgid="1794088362165669656">"បានប្ដូរឈ្មោះថតជា <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"ថត៖ <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"ធាតុក្រាហ្វិក"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ផ្ទាំងរូបភាព"</string>
<string name="settings_button_text" msgid="8119458837558863227">"ការកំណត់"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index dde4eb7..656c972 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"폴더 닫음"</string>
<string name="folder_renamed" msgid="1794088362165669656">"폴더 이름 변경: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"폴더: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"위젯"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"배경화면"</string>
<string name="settings_button_text" msgid="8119458837558863227">"설정"</string>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 092098b..4dbe9a8 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -95,6 +95,8 @@
<string name="migration_cling_use_default" msgid="2626475813981258626">"ເລີ່ມຕົ້ນໃໝ່"</string>
<string name="workspace_cling_title" msgid="5626202359865825661">"ຈັດການພື້ນທີ່ຂອງທ່ານ"</string>
<string name="workspace_cling_move_item" msgid="528201129978005352">"ແຕະຄ້າງໄວ້ທີ່ພາບພື້ນຫຼັງເພື່ອຈັດການພາບພື້ນຫຼັງ, ວິດເຈັດແລະການຕັ້ງຄ່າ."</string>
+ <string name="all_apps_cling_title" msgid="34929250753095858">"ເລືອກແອັບຯ"</string>
+ <string name="all_apps_cling_add_item" msgid="400866858451850784">"ເພື່ອເພີ່ມແອັບຯໃສ່ໜ້າຈໍຫຼັກຂອງທ່ານ, ໃຫ້ແຕະຄ້າງໄວ້."</string>
<string name="folder_cling_title" msgid="3894908818693254164">"ນີ້ແມ່ນໂຟນເດີ"</string>
<string name="folder_cling_create_folder" msgid="6158215559475836131">"ເພື່ອສ້າງອັນໃໝ່ແບບນີ້ ໃຫ້ແຕະຄ້າງໄວ້ທີ່ແອັບຯທີ່ຕ້ອງການຍ້າຍແລ້ວລາກມັນໄປຫາໂຕອື່ນ."</string>
<string name="cling_dismiss" msgid="8962359497601507581">"ຕົກລົງ"</string>
@@ -104,6 +106,10 @@
<string name="folder_closed" msgid="4100806530910930934">"ປິດໂຟນເດີແລ້ວ"</string>
<string name="folder_renamed" msgid="1794088362165669656">"ປ່ຽນຊື່ໂຟນເດີເປັນ <xliff:g id="NAME">%1$s</xliff:g> ແລ້ວ"</string>
<string name="folder_name_format" msgid="6629239338071103179">"ໂຟນເດີ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"ວິດເຈັດ"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ພາບພື້ນຫຼັງ"</string>
<string name="settings_button_text" msgid="8119458837558863227">"ການຕັ້ງຄ່າ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index aba231d..aed0e84 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Aplankas uždarytas"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Aplankas pervardytas kaip „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Aplankas: „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Valdikliai"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Ekrano fonai"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Nustatymai"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 6d4888d..74ae7a4 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Mape aizvērta"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Mape pārdēvēta par: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Mape: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Logrīki"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fona tapetes"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Iestatījumi"</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index db92a5c..0430ac5 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Фолдер хаагдав"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Фолдерын нэр <xliff:g id="NAME">%1$s</xliff:g> болов"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Фолдер: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Виджет"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Ханын зураг"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Тохиргоо"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 678eeb4..802aa95 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Folder ditutup"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Folder dinamakan semula kepada <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Kertas dinding"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Tetapan"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index dd89a4f..0e16375 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Mappen ble lukket"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Mappen heter nå <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Mappe: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Moduler"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Bakgrunner"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Innstillinger"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index d39c1ea..f6c1b09 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Map gesloten"</string>
<string name="folder_renamed" msgid="1794088362165669656">"De naam van de map is gewijzigd in <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Map: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Achtergronden"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Instellingen"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index b428a95..5a2efbf 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Folder zamknięty"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Nazwa folderu zmieniona na <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widżety"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Tapety"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Ustawienia"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index b8e51d6..c6f5710 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Pasta fechada"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Nome de pasta alterado para <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Pasta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Imagens de fundo"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Definições"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 03c621a..0252d61 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Pasta fechada"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Pasta renomeada para <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Pasta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Planos de fundo"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Configurações"</string>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 3600095..8563d7d 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -186,6 +186,10 @@
<skip />
<!-- no translation found for folder_name_format (6629239338071103179) -->
<skip />
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<!-- no translation found for widget_button_text (2880537293434387943) -->
<skip />
<!-- no translation found for wallpaper_button_text (8404103075899945851) -->
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index a667ffd..75479ed 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Dosar închis"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Dosar redenumit <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Dosar: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgeturi"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Imagini de fundal"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Setări"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index c2e8bc7..a93583d 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Папка закрыта"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Папка переименована в \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
<string name="folder_name_format" msgid="6629239338071103179">"Папка: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Виджеты"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Обои"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Настройки"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index acd8e05..485a2ec 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Priečinok je uzavretý"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Priečinok bol premenovaný na <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Priečinok: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Miniaplikácie"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Tapety"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Nastavenia"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index afbd620..dfd63e2 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Mapa je zaprta"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Mapa je preimenovana v <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Mapa: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Pripomočki"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Ozadja"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Nastavitve"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index bf71b28..dd28fa3 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Директоријум је затворен"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Директоријум је преименован у <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Директоријум: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Виџети"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Позадине"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Подешавања"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 5825eec..4005b7e 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Mappen är stängd"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Mappen har bytt namn till <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Mapp: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgetar"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Bakgrunder"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Inställningar"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 37d0708..4397d3b 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -106,6 +106,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Folda imefungwa"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Folda imebadilishwa jina kuwa <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Folda: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Wijeti"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Mandhari"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Mipangilio"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 87e8237..413c78a 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"โฟลเดอร์ปิดอยู่"</string>
<string name="folder_renamed" msgid="1794088362165669656">"เปลี่ยนชื่อโฟลเดอร์เป็น <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"โฟลเดอร์: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"วิดเจ็ต"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"วอลเปเปอร์"</string>
<string name="settings_button_text" msgid="8119458837558863227">"การตั้งค่า"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 5be9d85..897631a 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Nakasara ang folder"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Pinalitan ang pangalan ng folder ng <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Mga Widget"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Mga Wallpaper"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Mga Setting"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 01f79a2..42fa172 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Klasör kapatıldı"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Klasörün adı <xliff:g id="NAME">%1$s</xliff:g> olarak değiştirildi"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Klasör: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Widget\'lar"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Duvar Kağıtları"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Ayarlar"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index f266eea..7cef321 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Папку закрито"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Папку перейменовано на <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Папка <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Віджети"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Фонові малюнки"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Налаштування"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 9d4ed41..20a9b3a 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Đã đóng thư mục"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Đã đổi tên thư mục thành <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Thư mục: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Tiện ích con"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Hình nền"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Cài đặt"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 3a2638e..540291e 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"文件夹已关闭"</string>
<string name="folder_renamed" msgid="1794088362165669656">"已将文件夹重命名为“<xliff:g id="NAME">%1$s</xliff:g>”"</string>
<string name="folder_name_format" msgid="6629239338071103179">"文件夹:<xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"小部件"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"壁纸"</string>
<string name="settings_button_text" msgid="8119458837558863227">"设置"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index cad95f2..c1486ef 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"已關閉資料夾"</string>
<string name="folder_renamed" msgid="1794088362165669656">"資料夾已重新命名為「<xliff:g id="NAME">%1$s</xliff:g>」"</string>
<string name="folder_name_format" msgid="6629239338071103179">"資料夾:<xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"小工具"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"桌布"</string>
<string name="settings_button_text" msgid="8119458837558863227">"設定"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 5f48243..d4acb20 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"資料夾已關閉"</string>
<string name="folder_renamed" msgid="1794088362165669656">"已將資料夾重新命名為「<xliff:g id="NAME">%1$s</xliff:g>」"</string>
<string name="folder_name_format" msgid="6629239338071103179">"資料夾:<xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"小工具"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"桌布"</string>
<string name="settings_button_text" msgid="8119458837558863227">"設定"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index e982eb4..c07f6a9 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -104,6 +104,10 @@
<string name="folder_closed" msgid="4100806530910930934">"Ifolda ivaliwe"</string>
<string name="folder_renamed" msgid="1794088362165669656">"Ifolda iqanjwe kabusha ngo-<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="folder_name_format" msgid="6629239338071103179">"Ifolda: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="custom_workspace_cling_title_1" msgid="3750880082935033085"></string>
+ <string name="custom_workspace_cling_description_1" msgid="939966842147696724"></string>
+ <string name="custom_workspace_cling_title_2" msgid="662588444436552198"></string>
+ <string name="custom_workspace_cling_description_2" msgid="8097921091798539310"></string>
<string name="widget_button_text" msgid="2880537293434387943">"Amawijethi"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Izithombe zangemuva"</string>
<string name="settings_button_text" msgid="8119458837558863227">"Izilungiselelo"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9cb6c29..2c6306a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -252,6 +252,18 @@
<!-- Folder name format -->
<string name="folder_name_format">Folder: <xliff:g id="name" example="Games">%1$s</xliff:g></string>
+ <!-- Strings used in device overlays -->
+
+ <!-- Clings -->
+ <!-- Dummy string [CHAR_LIMIT=40] -->
+ <string name="custom_workspace_cling_title_1"></string>
+ <!-- Dummy string [CHAR_LIMIT=60] -->
+ <string name="custom_workspace_cling_description_1"></string>
+ <!-- Dummy string [CHAR_LIMIT=40] -->
+ <string name="custom_workspace_cling_title_2"></string>
+ <!-- Dummy string [CHAR_LIMIT=60] -->
+ <string name="custom_workspace_cling_description_2"></string>
+
<!-- Debug-only activity name. [DO NOT TRANSLATE] -->
<string name="debug_memory_activity">* HPROF</string>
diff --git a/src/com/android/launcher3/AllAppsList.java b/src/com/android/launcher3/AllAppsList.java
index 89b291f..b641eb5 100644
--- a/src/com/android/launcher3/AllAppsList.java
+++ b/src/com/android/launcher3/AllAppsList.java
@@ -32,7 +32,7 @@
*/
class AllAppsList {
public static final int DEFAULT_APPLICATIONS_NUMBER = 42;
-
+
/** The list off all apps. */
public ArrayList<AppInfo> data =
new ArrayList<AppInfo>(DEFAULT_APPLICATIONS_NUMBER);
@@ -115,7 +115,8 @@
data.remove(i);
}
}
- mIconCache.remove(packageName);
+ // This is more aggressive than it needs to be.
+ mIconCache.flush();
}
/**
diff --git a/src/com/android/launcher3/AppInfo.java b/src/com/android/launcher3/AppInfo.java
index da222f1..d5a7769 100644
--- a/src/com/android/launcher3/AppInfo.java
+++ b/src/com/android/launcher3/AppInfo.java
@@ -64,10 +64,6 @@
return intent;
}
- protected Intent getRestoredIntent() {
- return null;
- }
-
/**
* Must not hold the Context.
*/
diff --git a/src/com/android/launcher3/AppsCustomizePagedView.java b/src/com/android/launcher3/AppsCustomizePagedView.java
index 5c8828a..251ae21 100644
--- a/src/com/android/launcher3/AppsCustomizePagedView.java
+++ b/src/com/android/launcher3/AppsCustomizePagedView.java
@@ -828,7 +828,6 @@
}
});
} else {
- mLauncher.getWorkspace().removeExtraEmptyScreen(true, null);
mLauncher.unlockScreenOrientation(false);
}
}
diff --git a/src/com/android/launcher3/IconCache.java b/src/com/android/launcher3/IconCache.java
index 827718b..a55fce0 100644
--- a/src/com/android/launcher3/IconCache.java
+++ b/src/com/android/launcher3/IconCache.java
@@ -16,8 +16,6 @@
package com.android.launcher3;
-import com.android.launcher3.backup.BackupProtos;
-
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
@@ -27,20 +25,10 @@
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
import android.graphics.Canvas;
-import android.graphics.Paint;
import android.graphics.drawable.Drawable;
-import android.util.Log;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;
@@ -52,9 +40,6 @@
private static final String TAG = "Launcher.IconCache";
private static final int INITIAL_ICON_CACHE_CAPACITY = 50;
- private static final String RESOURCE_FILE_PREFIX = "icon_";
-
- private static final boolean DEBUG = true;
private static class CacheEntry {
public Bitmap icon;
@@ -130,7 +115,6 @@
return getFullResIcon(resources, iconId);
}
}
-
return getFullResDefaultActivityIcon();
}
@@ -156,21 +140,6 @@
}
/**
- * Remove any records for the supplied package name.
- */
- public void remove(String packageName) {
- HashSet<ComponentName> forDeletion = new HashSet<ComponentName>();
- for (ComponentName componentName: mCache.keySet()) {
- if (componentName.getPackageName().equals(packageName)) {
- forDeletion.add(componentName);
- }
- }
- for (ComponentName condemned: forDeletion) {
- remove(condemned);
- }
- }
-
- /**
* Empty out the cache.
*/
public void flush() {
@@ -208,22 +177,15 @@
}
public Bitmap getIcon(Intent intent) {
- return getIcon(intent, null);
- }
-
- public Bitmap getIcon(Intent intent, String title) {
synchronized (mCache) {
final ResolveInfo resolveInfo = mPackageManager.resolveActivity(intent, 0);
ComponentName component = intent.getComponent();
- if (component == null) {
+ if (resolveInfo == null || component == null) {
return mDefaultIcon;
}
CacheEntry entry = cacheLocked(component, resolveInfo, null);
- if (title != null) {
- entry.title = title;
- }
return entry.icon;
}
}
@@ -252,35 +214,21 @@
mCache.put(componentName, entry);
- if (info != null) {
- ComponentName key = LauncherModel.getComponentNameFromResolveInfo(info);
- if (labelCache != null && labelCache.containsKey(key)) {
- entry.title = labelCache.get(key).toString();
- } else {
- entry.title = info.loadLabel(mPackageManager).toString();
- if (labelCache != null) {
- labelCache.put(key, entry.title);
- }
- }
- if (entry.title == null) {
- entry.title = info.activityInfo.name;
- }
-
- entry.icon = Utilities.createIconBitmap(
- getFullResIcon(info), mContext);
+ ComponentName key = LauncherModel.getComponentNameFromResolveInfo(info);
+ if (labelCache != null && labelCache.containsKey(key)) {
+ entry.title = labelCache.get(key).toString();
} else {
- entry.title = "";
- Bitmap preloaded = getPreloadedIcon(componentName);
- if (preloaded != null) {
- if (DEBUG) Log.d(TAG, "using preloaded icon for " +
- componentName.toShortString());
- entry.icon = preloaded;
- } else {
- if (DEBUG) Log.d(TAG, "using default icon for " +
- componentName.toShortString());
- entry.icon = mDefaultIcon;
+ entry.title = info.loadLabel(mPackageManager).toString();
+ if (labelCache != null) {
+ labelCache.put(key, entry.title);
}
}
+ if (entry.title == null) {
+ entry.title = info.activityInfo.name;
+ }
+
+ entry.icon = Utilities.createIconBitmap(
+ getFullResIcon(info), mContext);
}
return entry;
}
@@ -295,137 +243,4 @@
return set;
}
}
-
- /**
- * Pre-load an icon into the persistent cache.
- *
- * <P>Queries for a component that does not exist in the package manager
- * will be answered by the persistent cache.
- *
- * @param context application context
- * @param componentName the icon should be returned for this component
- * @param icon the icon to be persisted
- * @param dpi the native density of the icon
- */
- public static void preloadIcon(Context context, ComponentName componentName, Bitmap icon,
- int dpi) {
- // TODO rescale to the correct native DPI
- try {
- PackageManager packageManager = context.getPackageManager();
- packageManager.getActivityIcon(componentName);
- // component is present on the system already, do nothing
- return;
- } catch (PackageManager.NameNotFoundException e) {
- // pass
- }
-
- final String key = componentName.flattenToString();
- FileOutputStream resourceFile = null;
- try {
- resourceFile = context.openFileOutput(getResourceFilename(componentName),
- Context.MODE_PRIVATE);
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- if (icon.compress(android.graphics.Bitmap.CompressFormat.PNG, 75, os)) {
- byte[] buffer = os.toByteArray();
- resourceFile.write(buffer, 0, buffer.length);
- } else {
- Log.w(TAG, "failed to encode cache for " + key);
- return;
- }
- } catch (FileNotFoundException e) {
- Log.w(TAG, "failed to pre-load cache for " + key, e);
- } catch (IOException e) {
- Log.w(TAG, "failed to pre-load cache for " + key, e);
- } finally {
- if (resourceFile != null) {
- try {
- resourceFile.close();
- } catch (IOException e) {
- Log.d(TAG, "failed to save restored icon for: " + key, e);
- }
- }
- }
- }
-
- /**
- * Read a pre-loaded icon from the persistent icon cache.
- *
- * @param componentName the component that should own the icon
- * @returns a bitmap if one is cached, or null.
- */
- private Bitmap getPreloadedIcon(ComponentName componentName) {
- final String key = componentName.flattenToShortString();
-
- if (DEBUG) Log.v(TAG, "looking for pre-load icon for " + key);
- Bitmap icon = null;
- FileInputStream resourceFile = null;
- try {
- resourceFile = mContext.openFileInput(getResourceFilename(componentName));
- byte[] buffer = new byte[1024];
- ByteArrayOutputStream bytes = new ByteArrayOutputStream();
- int bytesRead = 0;
- while(bytesRead >= 0) {
- bytes.write(buffer, 0, bytesRead);
- bytesRead = resourceFile.read(buffer, 0, buffer.length);
- }
- if (DEBUG) Log.d(TAG, "read " + bytes.size());
- icon = BitmapFactory.decodeByteArray(bytes.toByteArray(), 0, bytes.size());
- if (icon == null) {
- Log.w(TAG, "failed to decode pre-load icon for " + key);
- }
- } catch (FileNotFoundException e) {
- if (DEBUG) Log.d(TAG, "there is no restored icon for: " + key, e);
- } catch (IOException e) {
- Log.w(TAG, "failed to read pre-load icon for: " + key, e);
- } finally {
- if(resourceFile != null) {
- try {
- resourceFile.close();
- } catch (IOException e) {
- Log.d(TAG, "failed to manage pre-load icon file: " + key, e);
- }
- }
- }
-
- if (icon != null) {
- // TODO: handle alpha mask in the view layer
- Bitmap b = Bitmap.createBitmap(Math.max(icon.getWidth(), 1),
- Math.max(icon.getHeight(), 1),
- Bitmap.Config.ARGB_8888);
- Canvas c = new Canvas(b);
- Paint paint = new Paint();
- paint.setAlpha(127);
- c.drawBitmap(icon, 0, 0, paint);
- c.setBitmap(null);
- icon.recycle();
- icon = b;
- }
-
- return icon;
- }
-
- /**
- * Remove a pre-loaded icon from the persistent icon cache.
- *
- * @param componentName the component that should own the icon
- * @returns true on success
- */
- public boolean deletePreloadedIcon(ComponentName componentName) {
- if (componentName == null) {
- return false;
- }
- if (mCache.remove(componentName) != null) {
- if (DEBUG) Log.d(TAG, "removed pre-loaded icon from the in-memory cache");
- }
- boolean success = mContext.deleteFile(getResourceFilename(componentName));
- if (DEBUG && success) Log.d(TAG, "removed pre-loaded icon from persistent cache");
-
- return success;
- }
-
- private static String getResourceFilename(ComponentName component) {
- String resourceName = component.flattenToShortString();
- String filename = resourceName.replace(File.separatorChar, '_');
- return RESOURCE_FILE_PREFIX + filename;
- }
}
diff --git a/src/com/android/launcher3/InstallShortcutReceiver.java b/src/com/android/launcher3/InstallShortcutReceiver.java
index 28cef13..7ab4e04 100644
--- a/src/com/android/launcher3/InstallShortcutReceiver.java
+++ b/src/com/android/launcher3/InstallShortcutReceiver.java
@@ -304,7 +304,7 @@
// Add the new apps to the model and bind them
if (!addShortcuts.isEmpty()) {
LauncherAppState app = LauncherAppState.getInstance();
- app.getModel().addAndBindAddedWorkspaceApps(context, addShortcuts);
+ app.getModel().addAndBindAddedApps(context, addShortcuts, new ArrayList<AppInfo>());
}
}
}
diff --git a/src/com/android/launcher3/ItemInfo.java b/src/com/android/launcher3/ItemInfo.java
index 3dc92c9..36ba6c1 100644
--- a/src/com/android/launcher3/ItemInfo.java
+++ b/src/com/android/launcher3/ItemInfo.java
@@ -122,10 +122,6 @@
throw new RuntimeException("Unexpected Intent");
}
- protected Intent getRestoredIntent() {
- throw new RuntimeException("Unexpected Intent");
- }
-
/**
* Write the fields of this item to the DB
*
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index c22a6bf..1d9b627 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2078,10 +2078,6 @@
return mWorkspaceLoading || mWaitingForResult;
}
- public boolean isWorkspaceLoading() {
- return mWorkspaceLoading;
- }
-
private void resetAddInfo() {
mPendingAddInfo.container = ItemInfo.NO_ID;
mPendingAddInfo.screenId = -1;
@@ -2891,7 +2887,7 @@
mWorkspaceBackgroundDrawable : null);
}
- void updateWallpaperVisibility(boolean visible) {
+ protected void changeWallpaperVisiblity(boolean visible) {
int wpflags = visible ? WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER : 0;
int curflags = getWindow().getAttributes().flags
& WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
@@ -3775,8 +3771,6 @@
* Implementation of the method from LauncherModel.Callbacks.
*/
public void startBinding() {
- mWorkspaceLoading = true;
-
// If we're starting binding all over again, clear any bind calls we'd postponed in
// the past (see waitUntilResume) -- we don't need them since we're starting binding
// from scratch again
@@ -3859,17 +3853,15 @@
}
// Add the new screens
- if (newScreens != null) {
- bindAddScreens(newScreens);
- }
+ bindAddScreens(newScreens);
// We add the items without animation on non-visible pages, and with
// animations on the new page (which we will try and snap to).
- if (addNotAnimated != null && !addNotAnimated.isEmpty()) {
+ if (!addNotAnimated.isEmpty()) {
bindItems(addNotAnimated, 0,
addNotAnimated.size(), false);
}
- if (addAnimated != null && !addAnimated.isEmpty()) {
+ if (!addAnimated.isEmpty()) {
bindItems(addAnimated, 0,
addAnimated.size(), true);
}
diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java
index 62e6f31..335028d 100644
--- a/src/com/android/launcher3/LauncherBackupHelper.java
+++ b/src/com/android/launcher3/LauncherBackupHelper.java
@@ -136,8 +136,6 @@
private static final int SCREEN_RANK_INDEX = 2;
- private static IconCache mIconCache;
-
private final Context mContext;
private final boolean mRestoreEnabled;
@@ -186,20 +184,16 @@
Log.v(TAG, "lastBackupTime = " + lastBackupTime);
ArrayList<Key> keys = new ArrayList<Key>();
- if (launcherIsReady()) {
- try {
- backupFavorites(in, data, out, keys);
- backupScreens(in, data, out, keys);
- backupIcons(in, data, out, keys);
- backupWidgets(in, data, out, keys);
- } catch (IOException e) {
- Log.e(TAG, "launcher backup has failed", e);
- }
- out.key = keys.toArray(new BackupProtos.Key[keys.size()]);
- } else {
- out = in;
+ try {
+ backupFavorites(in, data, out, keys);
+ backupScreens(in, data, out, keys);
+ backupIcons(in, data, out, keys);
+ backupWidgets(in, data, out, keys);
+ } catch (IOException e) {
+ Log.e(TAG, "launcher backup has failed", e);
}
+ out.key = keys.toArray(BackupProtos.Key.emptyArray());
writeJournal(newState, out);
Log.v(TAG, "onBackup: wrote " + out.bytes + "b in " + out.rows + " rows.");
}
@@ -272,7 +266,7 @@
// will catch any changes the restore process might have made
Journal out = new Journal();
out.t = 0;
- out.key = mKeys.toArray(new BackupProtos.Key[mKeys.size()]);
+ out.key = mKeys.toArray(BackupProtos.Key.emptyArray());
writeJournal(newState, out);
Log.v(TAG, "onRestore: read " + mKeys.size() + " rows");
mKeys.clear();
@@ -447,12 +441,14 @@
private void backupIcons(Journal in, BackupDataOutput data, Journal out,
ArrayList<Key> keys) throws IOException {
// persist icons that haven't been persisted yet
- if (!initializeIconCache()) {
+ final LauncherAppState appState = LauncherAppState.getInstanceNoCreate();
+ if (appState == null) {
dataChanged(); // try again later
if (DEBUG) Log.d(TAG, "Launcher is not initialized, delaying icon backup");
return;
}
final ContentResolver cr = mContext.getContentResolver();
+ final IconCache iconCache = appState.getIconCache();
final int dpi = mContext.getResources().getDisplayMetrics().densityDpi;
// read the old ID set
@@ -491,9 +487,9 @@
if (DEBUG) Log.d(TAG, "I can count this high: " + out.rows);
if ((out.rows - startRows) < MAX_ICONS_PER_PASS) {
if (VERBOSE) Log.v(TAG, "saving icon " + backupKey);
- Bitmap icon = mIconCache.getIcon(intent);
+ Bitmap icon = iconCache.getIcon(intent);
keys.add(key);
- if (icon != null && !mIconCache.isDefaultIcon(icon)) {
+ if (icon != null && !iconCache.isDefaultIcon(icon)) {
byte[] blob = packIcon(dpi, icon);
writeRowToBackup(key, blob, out, data);
}
@@ -534,33 +530,25 @@
if (VERBOSE) Log.v(TAG, "unpacking icon " + key.id);
if (DEBUG) Log.d(TAG, "read (" + buffer.length + "): " +
Base64.encodeToString(buffer, 0, dataSize, Base64.NO_WRAP));
-
try {
Resource res = unpackIcon(buffer, 0, dataSize);
- if (DEBUG) {
- Log.d(TAG, "unpacked " + res.dpi + " dpi icon");
- }
- if (DEBUG_PAYLOAD) {
- Log.d(TAG, "read " +
- Base64.encodeToString(res.data, 0, res.data.length,
- Base64.NO_WRAP));
- }
+ if (DEBUG) Log.d(TAG, "unpacked " + res.dpi + " dpi icon");
+ if (DEBUG_PAYLOAD) Log.d(TAG, "read " +
+ Base64.encodeToString(res.data, 0, res.data.length,
+ Base64.NO_WRAP));
Bitmap icon = BitmapFactory.decodeByteArray(res.data, 0, res.data.length);
if (icon == null) {
Log.w(TAG, "failed to unpack icon for " + key.name);
}
if (!mRestoreEnabled) {
- if (VERBOSE) {
- Log.v(TAG, "restore not enabled: skipping database mutation");
- }
+ if (VERBOSE) Log.v(TAG, "restore not enabled: skipping database mutation");
return;
} else {
- IconCache.preloadIcon(mContext, ComponentName.unflattenFromString(key.name),
- icon, res.dpi);
+ // future site of icon cache mutation
}
- } catch (IOException e) {
- Log.d(TAG, "failed to save restored icon for: " + key.name, e);
+ } catch (InvalidProtocolBufferNanoException e) {
+ Log.e(TAG, "failed to decode icon", e);
}
}
@@ -578,13 +566,15 @@
ArrayList<Key> keys) throws IOException {
// persist static widget info that hasn't been persisted yet
final LauncherAppState appState = LauncherAppState.getInstanceNoCreate();
- if (appState == null || !initializeIconCache()) {
- Log.w(TAG, "Failed to get icon cache during restore");
+ if (appState == null) {
+ dataChanged(); // try again later
+ if (DEBUG) Log.d(TAG, "Launcher is not initialized, delaying widget backup");
return;
}
final ContentResolver cr = mContext.getContentResolver();
final WidgetPreviewLoader previewLoader = new WidgetPreviewLoader(mContext);
final PagedViewCellLayout widgetSpacingLayout = new PagedViewCellLayout(mContext);
+ final IconCache iconCache = appState.getIconCache();
final int dpi = mContext.getResources().getDisplayMetrics().densityDpi;
final DeviceProfile profile = appState.getDynamicGrid().getDeviceProfile();
if (DEBUG) Log.d(TAG, "cellWidthPx: " + profile.cellWidthPx);
@@ -627,7 +617,7 @@
if (VERBOSE) Log.v(TAG, "saving widget " + backupKey);
previewLoader.setPreviewSize(spanX * profile.cellWidthPx,
spanY * profile.cellHeightPx, widgetSpacingLayout);
- byte[] blob = packWidget(dpi, previewLoader, mIconCache, provider);
+ byte[] blob = packWidget(dpi, previewLoader, iconCache, provider);
keys.add(key);
writeRowToBackup(key, blob, out, data);
@@ -892,7 +882,7 @@
}
/** Deserialize an icon resource from persistence, after verifying checksum wrapper. */
- private static Resource unpackIcon(byte[] buffer, int offset, int dataSize)
+ private Resource unpackIcon(byte[] buffer, int offset, int dataSize)
throws InvalidProtocolBufferNanoException {
Resource res = new Resource();
MessageNano.mergeFrom(res, readCheckedBytes(buffer, offset, dataSize));
@@ -1090,7 +1080,7 @@
}
/** Unwrap a proto message from a CheckedMessage, verifying the checksum. */
- private static byte[] readCheckedBytes(byte[] buffer, int offset, int dataSize)
+ private byte[] readCheckedBytes(byte[] buffer, int offset, int dataSize)
throws InvalidProtocolBufferNanoException {
CheckedMessage wrapper = new CheckedMessage();
MessageNano.mergeFrom(wrapper, buffer, offset, dataSize);
@@ -1114,43 +1104,6 @@
return mWidgetMap.get(component);
}
-
- private boolean initializeIconCache() {
- if (mIconCache != null) {
- return true;
- }
-
- final LauncherAppState appState = LauncherAppState.getInstanceNoCreate();
- if (appState == null) {
- Throwable stackTrace = new Throwable();
- stackTrace.fillInStackTrace();
- Log.w(TAG, "Failed to get app state during backup/restore", stackTrace);
- return false;
- }
- mIconCache = appState.getIconCache();
- return mIconCache != null;
- }
-
-
- // check if the launcher is in a state to support backup
- private boolean launcherIsReady() {
- ContentResolver cr = mContext.getContentResolver();
- Cursor cursor = cr.query(Favorites.CONTENT_URI, FAVORITE_PROJECTION, null, null, null);
- if (cursor == null) {
- // launcher data has been wiped, do nothing
- return false;
- }
- cursor.close();
-
- if (!initializeIconCache()) {
- // launcher services are unavailable, try again later
- dataChanged();
- return false;
- }
-
- return true;
- }
-
private class KeyParsingException extends Throwable {
private KeyParsingException(Throwable cause) {
super(cause);
diff --git a/src/com/android/launcher3/LauncherClings.java b/src/com/android/launcher3/LauncherClings.java
index 894f64d..00711fe 100644
--- a/src/com/android/launcher3/LauncherClings.java
+++ b/src/com/android/launcher3/LauncherClings.java
@@ -41,6 +41,7 @@
private static final String FOLDER_CLING_DISMISSED_KEY = "cling_gel.folder.dismissed";
private static final boolean DISABLE_CLINGS = false;
+ private static final boolean DISABLE_CUSTOM_CLINGS = true;
private static final int SHOW_CLING_DURATION = 250;
private static final int DISMISS_CLING_DURATION = 200;
@@ -195,7 +196,8 @@
SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
return areClingsEnabled() &&
!sharedPrefs.getBoolean(FIRST_RUN_CLING_DISMISSED_KEY, false) &&
- !sharedPrefs.getBoolean(MIGRATION_CLING_DISMISSED_KEY, false);
+ !sharedPrefs.getBoolean(MIGRATION_CLING_DISMISSED_KEY, false) &&
+ LauncherAppState.getLauncherProvider().wasNewDbCreated();
}
public void removeFirstRunAndMigrationClings() {
@@ -211,6 +213,24 @@
*/
public void showFirstRunCling() {
if (!skipCustomClingIfNoAccounts()) {
+ SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
+ // If we're not using the default workspace layout, replace workspace cling
+ // with a custom workspace cling (usually specified in an overlay)
+ // For now, only do this on tablets
+ if (!DISABLE_CUSTOM_CLINGS) {
+ if (sharedPrefs.getInt(LauncherProvider.DEFAULT_WORKSPACE_RESOURCE_ID, 0) != 0 &&
+ mLauncher.getResources().getBoolean(R.bool.config_useCustomClings)) {
+ // Use a custom cling
+ View cling = mLauncher.findViewById(R.id.workspace_cling);
+ ViewGroup clingParent = (ViewGroup) cling.getParent();
+ int clingIndex = clingParent.indexOfChild(cling);
+ clingParent.removeViewAt(clingIndex);
+ View customCling = mInflater.inflate(R.layout.custom_workspace_cling,
+ clingParent, false);
+ clingParent.addView(customCling, clingIndex);
+ customCling.setId(R.id.workspace_cling);
+ }
+ }
Cling cling = (Cling) mLauncher.findViewById(R.id.first_run_cling);
if (cling != null) {
String sbHintStr = mLauncher.getFirstRunClingSearchBarHint();
@@ -272,7 +292,6 @@
removeCling(R.id.workspace_cling);
}
}
-
public Cling showFoldersCling() {
SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
// Enable the clings only if they have not been dismissed before
@@ -295,14 +314,6 @@
}
}
- public static void synchonouslyMarkFirstRunClingDismissed(Context ctx) {
- SharedPreferences prefs = ctx.getSharedPreferences(
- LauncherAppState.getSharedPreferencesKey(),Context.MODE_PRIVATE);
- SharedPreferences.Editor editor = prefs.edit();
- editor.putBoolean(LauncherClings.FIRST_RUN_CLING_DISMISSED_KEY, true);
- editor.commit();
- }
-
/** Removes the cling outright from the DragLayer */
private void removeCling(int id) {
final View cling = mLauncher.findViewById(id);
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 007fd7a..abfca34 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -292,58 +292,17 @@
return null;
}
- public void addAppsToAllApps(final Context ctx, final ArrayList<AppInfo> allAppsApps) {
- final Callbacks callbacks = mCallbacks != null ? mCallbacks.get() : null;
-
- if (allAppsApps == null) {
- throw new RuntimeException("allAppsApps must not be null");
- }
- if (allAppsApps.isEmpty()) {
- return;
- }
-
- final ArrayList<AppInfo> restoredAppsFinal = new ArrayList<AppInfo>();
- Iterator<AppInfo> iter = allAppsApps.iterator();
- while (iter.hasNext()) {
- ItemInfo a = iter.next();
- if (LauncherModel.appWasRestored(ctx, a.getIntent())) {
- restoredAppsFinal.add((AppInfo) a);
- }
- }
-
- // Process the newly added applications and add them to the database first
- Runnable r = new Runnable() {
- public void run() {
- runOnMainThread(new Runnable() {
- public void run() {
- Callbacks cb = mCallbacks != null ? mCallbacks.get() : null;
- if (callbacks == cb && cb != null) {
- if (!restoredAppsFinal.isEmpty()) {
- for (AppInfo info : restoredAppsFinal) {
- final Intent intent = info.getIntent();
- if (intent != null) {
- mIconCache.deletePreloadedIcon(intent.getComponent());
- }
- }
- callbacks.bindAppsUpdated(restoredAppsFinal);
- }
- callbacks.bindAppsAdded(null, null, null, allAppsApps);
- }
- }
- });
- }
- };
- runOnWorkerThread(r);
+ public void addAndBindAddedApps(final Context context, final ArrayList<ItemInfo> workspaceApps,
+ final ArrayList<AppInfo> allAppsApps) {
+ Callbacks cb = mCallbacks != null ? mCallbacks.get() : null;
+ addAndBindAddedApps(context, workspaceApps, cb, allAppsApps);
}
-
- public void addAndBindAddedWorkspaceApps(final Context context,
- final ArrayList<ItemInfo> workspaceApps) {
- final Callbacks callbacks = mCallbacks != null ? mCallbacks.get() : null;
-
- if (workspaceApps == null) {
+ public void addAndBindAddedApps(final Context context, final ArrayList<ItemInfo> workspaceApps,
+ final Callbacks callbacks, final ArrayList<AppInfo> allAppsApps) {
+ if (workspaceApps == null || allAppsApps == null) {
throw new RuntimeException("workspaceApps and allAppsApps must not be null");
}
- if (workspaceApps.isEmpty()) {
+ if (workspaceApps.isEmpty() && allAppsApps.isEmpty()) {
return;
}
// Process the newly added applications and add them to the database first
@@ -351,7 +310,6 @@
public void run() {
final ArrayList<ItemInfo> addedShortcutsFinal = new ArrayList<ItemInfo>();
final ArrayList<Long> addedWorkspaceScreensFinal = new ArrayList<Long>();
- final ArrayList<AppInfo> restoredAppsFinal = new ArrayList<AppInfo>();
// Get the list of workspace screens. We need to append to this list and
// can not use sBgWorkspaceScreens because loadWorkspace() may not have been
@@ -372,11 +330,6 @@
// Short-circuit this logic if the icon exists somewhere on the workspace
if (LauncherModel.shortcutExists(context, name, launchIntent)) {
- // Only InstallShortcutReceiver sends us shortcutInfos, ignore them
- if (a instanceof AppInfo &&
- LauncherModel.appWasRestored(context, launchIntent)) {
- restoredAppsFinal.add((AppInfo) a);
- }
continue;
}
@@ -432,7 +385,7 @@
// Update the workspace screens
updateWorkspaceScreenOrder(context, workspaceScreens);
- if (!addedShortcutsFinal.isEmpty()) {
+ if (!addedShortcutsFinal.isEmpty() || !allAppsApps.isEmpty()) {
runOnMainThread(new Runnable() {
public void run() {
Callbacks cb = mCallbacks != null ? mCallbacks.get() : null;
@@ -451,10 +404,7 @@
}
}
callbacks.bindAppsAdded(addedWorkspaceScreensFinal,
- addNotAnimated, addAnimated, null);
- if (!restoredAppsFinal.isEmpty()) {
- callbacks.bindAppsUpdated(restoredAppsFinal);
- }
+ addNotAnimated, addAnimated, allAppsApps);
}
}
});
@@ -820,30 +770,6 @@
}
/**
- * Returns true if the shortcuts already exists in the database.
- * we identify a shortcut by the component name of the intent.
- */
- static boolean appWasRestored(Context context, Intent intent) {
- final ContentResolver cr = context.getContentResolver();
- final ComponentName component = intent.getComponent();
- if (component == null) {
- return false;
- }
- String componentName = component.flattenToString();
- final String where = "intent glob \"*component=" + componentName + "*\" and restored = 1";
- Cursor c = cr.query(LauncherSettings.Favorites.CONTENT_URI,
- new String[]{"intent", "restored"}, where, null, null);
- boolean result = false;
- try {
- result = c.moveToFirst();
- } finally {
- c.close();
- }
- Log.d(TAG, "shortcutWasRestored is " + result + " for " + componentName);
- return result;
- }
-
- /**
* Returns an ItemInfo array containing all the items in the LauncherModel.
* The ItemInfo.id is not set through this function.
*/
@@ -1640,7 +1566,8 @@
}
}
if (!added.isEmpty()) {
- addAndBindAddedWorkspaceApps(context, added);
+ Callbacks cb = mCallbacks != null ? mCallbacks.get() : null;
+ addAndBindAddedApps(context, added, cb, new ArrayList<AppInfo>());
}
}
@@ -1895,7 +1822,7 @@
Launcher.addDumpLog(TAG,
"constructing info for partially restored package",
true);
- info = getRestoredItemInfo(c, titleIndex, intent);
+ info = getRestoredItemInfo(c, titleIndex);
intent = getRestoredItemIntent(c, context, intent);
} else if (itemType ==
LauncherSettings.Favorites.ITEM_TYPE_APPLICATION) {
@@ -2673,7 +2600,6 @@
case OP_ADD:
for (int i=0; i<N; i++) {
if (DEBUG_LOADERS) Log.d(TAG, "mAllAppsList.addPackage " + packages[i]);
- mIconCache.remove(packages[i]);
mBgAllAppsList.addPackage(context, packages[i]);
}
break;
@@ -2721,14 +2647,14 @@
if (added != null) {
// Ensure that we add all the workspace applications to the db
- if (LauncherAppState.isDisableAllApps()) {
- final ArrayList<ItemInfo> addedInfos = new ArrayList<ItemInfo>(added);
- addAndBindAddedWorkspaceApps(context, addedInfos);
+ Callbacks cb = mCallbacks != null ? mCallbacks.get() : null;
+ if (!LauncherAppState.isDisableAllApps()) {
+ addAndBindAddedApps(context, new ArrayList<ItemInfo>(), cb, added);
} else {
- addAppsToAllApps(context, added);
+ final ArrayList<ItemInfo> addedInfos = new ArrayList<ItemInfo>(added);
+ addAndBindAddedApps(context, addedInfos, cb, added);
}
}
-
if (modified != null) {
final ArrayList<AppInfo> modifiedFinal = modified;
@@ -2867,16 +2793,16 @@
* Make an ShortcutInfo object for a restored application or shortcut item that points
* to a package that is not yet installed on the system.
*/
- public ShortcutInfo getRestoredItemInfo(Cursor cursor, int titleIndex, Intent intent) {
+ public ShortcutInfo getRestoredItemInfo(Cursor cursor, int titleIndex) {
final ShortcutInfo info = new ShortcutInfo();
+ info.usingFallbackIcon = true;
+ info.setIcon(getFallbackIcon());
if (cursor != null) {
info.title = cursor.getString(titleIndex);
} else {
info.title = "";
}
- info.setIcon(mIconCache.getIcon(intent, info.title.toString()));
info.itemType = LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT;
- info.restoredIntent = intent;
return info;
}
@@ -2885,7 +2811,6 @@
* to the market page for the item.
*/
private Intent getRestoredItemIntent(Cursor c, Context context, Intent intent) {
- final boolean debug = false;
ComponentName componentName = intent.getComponent();
Intent marketIntent = new Intent(Intent.ACTION_VIEW);
Uri marketUri = new Uri.Builder()
@@ -2893,7 +2818,7 @@
.authority("details")
.appendQueryParameter("id", componentName.getPackageName())
.build();
- if (debug) Log.d(TAG, "manufactured intent uri: " + marketUri.toString());
+ Log.d(TAG, "manufactured intent uri: " + marketUri.toString());
marketIntent.setData(marketUri);
return marketIntent;
}
@@ -3059,10 +2984,6 @@
Intent.ACTION_MAIN.equals(intent.getAction()) && name != null) {
return true;
}
- // placeholder shortcuts get special treatment, let them through too.
- if (info.getRestoredIntent() != null) {
- return true;
- }
}
return false;
}
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index b952729..a69f423 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -71,7 +71,7 @@
private static final String DATABASE_NAME = "launcher.db";
- private static final int DATABASE_VERSION = 17;
+ private static final int DATABASE_VERSION = 16;
static final String OLD_AUTHORITY = "com.android.launcher2.settings";
static final String AUTHORITY = ProviderConfig.AUTHORITY;
@@ -769,16 +769,6 @@
}
}
- if (version < 17) {
- // We use the db version upgrade here to identify users who may not have seen
- // clings yet (because they weren't available), but for whom the clings are now
- // available (tablet users). Because one of the possible cling flows (migration)
- // is very destructive (wipes out workspaces), we want to prevent this from showing
- // until clear data. We do so by marking that the clings have been shown.
- LauncherClings.synchonouslyMarkFirstRunClingDismissed(mContext);
- version = 17;
- }
-
if (version != DATABASE_VERSION) {
Log.w(TAG, "Destroying all old data.");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVORITES);
diff --git a/src/com/android/launcher3/ShortcutInfo.java b/src/com/android/launcher3/ShortcutInfo.java
index 79d114c..660f32c 100644
--- a/src/com/android/launcher3/ShortcutInfo.java
+++ b/src/com/android/launcher3/ShortcutInfo.java
@@ -64,12 +64,6 @@
long firstInstallTime;
int flags = 0;
- /**
- * If this shortcut is a placeholder, then intent will be a market intent for the package, and
- * this will hold the original intent from the database. Otherwise, null.
- */
- Intent restoredIntent;
-
ShortcutInfo() {
itemType = LauncherSettings.BaseLauncherColumns.ITEM_TYPE_SHORTCUT;
}
@@ -78,21 +72,6 @@
return intent;
}
- protected Intent getRestoredIntent() {
- return restoredIntent;
- }
-
- /**
- * Overwrite placeholder data with restored data, or do nothing if this is not a placeholder.
- */
- public void restore() {
- if (restoredIntent != null) {
- intent = restoredIntent;
- restoredIntent = null;
- }
- }
-
-
ShortcutInfo(Intent intent, CharSequence title, Bitmap icon) {
this();
this.intent = intent;
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 86c603e..751b4c6 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -863,12 +863,6 @@
// Log to disk
Launcher.addDumpLog(TAG, "11683562 - stripEmptyScreens()", true);
- if (mLauncher.isWorkspaceLoading()) {
- // Don't strip empty screens if the workspace is still loading
- Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
- return;
- }
-
if (isPageMoving()) {
mStripScreensOnPageStopMoving = true;
return;
@@ -2715,13 +2709,12 @@
mTargetCell);
float distance = dropTargetLayout.getDistanceFromCell(mDragViewVisualCenter[0],
mDragViewVisualCenter[1], mTargetCell);
- if (mCreateUserFolderOnDrop && willCreateUserFolder((ItemInfo) d.dragInfo,
- dropTargetLayout, mTargetCell, distance, true)) {
+ if (willCreateUserFolder((ItemInfo) d.dragInfo, dropTargetLayout,
+ mTargetCell, distance, true)) {
return true;
}
-
- if (mAddToExistingFolderOnDrop && willAddToExistingUserFolder((ItemInfo) d.dragInfo,
- dropTargetLayout, mTargetCell, distance)) {
+ if (willAddToExistingUserFolder((ItemInfo) d.dragInfo, dropTargetLayout,
+ mTargetCell, distance)) {
return true;
}
@@ -4619,15 +4612,11 @@
private void updateShortcut(HashMap<ComponentName, AppInfo> appsMap, ItemInfo info,
View child) {
ComponentName cn = info.getIntent().getComponent();
- if (info.getRestoredIntent() != null) {
- cn = info.getRestoredIntent().getComponent();
- }
if (cn != null) {
- AppInfo appInfo = appsMap.get(cn);
+ AppInfo appInfo = appsMap.get(info.getIntent().getComponent());
if ((appInfo != null) && LauncherModel.isShortcutInfoUpdateable(info)) {
ShortcutInfo shortcutInfo = (ShortcutInfo) info;
BubbleTextView shortcut = (BubbleTextView) child;
- shortcutInfo.restore();
shortcutInfo.updateIcon(mIconCache);
shortcutInfo.title = appInfo.title.toString();
shortcut.applyFromShortcutInfo(shortcutInfo, mIconCache);