summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.mk7
-rw-r--r--AndroidManifest.xml6
-rw-r--r--WallpaperPicker/AndroidManifest.xml10
-rw-r--r--WallpaperPicker/README4
-rw-r--r--WallpaperPicker/res/anim/fade_out.xml23
-rwxr-xr-xWallpaperPicker/res/drawable-hdpi/ic_actionbar_accept.pngbin1335 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-hdpi/ic_images.pngbin354 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-hdpi/tile_shadow_bottom.9.pngbin159 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-hdpi/tile_shadow_top.9.pngbin148 -> 0 bytes
-rwxr-xr-xWallpaperPicker/res/drawable-mdpi/ic_actionbar_accept.pngbin1191 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-mdpi/ic_images.pngbin249 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-mdpi/tile_shadow_bottom.9.pngbin140 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-mdpi/tile_shadow_top.9.pngbin138 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-v21/ic_tick.xml31
-rw-r--r--WallpaperPicker/res/drawable-v21/wallpaper_tile_fg.xml39
-rwxr-xr-xWallpaperPicker/res/drawable-xhdpi/ic_actionbar_accept.pngbin1599 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-xhdpi/ic_images.pngbin431 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-xhdpi/tile_shadow_bottom.9.pngbin164 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-xhdpi/tile_shadow_top.9.pngbin151 -> 0 bytes
-rwxr-xr-xWallpaperPicker/res/drawable-xxhdpi/ic_actionbar_accept.pngbin4962 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-xxhdpi/ic_images.pngbin621 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-xxhdpi/tile_shadow_bottom.9.pngbin185 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-xxhdpi/tile_shadow_top.9.pngbin169 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable-xxxhdpi/ic_images.pngbin845 -> 0 bytes
-rw-r--r--WallpaperPicker/res/drawable/wallpaper_tile_fg.xml47
-rw-r--r--WallpaperPicker/res/layout/actionbar_set_wallpaper.xml32
-rw-r--r--WallpaperPicker/res/layout/wallpaper_cropper.xml38
-rw-r--r--WallpaperPicker/res/layout/wallpaper_picker.xml91
-rw-r--r--WallpaperPicker/res/layout/wallpaper_picker_image_picker_item.xml41
-rw-r--r--WallpaperPicker/res/layout/wallpaper_picker_item.xml29
-rw-r--r--WallpaperPicker/res/layout/wallpaper_picker_live_wallpaper_item.xml48
-rw-r--r--WallpaperPicker/res/layout/wallpaper_picker_third_party_item.xml39
-rw-r--r--WallpaperPicker/res/menu/cab_delete_wallpapers.xml27
-rw-r--r--WallpaperPicker/res/mipmap-hdpi/ic_launcher_wallpaper.pngbin4418 -> 0 bytes
-rw-r--r--WallpaperPicker/res/mipmap-mdpi/ic_launcher_wallpaper.pngbin2871 -> 0 bytes
-rw-r--r--WallpaperPicker/res/mipmap-xhdpi/ic_launcher_wallpaper.pngbin6061 -> 0 bytes
-rw-r--r--WallpaperPicker/res/mipmap-xxhdpi/ic_launcher_wallpaper.pngbin7596 -> 0 bytes
-rw-r--r--WallpaperPicker/res/values-af/strings.xml37
-rw-r--r--WallpaperPicker/res/values-am/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ar/strings.xml37
-rw-r--r--WallpaperPicker/res/values-az-rAZ/strings.xml37
-rw-r--r--WallpaperPicker/res/values-bg/strings.xml37
-rw-r--r--WallpaperPicker/res/values-bn-rBD/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ca/strings.xml37
-rw-r--r--WallpaperPicker/res/values-cs/strings.xml37
-rw-r--r--WallpaperPicker/res/values-da/strings.xml37
-rw-r--r--WallpaperPicker/res/values-de/strings.xml37
-rw-r--r--WallpaperPicker/res/values-el/strings.xml37
-rw-r--r--WallpaperPicker/res/values-en-rAU/strings.xml37
-rw-r--r--WallpaperPicker/res/values-en-rGB/strings.xml37
-rw-r--r--WallpaperPicker/res/values-en-rIN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-es-rUS/strings.xml37
-rw-r--r--WallpaperPicker/res/values-es/strings.xml37
-rw-r--r--WallpaperPicker/res/values-et-rEE/strings.xml37
-rw-r--r--WallpaperPicker/res/values-eu-rES/strings.xml37
-rw-r--r--WallpaperPicker/res/values-fa/strings.xml37
-rw-r--r--WallpaperPicker/res/values-fi/strings.xml37
-rw-r--r--WallpaperPicker/res/values-fr-rCA/strings.xml37
-rw-r--r--WallpaperPicker/res/values-fr/strings.xml37
-rw-r--r--WallpaperPicker/res/values-gl-rES/strings.xml37
-rw-r--r--WallpaperPicker/res/values-gu-rIN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-hi/strings.xml37
-rw-r--r--WallpaperPicker/res/values-hr/strings.xml37
-rw-r--r--WallpaperPicker/res/values-hu/strings.xml37
-rw-r--r--WallpaperPicker/res/values-hy-rAM/strings.xml37
-rw-r--r--WallpaperPicker/res/values-in/strings.xml37
-rw-r--r--WallpaperPicker/res/values-is-rIS/strings.xml37
-rw-r--r--WallpaperPicker/res/values-it/strings.xml37
-rw-r--r--WallpaperPicker/res/values-iw/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ja/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ka-rGE/strings.xml37
-rw-r--r--WallpaperPicker/res/values-kk-rKZ/strings.xml37
-rw-r--r--WallpaperPicker/res/values-km-rKH/strings.xml37
-rw-r--r--WallpaperPicker/res/values-kn-rIN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ko/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ky-rKG/strings.xml37
-rw-r--r--WallpaperPicker/res/values-lo-rLA/strings.xml37
-rw-r--r--WallpaperPicker/res/values-lt/strings.xml37
-rw-r--r--WallpaperPicker/res/values-lv/strings.xml37
-rw-r--r--WallpaperPicker/res/values-mk-rMK/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ml-rIN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-mn-rMN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-mr-rIN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ms-rMY/strings.xml37
-rw-r--r--WallpaperPicker/res/values-my-rMM/strings.xml37
-rw-r--r--WallpaperPicker/res/values-nb/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ne-rNP/strings.xml37
-rw-r--r--WallpaperPicker/res/values-nl/strings.xml37
-rw-r--r--WallpaperPicker/res/values-nodpi/wallpapers.xml21
-rw-r--r--WallpaperPicker/res/values-pa-rIN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-pl/strings.xml37
-rw-r--r--WallpaperPicker/res/values-pt-rPT/strings.xml37
-rw-r--r--WallpaperPicker/res/values-pt/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ro/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ru/strings.xml37
-rw-r--r--WallpaperPicker/res/values-si-rLK/strings.xml39
-rw-r--r--WallpaperPicker/res/values-sk/strings.xml37
-rw-r--r--WallpaperPicker/res/values-sl/strings.xml37
-rw-r--r--WallpaperPicker/res/values-sq-rAL/strings.xml37
-rw-r--r--WallpaperPicker/res/values-sr/strings.xml37
-rw-r--r--WallpaperPicker/res/values-sv/strings.xml37
-rw-r--r--WallpaperPicker/res/values-sw/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ta-rIN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-te-rIN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-th/strings.xml37
-rw-r--r--WallpaperPicker/res/values-tl/strings.xml37
-rw-r--r--WallpaperPicker/res/values-tr/strings.xml37
-rw-r--r--WallpaperPicker/res/values-uk/strings.xml37
-rw-r--r--WallpaperPicker/res/values-ur-rPK/strings.xml37
-rw-r--r--WallpaperPicker/res/values-uz-rUZ/strings.xml37
-rw-r--r--WallpaperPicker/res/values-v19/styles.xml27
-rw-r--r--WallpaperPicker/res/values-v21/styles.xml35
-rw-r--r--WallpaperPicker/res/values-vi/strings.xml37
-rw-r--r--WallpaperPicker/res/values-zh-rCN/strings.xml37
-rw-r--r--WallpaperPicker/res/values-zh-rHK/strings.xml37
-rw-r--r--WallpaperPicker/res/values-zh-rTW/strings.xml37
-rw-r--r--WallpaperPicker/res/values-zu/strings.xml37
-rw-r--r--WallpaperPicker/res/values/colors.xml22
-rw-r--r--WallpaperPicker/res/values/config.xml20
-rw-r--r--WallpaperPicker/res/values/dimens.xml22
-rw-r--r--WallpaperPicker/res/values/strings.xml56
-rw-r--r--WallpaperPicker/res/values/styles.xml42
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java409
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/common/BitmapUtils.java67
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/common/ExifOrientation.java145
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/common/Utils.java129
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/glrenderer/BasicTexture.java176
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/glrenderer/BitmapTexture.java50
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/glrenderer/GLCanvas.java123
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20Canvas.java521
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20IdImpl.java42
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/glrenderer/GLId.java33
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/glrenderer/IntArray.java60
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/glrenderer/Texture.java37
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/glrenderer/UploadedTexture.java199
-rw-r--r--WallpaperPicker/src/com/android/launcher3/AlphaDisableableButton.java50
-rw-r--r--WallpaperPicker/src/com/android/launcher3/CheckableFrameLayout.java63
-rw-r--r--WallpaperPicker/src/com/android/launcher3/CropView.java332
-rw-r--r--WallpaperPicker/src/com/android/launcher3/DrawableTileSource.java102
-rw-r--r--WallpaperPicker/src/com/android/launcher3/LauncherWallpaperPickerActivity.java21
-rw-r--r--WallpaperPicker/src/com/android/launcher3/SavedWallpaperImages.java187
-rw-r--r--WallpaperPicker/src/com/android/launcher3/ToggleOnTapCallback.java67
-rw-r--r--WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java474
-rw-r--r--WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java653
-rw-r--r--WallpaperPicker/src/com/android/launcher3/base/BaseActivity.java21
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DefaultWallpaperInfo.java164
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DrawableThumbWallpaperInfo.java37
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/FileWallpaperInfo.java52
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/LiveWallpaperInfo.java118
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/PickImageInfo.java74
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java65
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ThirdPartyWallpaperInfo.java78
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/UriWallpaperInfo.java109
-rw-r--r--WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/WallpaperTileInfo.java87
-rw-r--r--WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java447
-rw-r--r--WallpaperPicker/src/com/android/photos/views/TiledImageRenderer.java826
-rw-r--r--WallpaperPicker/src/com/android/photos/views/TiledImageView.java210
-rw-r--r--build.gradle5
-rw-r--r--settings.gradle2
-rw-r--r--src/com/android/launcher3/Launcher.java2
-rw-r--r--src/com/android/launcher3/WallpaperPickerActivity.java114
-rw-r--r--src/com/android/launcher3/Workspace.java2
-rw-r--r--src/com/android/launcher3/util/WallpaperUtils.java152
163 files changed, 128 insertions, 9985 deletions
diff --git a/Android.mk b/Android.mk
index 1dde46bef..077386989 100644
--- a/Android.mk
+++ b/Android.mk
@@ -24,14 +24,14 @@ include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_JAVA_LIBRARIES := \
+ libWallpaperPicker \
android-support-v4 \
android-support-v7-recyclerview
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
- $(call all-java-files-under, WallpaperPicker/src) \
$(call all-proto-files-under, protos)
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/WallpaperPicker/res \
+LOCAL_RESOURCE_DIR := packages/apps/WallpaperPicker/res \
$(LOCAL_PATH)/res \
prebuilts/sdk/current/support/v7/recyclerview/res
@@ -41,7 +41,8 @@ LOCAL_PROTOC_OPTIMIZE_TYPE := nano
LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/protos/
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
- --extra-packages android.support.v7.recyclerview
+ --extra-packages android.support.v7.recyclerview \
+ --extra-packages com.android.wallpaperpicker
LOCAL_SDK_VERSION := current
LOCAL_PACKAGE_NAME := Launcher3
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index bce71209d..418b1d2d5 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -93,7 +93,7 @@
<activity
android:name="com.android.launcher3.WallpaperPickerActivity"
- android:theme="@style/Theme.WallpaperPicker"
+ android:theme="@style/WallpaperTheme.Picker"
android:label="@string/pick_wallpaper"
android:icon="@mipmap/ic_launcher_wallpaper"
android:finishOnCloseSystemDialogs="true"
@@ -105,8 +105,8 @@
</activity>
<activity
- android:name="com.android.launcher3.WallpaperCropActivity"
- android:theme="@style/Theme.WallpaperCropper"
+ android:name="com.android.wallpaperpicker.WallpaperCropActivity"
+ android:theme="@style/WallpaperTheme"
android:label="@string/crop_wallpaper"
android:icon="@mipmap/ic_launcher_wallpaper"
android:finishOnCloseSystemDialogs="true"
diff --git a/WallpaperPicker/AndroidManifest.xml b/WallpaperPicker/AndroidManifest.xml
deleted file mode 100644
index cb1457bdc..000000000
--- a/WallpaperPicker/AndroidManifest.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.launcher3"
- android:versionCode="1"
- android:versionName="1.0"
- >
-
- <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" />
- <application/>
-</manifest>
diff --git a/WallpaperPicker/README b/WallpaperPicker/README
deleted file mode 100644
index d8efb07f6..000000000
--- a/WallpaperPicker/README
+++ /dev/null
@@ -1,4 +0,0 @@
-This project contains the wallpaper picker for Launcher3. It's in a separate
-folder to organize the code separately from the rest of the launcher, and has
-a manifest so that a separate Eclipse project can exist for the wallpaper
-picker (necessary to have the Eclipse build work) \ No newline at end of file
diff --git a/WallpaperPicker/res/anim/fade_out.xml b/WallpaperPicker/res/anim/fade_out.xml
deleted file mode 100644
index 9ca7407e7..000000000
--- a/WallpaperPicker/res/anim/fade_out.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!-- startOffset is the same as the duration of the wallpaper_enter animation. We have this delay so
- that we don't see the wallpaper changing before fading back to the home screen. -->
-<alpha xmlns:android="http://schemas.android.com/apk/res/android"
- android:startOffset="@android:integer/config_longAnimTime"
- android:duration="@android:integer/config_mediumAnimTime"
- android:fromAlpha="1"
- android:toAlpha="0"/> \ No newline at end of file
diff --git a/WallpaperPicker/res/drawable-hdpi/ic_actionbar_accept.png b/WallpaperPicker/res/drawable-hdpi/ic_actionbar_accept.png
deleted file mode 100755
index 53cf6877e..000000000
--- a/WallpaperPicker/res/drawable-hdpi/ic_actionbar_accept.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-hdpi/ic_images.png b/WallpaperPicker/res/drawable-hdpi/ic_images.png
deleted file mode 100644
index 15e511c89..000000000
--- a/WallpaperPicker/res/drawable-hdpi/ic_images.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-hdpi/tile_shadow_bottom.9.png b/WallpaperPicker/res/drawable-hdpi/tile_shadow_bottom.9.png
deleted file mode 100644
index e80558bad..000000000
--- a/WallpaperPicker/res/drawable-hdpi/tile_shadow_bottom.9.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-hdpi/tile_shadow_top.9.png b/WallpaperPicker/res/drawable-hdpi/tile_shadow_top.9.png
deleted file mode 100644
index 7e93865e7..000000000
--- a/WallpaperPicker/res/drawable-hdpi/tile_shadow_top.9.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-mdpi/ic_actionbar_accept.png b/WallpaperPicker/res/drawable-mdpi/ic_actionbar_accept.png
deleted file mode 100755
index 35cda8e11..000000000
--- a/WallpaperPicker/res/drawable-mdpi/ic_actionbar_accept.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-mdpi/ic_images.png b/WallpaperPicker/res/drawable-mdpi/ic_images.png
deleted file mode 100644
index c4a2229e9..000000000
--- a/WallpaperPicker/res/drawable-mdpi/ic_images.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-mdpi/tile_shadow_bottom.9.png b/WallpaperPicker/res/drawable-mdpi/tile_shadow_bottom.9.png
deleted file mode 100644
index d95787bac..000000000
--- a/WallpaperPicker/res/drawable-mdpi/tile_shadow_bottom.9.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-mdpi/tile_shadow_top.9.png b/WallpaperPicker/res/drawable-mdpi/tile_shadow_top.9.png
deleted file mode 100644
index 8da913cc4..000000000
--- a/WallpaperPicker/res/drawable-mdpi/tile_shadow_top.9.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-v21/ic_tick.xml b/WallpaperPicker/res/drawable-v21/ic_tick.xml
deleted file mode 100644
index 5b270279d..000000000
--- a/WallpaperPicker/res/drawable-v21/ic_tick.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="48dp"
- android:viewportHeight="48"
- android:viewportWidth="48"
- android:width="48dp" >
-
- <group>
- <path
- android:name="tick"
- android:fillColor="#FFFFFFFF"
- android:pathData="M18 32.34l-8.34-8.34-2.83 2.83 11.17 11.17 24-24-2.83-2.83z" />
- </group>
-
-</vector> \ No newline at end of file
diff --git a/WallpaperPicker/res/drawable-v21/wallpaper_tile_fg.xml b/WallpaperPicker/res/drawable-v21/wallpaper_tile_fg.xml
deleted file mode 100644
index 97cdcd637..000000000
--- a/WallpaperPicker/res/drawable-v21/wallpaper_tile_fg.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- 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.
--->
-
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
- android:color="#66FFFFFF" >
-
- <item
- android:id="@android:id/mask"
- android:drawable="@android:color/white"/>
- <item
- android:bottom="23.25dp"
- android:left="29.25dp"
- android:right="29.25dp"
- android:top="23.25dp">
- <selector>
- <item
- android:drawable="@drawable/ic_tick"
- android:state_selected="true"/>
- <item
- android:drawable="@drawable/ic_tick"
- android:state_checked="true"/>
- </selector>
- </item>
-
-</ripple> \ No newline at end of file
diff --git a/WallpaperPicker/res/drawable-xhdpi/ic_actionbar_accept.png b/WallpaperPicker/res/drawable-xhdpi/ic_actionbar_accept.png
deleted file mode 100755
index b52dc3701..000000000
--- a/WallpaperPicker/res/drawable-xhdpi/ic_actionbar_accept.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-xhdpi/ic_images.png b/WallpaperPicker/res/drawable-xhdpi/ic_images.png
deleted file mode 100644
index 497479291..000000000
--- a/WallpaperPicker/res/drawable-xhdpi/ic_images.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-xhdpi/tile_shadow_bottom.9.png b/WallpaperPicker/res/drawable-xhdpi/tile_shadow_bottom.9.png
deleted file mode 100644
index 81571f3b7..000000000
--- a/WallpaperPicker/res/drawable-xhdpi/tile_shadow_bottom.9.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-xhdpi/tile_shadow_top.9.png b/WallpaperPicker/res/drawable-xhdpi/tile_shadow_top.9.png
deleted file mode 100644
index 8503a59fe..000000000
--- a/WallpaperPicker/res/drawable-xhdpi/tile_shadow_top.9.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-xxhdpi/ic_actionbar_accept.png b/WallpaperPicker/res/drawable-xxhdpi/ic_actionbar_accept.png
deleted file mode 100755
index d9ad51c9b..000000000
--- a/WallpaperPicker/res/drawable-xxhdpi/ic_actionbar_accept.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-xxhdpi/ic_images.png b/WallpaperPicker/res/drawable-xxhdpi/ic_images.png
deleted file mode 100644
index c8b9f757a..000000000
--- a/WallpaperPicker/res/drawable-xxhdpi/ic_images.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-xxhdpi/tile_shadow_bottom.9.png b/WallpaperPicker/res/drawable-xxhdpi/tile_shadow_bottom.9.png
deleted file mode 100644
index 55250f041..000000000
--- a/WallpaperPicker/res/drawable-xxhdpi/tile_shadow_bottom.9.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-xxhdpi/tile_shadow_top.9.png b/WallpaperPicker/res/drawable-xxhdpi/tile_shadow_top.9.png
deleted file mode 100644
index 3f2263364..000000000
--- a/WallpaperPicker/res/drawable-xxhdpi/tile_shadow_top.9.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable-xxxhdpi/ic_images.png b/WallpaperPicker/res/drawable-xxxhdpi/ic_images.png
deleted file mode 100644
index a19002e47..000000000
--- a/WallpaperPicker/res/drawable-xxxhdpi/ic_images.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/drawable/wallpaper_tile_fg.xml b/WallpaperPicker/res/drawable/wallpaper_tile_fg.xml
deleted file mode 100644
index c66fa50ad..000000000
--- a/WallpaperPicker/res/drawable/wallpaper_tile_fg.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 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.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_checked="true" >
- <shape>
- <stroke
- android:width="2dp"
- android:color="#FFFFFFFF" />
- <solid android:color="#33FFFFFF"/>
- </shape>
- </item>
- <item android:state_focused="true" >
- <shape>
- <stroke
- android:width="2dp"
- android:color="#FFFFFFFF" />
- </shape>
- </item>
- <item android:state_pressed="true">
- <shape android:shape="rectangle">
- <solid android:color="#33FFFFFF"/>
- </shape>
- </item>
- <item android:state_selected="true" >
- <shape>
- <stroke
- android:width="2dp"
- android:color="#FFFFFFFF" />
- <solid android:color="#33FFFFFF"/>
- </shape>
- </item>
- <item android:drawable="@android:color/transparent" />
-</selector>
diff --git a/WallpaperPicker/res/layout/actionbar_set_wallpaper.xml b/WallpaperPicker/res/layout/actionbar_set_wallpaper.xml
deleted file mode 100644
index 8e349b732..000000000
--- a/WallpaperPicker/res/layout/actionbar_set_wallpaper.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 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.
-*/
--->
-
-<com.android.launcher3.AlphaDisableableButton
- xmlns:android="http://schemas.android.com/apk/res/android"
- style="@style/ActionBarSetWallpaperStyle"
- 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>
diff --git a/WallpaperPicker/res/layout/wallpaper_cropper.xml b/WallpaperPicker/res/layout/wallpaper_cropper.xml
deleted file mode 100644
index ffe8df0fb..000000000
--- a/WallpaperPicker/res/layout/wallpaper_cropper.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 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.
-*/
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <com.android.launcher3.CropView
- android:id="@+id/cropView"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- <ProgressBar
- android:id="@+id/loading"
- style="?android:attr/progressBarStyleLarge"
- android:visibility="invisible"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerInParent="true"
- android:indeterminate="true"
- android:indeterminateOnly="true"
- android:background="@android:color/transparent" />
-</RelativeLayout>
diff --git a/WallpaperPicker/res/layout/wallpaper_picker.xml b/WallpaperPicker/res/layout/wallpaper_picker.xml
deleted file mode 100644
index 0b970b09f..000000000
--- a/WallpaperPicker/res/layout/wallpaper_picker.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 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.
-*/
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:launcher="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <com.android.launcher3.CropView
- android:id="@+id/cropView"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- <ProgressBar
- android:id="@+id/loading"
- style="?android:attr/progressBarStyleLarge"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:indeterminate="true"
- android:indeterminateOnly="true"
- android:visibility="invisible" />
-
- <LinearLayout
- android:id="@+id/wallpaper_strip"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:fitsSystemWindows="true"
- android:orientation="vertical" >
-
- <View
- android:layout_width="match_parent"
- android:layout_height="2dp"
- android:background="@drawable/tile_shadow_top" />
-
- <HorizontalScrollView
- android:id="@+id/wallpaper_scroll_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" >
-
- <LinearLayout
- android:id="@+id/master_wallpaper_list"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <LinearLayout
- android:id="@+id/wallpaper_list"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" />
-
- <LinearLayout
- android:id="@+id/live_wallpaper_list"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" />
-
- <LinearLayout
- android:id="@+id/third_party_wallpaper_list"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" />
- </LinearLayout>
- </HorizontalScrollView>
-
- <View
- android:layout_width="match_parent"
- android:layout_height="2dp"
- android:background="@drawable/tile_shadow_bottom" />
- </LinearLayout>
-
-</FrameLayout> \ No newline at end of file
diff --git a/WallpaperPicker/res/layout/wallpaper_picker_image_picker_item.xml b/WallpaperPicker/res/layout/wallpaper_picker_image_picker_item.xml
deleted file mode 100644
index dc6524486..000000000
--- a/WallpaperPicker/res/layout/wallpaper_picker_image_picker_item.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<com.android.launcher3.CheckableFrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="@dimen/wallpaperThumbnailWidth"
- android:layout_height="@dimen/wallpaperThumbnailHeight"
- android:focusable="true"
- android:clickable="true"
- android:foreground="@drawable/wallpaper_tile_fg">
- <ImageView
- android:id="@+id/wallpaper_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/wallpaper_picker_translucent_gray"
- android:scaleType="centerCrop" />
- <TextView
- android:id="@+id/wallpaper_item_label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="marquee"
- android:gravity="center"
- android:layout_gravity="center"
- android:text="@string/pick_image"
- android:drawableTop="@drawable/ic_images"
- android:drawablePadding="4dp"
- android:textColor="@android:color/white"/>
-</com.android.launcher3.CheckableFrameLayout>
diff --git a/WallpaperPicker/res/layout/wallpaper_picker_item.xml b/WallpaperPicker/res/layout/wallpaper_picker_item.xml
deleted file mode 100644
index 3f57fcdbd..000000000
--- a/WallpaperPicker/res/layout/wallpaper_picker_item.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<com.android.launcher3.CheckableFrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="@dimen/wallpaperThumbnailWidth"
- android:layout_height="@dimen/wallpaperThumbnailHeight"
- android:focusable="true"
- android:clickable="true"
- android:foreground="@drawable/wallpaper_tile_fg">
- <ImageView
- android:id="@+id/wallpaper_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="centerCrop" />
-</com.android.launcher3.CheckableFrameLayout>
diff --git a/WallpaperPicker/res/layout/wallpaper_picker_live_wallpaper_item.xml b/WallpaperPicker/res/layout/wallpaper_picker_live_wallpaper_item.xml
deleted file mode 100644
index 2b152fce2..000000000
--- a/WallpaperPicker/res/layout/wallpaper_picker_live_wallpaper_item.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<com.android.launcher3.CheckableFrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="@dimen/wallpaperThumbnailWidth"
- android:layout_height="@dimen/wallpaperThumbnailHeight"
- android:focusable="true"
- android:clickable="true"
- android:foreground="@drawable/wallpaper_tile_fg">
- <ImageView
- android:id="@+id/wallpaper_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center"
- android:background="@android:color/black"
- android:scaleType="centerCrop" />
- <ImageView
- android:id="@+id/wallpaper_icon"
- android:layout_width="@dimen/wallpaperItemIconSize"
- android:layout_height="@dimen/wallpaperItemIconSize"
- android:layout_gravity="center"
- android:visibility="gone" />
- <TextView
- android:id="@+id/wallpaper_item_label"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:gravity="center"
- android:padding="4dp"
- android:layout_gravity="bottom"
- android:background="@color/wallpaper_picker_translucent_gray"
- android:textColor="@android:color/white"/>
-</com.android.launcher3.CheckableFrameLayout>
diff --git a/WallpaperPicker/res/layout/wallpaper_picker_third_party_item.xml b/WallpaperPicker/res/layout/wallpaper_picker_third_party_item.xml
deleted file mode 100644
index a7e3a0c79..000000000
--- a/WallpaperPicker/res/layout/wallpaper_picker_third_party_item.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<com.android.launcher3.CheckableFrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="@dimen/wallpaperThumbnailWidth"
- android:layout_height="@dimen/wallpaperThumbnailHeight"
- android:focusable="true"
- android:clickable="true"
- android:foreground="@drawable/wallpaper_tile_fg">
- <ImageView
- android:id="@+id/wallpaper_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/wallpaper_picker_translucent_gray"
- android:scaleType="centerCrop" />
- <TextView
- android:id="@+id/wallpaper_item_label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:ellipsize="marquee"
- android:gravity="center"
- android:layout_gravity="center"
- android:drawablePadding="4dp"
- android:textColor="@android:color/white"/>
-</com.android.launcher3.CheckableFrameLayout>
diff --git a/WallpaperPicker/res/menu/cab_delete_wallpapers.xml b/WallpaperPicker/res/menu/cab_delete_wallpapers.xml
deleted file mode 100644
index 38ac5c4d6..000000000
--- a/WallpaperPicker/res/menu/cab_delete_wallpapers.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 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.
-*/
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android" >
- <item
- android:id="@+id/menu_delete"
- android:title="@string/wallpaper_delete"
- android:showAsAction="always"
- android:icon="@android:drawable/ic_menu_delete" />
-</menu>
diff --git a/WallpaperPicker/res/mipmap-hdpi/ic_launcher_wallpaper.png b/WallpaperPicker/res/mipmap-hdpi/ic_launcher_wallpaper.png
deleted file mode 100644
index affee851d..000000000
--- a/WallpaperPicker/res/mipmap-hdpi/ic_launcher_wallpaper.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/mipmap-mdpi/ic_launcher_wallpaper.png b/WallpaperPicker/res/mipmap-mdpi/ic_launcher_wallpaper.png
deleted file mode 100644
index cb4443bdb..000000000
--- a/WallpaperPicker/res/mipmap-mdpi/ic_launcher_wallpaper.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/mipmap-xhdpi/ic_launcher_wallpaper.png b/WallpaperPicker/res/mipmap-xhdpi/ic_launcher_wallpaper.png
deleted file mode 100644
index 60f8dceec..000000000
--- a/WallpaperPicker/res/mipmap-xhdpi/ic_launcher_wallpaper.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/mipmap-xxhdpi/ic_launcher_wallpaper.png b/WallpaperPicker/res/mipmap-xxhdpi/ic_launcher_wallpaper.png
deleted file mode 100644
index 023fb5886..000000000
--- a/WallpaperPicker/res/mipmap-xxhdpi/ic_launcher_wallpaper.png
+++ /dev/null
Binary files differ
diff --git a/WallpaperPicker/res/values-af/strings.xml b/WallpaperPicker/res/values-af/strings.xml
deleted file mode 100644
index bc87fe121..000000000
--- a/WallpaperPicker/res/values-af/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Stel muurpapier"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Kon nie prent laai nie"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Kon nie prent as muurpapier laai nie"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Kon nie prent as muurpapier stel nie"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d gekies"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d gekies"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d gekies"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Muurpapier %1$d van %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Het <xliff:g id="LABEL">%1$s</xliff:g> gekies"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Vee uit"</string>
- <string name="pick_image" msgid="3189640419551368385">"My foto\'s"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Muurpapiere"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Snoei muurpapier"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-am/strings.xml b/WallpaperPicker/res/values-am/strings.xml
deleted file mode 100644
index 23bf538e3..000000000
--- a/WallpaperPicker/res/values-am/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"ልጣፍ አዘጋጅ"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"ምስሉን መጫን አልተቻለም"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"ምስሉን እንደ ግድግዳ ወረቀት መጫን አልተቻለም"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"ምስሉን እንደ ግድግዳ ወረቀት ማዘጋጀት አልተቻለም"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d ተመርጧል"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d ተመርጧል"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d ተመርጧል"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"ልጣፍ %1$d የ%2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> ተመርጧል"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"ሰርዝ"</string>
- <string name="pick_image" msgid="3189640419551368385">"የእኔ ፎቶዎች"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"የግድግዳ ወረቀቶች"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"ልጣፍ ይከርክሙ"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ar/strings.xml b/WallpaperPicker/res/values-ar/strings.xml
deleted file mode 100644
index db6834c9a..000000000
--- a/WallpaperPicker/res/values-ar/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"تعيين الخلفية"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"تعذر تحميل الصورة"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"تعذر تحميل الصورة كخلفية"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"تعذر تعيين الصورة كخلفية"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"‏تم تحديد %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"‏تم تحديد %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"‏تم تحديد %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"‏الخلفية %1$d من %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"تم تحديد <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"حذف"</string>
- <string name="pick_image" msgid="3189640419551368385">"صوري"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"الخلفيات"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"اقتصاص الخلفية"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-az-rAZ/strings.xml b/WallpaperPicker/res/values-az-rAZ/strings.xml
deleted file mode 100644
index c42d71181..000000000
--- a/WallpaperPicker/res/values-az-rAZ/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Divar kağı seçin"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Şəkli yükləmək alınmadı"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Şəkli divar kağızı olaraq yükləmək alınmadı"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Şəkli divar kağızı olaraq quraşdırmaq alınmadı"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d seçilib"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d seçilib"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d seçilib"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Divar kağızı %1$d of %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> seçilib"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Sil"</string>
- <string name="pick_image" msgid="3189640419551368385">"Fotolarım"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Divar kağızları"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Divar kağızını kəsin"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-bg/strings.xml b/WallpaperPicker/res/values-bg/strings.xml
deleted file mode 100644
index bf2a83b1e..000000000
--- a/WallpaperPicker/res/values-bg/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Задаване на тапета"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Изображението не можа да бъде заредено"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Изображението не можа да бъде заредено като тапет"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Изображението не можа да бъде зададено като тапет"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Избрахте %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Избрахте %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Избрахте %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Тапет %1$d от %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Избрахте <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Изтриване"</string>
- <string name="pick_image" msgid="3189640419551368385">"Моите снимки"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Тапети"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Подрязване на тапета"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-bn-rBD/strings.xml b/WallpaperPicker/res/values-bn-rBD/strings.xml
deleted file mode 100644
index 1c4d3d493..000000000
--- a/WallpaperPicker/res/values-bn-rBD/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"ওয়ালপেপার সেট করুন"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"চিত্র লোড করা যায়নি"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"ওয়ালপেপার হিসাবে চিত্র লোড করা যায়নি"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"ওয়ালপেপার হিসাবে চিত্র সেট করা যায়নি"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$dটি নির্বাচন করা হয়েছে"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$dটি নির্বাচন করা হয়েছে"</item>
- <item quantity="other" msgid="479468347731745357">"%1$dটি নির্বাচন করা হয়েছে"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%2$dটির মধ্যে %1$dটি ওয়ালপেপার"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> নির্বাচন করা হয়েছে"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"মুছুন"</string>
- <string name="pick_image" msgid="3189640419551368385">"আমার ফটো"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"ওয়ালপেপারগুলি"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"ওয়ালপেপার কাটছাঁট করুন"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ca/strings.xml b/WallpaperPicker/res/values-ca/strings.xml
deleted file mode 100644
index 9533ae918..000000000
--- a/WallpaperPicker/res/values-ca/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Estableix el fons de pantalla"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"No s\'ha pogut carregar la imatge."</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"No s\'ha pogut carregar la imatge com a fons de pantalla."</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"No s\'ha pogut definir la imatge com a fons de pantalla"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Seleccionats: %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Seleccionats: %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Seleccionats: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Fons de pantalla %1$d de %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"S\'ha seleccionat <xliff:g id="LABEL">%1$s</xliff:g>."</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Suprimeix"</string>
- <string name="pick_image" msgid="3189640419551368385">"Les meves fotos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Fons de pantalla"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Retallar fons de pantalla"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-cs/strings.xml b/WallpaperPicker/res/values-cs/strings.xml
deleted file mode 100644
index aab8cc8b3..000000000
--- a/WallpaperPicker/res/values-cs/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Nastavit jako tapetu"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Obrázek nelze načíst."</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Obrázek nelze načíst jako tapetu."</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Obrázek nelze nastavit jako tapetu"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Vybráno: %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Vybráno: %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Vybráno: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Tapeta %1$d z %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Vybrána položka <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Smazat"</string>
- <string name="pick_image" msgid="3189640419551368385">"Moje fotografie"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Tapety"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Oříznutí tapety"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-da/strings.xml b/WallpaperPicker/res/values-da/strings.xml
deleted file mode 100644
index 10ef5b3da..000000000
--- a/WallpaperPicker/res/values-da/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Angiv baggrund"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Billedet kunne ikke indlæses"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Billedet kunne ikke indlæses som baggrund"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Billedet kunne ikke indlæses som baggrund"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d er valgt"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d er valgt"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d er valgt"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Baggrund %1$d af %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> blev valgt"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Slet"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mine billeder"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Baggrunde"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Beskær baggrunden"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-de/strings.xml b/WallpaperPicker/res/values-de/strings.xml
deleted file mode 100644
index be35b736b..000000000
--- a/WallpaperPicker/res/values-de/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Hintergrund auswählen"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Bild konnte nicht geladen werden."</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Bild konnte nicht als Hintergrund geladen werden."</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Bild konnte nicht als Hintergrund festgelegt werden."</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d ausgewählt"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d ausgewählt"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d ausgewählt"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Hintergrund %1$d von %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> ausgewählt"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Löschen"</string>
- <string name="pick_image" msgid="3189640419551368385">"Meine Fotos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Hintergründe"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Hintergrund zuschneiden"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-el/strings.xml b/WallpaperPicker/res/values-el/strings.xml
deleted file mode 100644
index 1d799a86d..000000000
--- a/WallpaperPicker/res/values-el/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Ορισμός ταπετσαρίας"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Δεν ήταν δυνατή η φόρτωση της εικόνας"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Δεν ήταν δυνατή η φόρτωση της εικόνας ως ταπετσαρία"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Δεν ήταν δυνατός ο ορισμός της εικόνας ως ταπετσαρία"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d επιλεγμένα"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d επιλεγμένα"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d επιλεγμένα"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Ταπετσαρία %1$d από %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Επιλέχθηκε το <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Διαγραφή"</string>
- <string name="pick_image" msgid="3189640419551368385">"Οι φωτογραφίες μου"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Ταπετσαρίες"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Περικοπή ταπετσαρίας"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-en-rAU/strings.xml b/WallpaperPicker/res/values-en-rAU/strings.xml
deleted file mode 100644
index a384ff608..000000000
--- a/WallpaperPicker/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Set wallpaper"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Couldn\'t load image"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Couldn\'t load image as wallpaper"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Couldn\'t set image as wallpaper"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d selected"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d selected"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d selected"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Wallpaper %1$d of %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Selected <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Delete"</string>
- <string name="pick_image" msgid="3189640419551368385">"My photos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Wallpapers"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Crop wallpaper"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-en-rGB/strings.xml b/WallpaperPicker/res/values-en-rGB/strings.xml
deleted file mode 100644
index a384ff608..000000000
--- a/WallpaperPicker/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Set wallpaper"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Couldn\'t load image"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Couldn\'t load image as wallpaper"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Couldn\'t set image as wallpaper"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d selected"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d selected"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d selected"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Wallpaper %1$d of %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Selected <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Delete"</string>
- <string name="pick_image" msgid="3189640419551368385">"My photos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Wallpapers"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Crop wallpaper"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-en-rIN/strings.xml b/WallpaperPicker/res/values-en-rIN/strings.xml
deleted file mode 100644
index a384ff608..000000000
--- a/WallpaperPicker/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Set wallpaper"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Couldn\'t load image"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Couldn\'t load image as wallpaper"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Couldn\'t set image as wallpaper"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d selected"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d selected"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d selected"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Wallpaper %1$d of %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Selected <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Delete"</string>
- <string name="pick_image" msgid="3189640419551368385">"My photos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Wallpapers"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Crop wallpaper"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-es-rUS/strings.xml b/WallpaperPicker/res/values-es-rUS/strings.xml
deleted file mode 100644
index 924ea5615..000000000
--- a/WallpaperPicker/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Establecer como fondo de pantalla"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"No se pudo cargar la imagen."</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"No se pudo cargar la imagen como fondo de pantalla."</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"No se pudo establecer la imagen como fondo de pantalla"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d seleccionado"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d seleccionado"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d seleccionados"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Fondo de pantalla %1$d de %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> seleccionado"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Eliminar"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mis fotos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Fondos de pantalla"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Recortar fondo de pantalla"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-es/strings.xml b/WallpaperPicker/res/values-es/strings.xml
deleted file mode 100644
index 8ecd3f4c3..000000000
--- a/WallpaperPicker/res/values-es/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Establecer fondo"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"No se ha podido cargar la imagen"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"No se ha podido cargar la imagen como fondo de pantalla"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"No se ha podido establecer la imagen como fondo de pantalla"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Seleccionados: %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Seleccionados: %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Seleccionados: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Fondo de pantalla %1$d de %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> seleccionado"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Eliminar"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mis fotos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Fondos de pantalla"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Recortar fondo de pantalla"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-et-rEE/strings.xml b/WallpaperPicker/res/values-et-rEE/strings.xml
deleted file mode 100644
index 59ca7704c..000000000
--- a/WallpaperPicker/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Määra taustapilt"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Kujutist ei õnnestunud laadida"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Kujutist ei õnnestunud taustapildina laadida"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Kujutist ei õnnestunud taustapildiks määrata"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Valitud on %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Valitud on %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Valitud on %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d/%2$d taustapildist"</string>
- <string name="announce_selection" msgid="123723511662250539">"Valitud on <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Kustuta"</string>
- <string name="pick_image" msgid="3189640419551368385">"Minu fotod"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Taustapildid"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Taustapildi kärpimine"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-eu-rES/strings.xml b/WallpaperPicker/res/values-eu-rES/strings.xml
deleted file mode 100644
index fb77b1acd..000000000
--- a/WallpaperPicker/res/values-eu-rES/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Ezarri horma-papera"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Ezin izan da irudia kargatu"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Ezin izan da irudia horma-paper gisa kargatu"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Ezin izan da ezarri irudia horma-paper gisa"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d hautatuta"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d hautatuta"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d hautatuta"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d/%2$d horma-papera"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> hautatu da"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Ezabatu"</string>
- <string name="pick_image" msgid="3189640419551368385">"Nire argazkiak"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Horma-paperak"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Ebaki horma-papera"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-fa/strings.xml b/WallpaperPicker/res/values-fa/strings.xml
deleted file mode 100644
index da4b7a10d..000000000
--- a/WallpaperPicker/res/values-fa/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"تنظیم کاغذدیواری"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"تصویر بارگیری نشد"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"تصویر به‌عنوان کاغذدیواری بارگیری نشد"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"تصویر به‌عنوان کاغذدیواری تنظیم نشد"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"‏%1$d انتخاب شد"</item>
- <item quantity="one" msgid="8409622005831789373">"‏%1$d انتخاب شد"</item>
- <item quantity="other" msgid="479468347731745357">"‏%1$d انتخاب شد"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"‏کاغذدیواری %1$d از %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> انتخاب شد"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"حذف"</string>
- <string name="pick_image" msgid="3189640419551368385">"عکس‌های من"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"کاغذدیواری‌ها"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"برش کاغذدیواری"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-fi/strings.xml b/WallpaperPicker/res/values-fi/strings.xml
deleted file mode 100644
index 3c8f1f538..000000000
--- a/WallpaperPicker/res/values-fi/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Aseta taustakuva"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Kuvan lataus epäonnistui"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Kuvaa ei voitu ladata taustakuvaksi"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Kuvan asettaminen taustakuvaksi epäonnistui."</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d valittu"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d valittu"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d valittu"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Taustakuva %1$d/%2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Valittu: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Poista"</string>
- <string name="pick_image" msgid="3189640419551368385">"Omat valokuvat"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Taustakuvat"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Rajaa taustakuva"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-fr-rCA/strings.xml b/WallpaperPicker/res/values-fr-rCA/strings.xml
deleted file mode 100644
index ba1d43000..000000000
--- a/WallpaperPicker/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Définir le fond d\'écran"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Impossible de charger l\'image"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Impossible de charger l\'image comme fond d\'écran"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Impossible d\'utiliser l\'image comme fond d\'écran"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d sélectionné"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d sélectionné"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d sélectionné(s)"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Fond d\'écran %1$d de %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Sélection : <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Supprimer"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mes photos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Fonds d\'écran"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Rogner le fond d\'écran"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-fr/strings.xml b/WallpaperPicker/res/values-fr/strings.xml
deleted file mode 100644
index 9f3b52531..000000000
--- a/WallpaperPicker/res/values-fr/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Définir comme fond d\'écran"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Impossible de charger l\'image."</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Impossible de charger l\'image comme fond d\'écran."</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Impossible de définir l\'image comme fond d\'écran."</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d élément sélectionné"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d élément sélectionné"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d éléments sélectionnés"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Fond d\'écran %1$d sur %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> sélectionné"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Supprimer"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mes photos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Fonds d\'écran"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Recadrer le fond d\'écran"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-gl-rES/strings.xml b/WallpaperPicker/res/values-gl-rES/strings.xml
deleted file mode 100644
index 5805489a7..000000000
--- a/WallpaperPicker/res/values-gl-rES/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Establecer fondo de pantalla"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Non se puido cargar a imaxe"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Non se puido cargar a imaxe como fondo de pantalla"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Non se puido definir a imaxe como fondo de pantalla"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Seleccionaches %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Seleccionaches %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Seleccionaches %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Fondo de pantalla %1$d de %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Seleccionaches <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Eliminar"</string>
- <string name="pick_image" msgid="3189640419551368385">"As miñas fotos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Fondos de pantalla"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Recortar fondo de pantalla"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-gu-rIN/strings.xml b/WallpaperPicker/res/values-gu-rIN/strings.xml
deleted file mode 100644
index f2932877c..000000000
--- a/WallpaperPicker/res/values-gu-rIN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"વૉલપેપર સેટ કરો"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"છબી લોડ કરી શકાઈ નથી"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"વૉલપેપર તરીકે છબી લોડ કરી શકાઈ નથી"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"વૉલપેપર તરીકે છબી સેટ કરી શક્યાં નથી"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d પસંદ કર્યો"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d પસંદ કર્યો"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d પસંદ કર્યો"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%2$d માંથી %1$d વૉલપેપર"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> પસંદ કર્યો"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"કાઢી નાખો"</string>
- <string name="pick_image" msgid="3189640419551368385">"મારા ફોટા"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"વૉલપેપર્સ"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"વૉલપેપર કાપો"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-hi/strings.xml b/WallpaperPicker/res/values-hi/strings.xml
deleted file mode 100644
index 6f610b5bb..000000000
--- a/WallpaperPicker/res/values-hi/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"वॉलपेपर सेट करें"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"चित्र लोड नहीं किया जा सका"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"चित्र को वॉलपेपर के रूप में लोड नहीं किया जा सका"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"चित्र को वॉलपेपर के रूप में सेट नहीं किया जा सका"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d चयनित"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d चयनित"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d चयनित"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"वॉलपेपर %2$d में से %1$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"चयनित <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"हटाएं"</string>
- <string name="pick_image" msgid="3189640419551368385">"मेरी फ़ोटो"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"वॉलपेपर"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"वॉलपेपर काटें"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-hr/strings.xml b/WallpaperPicker/res/values-hr/strings.xml
deleted file mode 100644
index aaf5e1bcd..000000000
--- a/WallpaperPicker/res/values-hr/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Postavi pozadinu"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Nije moguće učitati sliku"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Nije moguće učitati sliku kao pozadinu"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Postavljanje slike kao pozadine nije uspjelo"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Odabrano je %1$d stavki"</item>
- <item quantity="one" msgid="8409622005831789373">"Odabrana je %1$d stavka"</item>
- <item quantity="other" msgid="479468347731745357">"Odabrano stavki: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d. pozadinska slika od %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Odabrana je <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Izbriši"</string>
- <string name="pick_image" msgid="3189640419551368385">"Moje fotografije"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Pozadine"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Obrezivanje pozadinske slike"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-hu/strings.xml b/WallpaperPicker/res/values-hu/strings.xml
deleted file mode 100644
index 06c0952a4..000000000
--- a/WallpaperPicker/res/values-hu/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Háttérkép beállítása"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"A kép betöltése nem sikerült"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"A kép betöltése háttérképként nem sikerült"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"A kép beállítása háttérképként nem sikerült"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d kiválasztva"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d kiválasztva"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d kiválasztva"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d/%2$d. háttérkép"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> kiválasztva"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Törlés"</string>
- <string name="pick_image" msgid="3189640419551368385">"Saját fotók"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Háttérképek"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Háttérkép körbevágása"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-hy-rAM/strings.xml b/WallpaperPicker/res/values-hy-rAM/strings.xml
deleted file mode 100644
index f68d49f90..000000000
--- a/WallpaperPicker/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Սահմանել պաստառը"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Չհաջողվեց բեռնել նկարը"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Չհաջողվեց նկարը սահմանել որպես պաստառ"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Չհաջողվեց նկարը դնել որպես պաստառ"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d ընտրված"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d ընտրված"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d ընտրված"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d պաստառ՝ %2$d-ից"</string>
- <string name="announce_selection" msgid="123723511662250539">"Ընտրված է <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Ջնջել"</string>
- <string name="pick_image" msgid="3189640419551368385">"Իմ լուսանկարները"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Պաստառներ"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Եզրատել պաստառը"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-in/strings.xml b/WallpaperPicker/res/values-in/strings.xml
deleted file mode 100644
index 634eb1f76..000000000
--- a/WallpaperPicker/res/values-in/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Setel wallpaper"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Tidak dapat memuat gambar"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Tidak dapat memuat gambar sebagai wallpaper"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Tidak dapat menyetel gambar sebagai wallpaper"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d dipilih"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d dipilih"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d dipilih"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Wallpaper %1$d dari %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> terpilih"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Hapus"</string>
- <string name="pick_image" msgid="3189640419551368385">"Foto saya"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Wallpaper"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Pangkas wallpaper"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-is-rIS/strings.xml b/WallpaperPicker/res/values-is-rIS/strings.xml
deleted file mode 100644
index eac44ec2a..000000000
--- a/WallpaperPicker/res/values-is-rIS/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Velja veggfóður"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Ekki var hægt að hlaða mynd"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Ekki var hægt að hlaða mynd sem veggfóður"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Ekki var hægt að nota mynd sem veggfóður"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d valin"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d valið"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d valin"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Veggfóður %1$d af %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> valið"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Eyða"</string>
- <string name="pick_image" msgid="3189640419551368385">"Myndirnar mínar"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Veggfóður"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Skera veggfóður"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-it/strings.xml b/WallpaperPicker/res/values-it/strings.xml
deleted file mode 100644
index fdb0ce8de..000000000
--- a/WallpaperPicker/res/values-it/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Imposta sfondo"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Impossibile caricare l\'immagine"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Impossibile caricare l\'immagine come sfondo"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Impossibile impostare l\'immagine come sfondo"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d selezionati"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d selezionato"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d selezionati"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Sfondo %1$d di %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Elemento selezionato: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Elimina"</string>
- <string name="pick_image" msgid="3189640419551368385">"Le mie foto"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Sfondi"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Ritaglia sfondo"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-iw/strings.xml b/WallpaperPicker/res/values-iw/strings.xml
deleted file mode 100644
index c6a583d0e..000000000
--- a/WallpaperPicker/res/values-iw/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"הגדר טפט"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"לא ניתן היה לטעון את התמונה"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"לא ניתן היה לטעון את התמונה כטפט"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"לא ניתן היה להגדיר את התמונה כטפט"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"‏%1$d נבחרו"</item>
- <item quantity="one" msgid="8409622005831789373">"‏%1$d נבחרו"</item>
- <item quantity="other" msgid="479468347731745357">"‏%1$d נבחרו"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"‏טפט %1$d מתוך %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"בחרת <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"מחק"</string>
- <string name="pick_image" msgid="3189640419551368385">"התמונות שלי"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"טפטים"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"חתוך את הטפט"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ja/strings.xml b/WallpaperPicker/res/values-ja/strings.xml
deleted file mode 100644
index f18da5d42..000000000
--- a/WallpaperPicker/res/values-ja/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"壁紙を設定"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"画像を読み込めませんでした"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"画像を壁紙として読み込めませんでした"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"画像を壁紙として設定できませんでした"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d個選択済み"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d個選択済み"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d個選択済み"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"壁紙: %1$d/%2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"選択: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"削除"</string>
- <string name="pick_image" msgid="3189640419551368385">"マイフォト"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"壁紙"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"壁紙のトリミング"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ka-rGE/strings.xml b/WallpaperPicker/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 1f652823f..000000000
--- a/WallpaperPicker/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"ფონის დაყენება"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"სურათი ვერ ჩაიტვირთა."</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"სურათი ფონად ვერ ჩაიტვირთა."</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"სურათი ფონად ვერ დაყენდა"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"არჩეულია %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"არჩეულია %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"არჩეულია %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"ფონი %1$d %2$d-დან"</string>
- <string name="announce_selection" msgid="123723511662250539">"არჩეული <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"წაშლა"</string>
- <string name="pick_image" msgid="3189640419551368385">"ჩემი ფოტოები"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"ფონები"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"ფონის ჩამოჭრა"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-kk-rKZ/strings.xml b/WallpaperPicker/res/values-kk-rKZ/strings.xml
deleted file mode 100644
index 6f4ee7ca2..000000000
--- a/WallpaperPicker/res/values-kk-rKZ/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Тұсқағаз орнату"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Суретті жүктей алмады"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Суретті артқы фон ретінде жүктей алмады"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Кескінді тұсқағаз ретінде орнату мүмкін болмады"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d таңдалған"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d таңдалған"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d таңдалған"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d артқы фон, барлығы %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> таңдалған"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Жою"</string>
- <string name="pick_image" msgid="3189640419551368385">"Менің фотосуреттерім"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Артқы фондар"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Артқы фонды кесу"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-km-rKH/strings.xml b/WallpaperPicker/res/values-km-rKH/strings.xml
deleted file mode 100644
index 801260d3f..000000000
--- a/WallpaperPicker/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"កំណត់​ផ្ទាំង​រូបភាព"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"មិន​អាច​ផ្ទុក​រូបភាព"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"មិន​អាច​ផ្ទុក​រូបភាព​ជា​ផ្ទាំង​រូបភាព"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"មិនអាចកំណត់រូបភាពជាផ្ទាំងរូបភាពទេ"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"បាន​ជ្រើស %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"បាន​ជ្រើស %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"បាន​ជ្រើស %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"ផ្ទាំង​រូបភាព %1$d នៃ %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"បាន​ជ្រើស <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"លុប"</string>
- <string name="pick_image" msgid="3189640419551368385">"រូបថតរបស់ខ្ញុំ"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"ផ្ទាំង​រូបភាព"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"ច្រឹប​ផ្ទាំង​រូបភាព"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-kn-rIN/strings.xml b/WallpaperPicker/res/values-kn-rIN/strings.xml
deleted file mode 100644
index 7d4d7e70e..000000000
--- a/WallpaperPicker/res/values-kn-rIN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"ವಾಲ್‌ಪೇಪರ್ ಹೊಂದಿಸಿ"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"ಚಿತ್ರವನ್ನು ಲೋಡ್‌ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"ಚಿತ್ರವನ್ನು ವಾಲ್‌ಪೇಪರ್‌ ರೂಪದಲ್ಲಿ ಲೋಡ್‌ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"ಚಿತ್ರವನ್ನು ವಾಲ್‌ಪೇಪರ್‌ ರೂಪದಲ್ಲಿ ಹೊಂದಿಸಲಾಗಲಿಲ್ಲ"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%2$d ರಲ್ಲಿ %1$d ವಾಲ್‌ಪೇಪರ್‌"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"ಅಳಿಸು"</string>
- <string name="pick_image" msgid="3189640419551368385">"ನನ್ನ ಫೋಟೋಗಳು"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"ವಾಲ್‌ಪೇಪರ್‌ಗಳು"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"ವಾಲ್‌ಪೇಪರ್‌ ಕತ್ತರಿಸಿ"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ko/strings.xml b/WallpaperPicker/res/values-ko/strings.xml
deleted file mode 100644
index f4072946d..000000000
--- a/WallpaperPicker/res/values-ko/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"배경화면 설정"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"이미지를 로드할 수 없습니다."</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"이미지를 배경화면으로 로드할 수 없습니다."</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"이미지를 배경화면으로 설정할 수 없습니다."</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d개 선택됨"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d개 선택됨"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d개 선택됨"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"배경화면 %1$d/%2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> 선택함"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"삭제"</string>
- <string name="pick_image" msgid="3189640419551368385">"내 사진"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"배경화면"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"배경화면 잘라내기"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ky-rKG/strings.xml b/WallpaperPicker/res/values-ky-rKG/strings.xml
deleted file mode 100644
index f53f52b29..000000000
--- a/WallpaperPicker/res/values-ky-rKG/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Тушкагаз орнотуу"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Сүрөт жүктөө мүмкүн болбоду"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Сүрөттү тушкагаз катары жүктөө кыйрады"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Сүрөт тушкагаз катары коюлбай койду"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d тандалды"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d тандалды"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d тандалды"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%2$d ичинен %1$d тушкагаз"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> тандалды"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Жок кылуу"</string>
- <string name="pick_image" msgid="3189640419551368385">"Менин сүрөттөрүм"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Тушкагаздар"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Тушкагазды тегиздөө"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-lo-rLA/strings.xml b/WallpaperPicker/res/values-lo-rLA/strings.xml
deleted file mode 100644
index 1da6d29c4..000000000
--- a/WallpaperPicker/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"ຕັ້ງເປັນພາບພື້ນຫຼັງ"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"ບໍ່ສາມາດໂຫຼດຮູບໄດ້"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"ບໍ່ສາມາດໂຫຼດຮູບເປັນພາບພື້ນຫຼັງໄດ້"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"ບໍ່ສາມາດໂຫຼດຮູບເປັນພາບພື້ນຫຼັງໄດ້"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"ເລືອກ %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"ເລືອກ %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"ເລືອກ %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"ພາບພື້ນຫຼັງ %1$d ໃນ %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"ເລືອກ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"ລຶບ"</string>
- <string name="pick_image" msgid="3189640419551368385">"ຮູບຂອງຂ້ອຍ"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"ພາບພື້ນຫຼັງ"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"ຕັດພາບພື້ນຫຼັງ"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-lt/strings.xml b/WallpaperPicker/res/values-lt/strings.xml
deleted file mode 100644
index 98c9a365c..000000000
--- a/WallpaperPicker/res/values-lt/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Nustatyti ekrano foną"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Nepavyko įkelti vaizdo"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Nepavyko įkelti vaizdo kaip ekrano fono"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Nepavyko nustatyti vaizdo kaip ekrano fono"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Pasirinkta: %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Pasirinkta: %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Pasirinkta: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d ekrano fonas iš %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Pasirinkta: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Ištrinti"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mano nuotraukos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Ekrano fonai"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Apkirpti ekrano foną"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-lv/strings.xml b/WallpaperPicker/res/values-lv/strings.xml
deleted file mode 100644
index ff7876c72..000000000
--- a/WallpaperPicker/res/values-lv/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Iestatīt fona tapeti"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Nevarēja ielādēt attēlu."</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Nevarēja ielādēt attēlu kā fona tapeti."</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Nevarēja iestatīt attēlu kā fona tapeti."</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Atlasīts: %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Atlasīta: %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Atlasītas: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d. fona tapete no %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Atlasīta: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Dzēst"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mani fotoattēli"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Fona tapetes"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Apgriezt fona tapeti"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-mk-rMK/strings.xml b/WallpaperPicker/res/values-mk-rMK/strings.xml
deleted file mode 100644
index 13b38cd1d..000000000
--- a/WallpaperPicker/res/values-mk-rMK/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Подеси тапет"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Сликата не можеше да се вчита"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Сликата не можеше да се вчита како тапет"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Сликата не може да се постави како тапет"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Избрано %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Избрано %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Избрано %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Тапет %1$d од %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Избран <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Избриши"</string>
- <string name="pick_image" msgid="3189640419551368385">"Моите фотографии"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Тапети"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Исечи тапет"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ml-rIN/strings.xml b/WallpaperPicker/res/values-ml-rIN/strings.xml
deleted file mode 100644
index 5831b36b9..000000000
--- a/WallpaperPicker/res/values-ml-rIN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"വാൾപേപ്പർ സജ്ജീകരിക്കുക"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"ചിത്രം ലോഡുചെയ്യാനായില്ല"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"വാൾപേപ്പറായി ചിത്രം ലോഡുചെയ്യാനായില്ല"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"വാൾപേപ്പറായി ചിത്രം ലോഡുചെയ്യാനായില്ല"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d തിരഞ്ഞെടുത്തു"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d തിരഞ്ഞെടുത്തു"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d തിരഞ്ഞെടുത്തു"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d / %2$d വാൾപേപ്പർ"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> തിരഞ്ഞെടുത്തു"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"ഇല്ലാതാക്കുക"</string>
- <string name="pick_image" msgid="3189640419551368385">"എന്റെ ഫോട്ടോകൾ"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"വാൾപേപ്പറുകൾ"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"വാൾപേപ്പറിന്റെ വലുപ്പം മാറ്റൽ"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-mn-rMN/strings.xml b/WallpaperPicker/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 9995547d5..000000000
--- a/WallpaperPicker/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Ханын зургийг тохируулах"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Зургийг ачаалж чадсангүй"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Зургийг ханын зураг болгож ачаалж чадсангүй"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Зургийг ханын зураг болгож чадсангүй"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d сонгогдсон"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d сонгогдсон"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d сонгогдсон"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%2$d ханын цаасны %1$d нь"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> сонгогдсон"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Устгах"</string>
- <string name="pick_image" msgid="3189640419551368385">"Миний зураг"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Ханын зураг"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Ханын зургийг тайрах"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-mr-rIN/strings.xml b/WallpaperPicker/res/values-mr-rIN/strings.xml
deleted file mode 100644
index d740fd29e..000000000
--- a/WallpaperPicker/res/values-mr-rIN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"वॉलपेपर सेट करा"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"प्रतिमा लोड करू शकलो नाही"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"वॉलपेपर म्हणून प्रतिमा लोड करू शकलो नाही"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"प्रतिमा वॉलपेपर म्हणून सेट करू शकलो नाही"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d निवडले"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d निवडले"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d निवडले"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%2$d पैकी %1$d वॉलपेपर"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> निवडले"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"हटवा"</string>
- <string name="pick_image" msgid="3189640419551368385">"माझे फोटो"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"वॉलपेपर"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"वॉलपेपर कापा"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ms-rMY/strings.xml b/WallpaperPicker/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 759e48cec..000000000
--- a/WallpaperPicker/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Tetapkan kertas dinding"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Tidak dapat memuatkan imej"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Tidak dapat memuatkan imej sebagai kertas dinding"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Tidak dapat menetapkan imej sebagai kertas dinding"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d dipilih"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d dipilih"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d dipilih"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Kertas dinding %1$d daripada %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Memilih <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Padam"</string>
- <string name="pick_image" msgid="3189640419551368385">"Foto saya"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Kertas dinding"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Pangkas kertas dinding"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-my-rMM/strings.xml b/WallpaperPicker/res/values-my-rMM/strings.xml
deleted file mode 100644
index 5197b98ea..000000000
--- a/WallpaperPicker/res/values-my-rMM/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"နောက်ခံအား သတ်မှတ်ရန်"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"ပုံရိပ် တင် မရပါ"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"ပုံရိပ်အား နောက်ခံအဖြစ် တင် မရပါ"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"ပုံရိပ်အား နောက်ခံအဖြစ် တင်၍မရပါ"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d ရွေးချယ်ပြီး"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d ရွေးချယ်ပြီး"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d ရွေးချယ်ပြီး"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"နောက်ခံ %1$d မှ %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"ရွေးချယ်ထားသော <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"ဖျက်ပါ"</string>
- <string name="pick_image" msgid="3189640419551368385">"ကျွန်ုပ်၏ ဓာတ်ပုံများ"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"နောက်ခံများ"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"နောက်ခံအား ဖြတ်ခြင်း"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-nb/strings.xml b/WallpaperPicker/res/values-nb/strings.xml
deleted file mode 100644
index 8125b53bf..000000000
--- a/WallpaperPicker/res/values-nb/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Angi bakgrunn"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Kunne ikke laste inn bildet"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Kunne ikke laste inn bildet som bakgrunn"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Kunne ikke angi bildet som bakgrunn"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d valgt"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d valgt"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d valgt"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Bakgrunn %1$d av %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Valgt <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Slett"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mine bilder"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Bakgrunner"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Beskjær bakgrunnen"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ne-rNP/strings.xml b/WallpaperPicker/res/values-ne-rNP/strings.xml
deleted file mode 100644
index b77a1c5d7..000000000
--- a/WallpaperPicker/res/values-ne-rNP/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"वालपेपर मिलाउनुहोस्"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"तस्बिर लोड गर्न सकिएन"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"तस्बिरलाई वालपेपरका रूपमा लोड गर्न सकिएन"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"छविलाई वालपेपरको रूपमा सेट गर्न सकिएन"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d चयन भयो"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d चयन भयो"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d चयन भयो"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%2$d को %1$d वालपेपर"</string>
- <string name="announce_selection" msgid="123723511662250539">"चयन गरिएको <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"मेट्नुहोस्"</string>
- <string name="pick_image" msgid="3189640419551368385">"मेरा तस्बिरहरू"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"वालपेपरहरु"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"वालपेपर काँटछाट गर्नुहोस्"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-nl/strings.xml b/WallpaperPicker/res/values-nl/strings.xml
deleted file mode 100644
index dc78305aa..000000000
--- a/WallpaperPicker/res/values-nl/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Achtergrond instellen"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Kan afbeelding niet laden"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Kan afbeelding niet laden als achtergrond"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Kan afbeelding niet instellen als achtergrond"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d geselecteerd"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d geselecteerd"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d geselecteerd"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Achtergrond %1$d van %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> is geselecteerd"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Verwijderen"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mijn foto\'s"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Achtergronden"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Achtergrond bijsnijden"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-nodpi/wallpapers.xml b/WallpaperPicker/res/values-nodpi/wallpapers.xml
deleted file mode 100644
index 1e340e4b2..000000000
--- a/WallpaperPicker/res/values-nodpi/wallpapers.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2009 Google Inc.
- *
- * 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>
- <string-array name="wallpapers" translatable="false">
- </string-array>
-</resources>
diff --git a/WallpaperPicker/res/values-pa-rIN/strings.xml b/WallpaperPicker/res/values-pa-rIN/strings.xml
deleted file mode 100644
index 86cdf22ed..000000000
--- a/WallpaperPicker/res/values-pa-rIN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"ਵਾਲਪੇਪਰ ਸੈਟ ਕਰੋ"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"ਚਿੱਤਰ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"ਵਾਲਪੇਪਰ ਦੇ ਤੌਰ ਤੇ ਚਿੱਤਰ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"ਵਾਲਪੇਪਰ ਦੇ ਤੌਰ ਤੇ ਚਿੱਤਰ ਸੈਟ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d ਚੁਣਿਆ ਗਿਆ"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d ਚੁਣਿਆ ਗਿਆ"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d ਚੁਣਿਆ ਗਿਆ"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"ਵਾਲਪੇਪਰ %2$d ਦਾ %1$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> ਚੁਣਿਆ ਗਿਆ"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"ਮਿਟਾਓ"</string>
- <string name="pick_image" msgid="3189640419551368385">"ਮੇਰੀਆਂ ਫੋਟੋਆਂ"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"ਵਾਲਪੇਪਰ"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"ਵਾਲਪੇਪਰ ਕੱਟੋ"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-pl/strings.xml b/WallpaperPicker/res/values-pl/strings.xml
deleted file mode 100644
index 9693de46c..000000000
--- a/WallpaperPicker/res/values-pl/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Ustaw tapetę"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Nie udało się załadować obrazu"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Nie udało się załadować obrazu jako tapety"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Nie udało się ustawić obrazu jako tapety"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Wybranych %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Wybrana %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Wybrane: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Tapeta %1$d z %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Wybrano <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Usuń"</string>
- <string name="pick_image" msgid="3189640419551368385">"Moje zdjęcia"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Tapety"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Przytnij tapetę"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-pt-rPT/strings.xml b/WallpaperPicker/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 3c4fa9b73..000000000
--- a/WallpaperPicker/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Definir imagem fundo"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Não foi possível carregar a imagem"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Não foi possível carregar a imagem como imagem de fundo"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Não foi possível definir a imagem como imagem de fundo"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d selecionadas"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d selecionada"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d selecionadas"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Imagem de fundo %1$d de %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> selecionada"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Eliminar"</string>
- <string name="pick_image" msgid="3189640419551368385">"As minhas fotos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Imagens de fundo"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Recortar imagem de fundo"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-pt/strings.xml b/WallpaperPicker/res/values-pt/strings.xml
deleted file mode 100644
index 2520eed3a..000000000
--- a/WallpaperPicker/res/values-pt/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Definir plano de fundo"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Não foi possível carregar a imagem"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Não foi possível carregar a imagem como plano de fundo"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Não foi possível definir a imagem como plano de fundo"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d selecionados"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d selecionado"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d selecionados"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Plano de fundo %1$d de %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> selecionado"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Excluir"</string>
- <string name="pick_image" msgid="3189640419551368385">"Minhas fotos"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Planos de fundo"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Cortar plano de fundo"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ro/strings.xml b/WallpaperPicker/res/values-ro/strings.xml
deleted file mode 100644
index f5df3eee2..000000000
--- a/WallpaperPicker/res/values-ro/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Setați imaginea de fundal"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Nu s-a putut încărca imaginea"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Nu s-a putut încărca imaginea ca fundal"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Nu s-a putut seta ca imagine de fundal"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d selectate"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d selectată"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d selectate"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Imaginea de fundal %1$d din %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"S-a selectat <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Ștergeți"</string>
- <string name="pick_image" msgid="3189640419551368385">"Fotografiile mele"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Imagini de fundal"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Decupați imaginea de fundal"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ru/strings.xml b/WallpaperPicker/res/values-ru/strings.xml
deleted file mode 100644
index f8c350a1f..000000000
--- a/WallpaperPicker/res/values-ru/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Установить как обои"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Не удалось загрузить изображение"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Не удалось загрузить изображение"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Не удалось сменить обои"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Выбрано: %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Выбрано: %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Выбрано: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Обои %1$d из %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Выбран элемент \"<xliff:g id="LABEL">%1$s</xliff:g>\""</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Удалить"</string>
- <string name="pick_image" msgid="3189640419551368385">"Мои фото"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Обои"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Кадрировать обои"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-si-rLK/strings.xml b/WallpaperPicker/res/values-si-rLK/strings.xml
deleted file mode 100644
index 3945bdf89..000000000
--- a/WallpaperPicker/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,39 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"වෝල්පේපරය සකසන්න"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"පින්තූරය පූරණය කිරීමට නොහැකි විය"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"පින්තූරය වෝල්පේපරයක් ලෙස පූරණය කිරීමට නොහැකි විය"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"පින්තූරය බිතුපතක් ලෙස සැකසීමට නොහැකි විය"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d තෝරා ගන්නා ලදි"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d තෝරා ගන්නා ලදි"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d තෝරා ගන්නා ලදි"</item>
- </plurals>
- <!-- String.format failed for translation -->
- <!-- no translation found for wallpaper_accessibility_name (4093221025304876354) -->
- <skip />
- <string name="announce_selection" msgid="123723511662250539">"තෝරාගත්තේ <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"මකන්න"</string>
- <string name="pick_image" msgid="3189640419551368385">"මගේ ඡායාරූප"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"වෝල්පේපර"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"වෝල්පේපරය කප්පාදු කිරීම"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-sk/strings.xml b/WallpaperPicker/res/values-sk/strings.xml
deleted file mode 100644
index fb2c819b2..000000000
--- a/WallpaperPicker/res/values-sk/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Nastaviť tapetu"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Obrázok nie je možné načítať"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Obrázok nie je možné načítať ako tapetu"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Obrázok nie je možné nastaviť ako tapetu"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Počet vybratých položiek: %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Počet vybratých položiek: %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Počet vybratých položiek: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Tapeta %1$d z %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Vybratá položka <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Odstrániť"</string>
- <string name="pick_image" msgid="3189640419551368385">"Moje fotky"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Tapety"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Orezanie tapety"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-sl/strings.xml b/WallpaperPicker/res/values-sl/strings.xml
deleted file mode 100644
index a7ff0891d..000000000
--- a/WallpaperPicker/res/values-sl/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Nastavi ozadje"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Slike ni bilo mogoče naložiti"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Slike ni bilo mogoče naložiti kot ozadje"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Slike ni bilo mogoče nastaviti kot ozadje"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Št. izbranih: %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Št. izbranih: %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Št. izbranih: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%1$d. ozadje od %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Izbrano: <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Izbriši"</string>
- <string name="pick_image" msgid="3189640419551368385">"Moje fotografije"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Ozadja"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Obrezovanje ozadja"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-sq-rAL/strings.xml b/WallpaperPicker/res/values-sq-rAL/strings.xml
deleted file mode 100644
index 8259d66b4..000000000
--- a/WallpaperPicker/res/values-sq-rAL/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Cakto imazhin e sfondit"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Nuk mund të ngarkonte imazhin"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Nuk mundi të ngarkonte imazhin si imazh sfondi"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Nuk mundi të vendoste imazhin si imazh sfondi."</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Të përzgjedhur: %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Të përzgjedhur: %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Të përzgjedhur: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Imazhi i sfondit: %1$d nga gjithsej %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> u përzgjodh"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Fshi"</string>
- <string name="pick_image" msgid="3189640419551368385">"Fotografitë e mia"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Imazhet e sfondit"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Prit imazhin e sfondit"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-sr/strings.xml b/WallpaperPicker/res/values-sr/strings.xml
deleted file mode 100644
index 6154526cd..000000000
--- a/WallpaperPicker/res/values-sr/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Подеси позадину"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Није могуће учитати слику"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Није могуће учитати слику као позадину"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Учитавање слике као позадине није успело"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Изабрано је %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Изабрана је %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Изабраних: %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Позадина %1$d од %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Изабрана је <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Избриши"</string>
- <string name="pick_image" msgid="3189640419551368385">"Моје фотографије"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Позадине"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Опсеци позадину"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-sv/strings.xml b/WallpaperPicker/res/values-sv/strings.xml
deleted file mode 100644
index 38062b9ee..000000000
--- a/WallpaperPicker/res/values-sv/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Ange bakgrund"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Det gick inte att läsa in bilden"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Det gick inte att läsa in bilden som bakgrund"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Det gick inte att ange bilden som bakgrund"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d har valts"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d har valts"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d har valts"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Bakgrund %1$d av %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> har valts"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Ta bort"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mina foton"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Bakgrunder"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Beskär bakgrund"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-sw/strings.xml b/WallpaperPicker/res/values-sw/strings.xml
deleted file mode 100644
index 729a79a74..000000000
--- a/WallpaperPicker/res/values-sw/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Weka mandhari"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Haikuweza kupakia picha"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Haikuweza kupakia picha iwe mandhari"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Haikuweza kuweka picha kuwa mandhari"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d zimechaguliwa"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d zimechaguliwa"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d zimechaguliwa"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Mandhari %1$d ya %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> iliyochaguliwa"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Futa"</string>
- <string name="pick_image" msgid="3189640419551368385">"Picha zangu"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Mandhari"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Punguza mandhari"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ta-rIN/strings.xml b/WallpaperPicker/res/values-ta-rIN/strings.xml
deleted file mode 100644
index 69a9d386b..000000000
--- a/WallpaperPicker/res/values-ta-rIN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"வால்பேப்பரை அமை"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"படத்தை ஏற்ற முடியவில்லை"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"படத்தை வால்பேப்பராக ஏற்ற முடியவில்லை"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"படத்தை வால்பேப்பராக அமைக்க முடியவில்லை"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d தேர்ந்தெடுக்கப்பட்டன"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d தேர்ந்தெடுக்கப்பட்டது"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d தேர்ந்தெடுக்கப்பட்டன"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"வால்பேப்பர் %1$d / %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> தேர்ந்தெடுக்கப்பட்டது"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"நீக்கு"</string>
- <string name="pick_image" msgid="3189640419551368385">"எனது படங்கள்"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"வால்பேப்பர்கள்"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"வால்பேப்பரைச் செதுக்கு"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-te-rIN/strings.xml b/WallpaperPicker/res/values-te-rIN/strings.xml
deleted file mode 100644
index 6fb5fa29b..000000000
--- a/WallpaperPicker/res/values-te-rIN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"వాల్‌పేపర్‌ను సెట్ చేయి"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"చిత్రాన్ని లోడ్ చేయడం సాధ్యపడలేదు"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"చిత్రాన్ని వాల్‌పేపర్‌గా లోడ్ చేయడం సాధ్యపడలేదు"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"చిత్రాన్ని వాల్‌పేపర్‌గా సెట్ చేయడం సాధ్యపడలేదు"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d ఎంచుకోబడింది"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d ఎంచుకోబడింది"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d ఎంచుకోబడింది"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%2$dలో %1$dవ వాల్‌పేపర్"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> ఎంచుకోబడింది"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"తొలగించు"</string>
- <string name="pick_image" msgid="3189640419551368385">"నా ఫోటోలు"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"వాల్‌పేపర్‌లు"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"వాల్‌పేపర్‌ను కత్తిరించండి"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-th/strings.xml b/WallpaperPicker/res/values-th/strings.xml
deleted file mode 100644
index c68943606..000000000
--- a/WallpaperPicker/res/values-th/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"ตั้งวอลเปเปอร์"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"ไม่สามารถโหลดรูปภาพ"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"ไม่สามารถโหลดรูปภาพเป็นวอลเปเปอร์"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"ไม่สามารถตั้งรูปภาพเป็นวอลเปเปอร์"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"เลือกไว้ %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"เลือกไว้ %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"เลือกไว้ %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"วอลเปเปอร์ %1$d จาก %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"เลือก <xliff:g id="LABEL">%1$s</xliff:g> แล้ว"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"ลบ"</string>
- <string name="pick_image" msgid="3189640419551368385">"รูปภาพของฉัน"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"วอลเปเปอร์"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"ครอบตัดวอลเปเปอร์"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-tl/strings.xml b/WallpaperPicker/res/values-tl/strings.xml
deleted file mode 100644
index c760d7f6e..000000000
--- a/WallpaperPicker/res/values-tl/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Itakda ang wallpaper"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Hindi ma-load ang larawan"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Hindi ma-load ang larawan bilang wallpaper"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Hindi maitakda ang larawan bilang wallpaper"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d ang napili"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d ang napili"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d ang napili"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Wallpaper %1$d ng %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Napili ang <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Tanggalin"</string>
- <string name="pick_image" msgid="3189640419551368385">"Aking mga larawan"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Mga Wallpaper"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"I-crop ang wallpaper"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-tr/strings.xml b/WallpaperPicker/res/values-tr/strings.xml
deleted file mode 100644
index e9dc1d2b2..000000000
--- a/WallpaperPicker/res/values-tr/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Duvar kağıdını ayarla"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Resim yüklenemedi"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Resim duvar kağıdı olarak yüklenemedi"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Resim, duvar kağıdı olarak ayarlanamadı"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d tane seçildi"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d tane seçildi"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d tane seçildi"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"%2$d duvar kağıdı arasından duvar kağıdı %1$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> seçildi"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Sil"</string>
- <string name="pick_image" msgid="3189640419551368385">"Fotoğraflarım"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Duvar kağıtları"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Duvar kağıdını kırp"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-uk/strings.xml b/WallpaperPicker/res/values-uk/strings.xml
deleted file mode 100644
index c6669c0c8..000000000
--- a/WallpaperPicker/res/values-uk/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Установити фон"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Не вдалося завантажити зображення"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Не вдалося завантажити зображення як фоновий малюнок"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Не вдалося зробити зображення фоновим малюнком"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Вибрано %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Вибрано %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Вибрано %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Фоновий малюнок %1$d з %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"Вибрано <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Видалити"</string>
- <string name="pick_image" msgid="3189640419551368385">"Мої фото"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Фонові малюнки"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Обрізати фоновий малюнок"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-ur-rPK/strings.xml b/WallpaperPicker/res/values-ur-rPK/strings.xml
deleted file mode 100644
index e240e1a50..000000000
--- a/WallpaperPicker/res/values-ur-rPK/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"وال پیپر سیٹ کریں"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"تصویر کو لوڈ نہیں کیا جا سکا"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"تصویر کو وال پیپر کے بطور لوڈ نہیں کیا جا سکا"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"تصویر کو بطور وال پیپر سیٹ نہیں کیا جا سکا"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"‏%1$d کو منتخب کیا گیا"</item>
- <item quantity="one" msgid="8409622005831789373">"‏%1$d کو منتخب کیا گیا"</item>
- <item quantity="other" msgid="479468347731745357">"‏%1$d کو منتخب کیا گیا"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"‏وال پیپر ‎%1$d از ‎%2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> کو منتخب کیا گیا"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"حذف کریں"</string>
- <string name="pick_image" msgid="3189640419551368385">"میری تصاویر"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"وال پیپرز"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"وال پیپر کو تراشیں"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-uz-rUZ/strings.xml b/WallpaperPicker/res/values-uz-rUZ/strings.xml
deleted file mode 100644
index 5a79981e9..000000000
--- a/WallpaperPicker/res/values-uz-rUZ/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Fonga rasm o‘rnatish"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Rasm yuklanmadi"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Fon rasmi sifatida rasm yuklanmadi"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Rasmni fon rasmi sifatida o‘rnatib bo‘lmadi"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d ta tanlandi"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d ta tanlandi"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d ta tanlandi"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Fon rasmi %2$ddan %1$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> tanlandi"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"O‘chirish"</string>
- <string name="pick_image" msgid="3189640419551368385">"Mening rasmlarim"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Fon rasmlari"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Fon rasmini kesish"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-v19/styles.xml b/WallpaperPicker/res/values-v19/styles.xml
deleted file mode 100644
index b465b4e7a..000000000
--- a/WallpaperPicker/res/values-v19/styles.xml
+++ /dev/null
@@ -1,27 +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.DeviceDefault">
- <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>
-</resources>
diff --git a/WallpaperPicker/res/values-v21/styles.xml b/WallpaperPicker/res/values-v21/styles.xml
deleted file mode 100644
index 271fc2e4e..000000000
--- a/WallpaperPicker/res/values-v21/styles.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* Copyright (C) 2015 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 xmlns:android="http://schemas.android.com/apk/res/android">
-
- <style name="WallpaperCropperActionBar" parent="@android:style/Widget.DeviceDefault.ActionBar">
- <item name="android:displayOptions">showCustom</item>
- <item name="android:background">#88000000</item>
- <item name="android:contentInsetEnd">0dp</item>
- <item name="android:contentInsetLeft">0dp</item>
- <item name="android:contentInsetRight">0dp</item>
- <item name="android:contentInsetStart">0dp</item>
- </style>
-
- <style name="ActionBarSetWallpaperStyle" parent="@android:style/Widget.DeviceDefault.ActionButton">
- <item name="android:textColor">#ffffffff</item>
- <item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
- </style>
-</resources> \ No newline at end of file
diff --git a/WallpaperPicker/res/values-vi/strings.xml b/WallpaperPicker/res/values-vi/strings.xml
deleted file mode 100644
index a7c636de3..000000000
--- a/WallpaperPicker/res/values-vi/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Đặt hình nền"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Không thể tải hình ảnh"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Không thể tải hình ảnh làm hình nền"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Không thể đặt hình ảnh làm hình nền"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"Đã chọn %1$d"</item>
- <item quantity="one" msgid="8409622005831789373">"Đã chọn %1$d"</item>
- <item quantity="other" msgid="479468347731745357">"Đã chọn %1$d"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Hình nền %1$d / %2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"<xliff:g id="LABEL">%1$s</xliff:g> được chọn"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Xóa"</string>
- <string name="pick_image" msgid="3189640419551368385">"Ảnh của tôi"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Hình nền"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Cắt hình nền"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-zh-rCN/strings.xml b/WallpaperPicker/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 4656ec687..000000000
--- a/WallpaperPicker/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"设置壁纸"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"无法加载图片"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"无法加载要设为壁纸的图片"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"无法将图片设为壁纸"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"已选择%1$d项"</item>
- <item quantity="one" msgid="8409622005831789373">"已选择%1$d项"</item>
- <item quantity="other" msgid="479468347731745357">"已选择%1$d项"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"第%1$d张壁纸,共%2$d张"</string>
- <string name="announce_selection" msgid="123723511662250539">"已选择<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"删除"</string>
- <string name="pick_image" msgid="3189640419551368385">"我的照片"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"壁纸"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"剪裁壁纸"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-zh-rHK/strings.xml b/WallpaperPicker/res/values-zh-rHK/strings.xml
deleted file mode 100644
index eb9c32734..000000000
--- a/WallpaperPicker/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"設定桌布"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"無法載入圖片"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"無法載入圖片設為桌布"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"無法將圖片設為桌布"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"已選取 %1$d 張"</item>
- <item quantity="one" msgid="8409622005831789373">"已選取 %1$d 張"</item>
- <item quantity="other" msgid="479468347731745357">"已選取 %1$d 張"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"第 %1$d 張桌布,共 %2$d 張"</string>
- <string name="announce_selection" msgid="123723511662250539">"已選取<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"刪除"</string>
- <string name="pick_image" msgid="3189640419551368385">"我的相片"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"桌布"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"裁剪桌布"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-zh-rTW/strings.xml b/WallpaperPicker/res/values-zh-rTW/strings.xml
deleted file mode 100644
index fda123c79..000000000
--- a/WallpaperPicker/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"設定桌布"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"無法載入圖片"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"無法載入您要設為桌布的圖片"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"無法將圖片設為桌布"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"已選取 %1$d 個"</item>
- <item quantity="one" msgid="8409622005831789373">"已選取 %1$d 個"</item>
- <item quantity="other" msgid="479468347731745357">"已選取 %1$d 個"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"第 %1$d 張桌布,共 %2$d 張"</string>
- <string name="announce_selection" msgid="123723511662250539">"已選取<xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"刪除"</string>
- <string name="pick_image" msgid="3189640419551368385">"我的相片"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"桌布"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"裁剪桌布"</string>
-</resources>
diff --git a/WallpaperPicker/res/values-zu/strings.xml b/WallpaperPicker/res/values-zu/strings.xml
deleted file mode 100644
index 1a5b95e93..000000000
--- a/WallpaperPicker/res/values-zu/strings.xml
+++ /dev/null
@@ -1,37 +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 xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wallpaper_instructions" msgid="3524143401182707094">"Setha isithombe sangemuva"</string>
- <string name="image_load_fail" msgid="7538534580694411837">"Ayikwazanga ukulayisha isithombe"</string>
- <string name="wallpaper_load_fail" msgid="4800700444605404650">"Ayikwazanga ukulayisha isithombe njengesithombe sangemuva"</string>
- <string name="wallpaper_set_fail" msgid="7023180794008631780">"Ayikwazanga ukusetha isithombe njengesithombe sangemuva"</string>
- <plurals name="number_of_items_selected">
- <item quantity="zero" msgid="9015111147509924344">"%1$d khethiwe"</item>
- <item quantity="one" msgid="8409622005831789373">"%1$d khethiwe"</item>
- <item quantity="other" msgid="479468347731745357">"%1$d khethiwe"</item>
- </plurals>
- <string name="wallpaper_accessibility_name" msgid="4093221025304876354">"Isithombe sangemuva esingu-%1$d kwezingu-%2$d"</string>
- <string name="announce_selection" msgid="123723511662250539">"I-<xliff:g id="LABEL">%1$s</xliff:g> ekhethiwe"</string>
- <string name="wallpaper_delete" msgid="1459353972739215344">"Susa"</string>
- <string name="pick_image" msgid="3189640419551368385">"Izithombe zami"</string>
- <string name="pick_wallpaper" msgid="4628969645948454559">"Izithombe zangemuva"</string>
- <string name="crop_wallpaper" msgid="4882870800623585836">"Nqampuna isithombe sangemuva"</string>
-</resources>
diff --git a/WallpaperPicker/res/values/colors.xml b/WallpaperPicker/res/values/colors.xml
deleted file mode 100644
index adae7cff6..000000000
--- a/WallpaperPicker/res/values/colors.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/* //device/apps/common/assets/res/any/colors.xml
-**
-** Copyright 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>
- <color name="wallpaper_picker_translucent_gray">#66000000</color>
-</resources>
diff --git a/WallpaperPicker/res/values/config.xml b/WallpaperPicker/res/values/config.xml
deleted file mode 100644
index 2f5174ce6..000000000
--- a/WallpaperPicker/res/values/config.xml
+++ /dev/null
@@ -1,20 +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>
- <!-- Specifies whether to expand the cropped area on both sides (rather
- than just to one side) -->
- <bool name="center_crop">false</bool>
-</resources>
diff --git a/WallpaperPicker/res/values/dimens.xml b/WallpaperPicker/res/values/dimens.xml
deleted file mode 100644
index 0447c6d1f..000000000
--- a/WallpaperPicker/res/values/dimens.xml
+++ /dev/null
@@ -1,22 +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>
-<!-- Wallpaper picker -->
- <dimen name="wallpaperThumbnailWidth">106.5dp</dimen>
- <dimen name="wallpaperThumbnailHeight">94.5dp</dimen>
- <dimen name="wallpaperItemIconSize">32dp</dimen>
-</resources>
diff --git a/WallpaperPicker/res/values/strings.xml b/WallpaperPicker/res/values/strings.xml
deleted file mode 100644
index 2bfd4767f..000000000
--- a/WallpaperPicker/res/values/strings.xml
+++ /dev/null
@@ -1,56 +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 xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Button label on Wallpaper picker screen; user selects this button to set a specific wallpaper -->
- <string name="wallpaper_instructions">Set wallpaper</string>
- <!-- Error message when an image is selected as a wallpaper,
- but the wallpaper picker cannot load it -->
- <string name="image_load_fail">Coudn\'t load image</string>
- <!-- Error message when an image is selected as a wallpaper,
- but the wallpaper cropper cannot load it. The user will
- usually see this when using another app and trying to set
- an image as the wallpaper -->
- <string name="wallpaper_load_fail">Couldn\'t load image as wallpaper</string>
- <!-- Error message when an image is selected as a wallpaper,
- but something goes wrong when the user clicks "Set wallpaper" -->
- <string name="wallpaper_set_fail">Couldn\'t set image as wallpaper</string>
- <!-- Shown when wallpapers are selected in Wallpaper picker -->
- <!-- String indicating how many media item(s) is(are) selected
- eg. 1 selected [CHAR LIMIT=30] -->
- <plurals name="number_of_items_selected">
- <item quantity="zero">%1$d selected</item>
- <item quantity="one">%1$d selected</item>
- <item quantity="other">%1$d selected</item>
- </plurals>
- <!-- Accessibility string used as a label for a particular wallpaper in the Wallpaper Picker list.
- e.g. "Wallpaper 3 of 10" -->
- <string name="wallpaper_accessibility_name">Wallpaper %1$d of %2$d</string>
- <!-- Accessibility string used to announce that a wallpaper has been selected. -->
- <string name="announce_selection">Selected <xliff:g id="label" example="Wallpaper 3 of 10">%1$s</xliff:g></string>
-
- <!-- Label on button to delete wallpaper(s) -->
- <string name="wallpaper_delete">Delete</string>
- <!-- Label on button in Wallpaper Picker to pick an image -->
- <string name="pick_image">My photos</string>
- <!-- Option in "Select wallpaper from" dialog box -->
- <string name="pick_wallpaper">Wallpapers</string>
- <!-- Title of activity for cropping wallpapers -->
- <string name="crop_wallpaper">Crop wallpaper</string>
-</resources>
diff --git a/WallpaperPicker/res/values/styles.xml b/WallpaperPicker/res/values/styles.xml
deleted file mode 100644
index 6c77d0a16..000000000
--- a/WallpaperPicker/res/values/styles.xml
+++ /dev/null
@@ -1,42 +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 xmlns:android="http://schemas.android.com/apk/res/android">
- <style name="Theme.WallpaperCropper" parent="@android:style/Theme.DeviceDefault">
- <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>
- </style>
-
- <style name="WallpaperCropperActionBar" parent="@android:style/Widget.DeviceDefault.ActionBar">
- <item name="android:displayOptions">showCustom</item>
- <item name="android:background">#88000000</item>
- </style>
-
- <style name="ActionBarSetWallpaperStyle" parent="@android:style/Widget.DeviceDefault.ActionButton">
- <item name="android:textColor">#ffffffff</item>
- <item name="android:background">?android:attr/selectableItemBackground</item>
- </style>
-</resources>
diff --git a/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java b/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java
deleted file mode 100644
index 212fb84ea..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/**
- * Copyright (C) 2015 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.gallery3d.common;
-
-import android.app.WallpaperManager;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.CompressFormat;
-import android.graphics.BitmapFactory;
-import android.graphics.BitmapRegionDecoder;
-import android.graphics.Canvas;
-import android.graphics.Matrix;
-import android.graphics.Paint;
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.util.Log;
-import android.widget.Toast;
-
-import com.android.launcher3.R;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-
-public class BitmapCropTask extends AsyncTask<Void, Void, Boolean> {
-
- public interface OnBitmapCroppedHandler {
- public void onBitmapCropped(byte[] imageBytes);
- }
-
- public interface OnEndCropHandler {
- public void run(boolean cropSucceeded);
- }
-
- private static final int DEFAULT_COMPRESS_QUALITY = 90;
- private static final String LOGTAG = "BitmapCropTask";
-
- Uri mInUri = null;
- Context mContext;
- String mInFilePath;
- byte[] mInImageBytes;
- int mInResId = 0;
- RectF mCropBounds = null;
- int mOutWidth, mOutHeight;
- int mRotation;
- boolean mSetWallpaper;
- boolean mSaveCroppedBitmap;
- Bitmap mCroppedBitmap;
- BitmapCropTask.OnEndCropHandler mOnEndCropHandler;
- Resources mResources;
- BitmapCropTask.OnBitmapCroppedHandler mOnBitmapCroppedHandler;
- boolean mNoCrop;
-
- public BitmapCropTask(Context c, String filePath,
- RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
- mContext = c;
- mInFilePath = filePath;
- init(cropBounds, rotation,
- outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndCropHandler);
- }
-
- public BitmapCropTask(byte[] imageBytes,
- RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
- mInImageBytes = imageBytes;
- init(cropBounds, rotation,
- outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndCropHandler);
- }
-
- public BitmapCropTask(Context c, Uri inUri,
- RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
- mContext = c;
- mInUri = inUri;
- init(cropBounds, rotation,
- outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndCropHandler);
- }
-
- public BitmapCropTask(Context c, Resources res, int inResId,
- RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
- mContext = c;
- mInResId = inResId;
- mResources = res;
- init(cropBounds, rotation,
- outWidth, outHeight, setWallpaper, saveCroppedBitmap, onEndCropHandler);
- }
-
- private void init(RectF cropBounds, int rotation, int outWidth, int outHeight,
- boolean setWallpaper, boolean saveCroppedBitmap, OnEndCropHandler onEndCropHandler) {
- mCropBounds = cropBounds;
- mRotation = rotation;
- mOutWidth = outWidth;
- mOutHeight = outHeight;
- mSetWallpaper = setWallpaper;
- mSaveCroppedBitmap = saveCroppedBitmap;
- mOnEndCropHandler = onEndCropHandler;
- }
-
- public void setOnBitmapCropped(BitmapCropTask.OnBitmapCroppedHandler handler) {
- mOnBitmapCroppedHandler = handler;
- }
-
- public void setNoCrop(boolean value) {
- mNoCrop = value;
- }
-
- public void setOnEndCropHandler(OnEndCropHandler onEndCropHandler) {
- mOnEndCropHandler = onEndCropHandler;
- }
-
- // Helper to setup input stream
- private InputStream regenerateInputStream() {
- if (mInUri == null && mInResId == 0 && mInFilePath == null && mInImageBytes == null) {
- Log.w(LOGTAG, "cannot read original file, no input URI, resource ID, or " +
- "image byte array given");
- } else {
- try {
- if (mInUri != null) {
- return new BufferedInputStream(
- mContext.getContentResolver().openInputStream(mInUri));
- } else if (mInFilePath != null) {
- return mContext.openFileInput(mInFilePath);
- } else if (mInImageBytes != null) {
- return new BufferedInputStream(new ByteArrayInputStream(mInImageBytes));
- } else {
- return new BufferedInputStream(mResources.openRawResource(mInResId));
- }
- } catch (FileNotFoundException e) {
- Log.w(LOGTAG, "cannot read file: " + mInUri.toString(), e);
- }
- }
- return null;
- }
-
- public Point getImageBounds() {
- InputStream is = regenerateInputStream();
- if (is != null) {
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeStream(is, null, options);
- Utils.closeSilently(is);
- if (options.outWidth != 0 && options.outHeight != 0) {
- return new Point(options.outWidth, options.outHeight);
- }
- }
- return null;
- }
-
- public void setCropBounds(RectF cropBounds) {
- mCropBounds = cropBounds;
- }
-
- public Bitmap getCroppedBitmap() {
- return mCroppedBitmap;
- }
- public boolean cropBitmap() {
- boolean failure = false;
-
-
- WallpaperManager wallpaperManager = null;
- if (mSetWallpaper) {
- wallpaperManager = WallpaperManager.getInstance(mContext.getApplicationContext());
- }
-
-
- if (mSetWallpaper && mNoCrop) {
- try {
- InputStream is = regenerateInputStream();
- if (is != null) {
- wallpaperManager.setStream(is);
- Utils.closeSilently(is);
- }
- } catch (IOException e) {
- Log.w(LOGTAG, "cannot write stream to wallpaper", e);
- failure = true;
- }
- return !failure;
- } else {
- // Find crop bounds (scaled to original image size)
- Rect roundedTrueCrop = new Rect();
- Matrix rotateMatrix = new Matrix();
- Matrix inverseRotateMatrix = new Matrix();
-
- Point bounds = getImageBounds();
- if (mRotation > 0) {
- rotateMatrix.setRotate(mRotation);
- inverseRotateMatrix.setRotate(-mRotation);
-
- mCropBounds.roundOut(roundedTrueCrop);
- mCropBounds = new RectF(roundedTrueCrop);
-
- if (bounds == null) {
- Log.w(LOGTAG, "cannot get bounds for image");
- failure = true;
- return false;
- }
-
- float[] rotatedBounds = new float[] { bounds.x, bounds.y };
- rotateMatrix.mapPoints(rotatedBounds);
- rotatedBounds[0] = Math.abs(rotatedBounds[0]);
- rotatedBounds[1] = Math.abs(rotatedBounds[1]);
-
- mCropBounds.offset(-rotatedBounds[0]/2, -rotatedBounds[1]/2);
- inverseRotateMatrix.mapRect(mCropBounds);
- mCropBounds.offset(bounds.x/2, bounds.y/2);
-
- }
-
- mCropBounds.roundOut(roundedTrueCrop);
-
- if (roundedTrueCrop.width() <= 0 || roundedTrueCrop.height() <= 0) {
- Log.w(LOGTAG, "crop has bad values for full size image");
- failure = true;
- return false;
- }
-
- // See how much we're reducing the size of the image
- int scaleDownSampleSize = Math.max(1, Math.min(roundedTrueCrop.width() / mOutWidth,
- roundedTrueCrop.height() / mOutHeight));
- // Attempt to open a region decoder
- BitmapRegionDecoder decoder = null;
- InputStream is = null;
- try {
- is = regenerateInputStream();
- if (is == null) {
- Log.w(LOGTAG, "cannot get input stream for uri=" + mInUri.toString());
- failure = true;
- return false;
- }
- decoder = BitmapRegionDecoder.newInstance(is, false);
- Utils.closeSilently(is);
- } catch (IOException e) {
- Log.w(LOGTAG, "cannot open region decoder for file: " + mInUri.toString(), e);
- } finally {
- Utils.closeSilently(is);
- is = null;
- }
-
- Bitmap crop = null;
- if (decoder != null) {
- // Do region decoding to get crop bitmap
- BitmapFactory.Options options = new BitmapFactory.Options();
- if (scaleDownSampleSize > 1) {
- options.inSampleSize = scaleDownSampleSize;
- }
- crop = decoder.decodeRegion(roundedTrueCrop, options);
- decoder.recycle();
- }
-
- if (crop == null) {
- // BitmapRegionDecoder has failed, try to crop in-memory
- is = regenerateInputStream();
- Bitmap fullSize = null;
- if (is != null) {
- BitmapFactory.Options options = new BitmapFactory.Options();
- if (scaleDownSampleSize > 1) {
- options.inSampleSize = scaleDownSampleSize;
- }
- fullSize = BitmapFactory.decodeStream(is, null, options);
- Utils.closeSilently(is);
- }
- if (fullSize != null) {
- // Find out the true sample size that was used by the decoder
- scaleDownSampleSize = bounds.x / fullSize.getWidth();
- mCropBounds.left /= scaleDownSampleSize;
- mCropBounds.top /= scaleDownSampleSize;
- mCropBounds.bottom /= scaleDownSampleSize;
- mCropBounds.right /= scaleDownSampleSize;
- mCropBounds.roundOut(roundedTrueCrop);
-
- // Adjust values to account for issues related to rounding
- if (roundedTrueCrop.width() > fullSize.getWidth()) {
- // Adjust the width
- roundedTrueCrop.right = roundedTrueCrop.left + fullSize.getWidth();
- }
- if (roundedTrueCrop.right > fullSize.getWidth()) {
- // Adjust the left and right values.
- roundedTrueCrop.offset(-(roundedTrueCrop.right - fullSize.getWidth()), 0);
- }
- if (roundedTrueCrop.height() > fullSize.getHeight()) {
- // Adjust the height
- roundedTrueCrop.bottom = roundedTrueCrop.top + fullSize.getHeight();
- }
- if (roundedTrueCrop.bottom > fullSize.getHeight()) {
- // Adjust the top and bottom values.
- roundedTrueCrop.offset(0, -(roundedTrueCrop.bottom - fullSize.getHeight()));
- }
-
- crop = Bitmap.createBitmap(fullSize, roundedTrueCrop.left,
- roundedTrueCrop.top, roundedTrueCrop.width(),
- roundedTrueCrop.height());
- }
- }
-
- if (crop == null) {
- Log.w(LOGTAG, "cannot decode file: " + mInUri.toString());
- failure = true;
- return false;
- }
- if (mOutWidth > 0 && mOutHeight > 0 || mRotation > 0) {
- float[] dimsAfter = new float[] { crop.getWidth(), crop.getHeight() };
- rotateMatrix.mapPoints(dimsAfter);
- dimsAfter[0] = Math.abs(dimsAfter[0]);
- dimsAfter[1] = Math.abs(dimsAfter[1]);
-
- if (!(mOutWidth > 0 && mOutHeight > 0)) {
- mOutWidth = Math.round(dimsAfter[0]);
- mOutHeight = Math.round(dimsAfter[1]);
- }
-
- RectF cropRect = new RectF(0, 0, dimsAfter[0], dimsAfter[1]);
- RectF returnRect = new RectF(0, 0, mOutWidth, mOutHeight);
-
- Matrix m = new Matrix();
- if (mRotation == 0) {
- m.setRectToRect(cropRect, returnRect, Matrix.ScaleToFit.FILL);
- } else {
- Matrix m1 = new Matrix();
- m1.setTranslate(-crop.getWidth() / 2f, -crop.getHeight() / 2f);
- Matrix m2 = new Matrix();
- m2.setRotate(mRotation);
- Matrix m3 = new Matrix();
- m3.setTranslate(dimsAfter[0] / 2f, dimsAfter[1] / 2f);
- Matrix m4 = new Matrix();
- m4.setRectToRect(cropRect, returnRect, Matrix.ScaleToFit.FILL);
-
- Matrix c1 = new Matrix();
- c1.setConcat(m2, m1);
- Matrix c2 = new Matrix();
- c2.setConcat(m4, m3);
- m.setConcat(c2, c1);
- }
-
- Bitmap tmp = Bitmap.createBitmap((int) returnRect.width(),
- (int) returnRect.height(), Bitmap.Config.ARGB_8888);
- if (tmp != null) {
- Canvas c = new Canvas(tmp);
- Paint p = new Paint();
- p.setFilterBitmap(true);
- c.drawBitmap(crop, m, p);
- crop = tmp;
- }
- }
-
- if (mSaveCroppedBitmap) {
- mCroppedBitmap = crop;
- }
-
- // Compress to byte array
- ByteArrayOutputStream tmpOut = new ByteArrayOutputStream(2048);
- if (crop.compress(CompressFormat.JPEG, DEFAULT_COMPRESS_QUALITY, tmpOut)) {
- // If we need to set to the wallpaper, set it
- if (mSetWallpaper && wallpaperManager != null) {
- try {
- byte[] outByteArray = tmpOut.toByteArray();
- wallpaperManager.setStream(new ByteArrayInputStream(outByteArray));
- if (mOnBitmapCroppedHandler != null) {
- mOnBitmapCroppedHandler.onBitmapCropped(outByteArray);
- }
- } catch (IOException e) {
- Log.w(LOGTAG, "cannot write stream to wallpaper", e);
- failure = true;
- }
- }
- } else {
- Log.w(LOGTAG, "cannot compress bitmap");
- failure = true;
- }
- }
- return !failure; // True if any of the operations failed
- }
-
- @Override
- protected Boolean doInBackground(Void... params) {
- return cropBitmap();
- }
-
- @Override
- protected void onPostExecute(Boolean cropSucceeded) {
- if (!cropSucceeded) {
- Toast.makeText(mContext, R.string.wallpaper_set_fail, Toast.LENGTH_SHORT).show();
- }
- if (mOnEndCropHandler != null) {
- mOnEndCropHandler.run(cropSucceeded);
- }
- }
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/gallery3d/common/BitmapUtils.java b/WallpaperPicker/src/com/android/gallery3d/common/BitmapUtils.java
deleted file mode 100644
index 6ddda87b5..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/common/BitmapUtils.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2010 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.gallery3d.common;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.net.Uri;
-import android.util.Log;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-public class BitmapUtils {
-
- private static final String TAG = "BitmapUtils";
-
- // Find the min x that 1 / x >= scale
- public static int computeSampleSizeLarger(float scale) {
- int initialSize = (int) Math.floor(1f / scale);
- if (initialSize <= 1) return 1;
-
- return initialSize <= 8
- ? Utils.prevPowerOf2(initialSize)
- : initialSize / 8 * 8;
- }
-
- public static int getRotationFromExif(Context context, Uri uri) {
- return BitmapUtils.getRotationFromExifHelper(null, 0, uri, context);
- }
-
- public static int getRotationFromExif(Resources res, int resId, Context context) {
- return BitmapUtils.getRotationFromExifHelper(res, resId, null, context);
- }
-
- private static int getRotationFromExifHelper(Resources res, int resId,
- Uri uri, Context context) {
- InputStream is = null;
- try {
- if (uri != null) {
- is = context.getContentResolver().openInputStream(uri);
- } else {
- is = res.openRawResource(resId);
- }
- return ExifOrientation.readRotation(new BufferedInputStream(is), context);
- } catch (IOException | NullPointerException e) {
- Log.w(TAG, "Getting exif data failed", e);
- } finally {
- Utils.closeSilently(is);
- }
- return 0;
- }
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/common/ExifOrientation.java b/WallpaperPicker/src/com/android/gallery3d/common/ExifOrientation.java
deleted file mode 100644
index ad4370c37..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/common/ExifOrientation.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * Copyright (C) 2015 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.gallery3d.common;
-
-import android.content.Context;
-import android.media.ExifInterface;
-import android.util.Log;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-public class ExifOrientation {
- private static final String TAG = "ExifOrientation";
- private static final boolean DEBUG = false;
-
- private static final short SOI = (short) 0xFFD8; // start of input
- private static final short APP0 = (short) 0xFFE0;
- private static final short APPF = (short) 0xFFEF;
- private static final short APP1 = (short) 0xFFE1;
- private static final short SOS = (short) 0xFFDA; // start of stream
- private static final short EOI = (short) 0xFFD9; // end of input
-
- // The header is available in first 64 bytes, so reading upto 128 bytes
- // should be more than enough.
- private static final int MAX_BYTES_TO_READ = 128 * 1024;
-
- /**
- * Parses the rotation of the JPEG image from the input stream.
- */
- public static final int readRotation(InputStream in, Context context) {
- // Since the platform implementation only takes file input, create a temporary file
- // with just the image header.
- File tempFile = null;
- DataOutputStream tempOut = null;
-
- try {
- DataInputStream din = new DataInputStream(in);
- int pos = 0;
- if (din.readShort() == SOI) {
- pos += 2;
-
- short marker = din.readShort();
- pos += 2;
-
- while ((marker >= APP0 && marker <= APPF) && pos < MAX_BYTES_TO_READ) {
- int length = din.readUnsignedShort();
- if (length < 2) {
- throw new IOException("Invalid header size");
- }
-
- // We only want APP1 headers
- if (length > 2) {
- if (marker == APP1) {
- // Copy the header
- if (tempFile == null) {
- tempFile = File.createTempFile(TAG, ".jpg", context.getCacheDir());
- tempOut = new DataOutputStream(new FileOutputStream(tempFile));
- tempOut.writeShort(SOI);
- }
-
- tempOut.writeShort(marker);
- tempOut.writeShort(length);
-
- byte[] header = new byte[length - 2];
- din.read(header);
- tempOut.write(header);
- } else {
- din.skip(length - 2);
- }
- }
- pos += length;
-
- marker = din.readShort();
- pos += 2;
- }
-
- if (tempOut != null) {
- // Write empty image data.
- tempOut.writeShort(SOS);
- // Write the frame size as 2. Since this includes the size bytes as well
- // (short = 2 bytes), it implies there is 0 byte of image data.
- tempOut.writeShort(2);
-
- // End of input
- tempOut.writeShort(EOI);
- tempOut.close();
-
- return readRotation(tempFile.getAbsolutePath());
- }
- }
- } catch (IOException e) {
- if (DEBUG) {
- Log.d(TAG, "Error parsing input stream", e);
- }
- } finally {
- Utils.closeSilently(in);
- Utils.closeSilently(tempOut);
- if (tempFile != null) {
- tempFile.delete();
- }
- }
- return 0;
- }
-
- /**
- * Parses the rotation of the JPEG image.
- */
- public static final int readRotation(String filePath) {
- try {
- ExifInterface exif = new ExifInterface(filePath);
- switch (exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 0)) {
- case ExifInterface.ORIENTATION_ROTATE_90:
- return 90;
- case ExifInterface.ORIENTATION_ROTATE_270:
- return 270;
- case ExifInterface.ORIENTATION_ROTATE_180:
- return 180;
- default:
- return 0;
- }
- } catch (IOException e) {
- if (DEBUG) {
- Log.d(TAG, "Error reading file", e);
- }
- }
- return 0;
- }
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/common/Utils.java b/WallpaperPicker/src/com/android/gallery3d/common/Utils.java
deleted file mode 100644
index 8466c22cb..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/common/Utils.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2010 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.gallery3d.common;
-
-import android.database.Cursor;
-import android.graphics.RectF;
-import android.os.ParcelFileDescriptor;
-import android.util.Log;
-
-import java.io.Closeable;
-import java.io.IOException;
-
-public class Utils {
- private static final String TAG = "Utils";
-
- // Throws AssertionError if the input is false.
- public static void assertTrue(boolean cond) {
- if (!cond) {
- throw new AssertionError();
- }
- }
-
- // Returns the next power of two.
- // Returns the input if it is already power of 2.
- // Throws IllegalArgumentException if the input is <= 0 or
- // the answer overflows.
- public static int nextPowerOf2(int n) {
- if (n <= 0 || n > (1 << 30)) throw new IllegalArgumentException("n is invalid: " + n);
- n -= 1;
- n |= n >> 16;
- n |= n >> 8;
- n |= n >> 4;
- n |= n >> 2;
- n |= n >> 1;
- return n + 1;
- }
-
- // Returns the previous power of two.
- // Returns the input if it is already power of 2.
- // Throws IllegalArgumentException if the input is <= 0
- public static int prevPowerOf2(int n) {
- if (n <= 0) throw new IllegalArgumentException();
- return Integer.highestOneBit(n);
- }
-
- // Returns the input value x clamped to the range [min, max].
- public static int clamp(int x, int min, int max) {
- if (x > max) return max;
- if (x < min) return min;
- return x;
- }
-
- public static int ceilLog2(float value) {
- int i;
- for (i = 0; i < 31; i++) {
- if ((1 << i) >= value) break;
- }
- return i;
- }
-
- public static int floorLog2(float value) {
- int i;
- for (i = 0; i < 31; i++) {
- if ((1 << i) > value) break;
- }
- return i - 1;
- }
-
- public static void closeSilently(Closeable c) {
- if (c == null) return;
- try {
- c.close();
- } catch (IOException t) {
- Log.w(TAG, "close fail ", t);
- }
- }
-
- public static void closeSilently(ParcelFileDescriptor fd) {
- try {
- if (fd != null) fd.close();
- } catch (Throwable t) {
- Log.w(TAG, "fail to close", t);
- }
- }
-
- public static void closeSilently(Cursor cursor) {
- try {
- if (cursor != null) cursor.close();
- } catch (Throwable t) {
- Log.w(TAG, "fail to close", t);
- }
- }
-
- public static RectF getMaxCropRect(
- int inWidth, int inHeight, int outWidth, int outHeight, boolean leftAligned) {
- RectF cropRect = new RectF();
- // Get a crop rect that will fit this
- if (inWidth / (float) inHeight > outWidth / (float) outHeight) {
- cropRect.top = 0;
- cropRect.bottom = inHeight;
- cropRect.left = (inWidth - (outWidth / (float) outHeight) * inHeight) / 2;
- cropRect.right = inWidth - cropRect.left;
- if (leftAligned) {
- cropRect.right -= cropRect.left;
- cropRect.left = 0;
- }
- } else {
- cropRect.left = 0;
- cropRect.right = inWidth;
- cropRect.top = (inHeight - (outHeight / (float) outWidth) * inWidth) / 2;
- cropRect.bottom = inHeight - cropRect.top;
- }
- return cropRect;
- }
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/BasicTexture.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/BasicTexture.java
deleted file mode 100644
index 7270e88c0..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/BasicTexture.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (C) 2010 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.gallery3d.glrenderer;
-
-import android.util.Log;
-
-import com.android.gallery3d.common.Utils;
-
-import java.util.WeakHashMap;
-
-// BasicTexture is a Texture corresponds to a real GL texture.
-// The state of a BasicTexture indicates whether its data is loaded to GL memory.
-// If a BasicTexture is loaded into GL memory, it has a GL texture id.
-public abstract class BasicTexture implements Texture {
-
- private static final String TAG = "BasicTexture";
- protected static final int UNSPECIFIED = -1;
-
- protected static final int STATE_UNLOADED = 0;
- protected static final int STATE_LOADED = 1;
- protected static final int STATE_ERROR = -1;
-
- // Log a warning if a texture is larger along a dimension
- private static final int MAX_TEXTURE_SIZE = 4096;
-
- protected int mId = -1;
- protected int mState;
-
- protected int mWidth = UNSPECIFIED;
- protected int mHeight = UNSPECIFIED;
-
- protected int mTextureWidth;
- protected int mTextureHeight;
-
- protected GLCanvas mCanvasRef = null;
- private static WeakHashMap<BasicTexture, Object> sAllTextures
- = new WeakHashMap<BasicTexture, Object>();
- private static ThreadLocal sInFinalizer = new ThreadLocal();
-
- protected BasicTexture(GLCanvas canvas, int id, int state) {
- setAssociatedCanvas(canvas);
- mId = id;
- mState = state;
- synchronized (sAllTextures) {
- sAllTextures.put(this, null);
- }
- }
-
- protected BasicTexture() {
- this(null, 0, STATE_UNLOADED);
- }
-
- protected void setAssociatedCanvas(GLCanvas canvas) {
- mCanvasRef = canvas;
- }
-
- /**
- * Sets the content size of this texture. In OpenGL, the actual texture
- * size must be of power of 2, the size of the content may be smaller.
- */
- public void setSize(int width, int height) {
- mWidth = width;
- mHeight = height;
- mTextureWidth = width > 0 ? Utils.nextPowerOf2(width) : 0;
- mTextureHeight = height > 0 ? Utils.nextPowerOf2(height) : 0;
- if (mTextureWidth > MAX_TEXTURE_SIZE || mTextureHeight > MAX_TEXTURE_SIZE) {
- Log.w(TAG, String.format("texture is too large: %d x %d",
- mTextureWidth, mTextureHeight), new Exception());
- }
- }
-
- public int getId() {
- return mId;
- }
-
- @Override
- public int getWidth() {
- return mWidth;
- }
-
- @Override
- public int getHeight() {
- return mHeight;
- }
-
- // Returns the width rounded to the next power of 2.
- public int getTextureWidth() {
- return mTextureWidth;
- }
-
- // Returns the height rounded to the next power of 2.
- public int getTextureHeight() {
- return mTextureHeight;
- }
-
- @Override
- public void draw(GLCanvas canvas, int x, int y) {
- canvas.drawTexture(this, x, y, getWidth(), getHeight());
- }
-
- @Override
- public void draw(GLCanvas canvas, int x, int y, int w, int h) {
- canvas.drawTexture(this, x, y, w, h);
- }
-
- // onBind is called before GLCanvas binds this texture.
- // It should make sure the data is uploaded to GL memory.
- abstract protected boolean onBind(GLCanvas canvas);
-
- public boolean isLoaded() {
- return mState == STATE_LOADED;
- }
-
- // recycle() is called when the texture will never be used again,
- // so it can free all resources.
- public void recycle() {
- freeResource();
- }
-
- // yield() is called when the texture will not be used temporarily,
- // so it can free some resources.
- // The default implementation unloads the texture from GL memory, so
- // the subclass should make sure it can reload the texture to GL memory
- // later, or it will have to override this method.
- public void yield() {
- freeResource();
- }
-
- private void freeResource() {
- GLCanvas canvas = mCanvasRef;
- if (canvas != null && mId != -1) {
- canvas.unloadTexture(this);
- mId = -1; // Don't free it again.
- }
- mState = STATE_UNLOADED;
- setAssociatedCanvas(null);
- }
-
- @Override
- protected void finalize() {
- sInFinalizer.set(BasicTexture.class);
- recycle();
- sInFinalizer.set(null);
- }
-
- public static void yieldAllTextures() {
- synchronized (sAllTextures) {
- for (BasicTexture t : sAllTextures.keySet()) {
- t.yield();
- }
- }
- }
-
- public static void invalidateAllTextures() {
- synchronized (sAllTextures) {
- for (BasicTexture t : sAllTextures.keySet()) {
- t.mState = STATE_UNLOADED;
- t.setAssociatedCanvas(null);
- }
- }
- }
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/BitmapTexture.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/BitmapTexture.java
deleted file mode 100644
index bb69b6858..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/BitmapTexture.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2010 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.gallery3d.glrenderer;
-
-import android.graphics.Bitmap;
-
-import com.android.gallery3d.common.Utils;
-
-// BitmapTexture is a texture whose content is specified by a fixed Bitmap.
-//
-// The texture does not own the Bitmap. The user should make sure the Bitmap
-// is valid during the texture's lifetime. When the texture is recycled, it
-// does not free the Bitmap.
-public class BitmapTexture extends UploadedTexture {
- protected Bitmap mContentBitmap;
-
- public BitmapTexture(Bitmap bitmap) {
- super();
- Utils.assertTrue(bitmap != null && !bitmap.isRecycled());
- mContentBitmap = bitmap;
- }
-
- @Override
- protected void onFreeBitmap(Bitmap bitmap) {
- // Do nothing.
- }
-
- @Override
- protected Bitmap onGetBitmap() {
- return mContentBitmap;
- }
-
- public Bitmap getBitmap() {
- return mContentBitmap;
- }
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLCanvas.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLCanvas.java
deleted file mode 100644
index 2bda8d21a..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLCanvas.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2010 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.gallery3d.glrenderer;
-
-import android.graphics.Bitmap;
-import android.graphics.RectF;
-
-//
-// GLCanvas gives a convenient interface to draw using OpenGL.
-//
-// When a rectangle is specified in this interface, it means the region
-// [x, x+width) * [y, y+height)
-//
-public interface GLCanvas {
-
- public GLId getGLId();
-
- // Tells GLCanvas the size of the underlying GL surface. This should be
- // called before first drawing and when the size of GL surface is changed.
- // This is called by GLRoot and should not be called by the clients
- // who only want to draw on the GLCanvas. Both width and height must be
- // nonnegative.
- public abstract void setSize(int width, int height);
-
- // Clear the drawing buffers. This should only be used by GLRoot.
- public abstract void clearBuffer();
-
- public abstract void translate(float x, float y);
-
- public abstract void rotate(float angle, float x, float y, float z);
-
- // Same as save(), but only save those specified in saveFlags.
- public abstract void save(int saveFlags);
-
- public static final int SAVE_FLAG_ALL = 0xFFFFFFFF;
- public static final int SAVE_FLAG_MATRIX = 0x02;
-
- // Pops from the top of the stack as current configuration state (matrix,
- // alpha, and clip). This call balances a previous call to save(), and is
- // used to remove all modifications to the configuration state since the
- // last save call.
- public abstract void restore();
-
- // Draws a texture to the specified rectangle.
- public abstract void drawTexture(BasicTexture texture, int x, int y, int width, int height);
-
- // Draws the source rectangle part of the texture to the target rectangle.
- public abstract void drawTexture(BasicTexture texture, RectF source, RectF target);
-
- // Unloads the specified texture from the canvas. The resource allocated
- // to draw the texture will be released. The specified texture will return
- // to the unloaded state. This function should be called only from
- // BasicTexture or its descendant
- public abstract boolean unloadTexture(BasicTexture texture);
-
- // Delete the textures and buffers in GL side. This function should only be
- // called in the GL thread.
- public abstract void deleteRecycledResources();
-
- /**
- * Sets texture parameters to use GL_CLAMP_TO_EDGE for both
- * GL_TEXTURE_WRAP_S and GL_TEXTURE_WRAP_T. Sets texture parameters to be
- * GL_LINEAR for GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER.
- * bindTexture() must be called prior to this.
- *
- * @param texture The texture to set parameters on.
- */
- public abstract void setTextureParameters(BasicTexture texture);
-
- /**
- * Initializes the texture to a size by calling texImage2D on it.
- *
- * @param texture The texture to initialize the size.
- * @param format The texture format (e.g. GL_RGBA)
- * @param type The texture type (e.g. GL_UNSIGNED_BYTE)
- */
- public abstract void initializeTextureSize(BasicTexture texture, int format, int type);
-
- /**
- * Initializes the texture to a size by calling texImage2D on it.
- *
- * @param texture The texture to initialize the size.
- * @param bitmap The bitmap to initialize the bitmap with.
- */
- public abstract void initializeTexture(BasicTexture texture, Bitmap bitmap);
-
- /**
- * Calls glTexSubImage2D to upload a bitmap to the texture.
- *
- * @param texture The target texture to write to.
- * @param xOffset Specifies a texel offset in the x direction within the
- * texture array.
- * @param yOffset Specifies a texel offset in the y direction within the
- * texture array.
- * @param format The texture format (e.g. GL_RGBA)
- * @param type The texture type (e.g. GL_UNSIGNED_BYTE)
- */
- public abstract void texSubImage2D(BasicTexture texture, int xOffset, int yOffset,
- Bitmap bitmap,
- int format, int type);
-
- /**
- * Generates buffers and uploads the buffer data.
- *
- * @param buffer The buffer to upload
- * @return The buffer ID that was generated.
- */
- public abstract int uploadBuffer(java.nio.FloatBuffer buffer);
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20Canvas.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20Canvas.java
deleted file mode 100644
index 0da3bae96..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20Canvas.java
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
- * 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.
- */
-package com.android.gallery3d.glrenderer;
-
-import android.graphics.Bitmap;
-import android.graphics.RectF;
-import android.opengl.GLES20;
-import android.opengl.GLUtils;
-import android.opengl.Matrix;
-import android.util.Log;
-
-import java.nio.Buffer;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.FloatBuffer;
-import java.util.Arrays;
-
-import javax.microedition.khronos.opengles.GL11;
-
-public class GLES20Canvas implements GLCanvas {
- // ************** Constants **********************
- private static final String TAG = GLES20Canvas.class.getSimpleName();
- private static final int FLOAT_SIZE = Float.SIZE / Byte.SIZE;
-
- private static final int COORDS_PER_VERTEX = 2;
- private static final int VERTEX_STRIDE = COORDS_PER_VERTEX * FLOAT_SIZE;
-
- private static final int COUNT_FILL_VERTEX = 4;
- private static final int OFFSET_FILL_RECT = 0;
-
- private static final int GL_TARGET = GL11.GL_TEXTURE_2D;
-
- private static final float[] BOX_COORDINATES = {
- 0, 0, // Fill rectangle
- 1, 0,
- 0, 1,
- 1, 1,
- 0, 0, // Draw line
- 1, 1,
- 0, 0, // Draw rectangle outline
- 0, 1,
- 1, 1,
- 1, 0,
- };
-
- private static final String POSITION_ATTRIBUTE = "aPosition";
- private static final String MATRIX_UNIFORM = "uMatrix";
- private static final String TEXTURE_MATRIX_UNIFORM = "uTextureMatrix";
- private static final String TEXTURE_SAMPLER_UNIFORM = "uTextureSampler";
- private static final String ALPHA_UNIFORM = "uAlpha";
-
- private static final String TEXTURE_VERTEX_SHADER = ""
- + "uniform mat4 " + MATRIX_UNIFORM + ";\n"
- + "uniform mat4 " + TEXTURE_MATRIX_UNIFORM + ";\n"
- + "attribute vec2 " + POSITION_ATTRIBUTE + ";\n"
- + "varying vec2 vTextureCoord;\n"
- + "void main() {\n"
- + " vec4 pos = vec4(" + POSITION_ATTRIBUTE + ", 0.0, 1.0);\n"
- + " gl_Position = " + MATRIX_UNIFORM + " * pos;\n"
- + " vTextureCoord = (" + TEXTURE_MATRIX_UNIFORM + " * pos).xy;\n"
- + "}\n";
-
- private static final String TEXTURE_FRAGMENT_SHADER = ""
- + "precision mediump float;\n"
- + "varying vec2 vTextureCoord;\n"
- + "uniform float " + ALPHA_UNIFORM + ";\n"
- + "uniform sampler2D " + TEXTURE_SAMPLER_UNIFORM + ";\n"
- + "void main() {\n"
- + " gl_FragColor = texture2D(" + TEXTURE_SAMPLER_UNIFORM + ", vTextureCoord);\n"
- + " gl_FragColor *= " + ALPHA_UNIFORM + ";\n"
- + "}\n";
-
- private static final int INITIAL_RESTORE_STATE_SIZE = 8;
- private static final int MATRIX_SIZE = 16;
-
- // Keep track of restore state
- private float[] mMatrices = new float[INITIAL_RESTORE_STATE_SIZE * MATRIX_SIZE];
- private IntArray mSaveFlags = new IntArray();
-
- private int mCurrentMatrixIndex = 0;
-
- // Viewport size
- private int mWidth;
- private int mHeight;
-
- // Projection matrix
- private float[] mProjectionMatrix = new float[MATRIX_SIZE];
-
- // GL programs
- private int mTextureProgram;
-
- // GL buffer containing BOX_COORDINATES
- private int mBoxCoordinates;
-
- // Handle indices -- common
- private static final int INDEX_POSITION = 0;
- private static final int INDEX_MATRIX = 1;
-
- // Handle indices -- texture
- private static final int INDEX_TEXTURE_MATRIX = 2;
- private static final int INDEX_TEXTURE_SAMPLER = 3;
- private static final int INDEX_ALPHA = 4;
-
- private abstract static class ShaderParameter {
- public int handle;
- protected final String mName;
-
- public ShaderParameter(String name) {
- mName = name;
- }
-
- public abstract void loadHandle(int program);
- }
-
- private static class UniformShaderParameter extends ShaderParameter {
- public UniformShaderParameter(String name) {
- super(name);
- }
-
- @Override
- public void loadHandle(int program) {
- handle = GLES20.glGetUniformLocation(program, mName);
- checkError();
- }
- }
-
- private static class AttributeShaderParameter extends ShaderParameter {
- public AttributeShaderParameter(String name) {
- super(name);
- }
-
- @Override
- public void loadHandle(int program) {
- handle = GLES20.glGetAttribLocation(program, mName);
- checkError();
- }
- }
-
- private ShaderParameter[] mTextureParameters = {
- new AttributeShaderParameter(POSITION_ATTRIBUTE), // INDEX_POSITION
- new UniformShaderParameter(MATRIX_UNIFORM), // INDEX_MATRIX
- new UniformShaderParameter(TEXTURE_MATRIX_UNIFORM), // INDEX_TEXTURE_MATRIX
- new UniformShaderParameter(TEXTURE_SAMPLER_UNIFORM), // INDEX_TEXTURE_SAMPLER
- new UniformShaderParameter(ALPHA_UNIFORM), // INDEX_ALPHA
- };
-
- private final IntArray mUnboundTextures = new IntArray();
-
- // Temporary variables used within calculations
- private final float[] mTempMatrix = new float[32];
- private final RectF mTempSourceRect = new RectF();
- private final RectF mTempTargetRect = new RectF();
- private final float[] mTempTextureMatrix = new float[MATRIX_SIZE];
- private final int[] mTempIntArray = new int[1];
-
- private static final GLId mGLId = new GLES20IdImpl();
-
- public GLES20Canvas() {
- Matrix.setIdentityM(mTempTextureMatrix, 0);
- Matrix.setIdentityM(mMatrices, mCurrentMatrixIndex);
-
- FloatBuffer boxBuffer = createBuffer(BOX_COORDINATES);
- mBoxCoordinates = uploadBuffer(boxBuffer);
-
- int textureVertexShader = loadShader(GLES20.GL_VERTEX_SHADER, TEXTURE_VERTEX_SHADER);
- int textureFragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, TEXTURE_FRAGMENT_SHADER);
-
- mTextureProgram = assembleProgram(textureVertexShader, textureFragmentShader,
- mTextureParameters);
- GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ONE_MINUS_SRC_ALPHA);
- checkError();
- }
-
- private static FloatBuffer createBuffer(float[] values) {
- // First create an nio buffer, then create a VBO from it.
- int size = values.length * FLOAT_SIZE;
- FloatBuffer buffer = ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder())
- .asFloatBuffer();
- buffer.put(values, 0, values.length).position(0);
- return buffer;
- }
-
- private int assembleProgram(int vertexShader, int fragmentShader, ShaderParameter[] params) {
- int program = GLES20.glCreateProgram();
- checkError();
- if (program == 0) {
- throw new RuntimeException("Cannot create GL program: " + GLES20.glGetError());
- }
- GLES20.glAttachShader(program, vertexShader);
- checkError();
- GLES20.glAttachShader(program, fragmentShader);
- checkError();
- GLES20.glLinkProgram(program);
- checkError();
- int[] mLinkStatus = mTempIntArray;
- GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, mLinkStatus, 0);
- if (mLinkStatus[0] != GLES20.GL_TRUE) {
- Log.e(TAG, "Could not link program: ");
- Log.e(TAG, GLES20.glGetProgramInfoLog(program));
- GLES20.glDeleteProgram(program);
- program = 0;
- }
- for (int i = 0; i < params.length; i++) {
- params[i].loadHandle(program);
- }
- return program;
- }
-
- private static int loadShader(int type, String shaderCode) {
- // create a vertex shader type (GLES20.GL_VERTEX_SHADER)
- // or a fragment shader type (GLES20.GL_FRAGMENT_SHADER)
- int shader = GLES20.glCreateShader(type);
-
- // add the source code to the shader and compile it
- GLES20.glShaderSource(shader, shaderCode);
- checkError();
- GLES20.glCompileShader(shader);
- checkError();
-
- return shader;
- }
-
- @Override
- public void setSize(int width, int height) {
- mWidth = width;
- mHeight = height;
- GLES20.glViewport(0, 0, mWidth, mHeight);
- checkError();
- Matrix.setIdentityM(mMatrices, mCurrentMatrixIndex);
- Matrix.orthoM(mProjectionMatrix, 0, 0, width, 0, height, -1, 1);
- Matrix.translateM(mMatrices, mCurrentMatrixIndex, 0, height, 0);
- Matrix.scaleM(mMatrices, mCurrentMatrixIndex, 1, -1, 1);
- }
-
- @Override
- public void clearBuffer() {
- GLES20.glClearColor(0f, 0f, 0f, 1f);
- checkError();
- GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
- checkError();
- }
-
- // This is a faster version of translate(x, y, z) because
- // (1) we knows z = 0, (2) we inline the Matrix.translateM call,
- // (3) we unroll the loop
- @Override
- public void translate(float x, float y) {
- int index = mCurrentMatrixIndex;
- float[] m = mMatrices;
- m[index + 12] += m[index + 0] * x + m[index + 4] * y;
- m[index + 13] += m[index + 1] * x + m[index + 5] * y;
- m[index + 14] += m[index + 2] * x + m[index + 6] * y;
- m[index + 15] += m[index + 3] * x + m[index + 7] * y;
- }
-
- @Override
- public void rotate(float angle, float x, float y, float z) {
- if (angle == 0f) {
- return;
- }
- float[] temp = mTempMatrix;
- Matrix.setRotateM(temp, 0, angle, x, y, z);
- float[] matrix = mMatrices;
- int index = mCurrentMatrixIndex;
- Matrix.multiplyMM(temp, MATRIX_SIZE, matrix, index, temp, 0);
- System.arraycopy(temp, MATRIX_SIZE, matrix, index, MATRIX_SIZE);
- }
-
- @Override
- public void save(int saveFlags) {
- boolean saveMatrix = (saveFlags & SAVE_FLAG_MATRIX) == SAVE_FLAG_MATRIX;
- if (saveMatrix) {
- int currentIndex = mCurrentMatrixIndex;
- mCurrentMatrixIndex += MATRIX_SIZE;
- if (mMatrices.length <= mCurrentMatrixIndex) {
- mMatrices = Arrays.copyOf(mMatrices, mMatrices.length * 2);
- }
- System.arraycopy(mMatrices, currentIndex, mMatrices, mCurrentMatrixIndex, MATRIX_SIZE);
- }
- mSaveFlags.add(saveFlags);
- }
-
- @Override
- public void restore() {
- int restoreFlags = mSaveFlags.removeLast();
- boolean restoreMatrix = (restoreFlags & SAVE_FLAG_MATRIX) == SAVE_FLAG_MATRIX;
- if (restoreMatrix) {
- mCurrentMatrixIndex -= MATRIX_SIZE;
- }
- }
-
- private void setPosition(ShaderParameter[] params, int offset) {
- GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, mBoxCoordinates);
- checkError();
- GLES20.glVertexAttribPointer(params[INDEX_POSITION].handle, COORDS_PER_VERTEX,
- GLES20.GL_FLOAT, false, VERTEX_STRIDE, offset * VERTEX_STRIDE);
- checkError();
- GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0);
- checkError();
- }
-
- private void draw(ShaderParameter[] params, int type, int count, float x, float y, float width,
- float height) {
- setMatrix(params, x, y, width, height);
- int positionHandle = params[INDEX_POSITION].handle;
- GLES20.glEnableVertexAttribArray(positionHandle);
- checkError();
- GLES20.glDrawArrays(type, 0, count);
- checkError();
- GLES20.glDisableVertexAttribArray(positionHandle);
- checkError();
- }
-
- private void setMatrix(ShaderParameter[] params, float x, float y, float width, float height) {
- Matrix.translateM(mTempMatrix, 0, mMatrices, mCurrentMatrixIndex, x, y, 0f);
- Matrix.scaleM(mTempMatrix, 0, width, height, 1f);
- Matrix.multiplyMM(mTempMatrix, MATRIX_SIZE, mProjectionMatrix, 0, mTempMatrix, 0);
- GLES20.glUniformMatrix4fv(params[INDEX_MATRIX].handle, 1, false, mTempMatrix, MATRIX_SIZE);
- checkError();
- }
-
- @Override
- public void drawTexture(BasicTexture texture, int x, int y, int width, int height) {
- if (width <= 0 || height <= 0) {
- return;
- }
- copyTextureCoordinates(texture, mTempSourceRect);
- mTempTargetRect.set(x, y, x + width, y + height);
- convertCoordinate(mTempSourceRect, mTempTargetRect, texture);
- drawTextureRect(texture, mTempSourceRect, mTempTargetRect);
- }
-
- private static void copyTextureCoordinates(BasicTexture texture, RectF outRect) {
- outRect.set(0, 0, texture.getWidth(), texture.getHeight());
- }
-
- @Override
- public void drawTexture(BasicTexture texture, RectF source, RectF target) {
- if (target.width() <= 0 || target.height() <= 0) {
- return;
- }
- mTempSourceRect.set(source);
- mTempTargetRect.set(target);
-
- convertCoordinate(mTempSourceRect, mTempTargetRect, texture);
- drawTextureRect(texture, mTempSourceRect, mTempTargetRect);
- }
-
- private void drawTextureRect(BasicTexture texture, RectF source, RectF target) {
- setTextureMatrix(source);
- drawTextureRect(texture, mTempTextureMatrix, target);
- }
-
- private void setTextureMatrix(RectF source) {
- mTempTextureMatrix[0] = source.width();
- mTempTextureMatrix[5] = source.height();
- mTempTextureMatrix[12] = source.left;
- mTempTextureMatrix[13] = source.top;
- }
-
- // This function changes the source coordinate to the texture coordinates.
- // It also clips the source and target coordinates if it is beyond the
- // bound of the texture.
- private static void convertCoordinate(RectF source, RectF target, BasicTexture texture) {
- int width = texture.getWidth();
- int height = texture.getHeight();
- int texWidth = texture.getTextureWidth();
- int texHeight = texture.getTextureHeight();
- // Convert to texture coordinates
- source.left /= texWidth;
- source.right /= texWidth;
- source.top /= texHeight;
- source.bottom /= texHeight;
-
- // Clip if the rendering range is beyond the bound of the texture.
- float xBound = (float) width / texWidth;
- if (source.right > xBound) {
- target.right = target.left + target.width() * (xBound - source.left) / source.width();
- source.right = xBound;
- }
- float yBound = (float) height / texHeight;
- if (source.bottom > yBound) {
- target.bottom = target.top + target.height() * (yBound - source.top) / source.height();
- source.bottom = yBound;
- }
- }
-
- private void drawTextureRect(BasicTexture texture, float[] textureMatrix, RectF target) {
- ShaderParameter[] params = prepareTexture(texture);
- setPosition(params, OFFSET_FILL_RECT);
- GLES20.glUniformMatrix4fv(params[INDEX_TEXTURE_MATRIX].handle, 1, false, textureMatrix, 0);
- checkError();
- draw(params, GLES20.GL_TRIANGLE_STRIP, COUNT_FILL_VERTEX, target.left, target.top,
- target.width(), target.height());
- }
-
- private ShaderParameter[] prepareTexture(BasicTexture texture) {
- ShaderParameter[] params;
- int program;
- params = mTextureParameters;
- program = mTextureProgram;
- prepareTexture(texture, program, params);
- return params;
- }
-
- private void prepareTexture(BasicTexture texture, int program, ShaderParameter[] params) {
- deleteRecycledResources();
- GLES20.glUseProgram(program);
- checkError();
- GLES20.glDisable(GLES20.GL_BLEND);
- checkError();
- GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
- checkError();
- texture.onBind(this);
- GLES20.glBindTexture(GL_TARGET, texture.getId());
- checkError();
- GLES20.glUniform1i(params[INDEX_TEXTURE_SAMPLER].handle, 0);
- checkError();
- GLES20.glUniform1f(params[INDEX_ALPHA].handle, 1);
- checkError();
- }
-
- @Override
- public boolean unloadTexture(BasicTexture texture) {
- boolean unload = texture.isLoaded();
- if (unload) {
- synchronized (mUnboundTextures) {
- mUnboundTextures.add(texture.getId());
- }
- }
- return unload;
- }
-
- @Override
- public void deleteRecycledResources() {
- synchronized (mUnboundTextures) {
- IntArray ids = mUnboundTextures;
- if (mUnboundTextures.size() > 0) {
- mGLId.glDeleteTextures(null, ids.size(), ids.getInternalArray(), 0);
- ids.clear();
- }
- }
- }
-
- @Override
- public void setTextureParameters(BasicTexture texture) {
- GLES20.glBindTexture(GL_TARGET, texture.getId());
- checkError();
- GLES20.glTexParameteri(GL_TARGET, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
- GLES20.glTexParameteri(GL_TARGET, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
- GLES20.glTexParameterf(GL_TARGET, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
- GLES20.glTexParameterf(GL_TARGET, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
- }
-
- @Override
- public void initializeTextureSize(BasicTexture texture, int format, int type) {
- GLES20.glBindTexture(GL_TARGET, texture.getId());
- checkError();
- int width = texture.getTextureWidth();
- int height = texture.getTextureHeight();
- GLES20.glTexImage2D(GL_TARGET, 0, format, width, height, 0, format, type, null);
- }
-
- @Override
- public void initializeTexture(BasicTexture texture, Bitmap bitmap) {
- GLES20.glBindTexture(GL_TARGET, texture.getId());
- checkError();
- GLUtils.texImage2D(GL_TARGET, 0, bitmap, 0);
- }
-
- @Override
- public void texSubImage2D(BasicTexture texture, int xOffset, int yOffset, Bitmap bitmap,
- int format, int type) {
- GLES20.glBindTexture(GL_TARGET, texture.getId());
- checkError();
- GLUtils.texSubImage2D(GL_TARGET, 0, xOffset, yOffset, bitmap, format, type);
- }
-
- @Override
- public int uploadBuffer(FloatBuffer buf) {
- return uploadBuffer(buf, FLOAT_SIZE);
- }
-
- private int uploadBuffer(Buffer buffer, int elementSize) {
- mGLId.glGenBuffers(1, mTempIntArray, 0);
- checkError();
- int bufferId = mTempIntArray[0];
- GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, bufferId);
- checkError();
- GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, buffer.capacity() * elementSize, buffer,
- GLES20.GL_STATIC_DRAW);
- checkError();
- return bufferId;
- }
-
- public static void checkError() {
- int error = GLES20.glGetError();
- if (error != 0) {
- Throwable t = new Throwable();
- Log.e(TAG, "GL error: " + error, t);
- }
- }
-
- @Override
- public GLId getGLId() {
- return mGLId;
- }
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20IdImpl.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20IdImpl.java
deleted file mode 100644
index 6cd7149cb..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLES20IdImpl.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.android.gallery3d.glrenderer;
-
-import android.opengl.GLES20;
-
-import javax.microedition.khronos.opengles.GL11;
-import javax.microedition.khronos.opengles.GL11ExtensionPack;
-
-public class GLES20IdImpl implements GLId {
- private final int[] mTempIntArray = new int[1];
-
- @Override
- public int generateTexture() {
- GLES20.glGenTextures(1, mTempIntArray, 0);
- GLES20Canvas.checkError();
- return mTempIntArray[0];
- }
-
- @Override
- public void glGenBuffers(int n, int[] buffers, int offset) {
- GLES20.glGenBuffers(n, buffers, offset);
- GLES20Canvas.checkError();
- }
-
- @Override
- public void glDeleteTextures(GL11 gl, int n, int[] textures, int offset) {
- GLES20.glDeleteTextures(n, textures, offset);
- GLES20Canvas.checkError();
- }
-
-
- @Override
- public void glDeleteBuffers(GL11 gl, int n, int[] buffers, int offset) {
- GLES20.glDeleteBuffers(n, buffers, offset);
- GLES20Canvas.checkError();
- }
-
- @Override
- public void glDeleteFramebuffers(GL11ExtensionPack gl11ep, int n, int[] buffers, int offset) {
- GLES20.glDeleteFramebuffers(n, buffers, offset);
- GLES20Canvas.checkError();
- }
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLId.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLId.java
deleted file mode 100644
index 3cec558f6..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/GLId.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.gallery3d.glrenderer;
-
-import javax.microedition.khronos.opengles.GL11;
-import javax.microedition.khronos.opengles.GL11ExtensionPack;
-
-// This mimics corresponding GL functions.
-public interface GLId {
- public int generateTexture();
-
- public void glGenBuffers(int n, int[] buffers, int offset);
-
- public void glDeleteTextures(GL11 gl, int n, int[] textures, int offset);
-
- public void glDeleteBuffers(GL11 gl, int n, int[] buffers, int offset);
-
- public void glDeleteFramebuffers(GL11ExtensionPack gl11ep, int n, int[] buffers, int offset);
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/IntArray.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/IntArray.java
deleted file mode 100644
index f123624d6..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/IntArray.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2010 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.gallery3d.glrenderer;
-
-public class IntArray {
- private static final int INIT_CAPACITY = 8;
-
- private int mData[] = new int[INIT_CAPACITY];
- private int mSize = 0;
-
- public void add(int value) {
- if (mData.length == mSize) {
- int temp[] = new int[mSize + mSize];
- System.arraycopy(mData, 0, temp, 0, mSize);
- mData = temp;
- }
- mData[mSize++] = value;
- }
-
- public int removeLast() {
- mSize--;
- return mData[mSize];
- }
-
- public int size() {
- return mSize;
- }
-
- // For testing only
- public int[] toArray(int[] result) {
- if (result == null || result.length < mSize) {
- result = new int[mSize];
- }
- System.arraycopy(mData, 0, result, 0, mSize);
- return result;
- }
-
- public int[] getInternalArray() {
- return mData;
- }
-
- public void clear() {
- mSize = 0;
- if (mData.length != INIT_CAPACITY) mData = new int[INIT_CAPACITY];
- }
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/Texture.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/Texture.java
deleted file mode 100644
index e71a379bc..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/Texture.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2010 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.gallery3d.glrenderer;
-
-
-// Texture is a rectangular image which can be drawn on GLCanvas.
-// The isOpaque() function gives a hint about whether the texture is opaque,
-// so the drawing can be done faster.
-//
-// This is the current texture hierarchy:
-//
-// Texture
-// -- BasicTexture
-// -- UploadedTexture
-// -- BitmapTexture
-// -- Tile
-//
-public interface Texture {
- public int getWidth();
- public int getHeight();
- public void draw(GLCanvas canvas, int x, int y);
- public void draw(GLCanvas canvas, int x, int y, int w, int h);
-}
diff --git a/WallpaperPicker/src/com/android/gallery3d/glrenderer/UploadedTexture.java b/WallpaperPicker/src/com/android/gallery3d/glrenderer/UploadedTexture.java
deleted file mode 100644
index 607e2a943..000000000
--- a/WallpaperPicker/src/com/android/gallery3d/glrenderer/UploadedTexture.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2010 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.gallery3d.glrenderer;
-
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.Config;
-import android.opengl.GLUtils;
-import android.util.Pair;
-
-import com.android.gallery3d.common.Utils;
-
-import java.util.HashMap;
-
-// UploadedTextures use a Bitmap for the content of the texture.
-//
-// Subclasses should implement onGetBitmap() to provide the Bitmap and
-// implement onFreeBitmap(mBitmap) which will be called when the Bitmap
-// is not needed anymore.
-//
-// isContentValid() is meaningful only when the isLoaded() returns true.
-// It means whether the content needs to be updated.
-//
-// The user of this class should call recycle() when the texture is not
-// needed anymore.
-//
-// By default an UploadedTexture is opaque (so it can be drawn faster without
-// blending). The user or subclass can override it using setOpaque().
-public abstract class UploadedTexture extends BasicTexture {
-
- // To prevent keeping allocation the borders, we store those used borders here.
- // Since the length will be power of two, it won't use too much memory.
- private static HashMap<BorderKey, Bitmap> sBorderLines = new HashMap<BorderKey, Bitmap>();
-
- private static class BorderKey extends Pair<Config, Integer> {
- public BorderKey(Config config, boolean vertical, int length) {
- super(config, vertical ? length : -length);
- }
- }
-
- private boolean mContentValid = true;
- protected Bitmap mBitmap;
-
- protected UploadedTexture() {
- super(null, 0, STATE_UNLOADED);
- }
-
- private static Bitmap getBorderLine(boolean vertical, Config config, int length) {
- BorderKey key = new BorderKey(config, vertical, length);
- Bitmap bitmap = sBorderLines.get(key);
- if (bitmap == null) {
- bitmap = vertical
- ? Bitmap.createBitmap(1, length, config)
- : Bitmap.createBitmap(length, 1, config);
- sBorderLines.put(key, bitmap);
- }
- return bitmap;
- }
-
- private Bitmap getBitmap() {
- if (mBitmap == null) {
- mBitmap = onGetBitmap();
- int w = mBitmap.getWidth();
- int h = mBitmap.getHeight();
- if (mWidth == UNSPECIFIED) {
- setSize(w, h);
- }
- }
- return mBitmap;
- }
-
- private void freeBitmap() {
- Utils.assertTrue(mBitmap != null);
- onFreeBitmap(mBitmap);
- mBitmap = null;
- }
-
- @Override
- public int getWidth() {
- if (mWidth == UNSPECIFIED) getBitmap();
- return mWidth;
- }
-
- @Override
- public int getHeight() {
- if (mWidth == UNSPECIFIED) getBitmap();
- return mHeight;
- }
-
- protected abstract Bitmap onGetBitmap();
-
- protected abstract void onFreeBitmap(Bitmap bitmap);
-
- protected void invalidateContent() {
- if (mBitmap != null) freeBitmap();
- mContentValid = false;
- mWidth = UNSPECIFIED;
- mHeight = UNSPECIFIED;
- }
-
- /**
- * Whether the content on GPU is valid.
- */
- public boolean isContentValid() {
- return isLoaded() && mContentValid;
- }
-
- /**
- * Updates the content on GPU's memory.
- * @param canvas
- */
- public void updateContent(GLCanvas canvas) {
- if (!isLoaded()) {
- uploadToCanvas(canvas);
- } else if (!mContentValid) {
- Bitmap bitmap = getBitmap();
- int format = GLUtils.getInternalFormat(bitmap);
- int type = GLUtils.getType(bitmap);
- canvas.texSubImage2D(this, 0, 0, bitmap, format, type);
- freeBitmap();
- mContentValid = true;
- }
- }
-
- private void uploadToCanvas(GLCanvas canvas) {
- Bitmap bitmap = getBitmap();
- if (bitmap != null) {
- try {
- int bWidth = bitmap.getWidth();
- int bHeight = bitmap.getHeight();
- int texWidth = getTextureWidth();
- int texHeight = getTextureHeight();
-
- Utils.assertTrue(bWidth <= texWidth && bHeight <= texHeight);
-
- // Upload the bitmap to a new texture.
- mId = canvas.getGLId().generateTexture();
- canvas.setTextureParameters(this);
-
- if (bWidth == texWidth && bHeight == texHeight) {
- canvas.initializeTexture(this, bitmap);
- } else {
- int format = GLUtils.getInternalFormat(bitmap);
- int type = GLUtils.getType(bitmap);
- Config config = bitmap.getConfig();
-
- canvas.initializeTextureSize(this, format, type);
- canvas.texSubImage2D(this, 0, 0, bitmap, format, type);
-
- // Right border
- if (bWidth < texWidth) {
- Bitmap line = getBorderLine(true, config, texHeight);
- canvas.texSubImage2D(this, bWidth, 0, line, format, type);
- }
-
- // Bottom border
- if (bHeight < texHeight) {
- Bitmap line = getBorderLine(false, config, texWidth);
- canvas.texSubImage2D(this, 0, bHeight, line, format, type);
- }
- }
- } finally {
- freeBitmap();
- }
- // Update texture state.
- setAssociatedCanvas(canvas);
- mState = STATE_LOADED;
- mContentValid = true;
- } else {
- mState = STATE_ERROR;
- throw new RuntimeException("Texture load fail, no bitmap");
- }
- }
-
- @Override
- protected boolean onBind(GLCanvas canvas) {
- updateContent(canvas);
- return isContentValid();
- }
-
- @Override
- public void recycle() {
- super.recycle();
- if (mBitmap != null) freeBitmap();
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/AlphaDisableableButton.java b/WallpaperPicker/src/com/android/launcher3/AlphaDisableableButton.java
deleted file mode 100644
index f0796c36f..000000000
--- 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/CheckableFrameLayout.java b/WallpaperPicker/src/com/android/launcher3/CheckableFrameLayout.java
deleted file mode 100644
index 5b7d82425..000000000
--- a/WallpaperPicker/src/com/android/launcher3/CheckableFrameLayout.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.Checkable;
-import android.widget.FrameLayout;
-
-public class CheckableFrameLayout extends FrameLayout implements Checkable {
- private static final int[] CHECKED_STATE_SET = { android.R.attr.state_checked };
- boolean mChecked;
-
- public CheckableFrameLayout(Context context) {
- super(context);
- }
-
- public CheckableFrameLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public CheckableFrameLayout(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- public boolean isChecked() {
- return mChecked;
- }
-
- public void setChecked(boolean checked) {
- if (checked != mChecked) {
- mChecked = checked;
- refreshDrawableState();
- }
- }
-
- public void toggle() {
- setChecked(!mChecked);
- }
-
- @Override
- protected int[] onCreateDrawableState(int extraSpace) {
- final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
- if (isChecked()) {
- mergeDrawableStates(drawableState, CHECKED_STATE_SET);
- }
- return drawableState;
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/CropView.java b/WallpaperPicker/src/com/android/launcher3/CropView.java
deleted file mode 100644
index 4770a7177..000000000
--- a/WallpaperPicker/src/com/android/launcher3/CropView.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3;
-
-import android.content.Context;
-import android.graphics.Matrix;
-import android.graphics.Point;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.ScaleGestureDetector;
-import android.view.ScaleGestureDetector.OnScaleGestureListener;
-import android.view.ViewConfiguration;
-import android.view.ViewTreeObserver;
-import android.view.ViewTreeObserver.OnGlobalLayoutListener;
-
-import com.android.photos.views.TiledImageRenderer.TileSource;
-import com.android.photos.views.TiledImageView;
-
-public class CropView extends TiledImageView implements OnScaleGestureListener {
-
- private ScaleGestureDetector mScaleGestureDetector;
- private long mTouchDownTime;
- private float mFirstX, mFirstY;
- private float mLastX, mLastY;
- private float mCenterX, mCenterY;
- private float mMinScale;
- private boolean mTouchEnabled = true;
- private RectF mTempEdges = new RectF();
- private float[] mTempPoint = new float[] { 0, 0 };
- private float[] mTempCoef = new float[] { 0, 0 };
- private float[] mTempAdjustment = new float[] { 0, 0 };
- private float[] mTempImageDims = new float[] { 0, 0 };
- private float[] mTempRendererCenter = new float[] { 0, 0 };
- TouchCallback mTouchCallback;
- Matrix mRotateMatrix;
- Matrix mInverseRotateMatrix;
-
- public interface TouchCallback {
- void onTouchDown();
- void onTap();
- void onTouchUp();
- }
-
- public CropView(Context context) {
- this(context, null);
- }
-
- public CropView(Context context, AttributeSet attrs) {
- super(context, attrs);
- mScaleGestureDetector = new ScaleGestureDetector(context, this);
- mRotateMatrix = new Matrix();
- mInverseRotateMatrix = new Matrix();
- }
-
- private float[] getImageDims() {
- final float imageWidth = mRenderer.source.getImageWidth();
- final float imageHeight = mRenderer.source.getImageHeight();
- float[] imageDims = mTempImageDims;
- imageDims[0] = imageWidth;
- imageDims[1] = imageHeight;
- mRotateMatrix.mapPoints(imageDims);
- imageDims[0] = Math.abs(imageDims[0]);
- imageDims[1] = Math.abs(imageDims[1]);
- return imageDims;
- }
-
- private void getEdgesHelper(RectF edgesOut) {
- final float width = getWidth();
- final float height = getHeight();
- final float[] imageDims = getImageDims();
- final float imageWidth = imageDims[0];
- final float imageHeight = imageDims[1];
-
- float initialCenterX = mRenderer.source.getImageWidth() / 2f;
- float initialCenterY = mRenderer.source.getImageHeight() / 2f;
-
- float[] rendererCenter = mTempRendererCenter;
- rendererCenter[0] = mCenterX - initialCenterX;
- rendererCenter[1] = mCenterY - initialCenterY;
- mRotateMatrix.mapPoints(rendererCenter);
- rendererCenter[0] += imageWidth / 2;
- rendererCenter[1] += imageHeight / 2;
-
- final float scale = mRenderer.scale;
- float centerX = (width / 2f - rendererCenter[0] + (imageWidth - width) / 2f)
- * scale + width / 2f;
- float centerY = (height / 2f - rendererCenter[1] + (imageHeight - height) / 2f)
- * scale + height / 2f;
- float leftEdge = centerX - imageWidth / 2f * scale;
- float rightEdge = centerX + imageWidth / 2f * scale;
- float topEdge = centerY - imageHeight / 2f * scale;
- float bottomEdge = centerY + imageHeight / 2f * scale;
-
- edgesOut.left = leftEdge;
- edgesOut.right = rightEdge;
- edgesOut.top = topEdge;
- edgesOut.bottom = bottomEdge;
- }
-
- public int getImageRotation() {
- return mRenderer.rotation;
- }
-
- public RectF getCrop() {
- final RectF edges = mTempEdges;
- getEdgesHelper(edges);
- final float scale = mRenderer.scale;
-
- float cropLeft = -edges.left / scale;
- float cropTop = -edges.top / scale;
- float cropRight = cropLeft + getWidth() / scale;
- float cropBottom = cropTop + getHeight() / scale;
-
- return new RectF(cropLeft, cropTop, cropRight, cropBottom);
- }
-
- public Point getSourceDimensions() {
- return new Point(mRenderer.source.getImageWidth(), mRenderer.source.getImageHeight());
- }
-
- public void setTileSource(TileSource source, Runnable isReadyCallback) {
- super.setTileSource(source, isReadyCallback);
- mCenterX = mRenderer.centerX;
- mCenterY = mRenderer.centerY;
- mRotateMatrix.reset();
- mRotateMatrix.setRotate(mRenderer.rotation);
- mInverseRotateMatrix.reset();
- mInverseRotateMatrix.setRotate(-mRenderer.rotation);
- updateMinScale(getWidth(), getHeight(), source, true);
- }
-
- protected void onSizeChanged(int w, int h, int oldw, int oldh) {
- updateMinScale(w, h, mRenderer.source, false);
- }
-
- public void setScale(float scale) {
- synchronized (mLock) {
- mRenderer.scale = scale;
- }
- }
-
- private void updateMinScale(int w, int h, TileSource source, boolean resetScale) {
- synchronized (mLock) {
- if (resetScale) {
- mRenderer.scale = 1;
- }
- if (source != null) {
- final float[] imageDims = getImageDims();
- final float imageWidth = imageDims[0];
- final float imageHeight = imageDims[1];
- mMinScale = Math.max(w / imageWidth, h / imageHeight);
- mRenderer.scale =
- Math.max(mMinScale, resetScale ? Float.MIN_VALUE : mRenderer.scale);
- }
- }
- }
-
- @Override
- public boolean onScaleBegin(ScaleGestureDetector detector) {
- return true;
- }
-
- @Override
- public boolean onScale(ScaleGestureDetector detector) {
- // Don't need the lock because this will only fire inside of
- // onTouchEvent
- mRenderer.scale *= detector.getScaleFactor();
- mRenderer.scale = Math.max(mMinScale, mRenderer.scale);
- invalidate();
- return true;
- }
-
- @Override
- public void onScaleEnd(ScaleGestureDetector detector) {
- }
-
- /**
- * Offsets wallpaper preview according to the state it will be displayed in upon returning home.
- * @param offset Ranges from 0 to 1, where 0 is the leftmost parallax and 1 is the rightmost.
- */
- public void setParallaxOffset(float offset, RectF crop) {
- offset = Math.max(0, Math.min(offset, 1)); // Make sure the offset is in the correct range.
- float screenWidth = getWidth() / mRenderer.scale;
- mCenterX = screenWidth / 2 + offset * (crop.width() - screenWidth) + crop.left;
- updateCenter();
- }
-
- public void moveToLeft() {
- if (getWidth() == 0 || getHeight() == 0) {
- final ViewTreeObserver observer = getViewTreeObserver();
- observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
- public void onGlobalLayout() {
- moveToLeft();
- getViewTreeObserver().removeOnGlobalLayoutListener(this);
- }
- });
- }
- final RectF edges = mTempEdges;
- getEdgesHelper(edges);
- final float scale = mRenderer.scale;
- mCenterX += Math.ceil(edges.left / scale);
- updateCenter();
- }
-
- private void updateCenter() {
- mRenderer.centerX = Math.round(mCenterX);
- mRenderer.centerY = Math.round(mCenterY);
- }
-
- public void setTouchEnabled(boolean enabled) {
- mTouchEnabled = enabled;
- }
-
- public void setTouchCallback(TouchCallback cb) {
- mTouchCallback = cb;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- int action = event.getActionMasked();
- final boolean pointerUp = action == MotionEvent.ACTION_POINTER_UP;
- final int skipIndex = pointerUp ? event.getActionIndex() : -1;
-
- // Determine focal point
- float sumX = 0, sumY = 0;
- final int count = event.getPointerCount();
- for (int i = 0; i < count; i++) {
- if (skipIndex == i)
- continue;
- sumX += event.getX(i);
- sumY += event.getY(i);
- }
- final int div = pointerUp ? count - 1 : count;
- float x = sumX / div;
- float y = sumY / div;
-
- if (action == MotionEvent.ACTION_DOWN) {
- mFirstX = x;
- mFirstY = y;
- mTouchDownTime = System.currentTimeMillis();
- if (mTouchCallback != null) {
- mTouchCallback.onTouchDown();
- }
- } else if (action == MotionEvent.ACTION_UP) {
- ViewConfiguration config = ViewConfiguration.get(getContext());
-
- float squaredDist = (mFirstX - x) * (mFirstX - x) + (mFirstY - y) * (mFirstY - y);
- float slop = config.getScaledTouchSlop() * config.getScaledTouchSlop();
- long now = System.currentTimeMillis();
- if (mTouchCallback != null) {
- // only do this if it's a small movement
- if (squaredDist < slop &&
- now < mTouchDownTime + ViewConfiguration.getTapTimeout()) {
- mTouchCallback.onTap();
- }
- mTouchCallback.onTouchUp();
- }
- }
-
- if (!mTouchEnabled) {
- return true;
- }
-
- synchronized (mLock) {
- mScaleGestureDetector.onTouchEvent(event);
- switch (action) {
- case MotionEvent.ACTION_MOVE:
- float[] point = mTempPoint;
- point[0] = (mLastX - x) / mRenderer.scale;
- point[1] = (mLastY - y) / mRenderer.scale;
- mInverseRotateMatrix.mapPoints(point);
- mCenterX += point[0];
- mCenterY += point[1];
- updateCenter();
- invalidate();
- break;
- }
- if (mRenderer.source != null) {
- // Adjust position so that the wallpaper covers the entire area
- // of the screen
- final RectF edges = mTempEdges;
- getEdgesHelper(edges);
- final float scale = mRenderer.scale;
-
- float[] coef = mTempCoef;
- coef[0] = 1;
- coef[1] = 1;
- mRotateMatrix.mapPoints(coef);
- float[] adjustment = mTempAdjustment;
- mTempAdjustment[0] = 0;
- mTempAdjustment[1] = 0;
- if (edges.left > 0) {
- adjustment[0] = edges.left / scale;
- } else if (edges.right < getWidth()) {
- adjustment[0] = (edges.right - getWidth()) / scale;
- }
- if (edges.top > 0) {
- adjustment[1] = (float) Math.ceil(edges.top / scale);
- } else if (edges.bottom < getHeight()) {
- adjustment[1] = (edges.bottom - getHeight()) / scale;
- }
- for (int dim = 0; dim <= 1; dim++) {
- if (coef[dim] > 0) adjustment[dim] = (float) Math.ceil(adjustment[dim]);
- }
-
- mInverseRotateMatrix.mapPoints(adjustment);
- mCenterX += adjustment[0];
- mCenterY += adjustment[1];
- updateCenter();
- }
- }
-
- mLastX = x;
- mLastY = y;
- return true;
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/DrawableTileSource.java b/WallpaperPicker/src/com/android/launcher3/DrawableTileSource.java
deleted file mode 100644
index c1f2eff0f..000000000
--- a/WallpaperPicker/src/com/android/launcher3/DrawableTileSource.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-
-import com.android.gallery3d.glrenderer.BasicTexture;
-import com.android.gallery3d.glrenderer.BitmapTexture;
-import com.android.photos.views.TiledImageRenderer;
-
-public class DrawableTileSource implements TiledImageRenderer.TileSource {
- private static final int GL_SIZE_LIMIT = 2048;
- // This must be no larger than half the size of the GL_SIZE_LIMIT
- // due to decodePreview being allowed to be up to 2x the size of the target
- public static final int MAX_PREVIEW_SIZE = GL_SIZE_LIMIT / 2;
-
- private int mTileSize;
- private int mPreviewSize;
- private Drawable mDrawable;
- private BitmapTexture mPreview;
-
- public DrawableTileSource(Context context, Drawable d, int previewSize) {
- mTileSize = TiledImageRenderer.suggestedTileSize(context);
- mDrawable = d;
- mPreviewSize = Math.min(previewSize, MAX_PREVIEW_SIZE);
- }
-
- @Override
- public int getTileSize() {
- return mTileSize;
- }
-
- @Override
- public int getImageWidth() {
- return mDrawable.getIntrinsicWidth();
- }
-
- @Override
- public int getImageHeight() {
- return mDrawable.getIntrinsicHeight();
- }
-
- @Override
- public int getRotation() {
- return 0;
- }
-
- @Override
- public BasicTexture getPreview() {
- if (mPreviewSize == 0) {
- return null;
- }
- if (mPreview == null){
- float width = getImageWidth();
- float height = getImageHeight();
- while (width > MAX_PREVIEW_SIZE || height > MAX_PREVIEW_SIZE) {
- width /= 2;
- height /= 2;
- }
- Bitmap b = Bitmap.createBitmap((int) width, (int) height, Bitmap.Config.ARGB_8888);
- Canvas c = new Canvas(b);
- mDrawable.setBounds(new Rect(0, 0, (int) width, (int) height));
- mDrawable.draw(c);
- c.setBitmap(null);
- mPreview = new BitmapTexture(b);
- }
- return mPreview;
- }
-
- @Override
- public Bitmap getTile(int level, int x, int y, Bitmap bitmap) {
- int tileSize = getTileSize();
- if (bitmap == null) {
- bitmap = Bitmap.createBitmap(tileSize, tileSize, Bitmap.Config.ARGB_8888);
- }
- Canvas c = new Canvas(bitmap);
- Rect bounds = new Rect(0, 0, getImageWidth(), getImageHeight());
- bounds.offset(-x, -y);
- mDrawable.setBounds(bounds);
- mDrawable.draw(c);
- c.setBitmap(null);
- return bitmap;
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/LauncherWallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/LauncherWallpaperPickerActivity.java
deleted file mode 100644
index 091c05462..000000000
--- a/WallpaperPicker/src/com/android/launcher3/LauncherWallpaperPickerActivity.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3;
-
-// TODO: Remove this class
-public class LauncherWallpaperPickerActivity extends WallpaperPickerActivity {
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/launcher3/SavedWallpaperImages.java b/WallpaperPicker/src/com/android/launcher3/SavedWallpaperImages.java
deleted file mode 100644
index 9124e414a..000000000
--- a/WallpaperPicker/src/com/android/launcher3/SavedWallpaperImages.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3;
-
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.util.Log;
-
-import com.android.launcher3.wallpapertileinfo.FileWallpaperInfo;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class SavedWallpaperImages {
-
- private static String TAG = "Launcher3.SavedWallpaperImages";
-
- public static class SavedWallpaperInfo extends FileWallpaperInfo {
-
- private int mDbId;
-
- public SavedWallpaperInfo(int dbId, File target, Drawable thumb) {
- super(target, thumb);
- mDbId = dbId;
- }
-
- @Override
- public void onDelete(WallpaperPickerActivity a) {
- a.getSavedImages().deleteImage(mDbId);
- }
- }
-
- private final ImageDb mDb;
- private final Context mContext;
-
- public SavedWallpaperImages(Context context) {
- // We used to store the saved images in the cache directory, but that meant they'd get
- // deleted sometimes-- move them to the data directory
- ImageDb.moveFromCacheDirectoryIfNecessary(context);
- mDb = new ImageDb(context);
- mContext = context;
- }
-
- public List<SavedWallpaperInfo> loadThumbnailsAndImageIdList() {
- List<SavedWallpaperInfo> result = new ArrayList<SavedWallpaperInfo>();
-
- SQLiteDatabase db = mDb.getReadableDatabase();
- Cursor c = db.query(ImageDb.TABLE_NAME,
- new String[] { ImageDb.COLUMN_ID,
- ImageDb.COLUMN_IMAGE_THUMBNAIL_FILENAME,
- ImageDb.COLUMN_IMAGE_FILENAME}, // cols to return
- null, // select query
- null, // args to select query
- null,
- null,
- ImageDb.COLUMN_ID + " DESC",
- null);
-
- while (c.moveToNext()) {
- String filename = c.getString(1);
- File file = new File(mContext.getFilesDir(), filename);
-
- Bitmap thumb = BitmapFactory.decodeFile(file.getAbsolutePath());
- if (thumb != null) {
- result.add(new SavedWallpaperInfo(c.getInt(0),
- new File(mContext.getFilesDir(), c.getString(2)),
- new BitmapDrawable(mContext.getResources(), thumb)));
- }
- }
- c.close();
- return result;
- }
-
- public void deleteImage(int id) {
- SQLiteDatabase db = mDb.getWritableDatabase();
-
- Cursor result = db.query(ImageDb.TABLE_NAME,
- new String[] { ImageDb.COLUMN_IMAGE_THUMBNAIL_FILENAME,
- ImageDb.COLUMN_IMAGE_FILENAME }, // cols to return
- ImageDb.COLUMN_ID + " = ?", // select query
- new String[] { Integer.toString(id) }, // args to select query
- null,
- null,
- null,
- null);
- if (result.moveToFirst()) {
- new File(mContext.getFilesDir(), result.getString(0)).delete();
- new File(mContext.getFilesDir(), result.getString(1)).delete();
- }
- result.close();
-
- db.delete(ImageDb.TABLE_NAME,
- ImageDb.COLUMN_ID + " = ?", // SELECT query
- new String[] {
- Integer.toString(id) // args to SELECT query
- });
- }
-
- public void writeImage(Bitmap thumbnail, byte[] imageBytes) {
- try {
- File imageFile = File.createTempFile("wallpaper", "", mContext.getFilesDir());
- FileOutputStream imageFileStream =
- mContext.openFileOutput(imageFile.getName(), Context.MODE_PRIVATE);
- imageFileStream.write(imageBytes);
- imageFileStream.close();
-
- File thumbFile = File.createTempFile("wallpaperthumb", "", mContext.getFilesDir());
- FileOutputStream thumbFileStream =
- mContext.openFileOutput(thumbFile.getName(), Context.MODE_PRIVATE);
- thumbnail.compress(Bitmap.CompressFormat.JPEG, 95, thumbFileStream);
- thumbFileStream.close();
-
- SQLiteDatabase db = mDb.getWritableDatabase();
- ContentValues values = new ContentValues();
- values.put(ImageDb.COLUMN_IMAGE_THUMBNAIL_FILENAME, thumbFile.getName());
- values.put(ImageDb.COLUMN_IMAGE_FILENAME, imageFile.getName());
- db.insert(ImageDb.TABLE_NAME, null, values);
- } catch (IOException e) {
- Log.e(TAG, "Failed writing images to storage " + e);
- }
- }
-
- private static class ImageDb extends SQLiteOpenHelper {
- final static int DB_VERSION = 1;
- final static String TABLE_NAME = "saved_wallpaper_images";
- final static String COLUMN_ID = "id";
- final static String COLUMN_IMAGE_THUMBNAIL_FILENAME = "image_thumbnail";
- final static String COLUMN_IMAGE_FILENAME = "image";
-
- public ImageDb(Context context) {
- super(context, context.getDatabasePath(LauncherFiles.WALLPAPER_IMAGES_DB).getPath(),
- null, DB_VERSION);
- }
-
- public static void moveFromCacheDirectoryIfNecessary(Context context) {
- // We used to store the saved images in the cache directory, but that meant they'd get
- // deleted sometimes-- move them to the data directory
- File oldSavedImagesFile = new File(context.getCacheDir(),
- LauncherFiles.WALLPAPER_IMAGES_DB);
- File savedImagesFile = context.getDatabasePath(LauncherFiles.WALLPAPER_IMAGES_DB);
- if (oldSavedImagesFile.exists()) {
- oldSavedImagesFile.renameTo(savedImagesFile);
- }
- }
- @Override
- public void onCreate(SQLiteDatabase database) {
- database.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" +
- COLUMN_ID + " INTEGER NOT NULL, " +
- COLUMN_IMAGE_THUMBNAIL_FILENAME + " TEXT NOT NULL, " +
- COLUMN_IMAGE_FILENAME + " TEXT NOT NULL, " +
- "PRIMARY KEY (" + COLUMN_ID + " ASC) " +
- ");");
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- if (oldVersion != newVersion) {
- // Delete all the records; they'll be repopulated as this is a cache
- db.execSQL("DELETE FROM " + TABLE_NAME);
- }
- }
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/ToggleOnTapCallback.java b/WallpaperPicker/src/com/android/launcher3/ToggleOnTapCallback.java
deleted file mode 100644
index 2bc48ee17..000000000
--- a/WallpaperPicker/src/com/android/launcher3/ToggleOnTapCallback.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.android.launcher3;
-
-import android.view.View;
-import android.view.ViewPropertyAnimator;
-import android.view.animation.AccelerateInterpolator;
-import android.view.animation.DecelerateInterpolator;
-
-import com.android.launcher3.util.Thunk;
-
-/**
- * Callback that toggles the visibility of the target view when crop view is tapped.
- */
-public class ToggleOnTapCallback implements CropView.TouchCallback {
-
- @Thunk final View mViewtoToggle;
-
- private ViewPropertyAnimator mAnim;
- private boolean mIgnoreNextTap;
-
- public ToggleOnTapCallback(View viewtoHide) {
- mViewtoToggle = viewtoHide;
- }
-
- @Override
- public void onTouchDown() {
- if (mAnim != null) {
- mAnim.cancel();
- }
- if (mViewtoToggle.getAlpha() == 1f) {
- mIgnoreNextTap = true;
- }
-
- mAnim = mViewtoToggle.animate();
- mAnim.alpha(0f)
- .setDuration(150)
- .withEndAction(new Runnable() {
- public void run() {
- mViewtoToggle.setVisibility(View.INVISIBLE);
- }
- });
-
- mAnim.setInterpolator(new AccelerateInterpolator(0.75f));
- mAnim.start();
- }
-
- @Override
- public void onTouchUp() {
- mIgnoreNextTap = false;
- }
-
- @Override
- public void onTap() {
- boolean ignoreTap = mIgnoreNextTap;
- mIgnoreNextTap = false;
- if (!ignoreTap) {
- if (mAnim != null) {
- mAnim.cancel();
- }
- mViewtoToggle.setVisibility(View.VISIBLE);
- mAnim = mViewtoToggle.animate();
- mAnim.alpha(1f)
- .setDuration(150)
- .setInterpolator(new DecelerateInterpolator(0.75f));
- mAnim.start();
- }
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
deleted file mode 100644
index 3554ca79e..000000000
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3;
-
-import android.annotation.TargetApi;
-import android.app.ActionBar;
-import android.app.Activity;
-import android.app.WallpaperManager;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Matrix;
-import android.graphics.Point;
-import android.graphics.RectF;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.Message;
-import android.util.Log;
-import android.view.Display;
-import android.view.View;
-import android.widget.Toast;
-
-import com.android.gallery3d.common.BitmapCropTask;
-import com.android.gallery3d.common.BitmapUtils;
-import com.android.gallery3d.common.Utils;
-import com.android.launcher3.base.BaseActivity;
-import com.android.launcher3.util.Thunk;
-import com.android.launcher3.util.WallpaperUtils;
-import com.android.photos.BitmapRegionTileSource;
-import com.android.photos.BitmapRegionTileSource.BitmapSource;
-import com.android.photos.BitmapRegionTileSource.BitmapSource.InBitmapProvider;
-import com.android.photos.views.TiledImageRenderer.TileSource;
-
-import java.util.Collections;
-import java.util.Set;
-import java.util.WeakHashMap;
-
-public class WallpaperCropActivity extends BaseActivity implements Handler.Callback {
- private static final String LOGTAG = "Launcher3.CropActivity";
-
- private static final int MSG_LOAD_IMAGE = 1;
-
- protected CropView mCropView;
- protected View mProgressView;
- protected View mSetWallpaperButton;
-
- private HandlerThread mLoaderThread;
- private Handler mLoaderHandler;
- @Thunk LoadRequest mCurrentLoadRequest;
- private byte[] mTempStorageForDecoding = new byte[16 * 1024];
- // A weak-set of reusable bitmaps
- @Thunk Set<Bitmap> mReusableBitmaps =
- Collections.newSetFromMap(new WeakHashMap<Bitmap, Boolean>());
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- mLoaderThread = new HandlerThread("wallpaper_loader");
- mLoaderThread.start();
- mLoaderHandler = new Handler(mLoaderThread.getLooper(), this);
-
- init();
- if (!enableRotation()) {
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- }
- }
-
- protected void init() {
- setContentView(R.layout.wallpaper_cropper);
-
- mCropView = (CropView) findViewById(R.id.cropView);
- mProgressView = findViewById(R.id.loading);
-
- Intent cropIntent = getIntent();
- final Uri imageUri = cropIntent.getData();
-
- if (imageUri == null) {
- Log.e(LOGTAG, "No URI passed in intent, exiting WallpaperCropActivity");
- finish();
- return;
- }
-
- // Action bar
- // Show the custom action bar view
- final ActionBar actionBar = getActionBar();
- actionBar.setCustomView(R.layout.actionbar_set_wallpaper);
- actionBar.getCustomView().setOnClickListener(
- new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- actionBar.hide();
- // Never fade on finish because we return to the app that started us (e.g.
- // Photos), not the home screen.
- cropImageAndSetWallpaper(imageUri, null, false /* shouldFadeOutOnFinish */);
- }
- });
- mSetWallpaperButton = findViewById(R.id.set_wallpaper_button);
-
- // Load image in background
- final BitmapRegionTileSource.UriBitmapSource bitmapSource =
- new BitmapRegionTileSource.UriBitmapSource(getContext(), imageUri);
- mSetWallpaperButton.setEnabled(false);
- Runnable onLoad = new Runnable() {
- public void run() {
- if (bitmapSource.getLoadingState() != BitmapSource.State.LOADED) {
- Toast.makeText(getContext(), R.string.wallpaper_load_fail,
- Toast.LENGTH_LONG).show();
- finish();
- } else {
- mSetWallpaperButton.setEnabled(true);
- }
- }
- };
- setCropViewTileSource(bitmapSource, true, false, null, onLoad);
- }
-
- @Override
- public void onDestroy() {
- if (mCropView != null) {
- mCropView.destroy();
- }
- if (mLoaderThread != null) {
- mLoaderThread.quit();
- }
- super.onDestroy();
- }
-
- /**
- * This is called on {@link #mLoaderThread}
- */
- @Override
- public boolean handleMessage(Message msg) {
- if (msg.what == MSG_LOAD_IMAGE) {
- final LoadRequest req = (LoadRequest) msg.obj;
- final boolean loadSuccess;
-
- if (req.src == null) {
- Drawable defaultWallpaper = WallpaperManager.getInstance(this)
- .getBuiltInDrawable(mCropView.getWidth(), mCropView.getHeight(),
- false, 0.5f, 0.5f);
-
- if (defaultWallpaper == null) {
- loadSuccess = false;
- Log.w(LOGTAG, "Null default wallpaper encountered.");
- } else {
- loadSuccess = true;
- req.result = new DrawableTileSource(this,
- defaultWallpaper, DrawableTileSource.MAX_PREVIEW_SIZE);
- }
- } else {
- try {
- req.src.loadInBackground(new InBitmapProvider() {
-
- @Override
- public Bitmap forPixelCount(int count) {
- Bitmap bitmapToReuse = null;
- // Find the smallest bitmap that satisfies the pixel count limit
- synchronized (mReusableBitmaps) {
- int currentBitmapSize = Integer.MAX_VALUE;
- for (Bitmap b : mReusableBitmaps) {
- int bitmapSize = b.getWidth() * b.getHeight();
- if ((bitmapSize >= count) && (bitmapSize < currentBitmapSize)) {
- bitmapToReuse = b;
- currentBitmapSize = bitmapSize;
- }
- }
-
- if (bitmapToReuse != null) {
- mReusableBitmaps.remove(bitmapToReuse);
- }
- }
- return bitmapToReuse;
- }
- });
- } catch (SecurityException securityException) {
- if (isActivityDestroyed()) {
- // Temporarily granted permissions are revoked when the activity
- // finishes, potentially resulting in a SecurityException here.
- // Even though {@link #isDestroyed} might also return true in different
- // situations where the configuration changes, we are fine with
- // catching these cases here as well.
- return true;
- } else {
- // otherwise it had a different cause and we throw it further
- throw securityException;
- }
- }
-
- req.result = new BitmapRegionTileSource(getContext(), req.src,
- mTempStorageForDecoding);
- loadSuccess = req.src.getLoadingState() == BitmapSource.State.LOADED;
- }
-
- runOnUiThread(new Runnable() {
-
- @Override
- public void run() {
- if (req == mCurrentLoadRequest) {
- onLoadRequestComplete(req, loadSuccess);
- } else {
- addReusableBitmap(req.result);
- }
- }
- });
- return true;
- }
- return false;
- }
-
- @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
- public boolean isActivityDestroyed() {
- return Utilities.ATLEAST_JB_MR1 && isDestroyed();
- }
-
- @Thunk void addReusableBitmap(TileSource src) {
- synchronized (mReusableBitmaps) {
- if (Utilities.ATLEAST_KITKAT && src instanceof BitmapRegionTileSource) {
- Bitmap preview = ((BitmapRegionTileSource) src).getBitmap();
- if (preview != null && preview.isMutable()) {
- mReusableBitmaps.add(preview);
- }
- }
- }
- }
-
- protected void onLoadRequestComplete(LoadRequest req, boolean success) {
- mCurrentLoadRequest = null;
- if (success) {
- TileSource oldSrc = mCropView.getTileSource();
- mCropView.setTileSource(req.result, null);
- mCropView.setTouchEnabled(req.touchEnabled);
- if (req.moveToLeft) {
- mCropView.moveToLeft();
- }
- if (req.scaleAndOffsetProvider != null) {
- TileSource src = req.result;
- Point wallpaperSize = WallpaperUtils.getDefaultWallpaperSize(
- getResources(), getWindowManager());
- RectF crop = Utils.getMaxCropRect(src.getImageWidth(), src.getImageHeight(),
- wallpaperSize.x, wallpaperSize.y, false /* leftAligned */);
- mCropView.setScale(req.scaleAndOffsetProvider.getScale(wallpaperSize, crop));
- mCropView.setParallaxOffset(req.scaleAndOffsetProvider.getParallaxOffset(), crop);
- }
-
- // Free last image
- if (oldSrc != null) {
- // Call yield instead of recycle, as we only want to free GL resource.
- // We can still reuse the bitmap for decoding any other image.
- oldSrc.getPreview().yield();
- }
- addReusableBitmap(oldSrc);
- }
- if (req.postExecute != null) {
- req.postExecute.run();
- }
- mProgressView.setVisibility(View.GONE);
- }
-
- @TargetApi(Build.VERSION_CODES.KITKAT)
- public final void setCropViewTileSource(BitmapSource bitmapSource, boolean touchEnabled,
- boolean moveToLeft, CropViewScaleAndOffsetProvider scaleAndOffsetProvider,
- Runnable postExecute) {
- final LoadRequest req = new LoadRequest();
- req.moveToLeft = moveToLeft;
- req.src = bitmapSource;
- req.touchEnabled = touchEnabled;
- req.postExecute = postExecute;
- req.scaleAndOffsetProvider = scaleAndOffsetProvider;
- mCurrentLoadRequest = req;
-
- // Remove any pending requests
- mLoaderHandler.removeMessages(MSG_LOAD_IMAGE);
- Message.obtain(mLoaderHandler, MSG_LOAD_IMAGE, req).sendToTarget();
-
- // We don't want to show the spinner every time we load an image, because that would be
- // annoying; instead, only start showing the spinner if loading the image has taken
- // longer than 1 sec (ie 1000 ms)
- mProgressView.postDelayed(new Runnable() {
- public void run() {
- if (mCurrentLoadRequest == req) {
- mProgressView.setVisibility(View.VISIBLE);
- }
- }
- }, 1000);
- }
-
-
- public boolean enableRotation() {
- return getResources().getBoolean(R.bool.allow_rotation);
- }
-
- public void setWallpaper(Uri uri, boolean shouldFadeOutOnFinish) {
- int rotation = BitmapUtils.getRotationFromExif(getContext(), uri);
- BitmapCropTask cropTask = new BitmapCropTask(
- getContext(), uri, null, rotation, 0, 0, true, false, null);
- BitmapCropTask.OnEndCropHandler onEndCrop = new CropAndFinishHandler(
- cropTask.getImageBounds(), shouldFadeOutOnFinish);
- cropTask.setOnEndCropHandler(onEndCrop);
- cropTask.setNoCrop(true);
- cropTask.execute();
- }
-
- public void cropImageAndSetWallpaper(Resources res, int resId, boolean shouldFadeOutOnFinish) {
- // crop this image and scale it down to the default wallpaper size for
- // this device
- int rotation = BitmapUtils.getRotationFromExif(res, resId, this);
- Point inSize = mCropView.getSourceDimensions();
- Point outSize = WallpaperUtils.getDefaultWallpaperSize(getResources(),
- getWindowManager());
- RectF crop = Utils.getMaxCropRect(
- inSize.x, inSize.y, outSize.x, outSize.y, false);
- // Passing 0, 0 will cause launcher to revert to using the
- // default wallpaper size
- CropAndFinishHandler onEndCrop = new CropAndFinishHandler(new Point(0, 0),
- shouldFadeOutOnFinish);
- BitmapCropTask cropTask = new BitmapCropTask(getContext(), res, resId,
- crop, rotation, outSize.x, outSize.y, true, false, onEndCrop);
- cropTask.execute();
- }
-
- @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
- public void cropImageAndSetWallpaper(Uri uri,
- BitmapCropTask.OnBitmapCroppedHandler onBitmapCroppedHandler,
- boolean shouldFadeOutOnFinish) {
- // Give some feedback so user knows something is happening.
- mProgressView.setVisibility(View.VISIBLE);
-
- boolean centerCrop = getResources().getBoolean(R.bool.center_crop);
- // Get the crop
- boolean ltr = mCropView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
-
- Display d = getWindowManager().getDefaultDisplay();
-
- Point displaySize = new Point();
- d.getSize(displaySize);
- boolean isPortrait = displaySize.x < displaySize.y;
-
- Point defaultWallpaperSize = WallpaperUtils.getDefaultWallpaperSize(getResources(),
- getWindowManager());
- // Get the crop
- RectF cropRect = mCropView.getCrop();
-
- Point inSize = mCropView.getSourceDimensions();
-
- int cropRotation = mCropView.getImageRotation();
- float cropScale = mCropView.getWidth() / (float) cropRect.width();
-
-
- Matrix rotateMatrix = new Matrix();
- rotateMatrix.setRotate(cropRotation);
- float[] rotatedInSize = new float[] { inSize.x, inSize.y };
- rotateMatrix.mapPoints(rotatedInSize);
- rotatedInSize[0] = Math.abs(rotatedInSize[0]);
- rotatedInSize[1] = Math.abs(rotatedInSize[1]);
-
-
- // due to rounding errors in the cropview renderer the edges can be slightly offset
- // therefore we ensure that the boundaries are sanely defined
- cropRect.left = Math.max(0, cropRect.left);
- cropRect.right = Math.min(rotatedInSize[0], cropRect.right);
- cropRect.top = Math.max(0, cropRect.top);
- cropRect.bottom = Math.min(rotatedInSize[1], cropRect.bottom);
-
- // ADJUST CROP WIDTH
- // Extend the crop all the way to the right, for parallax
- // (or all the way to the left, in RTL)
- float extraSpace;
- if (centerCrop) {
- extraSpace = 2f * Math.min(rotatedInSize[0] - cropRect.right, cropRect.left);
- } else {
- extraSpace = ltr ? rotatedInSize[0] - cropRect.right : cropRect.left;
- }
- // Cap the amount of extra width
- float maxExtraSpace = defaultWallpaperSize.x / cropScale - cropRect.width();
- extraSpace = Math.min(extraSpace, maxExtraSpace);
-
- if (centerCrop) {
- cropRect.left -= extraSpace / 2f;
- cropRect.right += extraSpace / 2f;
- } else {
- if (ltr) {
- cropRect.right += extraSpace;
- } else {
- cropRect.left -= extraSpace;
- }
- }
-
- // ADJUST CROP HEIGHT
- if (isPortrait) {
- cropRect.bottom = cropRect.top + defaultWallpaperSize.y / cropScale;
- } else { // LANDSCAPE
- float extraPortraitHeight =
- defaultWallpaperSize.y / cropScale - cropRect.height();
- float expandHeight =
- Math.min(Math.min(rotatedInSize[1] - cropRect.bottom, cropRect.top),
- extraPortraitHeight / 2);
- cropRect.top -= expandHeight;
- cropRect.bottom += expandHeight;
- }
-
- final int outWidth = (int) Math.round(cropRect.width() * cropScale);
- final int outHeight = (int) Math.round(cropRect.height() * cropScale);
- CropAndFinishHandler onEndCrop = new CropAndFinishHandler(new Point(outWidth, outHeight),
- shouldFadeOutOnFinish);
-
- BitmapCropTask cropTask = new BitmapCropTask(getContext(), uri,
- cropRect, cropRotation, outWidth, outHeight, true, false, onEndCrop);
- if (onBitmapCroppedHandler != null) {
- cropTask.setOnBitmapCropped(onBitmapCroppedHandler);
- }
- cropTask.execute();
- }
-
- public class CropAndFinishHandler implements BitmapCropTask.OnEndCropHandler {
- private final Point mBounds;
- private boolean mShouldFadeOutOnFinish;
-
- /**
- * @param shouldFadeOutOnFinish Whether the wallpaper picker should override the default
- * exit animation to fade out instead. This should only be set to true if the wallpaper
- * preview will exactly match the actual wallpaper on the page we are returning to.
- */
- public CropAndFinishHandler(Point bounds, boolean shouldFadeOutOnFinish) {
- mBounds = bounds;
- mShouldFadeOutOnFinish = shouldFadeOutOnFinish;
- }
-
- @Override
- public void run(boolean cropSucceeded) {
- WallpaperUtils.saveWallpaperDimensions(mBounds.x, mBounds.y,
- WallpaperCropActivity.this);
- setResult(Activity.RESULT_OK);
- finish();
- if (cropSucceeded && mShouldFadeOutOnFinish) {
- overridePendingTransition(0, R.anim.fade_out);
- }
- }
- }
-
- static class LoadRequest {
- BitmapSource src;
- boolean touchEnabled;
- boolean moveToLeft;
- Runnable postExecute;
- CropViewScaleAndOffsetProvider scaleAndOffsetProvider;
-
- TileSource result;
- }
-
- public interface CropViewScaleAndOffsetProvider {
- float getScale(Point wallpaperSize, RectF crop);
- float getParallaxOffset();
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
deleted file mode 100644
index 27d60f8b8..000000000
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
+++ /dev/null
@@ -1,653 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3;
-
-import android.animation.LayoutTransition;
-import android.annotation.SuppressLint;
-import android.app.ActionBar;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.net.Uri;
-import android.os.Bundle;
-import android.util.Log;
-import android.util.Pair;
-import android.view.ActionMode;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnLayoutChangeListener;
-import android.view.View.OnLongClickListener;
-import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
-import android.view.ViewTreeObserver.OnGlobalLayoutListener;
-import android.view.WindowManager;
-import android.widget.HorizontalScrollView;
-import android.widget.LinearLayout;
-
-import com.android.launcher3.util.Thunk;
-import com.android.launcher3.wallpapertileinfo.DefaultWallpaperInfo;
-import com.android.launcher3.wallpapertileinfo.FileWallpaperInfo;
-import com.android.launcher3.wallpapertileinfo.LiveWallpaperInfo;
-import com.android.launcher3.wallpapertileinfo.PickImageInfo;
-import com.android.launcher3.wallpapertileinfo.ResourceWallpaperInfo;
-import com.android.launcher3.wallpapertileinfo.ThirdPartyWallpaperInfo;
-import com.android.launcher3.wallpapertileinfo.UriWallpaperInfo;
-import com.android.launcher3.wallpapertileinfo.WallpaperTileInfo;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-public class WallpaperPickerActivity extends WallpaperCropActivity
- implements OnClickListener, OnLongClickListener, ActionMode.Callback {
- static final String TAG = "Launcher.WallpaperPickerActivity";
-
- public static final int IMAGE_PICK = 5;
- public static final int PICK_WALLPAPER_THIRD_PARTY_ACTIVITY = 6;
- /** An Intent extra used when opening the wallpaper picker from the workspace overlay. */
- public static final String EXTRA_WALLPAPER_OFFSET = "com.android.launcher3.WALLPAPER_OFFSET";
- private static final String TEMP_WALLPAPER_TILES = "TEMP_WALLPAPER_TILES";
- private static final String SELECTED_INDEX = "SELECTED_INDEX";
- private static final int FLAG_POST_DELAY_MILLIS = 200;
-
- @Thunk
- View mSelectedTile;
-
- @Thunk LinearLayout mWallpapersView;
- @Thunk HorizontalScrollView mWallpaperScrollContainer;
- @Thunk View mWallpaperStrip;
-
- @Thunk ActionMode mActionMode;
-
- ArrayList<Uri> mTempWallpaperTiles = new ArrayList<Uri>();
- private SavedWallpaperImages mSavedImages;
- @Thunk int mSelectedIndex = -1;
- private float mWallpaperParallaxOffset;
-
- /**
- * 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);
- }
-
- @Thunk 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
- protected void onLoadRequestComplete(LoadRequest req, boolean success) {
- super.onLoadRequestComplete(req, success);
- if (success) {
- setSystemWallpaperVisiblity(false);
- }
- }
-
- /**
- * called by onCreate; this is sub-classed to overwrite WallpaperCropActivity
- */
- protected void init() {
- setContentView(R.layout.wallpaper_picker);
-
- mCropView = (CropView) findViewById(R.id.cropView);
- mCropView.setVisibility(View.INVISIBLE);
-
- mProgressView = findViewById(R.id.loading);
- mWallpaperScrollContainer = (HorizontalScrollView) findViewById(R.id.wallpaper_scroll_container);
- mWallpaperStrip = findViewById(R.id.wallpaper_strip);
- mCropView.setTouchCallback(new ToggleOnTapCallback(mWallpaperStrip));
-
- mWallpaperParallaxOffset = getIntent().getFloatExtra(EXTRA_WALLPAPER_OFFSET, 0);
-
- mWallpapersView = (LinearLayout) findViewById(R.id.wallpaper_list);
- // Populate the saved wallpapers
- mSavedImages = new SavedWallpaperImages(getContext());
- populateWallpapers(mWallpapersView, mSavedImages.loadThumbnailsAndImageIdList(), true);
-
- // Populate the built-in wallpapers
- ArrayList<WallpaperTileInfo> wallpapers = findBundledWallpapers();
- populateWallpapers(mWallpapersView, wallpapers, false);
-
- // Load live wallpapers asynchronously
- new LiveWallpaperInfo.LoaderTask(this) {
-
- @Override
- protected void onPostExecute(List<LiveWallpaperInfo> result) {
- populateWallpapers((LinearLayout) findViewById(R.id.live_wallpaper_list),
- result, false);
- initializeScrollForRtl();
- updateTileIndices();
- }
- }.execute();
-
- // Populate the third-party wallpaper pickers
- populateWallpapers((LinearLayout) findViewById(R.id.third_party_wallpaper_list),
- ThirdPartyWallpaperInfo.getAll(this), false /* addLongPressHandler */);
-
- // Add a tile for the Gallery
- LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list);
- masterWallpaperList.addView(
- createTileView(masterWallpaperList, new PickImageInfo(), false), 0);
-
- // Select the first item; wait for a layout pass so that we initialize the dimensions of
- // cropView or the defaultWallpaperView first
- mCropView.addOnLayoutChangeListener(new OnLayoutChangeListener() {
- @Override
- public void onLayoutChange(View v, int left, int top, int right, int bottom,
- int oldLeft, int oldTop, int oldRight, int oldBottom) {
- if ((right - left) > 0 && (bottom - top) > 0) {
- if (mSelectedIndex >= 0 && mSelectedIndex < mWallpapersView.getChildCount()) {
- onClick(mWallpapersView.getChildAt(mSelectedIndex));
- setSystemWallpaperVisiblity(false);
- }
- v.removeOnLayoutChangeListener(this);
- }
- }
- });
-
- updateTileIndices();
-
- // Update the scroll for RTL
- initializeScrollForRtl();
-
- // Create smooth layout transitions for when items are deleted
- final LayoutTransition transitioner = new LayoutTransition();
- transitioner.setDuration(200);
- transitioner.setStartDelay(LayoutTransition.CHANGE_DISAPPEARING, 0);
- transitioner.setAnimator(LayoutTransition.DISAPPEARING, null);
- mWallpapersView.setLayoutTransition(transitioner);
-
- // Action bar
- // Show the custom action bar view
- final ActionBar actionBar = getActionBar();
- actionBar.setCustomView(R.layout.actionbar_set_wallpaper);
- actionBar.getCustomView().setOnClickListener(
- new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // Ensure that a tile is slelected and loaded.
- if (mSelectedTile != null && mCropView.getTileSource() != null) {
- // Prevent user from selecting any new tile.
- mWallpaperStrip.setVisibility(View.GONE);
- actionBar.hide();
-
- 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();
- }
- }
- });
- mSetWallpaperButton = findViewById(R.id.set_wallpaper_button);
- }
-
- /**
- * Called when a wallpaper tile is clicked
- */
- @Override
- public void onClick(View v) {
- if (mActionMode != null) {
- // When CAB is up, clicking toggles the item instead
- if (v.isLongClickable()) {
- onLongClick(v);
- }
- return;
- }
- setWallpaperButtonEnabled(true);
- WallpaperTileInfo info = (WallpaperTileInfo) v.getTag();
- if (info.isSelectable() && v.getVisibility() == View.VISIBLE) {
- selectTile(v);
- }
- info.onClick(this);
- }
-
- /**
- * Called when a view is long clicked
- */
- @Override
- public boolean onLongClick(View v) {
- CheckableFrameLayout c = (CheckableFrameLayout) v;
- c.toggle();
-
- if (mActionMode != null) {
- mActionMode.invalidate();
- } else {
- // Start the CAB using the ActionMode.Callback defined below
- mActionMode = startActionMode(this);
- int childCount = mWallpapersView.getChildCount();
- for (int i = 0; i < childCount; i++) {
- mWallpapersView.getChildAt(i).setSelected(false);
- }
- }
- return true;
- }
-
- public void setWallpaperButtonEnabled(boolean enabled) {
- mSetWallpaperButton.setEnabled(enabled);
- }
-
- public float getWallpaperParallaxOffset() {
- return mWallpaperParallaxOffset;
- }
-
- public void selectTile(View v) {
- if (mSelectedTile != null) {
- mSelectedTile.setSelected(false);
- mSelectedTile = null;
- }
- mSelectedTile = v;
- v.setSelected(true);
- mSelectedIndex = mWallpapersView.indexOfChild(v);
- // TODO: Remove this once the accessibility framework and
- // services have better support for selection state.
- v.announceForAccessibility(
- getContext().getString(R.string.announce_selection, v.getContentDescription()));
- }
-
- @Thunk void initializeScrollForRtl() {
- if (Utilities.isRtl(getResources())) {
- final ViewTreeObserver observer = mWallpaperScrollContainer.getViewTreeObserver();
- observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
- public void onGlobalLayout() {
- LinearLayout masterWallpaperList =
- (LinearLayout) findViewById(R.id.master_wallpaper_list);
- mWallpaperScrollContainer.scrollTo(masterWallpaperList.getWidth(), 0);
- mWallpaperScrollContainer.getViewTreeObserver().removeOnGlobalLayoutListener(this);
- }
- });
- }
- }
-
- public void onStop() {
- super.onStop();
- mWallpaperStrip = findViewById(R.id.wallpaper_strip);
- if (mWallpaperStrip.getAlpha() < 1f) {
- mWallpaperStrip.setAlpha(1f);
- mWallpaperStrip.setVisibility(View.VISIBLE);
- }
- }
-
- public void onSaveInstanceState(Bundle outState) {
- outState.putParcelableArrayList(TEMP_WALLPAPER_TILES, mTempWallpaperTiles);
- outState.putInt(SELECTED_INDEX, mSelectedIndex);
- }
-
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- ArrayList<Uri> uris = savedInstanceState.getParcelableArrayList(TEMP_WALLPAPER_TILES);
- for (Uri uri : uris) {
- addTemporaryWallpaperTile(uri, true);
- }
- mSelectedIndex = savedInstanceState.getInt(SELECTED_INDEX, -1);
- }
-
- @Thunk void updateTileIndices() {
- LinearLayout masterWallpaperList = (LinearLayout) findViewById(R.id.master_wallpaper_list);
- final int childCount = masterWallpaperList.getChildCount();
- final Resources res = getResources();
-
- // Do two passes; the first pass gets the total number of tiles
- int numTiles = 0;
- for (int passNum = 0; passNum < 2; passNum++) {
- int tileIndex = 0;
- for (int i = 0; i < childCount; i++) {
- View child = masterWallpaperList.getChildAt(i);
- LinearLayout subList;
-
- int subListStart;
- int subListEnd;
- if (child.getTag() instanceof WallpaperTileInfo) {
- subList = masterWallpaperList;
- subListStart = i;
- subListEnd = i + 1;
- } else { // if (child instanceof LinearLayout) {
- subList = (LinearLayout) child;
- subListStart = 0;
- subListEnd = subList.getChildCount();
- }
-
- for (int j = subListStart; j < subListEnd; j++) {
- WallpaperTileInfo info = (WallpaperTileInfo) subList.getChildAt(j).getTag();
- if (info.isNamelessWallpaper()) {
- if (passNum == 0) {
- numTiles++;
- } else {
- CharSequence label = res.getString(
- R.string.wallpaper_accessibility_name, ++tileIndex, numTiles);
- info.onIndexUpdated(label);
- }
- }
- }
- }
- }
- }
-
- private void addTemporaryWallpaperTile(final Uri uri, boolean fromRestore) {
-
- // Add a tile for the image picked from Gallery, reusing the existing tile if there is one.
- View imageTile = null;
- int indexOfExistingTile = 0;
- for (; indexOfExistingTile < mWallpapersView.getChildCount(); indexOfExistingTile++) {
- View thumbnail = mWallpapersView.getChildAt(indexOfExistingTile);
- Object tag = thumbnail.getTag();
- if (tag instanceof UriWallpaperInfo && ((UriWallpaperInfo) tag).mUri.equals(uri)) {
- imageTile = thumbnail;
- break;
- }
- }
- final UriWallpaperInfo info;
- if (imageTile != null) {
- // Always move the existing wallpaper to the front so user can see it without scrolling.
- mWallpapersView.removeViewAt(indexOfExistingTile);
- info = (UriWallpaperInfo) imageTile.getTag();
- } else {
- // This is the first time this temporary wallpaper has been added
- info = new UriWallpaperInfo(uri);
- imageTile = createTileView(mWallpapersView, info, true);
- mTempWallpaperTiles.add(uri);
- }
- mWallpapersView.addView(imageTile, 0);
- info.loadThumbnaleAsync(this);
-
- updateTileIndices();
- if (!fromRestore) {
- onClick(imageTile);
- }
- }
-
- @Thunk void populateWallpapers(ViewGroup parent, List<? extends WallpaperTileInfo> wallpapers,
- boolean addLongPressHandler) {
- for (WallpaperTileInfo info : wallpapers) {
- parent.addView(createTileView(parent, info, addLongPressHandler));
- }
- }
-
- private View createTileView(ViewGroup parent, WallpaperTileInfo info, boolean addLongPress) {
- View view = info.createView(this, getLayoutInflater(), parent);
- view.setTag(info);
-
- if (addLongPress) {
- view.setOnLongClickListener(this);
-
- // Enable stylus button to also trigger long click.
- final StylusEventHelper stylusEventHelper =
- new StylusEventHelper(new SimpleOnStylusPressListener(view), view);
- view.setOnTouchListener(new View.OnTouchListener() {
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public boolean onTouch(View view, MotionEvent event) {
- return stylusEventHelper.onMotionEvent(event);
- }
- });
- }
- view.setOnClickListener(this);
- return view;
- }
-
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == IMAGE_PICK && resultCode == Activity.RESULT_OK) {
- if (data != null && data.getData() != null) {
- Uri uri = data.getData();
- addTemporaryWallpaperTile(uri, false);
- }
- } else if (requestCode == PICK_WALLPAPER_THIRD_PARTY_ACTIVITY
- && resultCode == Activity.RESULT_OK) {
- // Something was set on the third-party activity.
- setResult(Activity.RESULT_OK);
- finish();
- }
- }
-
- private ArrayList<WallpaperTileInfo> findBundledWallpapers() {
- final PackageManager pm = getContext().getPackageManager();
- final ArrayList<WallpaperTileInfo> bundled = new ArrayList<WallpaperTileInfo>(24);
-
- Partner partner = Partner.get(pm);
- if (partner != null) {
- final Resources partnerRes = partner.getResources();
- final int resId = partnerRes.getIdentifier(Partner.RES_WALLPAPERS, "array",
- partner.getPackageName());
- if (resId != 0) {
- addWallpapers(bundled, partnerRes, partner.getPackageName(), resId);
- }
-
- // Add system wallpapers
- File systemDir = partner.getWallpaperDirectory();
- if (systemDir != null && systemDir.isDirectory()) {
- for (File file : systemDir.listFiles()) {
- if (!file.isFile()) {
- continue;
- }
- String name = file.getName();
- int dotPos = name.lastIndexOf('.');
- String extension = "";
- if (dotPos >= -1) {
- extension = name.substring(dotPos);
- name = name.substring(0, dotPos);
- }
-
- if (name.endsWith("_small")) {
- // it is a thumbnail
- continue;
- }
-
- File thumbnail = new File(systemDir, name + "_small" + extension);
- Bitmap thumb = BitmapFactory.decodeFile(thumbnail.getAbsolutePath());
- if (thumb != null) {
- bundled.add(new FileWallpaperInfo(
- file, new BitmapDrawable(getResources(), thumb)));
- }
- }
- }
- }
-
- Pair<ApplicationInfo, Integer> r = getWallpaperArrayResourceId();
- if (r != null) {
- try {
- Resources wallpaperRes = getContext().getPackageManager()
- .getResourcesForApplication(r.first);
- addWallpapers(bundled, wallpaperRes, r.first.packageName, r.second);
- } catch (PackageManager.NameNotFoundException e) {
- }
- }
-
- if (partner == null || !partner.hideDefaultWallpaper()) {
- // Add an entry for the default wallpaper (stored in system resources)
- WallpaperTileInfo defaultWallpaperInfo = DefaultWallpaperInfo.get(this);
- if (defaultWallpaperInfo != null) {
- bundled.add(0, defaultWallpaperInfo);
- }
- }
- return bundled;
- }
-
- public Pair<ApplicationInfo, Integer> getWallpaperArrayResourceId() {
- // Context.getPackageName() may return the "original" package name,
- // com.android.launcher3; Resources needs the real package name,
- // com.android.launcher3. So we ask Resources for what it thinks the
- // package name should be.
- final String packageName = getResources().getResourcePackageName(R.array.wallpapers);
- try {
- ApplicationInfo info = getContext().getPackageManager().getApplicationInfo(packageName, 0);
- return new Pair<ApplicationInfo, Integer>(info, R.array.wallpapers);
- } catch (PackageManager.NameNotFoundException e) {
- return null;
- }
- }
-
- private void addWallpapers(ArrayList<WallpaperTileInfo> known, Resources res,
- String packageName, int listResId) {
- final String[] extras = res.getStringArray(listResId);
- for (String extra : extras) {
- int resId = res.getIdentifier(extra, "drawable", packageName);
- if (resId != 0) {
- final int thumbRes = res.getIdentifier(extra + "_small", "drawable", packageName);
-
- if (thumbRes != 0) {
- ResourceWallpaperInfo wallpaperInfo =
- new ResourceWallpaperInfo(res, resId, res.getDrawable(thumbRes));
- known.add(wallpaperInfo);
- // Log.d(TAG, "add: [" + packageName + "]: " + extra + " (" + res + ")");
- }
- } else {
- Log.e(TAG, "Couldn't find wallpaper " + extra);
- }
- }
- }
-
- public SavedWallpaperImages getSavedImages() {
- return mSavedImages;
- }
-
- public void startActivityForResultSafely(Intent intent, int requestCode) {
- Utilities.startActivityForResultSafely(getActivity(), intent, requestCode);
- }
-
- @Override
- public boolean enableRotation() {
- return super.enableRotation() ||
- getContentResolver().call(LauncherSettings.Settings.CONTENT_URI,
- LauncherSettings.Settings.METHOD_GET_BOOLEAN,
- Utilities.ALLOW_ROTATION_PREFERENCE_KEY, new Bundle())
- .getBoolean(LauncherSettings.Settings.EXTRA_VALUE);
- }
-
- // CAB for deleting items
- /**
- * Called when the action mode is created; startActionMode() was called
- */
- @Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- // Inflate a menu resource providing context menu items
- MenuInflater inflater = mode.getMenuInflater();
- inflater.inflate(R.menu.cab_delete_wallpapers, menu);
- return true;
- }
-
- /**
- * Called each time the action mode is shown. Always called after onCreateActionMode,
- * but may be called multiple times if the mode is invalidated.
- */
- @Override
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- int childCount = mWallpapersView.getChildCount();
- int numCheckedItems = 0;
- for (int i = 0; i < childCount; i++) {
- CheckableFrameLayout c = (CheckableFrameLayout) mWallpapersView.getChildAt(i);
- if (c.isChecked()) {
- numCheckedItems++;
- }
- }
-
- if (numCheckedItems == 0) {
- mode.finish();
- return true;
- } else {
- mode.setTitle(getResources().getQuantityString(
- R.plurals.number_of_items_selected, numCheckedItems, numCheckedItems));
- return true;
- }
- }
-
- /**
- * Called when the user selects a contextual menu item
- */
- @Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- int itemId = item.getItemId();
- 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);
- if (c.isChecked()) {
- 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;
- } else {
- return false;
- }
- }
-
- /**
- * Called when the user exits the action mode
- */
- @Override
- public void onDestroyActionMode(ActionMode mode) {
- int childCount = mWallpapersView.getChildCount();
- for (int i = 0; i < childCount; i++) {
- CheckableFrameLayout c = (CheckableFrameLayout) mWallpapersView.getChildAt(i);
- c.setChecked(false);
- }
- if (mSelectedTile != null) {
- mSelectedTile.setSelected(true);
- }
- mActionMode = null;
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/base/BaseActivity.java b/WallpaperPicker/src/com/android/launcher3/base/BaseActivity.java
deleted file mode 100644
index f8541188f..000000000
--- a/WallpaperPicker/src/com/android/launcher3/base/BaseActivity.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.android.launcher3.base;
-
-import android.app.Activity;
-import android.content.Context;
-
-/**
- * A wrapper over {@link Activity} which allows to override some methods.
- * The base implementation can change from an Activity to a Fragment (or any other custom
- * implementation), Callers should not assume that the base class extends Context, instead use
- * either {@link #getContext} or {@link #getActivity}
- */
-public class BaseActivity extends Activity {
-
- public Context getContext() {
- return this;
- }
-
- public Activity getActivity() {
- return this;
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DefaultWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DefaultWallpaperInfo.java
deleted file mode 100644
index cf4c35f2b..000000000
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DefaultWallpaperInfo.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package com.android.launcher3.wallpapertileinfo;
-
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.app.WallpaperManager;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Point;
-import android.graphics.RectF;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.util.Log;
-
-import com.android.gallery3d.common.BitmapUtils;
-import com.android.launcher3.LauncherFiles;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.WallpaperCropActivity.CropViewScaleAndOffsetProvider;
-import com.android.launcher3.WallpaperPickerActivity;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-public class DefaultWallpaperInfo extends DrawableThumbWallpaperInfo {
-
- private static final String TAG = "DefaultWallpaperInfo";
-
- public DefaultWallpaperInfo(Drawable thumb) {
- super(thumb);
- }
-
- @Override
- public void onClick(WallpaperPickerActivity a) {
- a.setCropViewTileSource(null, false, false, new CropViewScaleAndOffsetProvider() {
-
- @Override
- public float getScale(Point wallpaperSize, RectF crop) {
- return 1f;
- }
-
- @Override
- public float getParallaxOffset() {
- return 0.5f;
- }
- }, null);
- }
-
- @Override
- public void onSave(WallpaperPickerActivity a) {
- try {
- WallpaperManager.getInstance(a.getContext()).clear();
- a.setResult(Activity.RESULT_OK);
- } catch (IOException e) {
- Log.w(TAG, "Setting wallpaper to default threw exception", e);
- }
- a.finish();
- }
-
- @Override
- public boolean isSelectable() {
- return true;
- }
-
- @Override
- public boolean isNamelessWallpaper() {
- return true;
- }
-
- /**
- * @return the system default wallpaper tile or null
- */
- public static WallpaperTileInfo get(Context context) {
- return Utilities.ATLEAST_KITKAT
- ? getDefaultWallpaper(context) : getPreKKDefaultWallpaperInfo(context);
- }
-
- @TargetApi(Build.VERSION_CODES.KITKAT)
- private static DefaultWallpaperInfo getDefaultWallpaper(Context context) {
- File defaultThumbFile = getDefaultThumbFile(context);
- Bitmap thumb = null;
- boolean defaultWallpaperExists = false;
- Resources res = context.getResources();
-
- if (defaultThumbFile.exists()) {
- thumb = BitmapFactory.decodeFile(defaultThumbFile.getAbsolutePath());
- defaultWallpaperExists = true;
- } else {
- Point defaultThumbSize = getDefaultThumbSize(res);
- Drawable wallpaperDrawable = WallpaperManager.getInstance(context).getBuiltInDrawable(
- defaultThumbSize.x, defaultThumbSize.y, true, 0.5f, 0.5f);
- if (wallpaperDrawable != null) {
- thumb = Bitmap.createBitmap(
- defaultThumbSize.x, defaultThumbSize.y, Bitmap.Config.ARGB_8888);
- Canvas c = new Canvas(thumb);
- wallpaperDrawable.setBounds(0, 0, defaultThumbSize.x, defaultThumbSize.y);
- wallpaperDrawable.draw(c);
- c.setBitmap(null);
- }
- if (thumb != null) {
- defaultWallpaperExists = saveDefaultWallpaperThumb(context, thumb);
- }
- }
- if (defaultWallpaperExists) {
- return new DefaultWallpaperInfo(new BitmapDrawable(res, thumb));
- }
- return null;
- }
-
- private static ResourceWallpaperInfo getPreKKDefaultWallpaperInfo(Context context) {
- Resources sysRes = Resources.getSystem();
- Resources res = context.getResources();
-
- int resId = sysRes.getIdentifier("default_wallpaper", "drawable", "android");
-
- File defaultThumbFile = getDefaultThumbFile(context);
- Bitmap thumb = null;
- boolean defaultWallpaperExists = false;
- if (defaultThumbFile.exists()) {
- thumb = BitmapFactory.decodeFile(defaultThumbFile.getAbsolutePath());
- defaultWallpaperExists = true;
- } else {
- int rotation = BitmapUtils.getRotationFromExif(res, resId, context);
- thumb = createThumbnail(context, null, null, sysRes, resId, rotation, false);
- if (thumb != null) {
- defaultWallpaperExists = saveDefaultWallpaperThumb(context, thumb);
- }
- }
- if (defaultWallpaperExists) {
- return new ResourceWallpaperInfo(sysRes, resId, new BitmapDrawable(res, thumb));
- }
- return null;
- }
-
- private static File getDefaultThumbFile(Context context) {
- return new File(context.getFilesDir(), Build.VERSION.SDK_INT
- + "_" + LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL);
- }
-
- private static boolean saveDefaultWallpaperThumb(Context c, Bitmap b) {
- // Delete old thumbnails.
- new File(c.getFilesDir(), LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL_OLD).delete();
- new File(c.getFilesDir(), LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL).delete();
-
- for (int i = Build.VERSION_CODES.JELLY_BEAN; i < Build.VERSION.SDK_INT; i++) {
- new File(c.getFilesDir(), i + "_" + LauncherFiles.DEFAULT_WALLPAPER_THUMBNAIL).delete();
- }
- File f = getDefaultThumbFile(c);
- try {
- f.createNewFile();
- FileOutputStream thumbFileStream = c.openFileOutput(f.getName(), Context.MODE_PRIVATE);
- b.compress(Bitmap.CompressFormat.JPEG, 95, thumbFileStream);
- thumbFileStream.close();
- return true;
- } catch (IOException e) {
- Log.e(TAG, "Error while writing bitmap to file " + e);
- f.delete();
- return false;
- }
- }
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DrawableThumbWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DrawableThumbWallpaperInfo.java
deleted file mode 100644
index a55375ddf..000000000
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/DrawableThumbWallpaperInfo.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.android.launcher3.wallpapertileinfo;
-
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import com.android.launcher3.R;
-
-/**
- * WallpaperTileInfo which uses drawable as the thumbnail.
- */
-public abstract class DrawableThumbWallpaperInfo extends WallpaperTileInfo {
-
- private final Drawable mThumb;
-
- DrawableThumbWallpaperInfo(Drawable thumb) {
- mThumb = thumb;
- }
-
- @Override
- public View createView(Context context, LayoutInflater inflator, ViewGroup parent) {
- mView = inflator.inflate(R.layout.wallpaper_picker_item, parent, false);
- setThumb(mThumb);
- return mView;
- }
-
- public void setThumb(Drawable thumb) {
- if (mView != null && thumb != null) {
- thumb.setDither(true);
- ImageView image = (ImageView) mView.findViewById(R.id.wallpaper_image);
- image.setImageDrawable(thumb);
- }
- }
-}
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/FileWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/FileWallpaperInfo.java
deleted file mode 100644
index f6a46fc48..000000000
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/FileWallpaperInfo.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.android.launcher3.wallpapertileinfo;
-
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-
-import com.android.launcher3.WallpaperPickerActivity;
-import com.android.photos.BitmapRegionTileSource;
-import com.android.photos.BitmapRegionTileSource.BitmapSource;
-
-import java.io.File;
-
-public class FileWallpaperInfo extends DrawableThumbWallpaperInfo {
-
- private final File mFile;
-
- public FileWallpaperInfo(File target, Drawable thumb) {
- super(thumb);
- mFile = target;
- }
-
- @Override
- public void onClick(final WallpaperPickerActivity a) {
- a.setWallpaperButtonEnabled(false);
- final BitmapRegionTileSource.FilePathBitmapSource bitmapSource =
- new BitmapRegionTileSource.FilePathBitmapSource(mFile.getAbsolutePath());
- a.setCropViewTileSource(bitmapSource, false, true, null, new Runnable() {
-
- @Override
- public void run() {
- if (bitmapSource.getLoadingState() == BitmapSource.State.LOADED) {
- a.setWallpaperButtonEnabled(true);
- }
- }
- });
- }
-
- @Override
- public void onSave(WallpaperPickerActivity a) {
- boolean shouldFadeOutOnFinish = a.getWallpaperParallaxOffset() == 0f;
- a.setWallpaper(Uri.fromFile(mFile), shouldFadeOutOnFinish);
- }
-
- @Override
- public boolean isSelectable() {
- return true;
- }
-
- @Override
- public boolean isNamelessWallpaper() {
- return true;
- }
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/LiveWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/LiveWallpaperInfo.java
deleted file mode 100644
index d800ba6e1..000000000
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/LiveWallpaperInfo.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.android.launcher3.wallpapertileinfo;
-
-import android.app.WallpaperInfo;
-import android.app.WallpaperManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.graphics.drawable.Drawable;
-import android.os.AsyncTask;
-import android.service.wallpaper.WallpaperService;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.android.launcher3.R;
-import com.android.launcher3.WallpaperPickerActivity;
-
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-import java.text.Collator;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-public class LiveWallpaperInfo extends WallpaperTileInfo {
-
- private static final String TAG = "LiveWallpaperTile";
-
- private Drawable mThumbnail;
- private WallpaperInfo mInfo;
-
- public LiveWallpaperInfo(Drawable thumbnail, WallpaperInfo info, Intent intent) {
- mThumbnail = thumbnail;
- mInfo = info;
- }
-
- @Override
- public void onClick(WallpaperPickerActivity a) {
- Intent preview = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
- preview.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
- mInfo.getComponent());
- a.startActivityForResultSafely(preview,
- WallpaperPickerActivity.PICK_WALLPAPER_THIRD_PARTY_ACTIVITY);
- }
-
- @Override
- public View createView(Context context, LayoutInflater inflator, ViewGroup parent) {
- mView = inflator.inflate(R.layout.wallpaper_picker_live_wallpaper_item, parent, false);
-
- ImageView image = (ImageView) mView.findViewById(R.id.wallpaper_image);
- ImageView icon = (ImageView) mView.findViewById(R.id.wallpaper_icon);
- if (mThumbnail != null) {
- image.setImageDrawable(mThumbnail);
- icon.setVisibility(View.GONE);
- } else {
- icon.setImageDrawable(mInfo.loadIcon(context.getPackageManager()));
- icon.setVisibility(View.VISIBLE);
- }
-
- TextView label = (TextView) mView.findViewById(R.id.wallpaper_item_label);
- label.setText(mInfo.loadLabel(context.getPackageManager()));
- return mView;
- }
-
- /**
- * An async task to load various live wallpaper tiles.
- */
- public static class LoaderTask extends AsyncTask<Void, Void, List<LiveWallpaperInfo>> {
- private final Context mContext;
-
- public LoaderTask(Context context) {
- mContext = context;
- }
-
- @Override
- protected List<LiveWallpaperInfo> doInBackground(Void... params) {
- final PackageManager pm = mContext.getPackageManager();
-
- List<ResolveInfo> list = pm.queryIntentServices(
- new Intent(WallpaperService.SERVICE_INTERFACE),
- PackageManager.GET_META_DATA);
-
- Collections.sort(list, new Comparator<ResolveInfo>() {
- final Collator mCollator = Collator.getInstance();
-
- public int compare(ResolveInfo info1, ResolveInfo info2) {
- return mCollator.compare(info1.loadLabel(pm), info2.loadLabel(pm));
- }
- });
-
- List<LiveWallpaperInfo> result = new ArrayList<>();
-
- for (ResolveInfo resolveInfo : list) {
- WallpaperInfo info = null;
- try {
- info = new WallpaperInfo(mContext, resolveInfo);
- } catch (XmlPullParserException | IOException e) {
- Log.w(TAG, "Skipping wallpaper " + resolveInfo.serviceInfo, e);
- continue;
- }
-
-
- Drawable thumb = info.loadThumbnail(pm);
- Intent launchIntent = new Intent(WallpaperService.SERVICE_INTERFACE);
- launchIntent.setClassName(info.getPackageName(), info.getServiceName());
- result.add(new LiveWallpaperInfo(thumb, info, launchIntent));
- }
-
- return result;
- }
- }
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/PickImageInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/PickImageInfo.java
deleted file mode 100644
index 9d8cc1cd7..000000000
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/PickImageInfo.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.android.launcher3.wallpapertileinfo;
-
-import android.Manifest;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
-import android.graphics.Bitmap;
-import android.graphics.PorterDuff;
-import android.os.Process;
-import android.provider.MediaStore;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import com.android.launcher3.R;
-import com.android.launcher3.WallpaperPickerActivity;
-
-public class PickImageInfo extends WallpaperTileInfo {
-
- @Override
- public void onClick(WallpaperPickerActivity a) {
- Intent intent = new Intent(Intent.ACTION_GET_CONTENT).setType("image/*");
- a.startActivityForResultSafely(intent, WallpaperPickerActivity.IMAGE_PICK);
- }
-
- @Override
- public View createView(Context context, LayoutInflater inflator, ViewGroup parent) {
- mView = inflator.inflate(R.layout.wallpaper_picker_image_picker_item, parent, false);
-
- // Make its background the last photo taken on external storage
- Bitmap lastPhoto = getThumbnailOfLastPhoto(context);
- if (lastPhoto != null) {
- ImageView galleryThumbnailBg =
- (ImageView) mView.findViewById(R.id.wallpaper_image);
- galleryThumbnailBg.setImageBitmap(lastPhoto);
- int colorOverlay = context.getResources().getColor(R.color.wallpaper_picker_translucent_gray);
- galleryThumbnailBg.setColorFilter(colorOverlay, PorterDuff.Mode.SRC_ATOP);
- }
-
- mView.setTag(this);
- return mView;
- }
-
- private Bitmap getThumbnailOfLastPhoto(Context context) {
- boolean canReadExternalStorage = context.checkPermission(
- Manifest.permission.READ_EXTERNAL_STORAGE, Process.myPid(), Process.myUid()) ==
- PackageManager.PERMISSION_GRANTED;
-
- if (!canReadExternalStorage) {
- // MediaStore.Images.Media.EXTERNAL_CONTENT_URI requires
- // the READ_EXTERNAL_STORAGE permission
- return null;
- }
-
- Cursor cursor = MediaStore.Images.Media.query(context.getContentResolver(),
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
- new String[] { MediaStore.Images.ImageColumns._ID,
- MediaStore.Images.ImageColumns.DATE_TAKEN},
- null, null, MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC LIMIT 1");
-
- Bitmap thumb = null;
- if (cursor != null) {
- if (cursor.moveToNext()) {
- int id = cursor.getInt(0);
- thumb = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(),
- id, MediaStore.Images.Thumbnails.MINI_KIND, null);
- }
- cursor.close();
- }
- return thumb;
- }
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java
deleted file mode 100644
index d63714c22..000000000
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ResourceWallpaperInfo.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.android.launcher3.wallpapertileinfo;
-
-import android.content.res.Resources;
-import android.graphics.Point;
-import android.graphics.RectF;
-import android.graphics.drawable.Drawable;
-
-import com.android.launcher3.WallpaperCropActivity.CropViewScaleAndOffsetProvider;
-import com.android.launcher3.WallpaperPickerActivity;
-import com.android.photos.BitmapRegionTileSource;
-import com.android.photos.BitmapRegionTileSource.BitmapSource;
-
-public class ResourceWallpaperInfo extends DrawableThumbWallpaperInfo {
-
- private final Resources mResources;
- private final int mResId;
-
- public ResourceWallpaperInfo(Resources res, int resId, Drawable thumb) {
- super(thumb);
- mResources = res;
- mResId = resId;
- }
-
- @Override
- public void onClick(final WallpaperPickerActivity a) {
- a.setWallpaperButtonEnabled(false);
- final BitmapRegionTileSource.ResourceBitmapSource bitmapSource =
- new BitmapRegionTileSource.ResourceBitmapSource(mResources, mResId, a);
- a.setCropViewTileSource(bitmapSource, false, false, new CropViewScaleAndOffsetProvider() {
-
- @Override
- public float getScale(Point wallpaperSize, RectF crop) {
- return wallpaperSize.x /crop.width();
- }
-
- @Override
- public float getParallaxOffset() {
- return a.getWallpaperParallaxOffset();
- }
- }, new Runnable() {
-
- @Override
- public void run() {
- if (bitmapSource.getLoadingState() == BitmapSource.State.LOADED) {
- a.setWallpaperButtonEnabled(true);
- }
- }
- });
- }
-
- @Override
- public void onSave(WallpaperPickerActivity a) {
- a.cropImageAndSetWallpaper(mResources, mResId, true /* shouldFadeOutOnFinish */);
- }
-
- @Override
- public boolean isSelectable() {
- return true;
- }
-
- @Override
- public boolean isNamelessWallpaper() {
- return true;
- }
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ThirdPartyWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ThirdPartyWallpaperInfo.java
deleted file mode 100644
index 5e2538f84..000000000
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/ThirdPartyWallpaperInfo.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.android.launcher3.wallpapertileinfo;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import com.android.launcher3.R;
-import com.android.launcher3.WallpaperPickerActivity;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-
-public class ThirdPartyWallpaperInfo extends WallpaperTileInfo {
-
- private final ResolveInfo mResolveInfo;
- private final int mIconSize;
-
- public ThirdPartyWallpaperInfo(ResolveInfo resolveInfo, int iconSize) {
- mResolveInfo = resolveInfo;
- mIconSize = iconSize;
- }
-
- @Override
- public void onClick(WallpaperPickerActivity a) {
- final ComponentName itemComponentName = new ComponentName(
- mResolveInfo.activityInfo.packageName, mResolveInfo.activityInfo.name);
- Intent launchIntent = new Intent(Intent.ACTION_SET_WALLPAPER)
- .setComponent(itemComponentName)
- .putExtra(WallpaperPickerActivity.EXTRA_WALLPAPER_OFFSET,
- a.getWallpaperParallaxOffset());
- a.startActivityForResultSafely(
- launchIntent, WallpaperPickerActivity.PICK_WALLPAPER_THIRD_PARTY_ACTIVITY);
- }
-
- @Override
- public View createView(Context context, LayoutInflater inflator, ViewGroup parent) {
- mView = inflator.inflate(R.layout.wallpaper_picker_third_party_item, parent, false);
-
- TextView label = (TextView) mView.findViewById(R.id.wallpaper_item_label);
- label.setText(mResolveInfo.loadLabel(context.getPackageManager()));
- Drawable icon = mResolveInfo.loadIcon(context.getPackageManager());
- icon.setBounds(new Rect(0, 0, mIconSize, mIconSize));
- label.setCompoundDrawables(null, icon, null, null);
- return mView;
- }
-
- public static List<ThirdPartyWallpaperInfo> getAll(Context context) {
- ArrayList<ThirdPartyWallpaperInfo> result = new ArrayList<>();
- int iconSize = context.getResources().getDimensionPixelSize(R.dimen.wallpaperItemIconSize);
-
- final PackageManager pm = context.getPackageManager();
- Intent pickImageIntent = new Intent(Intent.ACTION_GET_CONTENT).setType("image/*");
- HashSet<String> excludePackages = new HashSet<>();
- // Exclude packages which contain an image picker
- for (ResolveInfo info : pm.queryIntentActivities(pickImageIntent, 0)) {
- excludePackages.add(info.activityInfo.packageName);
- }
- excludePackages.add(context.getPackageName());
- excludePackages.add("com.android.wallpaper.livepicker");
-
- final Intent pickWallpaperIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
- for (ResolveInfo info : pm.queryIntentActivities(pickWallpaperIntent, 0)) {
- if (!excludePackages.contains(info.activityInfo.packageName)) {
- result.add(new ThirdPartyWallpaperInfo(info, iconSize));
- }
- }
- return result;
- }
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/UriWallpaperInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/UriWallpaperInfo.java
deleted file mode 100644
index 180eb93e0..000000000
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/UriWallpaperInfo.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package com.android.launcher3.wallpapertileinfo;
-
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.util.Log;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import com.android.gallery3d.common.BitmapCropTask;
-import com.android.gallery3d.common.BitmapUtils;
-import com.android.launcher3.R;
-import com.android.launcher3.WallpaperPickerActivity;
-import com.android.photos.BitmapRegionTileSource;
-import com.android.photos.BitmapRegionTileSource.BitmapSource;
-
-public class UriWallpaperInfo extends DrawableThumbWallpaperInfo {
-
- private static final String TAG = "UriWallpaperInfo";
-
- public final Uri mUri;
-
- public UriWallpaperInfo(Uri uri) {
- super(null);
- mUri = uri;
- }
-
- @Override
- public void onClick(final WallpaperPickerActivity a) {
- a.setWallpaperButtonEnabled(false);
- final BitmapRegionTileSource.UriBitmapSource bitmapSource =
- new BitmapRegionTileSource.UriBitmapSource(a.getContext(), mUri);
- a.setCropViewTileSource(bitmapSource, true, false, null, new Runnable() {
-
- @Override
- public void run() {
- if (bitmapSource.getLoadingState() == BitmapSource.State.LOADED) {
- a.selectTile(mView);
- a.setWallpaperButtonEnabled(true);
- } else {
- ViewGroup parent = (ViewGroup) mView.getParent();
- if (parent != null) {
- parent.removeView(mView);
- Toast.makeText(a.getContext(), R.string.image_load_fail,
- Toast.LENGTH_SHORT).show();
- }
- }
- }
- });
- }
-
- @Override
- public void onSave(final WallpaperPickerActivity a) {
- BitmapCropTask.OnBitmapCroppedHandler h = new BitmapCropTask.OnBitmapCroppedHandler() {
- public void onBitmapCropped(byte[] imageBytes) {
- // rotation is set to 0 since imageBytes has already been correctly rotated
- Bitmap thumb = createThumbnail(a, null, imageBytes, null, 0, 0, true);
- a.getSavedImages().writeImage(thumb, imageBytes);
- }
- };
- boolean shouldFadeOutOnFinish = a.getWallpaperParallaxOffset() == 0f;
- a.cropImageAndSetWallpaper(mUri, h, shouldFadeOutOnFinish);
- }
-
- @Override
- public boolean isSelectable() {
- return true;
- }
-
- @Override
- public boolean isNamelessWallpaper() {
- return true;
- }
-
- public void loadThumbnaleAsync(final WallpaperPickerActivity activity) {
- mView.setVisibility(View.GONE);
- new AsyncTask<Void, Void, Bitmap>() {
- protected Bitmap doInBackground(Void...args) {
- try {
- int rotation = BitmapUtils.getRotationFromExif(activity, mUri);
- return createThumbnail(activity, mUri, null, null, 0, rotation, false);
- } catch (SecurityException securityException) {
- if (activity.isActivityDestroyed()) {
- // Temporarily granted permissions are revoked when the activity
- // finishes, potentially resulting in a SecurityException here.
- // Even though {@link #isDestroyed} might also return true in different
- // situations where the configuration changes, we are fine with
- // catching these cases here as well.
- cancel(false);
- } else {
- // otherwise it had a different cause and we throw it further
- throw securityException;
- }
- return null;
- }
- }
- protected void onPostExecute(Bitmap thumb) {
- if (!isCancelled() && thumb != null) {
- setThumb(new BitmapDrawable(activity.getResources(), thumb));
- mView.setVisibility(View.VISIBLE);
- } else {
- Log.e(TAG, "Error loading thumbnail for uri=" + mUri);
- }
- }
- }.execute();
- }
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/WallpaperTileInfo.java b/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/WallpaperTileInfo.java
deleted file mode 100644
index 5fc317c3a..000000000
--- a/WallpaperPicker/src/com/android/launcher3/wallpapertileinfo/WallpaperTileInfo.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.android.launcher3.wallpapertileinfo;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Matrix;
-import android.graphics.Point;
-import android.graphics.RectF;
-import android.net.Uri;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.android.gallery3d.common.BitmapCropTask;
-import com.android.gallery3d.common.Utils;
-import com.android.launcher3.R;
-import com.android.launcher3.WallpaperPickerActivity;
-
-public abstract class WallpaperTileInfo {
-
- protected View mView;
-
- public void onClick(WallpaperPickerActivity a) {}
-
- public void onSave(WallpaperPickerActivity a) {}
-
- public void onDelete(WallpaperPickerActivity a) {}
-
- public boolean isSelectable() { return false; }
-
- public boolean isNamelessWallpaper() { return false; }
-
- public void onIndexUpdated(CharSequence label) {
- if (isNamelessWallpaper()) {
- mView.setContentDescription(label);
- }
- }
-
- public abstract View createView(Context context, LayoutInflater inflator, ViewGroup parent);
-
- protected static Point getDefaultThumbSize(Resources res) {
- return new Point(res.getDimensionPixelSize(R.dimen.wallpaperThumbnailWidth),
- res.getDimensionPixelSize(R.dimen.wallpaperThumbnailHeight));
-
- }
-
- protected static Bitmap createThumbnail(Context context, Uri uri, byte[] imageBytes,
- Resources res, int resId, int rotation, boolean leftAligned) {
- Point size = getDefaultThumbSize(context.getResources());
- int width = size.x;
- int height = size.y;
-
- BitmapCropTask cropTask;
- if (uri != null) {
- cropTask = new BitmapCropTask(
- context, uri, null, rotation, width, height, false, true, null);
- } else if (imageBytes != null) {
- cropTask = new BitmapCropTask(
- imageBytes, null, rotation, width, height, false, true, null);
- } else {
- cropTask = new BitmapCropTask(
- context, res, resId, null, rotation, width, height, false, true, null);
- }
- Point bounds = cropTask.getImageBounds();
- if (bounds == null || bounds.x == 0 || bounds.y == 0) {
- return null;
- }
-
- Matrix rotateMatrix = new Matrix();
- rotateMatrix.setRotate(rotation);
- float[] rotatedBounds = new float[] { bounds.x, bounds.y };
- rotateMatrix.mapPoints(rotatedBounds);
- rotatedBounds[0] = Math.abs(rotatedBounds[0]);
- rotatedBounds[1] = Math.abs(rotatedBounds[1]);
-
- RectF cropRect = Utils.getMaxCropRect(
- (int) rotatedBounds[0], (int) rotatedBounds[1], width, height, leftAligned);
- cropTask.setCropBounds(cropRect);
-
- if (cropTask.cropBitmap()) {
- return cropTask.getCroppedBitmap();
- } else {
- return null;
- }
- }
-
-} \ No newline at end of file
diff --git a/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java b/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java
deleted file mode 100644
index 4267c4123..000000000
--- a/WallpaperPicker/src/com/android/photos/BitmapRegionTileSource.java
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.photos;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.BitmapRegionDecoder;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Rect;
-import android.net.Uri;
-import android.opengl.GLUtils;
-import android.os.Build;
-import android.util.Log;
-
-import com.android.gallery3d.common.BitmapUtils;
-import com.android.gallery3d.common.ExifOrientation;
-import com.android.gallery3d.common.Utils;
-import com.android.gallery3d.glrenderer.BasicTexture;
-import com.android.gallery3d.glrenderer.BitmapTexture;
-import com.android.photos.views.TiledImageRenderer;
-
-import java.io.BufferedInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-
-interface SimpleBitmapRegionDecoder {
- int getWidth();
- int getHeight();
- Bitmap decodeRegion(Rect wantRegion, BitmapFactory.Options options);
-}
-
-class SimpleBitmapRegionDecoderWrapper implements SimpleBitmapRegionDecoder {
- BitmapRegionDecoder mDecoder;
- private SimpleBitmapRegionDecoderWrapper(BitmapRegionDecoder decoder) {
- mDecoder = decoder;
- }
- public static SimpleBitmapRegionDecoderWrapper newInstance(
- String pathName, boolean isShareable) {
- try {
- BitmapRegionDecoder d = BitmapRegionDecoder.newInstance(pathName, isShareable);
- if (d != null) {
- return new SimpleBitmapRegionDecoderWrapper(d);
- }
- } catch (IOException e) {
- Log.w("BitmapRegionTileSource", "getting decoder failed for path " + pathName, e);
- return null;
- }
- return null;
- }
- public static SimpleBitmapRegionDecoderWrapper newInstance(
- InputStream is, boolean isShareable) {
- try {
- BitmapRegionDecoder d = BitmapRegionDecoder.newInstance(is, isShareable);
- if (d != null) {
- return new SimpleBitmapRegionDecoderWrapper(d);
- }
- } catch (IOException e) {
- Log.w("BitmapRegionTileSource", "getting decoder failed", e);
- return null;
- }
- return null;
- }
- public int getWidth() {
- return mDecoder.getWidth();
- }
- public int getHeight() {
- return mDecoder.getHeight();
- }
- public Bitmap decodeRegion(Rect wantRegion, BitmapFactory.Options options) {
- return mDecoder.decodeRegion(wantRegion, options);
- }
-}
-
-class DumbBitmapRegionDecoder implements SimpleBitmapRegionDecoder {
- Bitmap mBuffer;
- Canvas mTempCanvas;
- Paint mTempPaint;
- private DumbBitmapRegionDecoder(Bitmap b) {
- mBuffer = b;
- }
- public static DumbBitmapRegionDecoder newInstance(String pathName) {
- Bitmap b = BitmapFactory.decodeFile(pathName);
- if (b != null) {
- return new DumbBitmapRegionDecoder(b);
- }
- return null;
- }
- public static DumbBitmapRegionDecoder newInstance(InputStream is) {
- Bitmap b = BitmapFactory.decodeStream(is);
- if (b != null) {
- return new DumbBitmapRegionDecoder(b);
- }
- return null;
- }
- public int getWidth() {
- return mBuffer.getWidth();
- }
- public int getHeight() {
- return mBuffer.getHeight();
- }
- public Bitmap decodeRegion(Rect wantRegion, BitmapFactory.Options options) {
- if (mTempCanvas == null) {
- mTempCanvas = new Canvas();
- mTempPaint = new Paint();
- mTempPaint.setFilterBitmap(true);
- }
- int sampleSize = Math.max(options.inSampleSize, 1);
- Bitmap newBitmap = Bitmap.createBitmap(
- wantRegion.width() / sampleSize,
- wantRegion.height() / sampleSize,
- Bitmap.Config.ARGB_8888);
- mTempCanvas.setBitmap(newBitmap);
- mTempCanvas.save();
- mTempCanvas.scale(1f / sampleSize, 1f / sampleSize);
- mTempCanvas.drawBitmap(mBuffer, -wantRegion.left, -wantRegion.top, mTempPaint);
- mTempCanvas.restore();
- mTempCanvas.setBitmap(null);
- return newBitmap;
- }
-}
-
-/**
- * A {@link com.android.photos.views.TiledImageRenderer.TileSource} using
- * {@link BitmapRegionDecoder} to wrap a local file
- */
-@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
-public class BitmapRegionTileSource implements TiledImageRenderer.TileSource {
-
- private static final String TAG = "BitmapRegionTileSource";
-
- private static final int GL_SIZE_LIMIT = 2048;
- // This must be no larger than half the size of the GL_SIZE_LIMIT
- // due to decodePreview being allowed to be up to 2x the size of the target
- private static final int MAX_PREVIEW_SIZE = GL_SIZE_LIMIT / 2;
-
- public static abstract class BitmapSource {
- private SimpleBitmapRegionDecoder mDecoder;
- private Bitmap mPreview;
- private int mRotation;
- public enum State { NOT_LOADED, LOADED, ERROR_LOADING };
- private State mState = State.NOT_LOADED;
-
- /** Returns whether loading was successful. */
- public boolean loadInBackground(InBitmapProvider bitmapProvider) {
- mRotation = getExifRotation();
- mDecoder = loadBitmapRegionDecoder();
- if (mDecoder == null) {
- mState = State.ERROR_LOADING;
- return false;
- } else {
- int width = mDecoder.getWidth();
- int height = mDecoder.getHeight();
-
- BitmapFactory.Options opts = new BitmapFactory.Options();
- opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
- opts.inPreferQualityOverSpeed = true;
-
- float scale = (float) MAX_PREVIEW_SIZE / Math.max(width, height);
- opts.inSampleSize = BitmapUtils.computeSampleSizeLarger(scale);
- opts.inJustDecodeBounds = false;
- opts.inMutable = true;
-
- if (bitmapProvider != null) {
- int expectedPixles = (width / opts.inSampleSize) * (height / opts.inSampleSize);
- Bitmap reusableBitmap = bitmapProvider.forPixelCount(expectedPixles);
- if (reusableBitmap != null) {
- // Try loading with reusable bitmap
- opts.inBitmap = reusableBitmap;
- try {
- mPreview = loadPreviewBitmap(opts);
- } catch (IllegalArgumentException e) {
- Log.d(TAG, "Unable to reuse bitmap", e);
- opts.inBitmap = null;
- mPreview = null;
- }
- }
- }
- if (mPreview == null) {
- mPreview = loadPreviewBitmap(opts);
- }
- if (mPreview == null) {
- mState = State.ERROR_LOADING;
- return false;
- }
-
- // Verify that the bitmap can be used on GL surface
- try {
- GLUtils.getInternalFormat(mPreview);
- GLUtils.getType(mPreview);
- mState = State.LOADED;
- } catch (IllegalArgumentException e) {
- Log.d(TAG, "Image cannot be rendered on a GL surface", e);
- mState = State.ERROR_LOADING;
- }
- return mState == State.LOADED;
- }
- }
-
- public State getLoadingState() {
- return mState;
- }
-
- public SimpleBitmapRegionDecoder getBitmapRegionDecoder() {
- return mDecoder;
- }
-
- public Bitmap getPreviewBitmap() {
- return mPreview;
- }
-
- public int getRotation() {
- return mRotation;
- }
-
- public abstract int getExifRotation();
- public abstract SimpleBitmapRegionDecoder loadBitmapRegionDecoder();
- public abstract Bitmap loadPreviewBitmap(BitmapFactory.Options options);
-
- public interface InBitmapProvider {
- Bitmap forPixelCount(int count);
- }
- }
-
- public static class FilePathBitmapSource extends BitmapSource {
- private String mPath;
- public FilePathBitmapSource(String path) {
- mPath = path;
- }
- @Override
- public SimpleBitmapRegionDecoder loadBitmapRegionDecoder() {
- SimpleBitmapRegionDecoder d;
- d = SimpleBitmapRegionDecoderWrapper.newInstance(mPath, true);
- if (d == null) {
- d = DumbBitmapRegionDecoder.newInstance(mPath);
- }
- return d;
- }
- @Override
- public Bitmap loadPreviewBitmap(BitmapFactory.Options options) {
- return BitmapFactory.decodeFile(mPath, options);
- }
-
- @Override
- public int getExifRotation() {
- return ExifOrientation.readRotation(mPath);
- }
- }
-
- public static class UriBitmapSource extends BitmapSource {
- private Context mContext;
- private Uri mUri;
- public UriBitmapSource(Context context, Uri uri) {
- mContext = context;
- mUri = uri;
- }
- private InputStream regenerateInputStream() throws FileNotFoundException {
- InputStream is = mContext.getContentResolver().openInputStream(mUri);
- return new BufferedInputStream(is);
- }
- @Override
- public SimpleBitmapRegionDecoder loadBitmapRegionDecoder() {
- try {
- InputStream is = regenerateInputStream();
- SimpleBitmapRegionDecoder regionDecoder =
- SimpleBitmapRegionDecoderWrapper.newInstance(is, false);
- Utils.closeSilently(is);
- if (regionDecoder == null) {
- is = regenerateInputStream();
- regionDecoder = DumbBitmapRegionDecoder.newInstance(is);
- Utils.closeSilently(is);
- }
- return regionDecoder;
- } catch (FileNotFoundException e) {
- Log.e("BitmapRegionTileSource", "Failed to load URI " + mUri, e);
- return null;
- }
- }
- @Override
- public Bitmap loadPreviewBitmap(BitmapFactory.Options options) {
- try {
- InputStream is = regenerateInputStream();
- Bitmap b = BitmapFactory.decodeStream(is, null, options);
- Utils.closeSilently(is);
- return b;
- } catch (FileNotFoundException | OutOfMemoryError e) {
- Log.e("BitmapRegionTileSource", "Failed to load URI " + mUri, e);
- return null;
- }
- }
-
- @Override
- public int getExifRotation() {
- return BitmapUtils.getRotationFromExif(mContext, mUri);
- }
- }
-
- public static class ResourceBitmapSource extends BitmapSource {
- private Resources mRes;
- private int mResId;
- private Context mContext;
-
- public ResourceBitmapSource(Resources res, int resId, Context context) {
- mRes = res;
- mResId = resId;
- mContext = context;
- }
- private InputStream regenerateInputStream() {
- InputStream is = mRes.openRawResource(mResId);
- return new BufferedInputStream(is);
- }
- @Override
- public SimpleBitmapRegionDecoder loadBitmapRegionDecoder() {
- InputStream is = regenerateInputStream();
- SimpleBitmapRegionDecoder regionDecoder =
- SimpleBitmapRegionDecoderWrapper.newInstance(is, false);
- Utils.closeSilently(is);
- if (regionDecoder == null) {
- is = regenerateInputStream();
- regionDecoder = DumbBitmapRegionDecoder.newInstance(is);
- Utils.closeSilently(is);
- }
- return regionDecoder;
- }
- @Override
- public Bitmap loadPreviewBitmap(BitmapFactory.Options options) {
- return BitmapFactory.decodeResource(mRes, mResId, options);
- }
-
- @Override
- public int getExifRotation() {
- return BitmapUtils.getRotationFromExif(mRes, mResId, mContext);
- }
- }
-
- SimpleBitmapRegionDecoder mDecoder;
- int mWidth;
- int mHeight;
- int mTileSize;
- private BasicTexture mPreview;
- private final int mRotation;
-
- // For use only by getTile
- private Rect mWantRegion = new Rect();
- private BitmapFactory.Options mOptions;
-
- public BitmapRegionTileSource(Context context, BitmapSource source, byte[] tempStorage) {
- mTileSize = TiledImageRenderer.suggestedTileSize(context);
- mRotation = source.getRotation();
- mDecoder = source.getBitmapRegionDecoder();
- if (mDecoder != null) {
- mWidth = mDecoder.getWidth();
- mHeight = mDecoder.getHeight();
- mOptions = new BitmapFactory.Options();
- mOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
- mOptions.inPreferQualityOverSpeed = true;
- mOptions.inTempStorage = tempStorage;
-
- Bitmap preview = source.getPreviewBitmap();
- if (preview != null &&
- preview.getWidth() <= GL_SIZE_LIMIT && preview.getHeight() <= GL_SIZE_LIMIT) {
- mPreview = new BitmapTexture(preview);
- } else {
- Log.w(TAG, String.format(
- "Failed to create preview of apropriate size! "
- + " in: %dx%d, out: %dx%d",
- mWidth, mHeight,
- preview == null ? -1 : preview.getWidth(),
- preview == null ? -1 : preview.getHeight()));
- }
- }
- }
-
- public Bitmap getBitmap() {
- return mPreview instanceof BitmapTexture ? ((BitmapTexture) mPreview).getBitmap() : null;
- }
-
- @Override
- public int getTileSize() {
- return mTileSize;
- }
-
- @Override
- public int getImageWidth() {
- return mWidth;
- }
-
- @Override
- public int getImageHeight() {
- return mHeight;
- }
-
- @Override
- public BasicTexture getPreview() {
- return mPreview;
- }
-
- @Override
- public int getRotation() {
- return mRotation;
- }
-
- @Override
- public Bitmap getTile(int level, int x, int y, Bitmap bitmap) {
- int tileSize = getTileSize();
- int t = tileSize << level;
- mWantRegion.set(x, y, x + t, y + t);
-
- if (bitmap == null) {
- bitmap = Bitmap.createBitmap(tileSize, tileSize, Bitmap.Config.ARGB_8888);
- }
-
- mOptions.inSampleSize = (1 << level);
- mOptions.inBitmap = bitmap;
-
- try {
- bitmap = mDecoder.decodeRegion(mWantRegion, mOptions);
- } finally {
- if (mOptions.inBitmap != bitmap && mOptions.inBitmap != null) {
- mOptions.inBitmap = null;
- }
- }
-
- if (bitmap == null) {
- Log.w("BitmapRegionTileSource", "fail in decoding region");
- }
- return bitmap;
- }
-}
diff --git a/WallpaperPicker/src/com/android/photos/views/TiledImageRenderer.java b/WallpaperPicker/src/com/android/photos/views/TiledImageRenderer.java
deleted file mode 100644
index e57ce70b9..000000000
--- a/WallpaperPicker/src/com/android/photos/views/TiledImageRenderer.java
+++ /dev/null
@@ -1,826 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.photos.views;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Rect;
-import android.graphics.RectF;
-import android.support.v4.util.Pools.Pool;
-import android.support.v4.util.Pools.SynchronizedPool;
-import android.util.DisplayMetrics;
-import android.util.Log;
-import android.util.LongSparseArray;
-import android.view.View;
-import android.view.WindowManager;
-
-import com.android.gallery3d.common.Utils;
-import com.android.gallery3d.glrenderer.BasicTexture;
-import com.android.gallery3d.glrenderer.GLCanvas;
-import com.android.gallery3d.glrenderer.UploadedTexture;
-import com.android.launcher3.util.Thunk;
-
-/**
- * Handles laying out, decoding, and drawing of tiles in GL
- */
-public class TiledImageRenderer {
- public static final int SIZE_UNKNOWN = -1;
-
- private static final String TAG = "TiledImageRenderer";
- private static final int UPLOAD_LIMIT = 1;
-
- /*
- * This is the tile state in the CPU side.
- * Life of a Tile:
- * ACTIVATED (initial state)
- * --> IN_QUEUE - by queueForDecode()
- * --> RECYCLED - by recycleTile()
- * IN_QUEUE --> DECODING - by decodeTile()
- * --> RECYCLED - by recycleTile)
- * DECODING --> RECYCLING - by recycleTile()
- * --> DECODED - by decodeTile()
- * --> DECODE_FAIL - by decodeTile()
- * RECYCLING --> RECYCLED - by decodeTile()
- * DECODED --> ACTIVATED - (after the decoded bitmap is uploaded)
- * DECODED --> RECYCLED - by recycleTile()
- * DECODE_FAIL -> RECYCLED - by recycleTile()
- * RECYCLED --> ACTIVATED - by obtainTile()
- */
- private static final int STATE_ACTIVATED = 0x01;
- private static final int STATE_IN_QUEUE = 0x02;
- private static final int STATE_DECODING = 0x04;
- private static final int STATE_DECODED = 0x08;
- private static final int STATE_DECODE_FAIL = 0x10;
- private static final int STATE_RECYCLING = 0x20;
- private static final int STATE_RECYCLED = 0x40;
-
- @Thunk static Pool<Bitmap> sTilePool = new SynchronizedPool<Bitmap>(64);
-
- // TILE_SIZE must be 2^N
- @Thunk int mTileSize;
-
- @Thunk TileSource mModel;
- private BasicTexture mPreview;
- protected int mLevelCount; // cache the value of mScaledBitmaps.length
-
- // The mLevel variable indicates which level of bitmap we should use.
- // Level 0 means the original full-sized bitmap, and a larger value means
- // a smaller scaled bitmap (The width and height of each scaled bitmap is
- // half size of the previous one). If the value is in [0, mLevelCount), we
- // use the bitmap in mScaledBitmaps[mLevel] for display, otherwise the value
- // is mLevelCount
- @Thunk int mLevel = 0;
-
- private int mOffsetX;
- private int mOffsetY;
-
- private int mUploadQuota;
- private boolean mRenderComplete;
-
- private final RectF mSourceRect = new RectF();
- private final RectF mTargetRect = new RectF();
-
- private final LongSparseArray<Tile> mActiveTiles = new LongSparseArray<Tile>();
-
- // The following three queue are guarded by mQueueLock
- @Thunk final Object mQueueLock = new Object();
- private final TileQueue mRecycledQueue = new TileQueue();
- private final TileQueue mUploadQueue = new TileQueue();
- @Thunk final TileQueue mDecodeQueue = new TileQueue();
-
- // The width and height of the full-sized bitmap
- protected int mImageWidth = SIZE_UNKNOWN;
- protected int mImageHeight = SIZE_UNKNOWN;
-
- protected int mCenterX;
- protected int mCenterY;
- protected float mScale;
- protected int mRotation;
-
- private boolean mLayoutTiles;
-
- // Temp variables to avoid memory allocation
- private final Rect mTileRange = new Rect();
- private final Rect mActiveRange[] = {new Rect(), new Rect()};
-
- private TileDecoder mTileDecoder;
- private boolean mBackgroundTileUploaded;
-
- private int mViewWidth, mViewHeight;
- private View mParent;
-
- /**
- * Interface for providing tiles to a {@link TiledImageRenderer}
- */
- public static interface TileSource {
-
- /**
- * If the source does not care about the tile size, it should use
- * {@link TiledImageRenderer#suggestedTileSize(Context)}
- */
- public int getTileSize();
- public int getImageWidth();
- public int getImageHeight();
- public int getRotation();
-
- /**
- * Return a Preview image if available. This will be used as the base layer
- * if higher res tiles are not yet available
- */
- public BasicTexture getPreview();
-
- /**
- * The tile returned by this method can be specified this way: Assuming
- * the image size is (width, height), first take the intersection of (0,
- * 0) - (width, height) and (x, y) - (x + tileSize, y + tileSize). If
- * in extending the region, we found some part of the region is outside
- * the image, those pixels are filled with black.
- *
- * If level > 0, it does the same operation on a down-scaled version of
- * the original image (down-scaled by a factor of 2^level), but (x, y)
- * still refers to the coordinate on the original image.
- *
- * The method would be called by the decoder thread.
- */
- public Bitmap getTile(int level, int x, int y, Bitmap reuse);
- }
-
- public static int suggestedTileSize(Context context) {
- return isHighResolution(context) ? 512 : 256;
- }
-
- private static boolean isHighResolution(Context context) {
- DisplayMetrics metrics = new DisplayMetrics();
- WindowManager wm = (WindowManager)
- context.getSystemService(Context.WINDOW_SERVICE);
- wm.getDefaultDisplay().getMetrics(metrics);
- return metrics.heightPixels > 2048 || metrics.widthPixels > 2048;
- }
-
- public TiledImageRenderer(View parent) {
- mParent = parent;
- mTileDecoder = new TileDecoder();
- mTileDecoder.start();
- }
-
- public int getViewWidth() {
- return mViewWidth;
- }
-
- public int getViewHeight() {
- return mViewHeight;
- }
-
- private void invalidate() {
- mParent.postInvalidate();
- }
-
- public void setModel(TileSource model, int rotation) {
- if (mModel != model) {
- mModel = model;
- notifyModelInvalidated();
- }
- if (mRotation != rotation) {
- mRotation = rotation;
- mLayoutTiles = true;
- }
- }
-
- private void calculateLevelCount() {
- if (mPreview != null) {
- mLevelCount = Math.max(0, Utils.ceilLog2(
- mImageWidth / (float) mPreview.getWidth()));
- } else {
- int levels = 1;
- int maxDim = Math.max(mImageWidth, mImageHeight);
- int t = mTileSize;
- while (t < maxDim) {
- t <<= 1;
- levels++;
- }
- mLevelCount = levels;
- }
- }
-
- public void notifyModelInvalidated() {
- invalidateTiles();
- if (mModel == null) {
- mImageWidth = 0;
- mImageHeight = 0;
- mLevelCount = 0;
- mPreview = null;
- } else {
- mImageWidth = mModel.getImageWidth();
- mImageHeight = mModel.getImageHeight();
- mPreview = mModel.getPreview();
- mTileSize = mModel.getTileSize();
- calculateLevelCount();
- }
- mLayoutTiles = true;
- }
-
- public void setViewSize(int width, int height) {
- mViewWidth = width;
- mViewHeight = height;
- }
-
- public void setPosition(int centerX, int centerY, float scale) {
- if (mCenterX == centerX && mCenterY == centerY
- && mScale == scale) {
- return;
- }
- mCenterX = centerX;
- mCenterY = centerY;
- mScale = scale;
- mLayoutTiles = true;
- }
-
- // Prepare the tiles we want to use for display.
- //
- // 1. Decide the tile level we want to use for display.
- // 2. Decide the tile levels we want to keep as texture (in addition to
- // the one we use for display).
- // 3. Recycle unused tiles.
- // 4. Activate the tiles we want.
- private void layoutTiles() {
- if (mViewWidth == 0 || mViewHeight == 0 || !mLayoutTiles) {
- return;
- }
- mLayoutTiles = false;
-
- // The tile levels we want to keep as texture is in the range
- // [fromLevel, endLevel).
- int fromLevel;
- int endLevel;
-
- // We want to use a texture larger than or equal to the display size.
- mLevel = Utils.clamp(Utils.floorLog2(1f / mScale), 0, mLevelCount);
-
- // We want to keep one more tile level as texture in addition to what
- // we use for display. So it can be faster when the scale moves to the
- // next level. We choose the level closest to the current scale.
- if (mLevel != mLevelCount) {
- Rect range = mTileRange;
- getRange(range, mCenterX, mCenterY, mLevel, mScale, mRotation);
- mOffsetX = Math.round(mViewWidth / 2f + (range.left - mCenterX) * mScale);
- mOffsetY = Math.round(mViewHeight / 2f + (range.top - mCenterY) * mScale);
- fromLevel = mScale * (1 << mLevel) > 0.75f ? mLevel - 1 : mLevel;
- } else {
- // Activate the tiles of the smallest two levels.
- fromLevel = mLevel - 2;
- mOffsetX = Math.round(mViewWidth / 2f - mCenterX * mScale);
- mOffsetY = Math.round(mViewHeight / 2f - mCenterY * mScale);
- }
-
- fromLevel = Math.max(0, Math.min(fromLevel, mLevelCount - 2));
- endLevel = Math.min(fromLevel + 2, mLevelCount);
-
- Rect range[] = mActiveRange;
- for (int i = fromLevel; i < endLevel; ++i) {
- getRange(range[i - fromLevel], mCenterX, mCenterY, i, mRotation);
- }
-
- // If rotation is transient, don't update the tile.
- if (mRotation % 90 != 0) {
- return;
- }
-
- synchronized (mQueueLock) {
- mDecodeQueue.clean();
- mUploadQueue.clean();
- mBackgroundTileUploaded = false;
-
- // Recycle unused tiles: if the level of the active tile is outside the
- // range [fromLevel, endLevel) or not in the visible range.
- int n = mActiveTiles.size();
- for (int i = 0; i < n; i++) {
- Tile tile = mActiveTiles.valueAt(i);
- int level = tile.mTileLevel;
- if (level < fromLevel || level >= endLevel
- || !range[level - fromLevel].contains(tile.mX, tile.mY)) {
- mActiveTiles.removeAt(i);
- i--;
- n--;
- recycleTile(tile);
- }
- }
- }
-
- for (int i = fromLevel; i < endLevel; ++i) {
- int size = mTileSize << i;
- Rect r = range[i - fromLevel];
- for (int y = r.top, bottom = r.bottom; y < bottom; y += size) {
- for (int x = r.left, right = r.right; x < right; x += size) {
- activateTile(x, y, i);
- }
- }
- }
- invalidate();
- }
-
- private void invalidateTiles() {
- synchronized (mQueueLock) {
- mDecodeQueue.clean();
- mUploadQueue.clean();
-
- // TODO(xx): disable decoder
- int n = mActiveTiles.size();
- for (int i = 0; i < n; i++) {
- Tile tile = mActiveTiles.valueAt(i);
- recycleTile(tile);
- }
- mActiveTiles.clear();
- }
- }
-
- private void getRange(Rect out, int cX, int cY, int level, int rotation) {
- getRange(out, cX, cY, level, 1f / (1 << (level + 1)), rotation);
- }
-
- // If the bitmap is scaled by the given factor "scale", return the
- // rectangle containing visible range. The left-top coordinate returned is
- // aligned to the tile boundary.
- //
- // (cX, cY) is the point on the original bitmap which will be put in the
- // center of the ImageViewer.
- private void getRange(Rect out,
- int cX, int cY, int level, float scale, int rotation) {
-
- double radians = Math.toRadians(-rotation);
- double w = mViewWidth;
- double h = mViewHeight;
-
- double cos = Math.cos(radians);
- double sin = Math.sin(radians);
- int width = (int) Math.ceil(Math.max(
- Math.abs(cos * w - sin * h), Math.abs(cos * w + sin * h)));
- int height = (int) Math.ceil(Math.max(
- Math.abs(sin * w + cos * h), Math.abs(sin * w - cos * h)));
-
- int left = (int) Math.floor(cX - width / (2f * scale));
- int top = (int) Math.floor(cY - height / (2f * scale));
- int right = (int) Math.ceil(left + width / scale);
- int bottom = (int) Math.ceil(top + height / scale);
-
- // align the rectangle to tile boundary
- int size = mTileSize << level;
- left = Math.max(0, size * (left / size));
- top = Math.max(0, size * (top / size));
- right = Math.min(mImageWidth, right);
- bottom = Math.min(mImageHeight, bottom);
-
- out.set(left, top, right, bottom);
- }
-
- public void freeTextures() {
- mLayoutTiles = true;
-
- mTileDecoder.finishAndWait();
- synchronized (mQueueLock) {
- mUploadQueue.clean();
- mDecodeQueue.clean();
- Tile tile = mRecycledQueue.pop();
- while (tile != null) {
- tile.recycle();
- tile = mRecycledQueue.pop();
- }
- }
-
- int n = mActiveTiles.size();
- for (int i = 0; i < n; i++) {
- Tile texture = mActiveTiles.valueAt(i);
- texture.recycle();
- }
- mActiveTiles.clear();
- mTileRange.set(0, 0, 0, 0);
-
- while (sTilePool.acquire() != null) {}
- }
-
- public boolean draw(GLCanvas canvas) {
- layoutTiles();
- uploadTiles(canvas);
-
- mUploadQuota = UPLOAD_LIMIT;
- mRenderComplete = true;
-
- int level = mLevel;
- int rotation = mRotation;
- int flags = 0;
- if (rotation != 0) {
- flags |= GLCanvas.SAVE_FLAG_MATRIX;
- }
-
- if (flags != 0) {
- canvas.save(flags);
- if (rotation != 0) {
- int centerX = mViewWidth / 2, centerY = mViewHeight / 2;
- canvas.translate(centerX, centerY);
- canvas.rotate(rotation, 0, 0, 1);
- canvas.translate(-centerX, -centerY);
- }
- }
- try {
- if (level != mLevelCount) {
- int size = (mTileSize << level);
- float length = size * mScale;
- Rect r = mTileRange;
-
- for (int ty = r.top, i = 0; ty < r.bottom; ty += size, i++) {
- float y = mOffsetY + i * length;
- for (int tx = r.left, j = 0; tx < r.right; tx += size, j++) {
- float x = mOffsetX + j * length;
- drawTile(canvas, tx, ty, level, x, y, length);
- }
- }
- } else if (mPreview != null) {
- mPreview.draw(canvas, mOffsetX, mOffsetY,
- Math.round(mImageWidth * mScale),
- Math.round(mImageHeight * mScale));
- }
- } finally {
- if (flags != 0) {
- canvas.restore();
- }
- }
-
- if (mRenderComplete) {
- if (!mBackgroundTileUploaded) {
- uploadBackgroundTiles(canvas);
- }
- } else {
- invalidate();
- }
- return mRenderComplete || mPreview != null;
- }
-
- private void uploadBackgroundTiles(GLCanvas canvas) {
- mBackgroundTileUploaded = true;
- int n = mActiveTiles.size();
- for (int i = 0; i < n; i++) {
- Tile tile = mActiveTiles.valueAt(i);
- if (!tile.isContentValid()) {
- queueForDecode(tile);
- }
- }
- }
-
- private void queueForDecode(Tile tile) {
- synchronized (mQueueLock) {
- if (tile.mTileState == STATE_ACTIVATED) {
- tile.mTileState = STATE_IN_QUEUE;
- if (mDecodeQueue.push(tile)) {
- mQueueLock.notifyAll();
- }
- }
- }
- }
-
- @Thunk void decodeTile(Tile tile) {
- synchronized (mQueueLock) {
- if (tile.mTileState != STATE_IN_QUEUE) {
- return;
- }
- tile.mTileState = STATE_DECODING;
- }
- boolean decodeComplete = tile.decode();
- synchronized (mQueueLock) {
- if (tile.mTileState == STATE_RECYCLING) {
- tile.mTileState = STATE_RECYCLED;
- if (tile.mDecodedTile != null) {
- sTilePool.release(tile.mDecodedTile);
- tile.mDecodedTile = null;
- }
- mRecycledQueue.push(tile);
- return;
- }
- tile.mTileState = decodeComplete ? STATE_DECODED : STATE_DECODE_FAIL;
- if (!decodeComplete) {
- return;
- }
- mUploadQueue.push(tile);
- }
- invalidate();
- }
-
- private Tile obtainTile(int x, int y, int level) {
- synchronized (mQueueLock) {
- Tile tile = mRecycledQueue.pop();
- if (tile != null) {
- tile.mTileState = STATE_ACTIVATED;
- tile.update(x, y, level);
- return tile;
- }
- return new Tile(x, y, level);
- }
- }
-
- private void recycleTile(Tile tile) {
- synchronized (mQueueLock) {
- if (tile.mTileState == STATE_DECODING) {
- tile.mTileState = STATE_RECYCLING;
- return;
- }
- tile.mTileState = STATE_RECYCLED;
- if (tile.mDecodedTile != null) {
- sTilePool.release(tile.mDecodedTile);
- tile.mDecodedTile = null;
- }
- mRecycledQueue.push(tile);
- }
- }
-
- private void activateTile(int x, int y, int level) {
- long key = makeTileKey(x, y, level);
- Tile tile = mActiveTiles.get(key);
- if (tile != null) {
- if (tile.mTileState == STATE_IN_QUEUE) {
- tile.mTileState = STATE_ACTIVATED;
- }
- return;
- }
- tile = obtainTile(x, y, level);
- mActiveTiles.put(key, tile);
- }
-
- @Thunk Tile getTile(int x, int y, int level) {
- return mActiveTiles.get(makeTileKey(x, y, level));
- }
-
- private static long makeTileKey(int x, int y, int level) {
- long result = x;
- result = (result << 16) | y;
- result = (result << 16) | level;
- return result;
- }
-
- private void uploadTiles(GLCanvas canvas) {
- int quota = UPLOAD_LIMIT;
- Tile tile = null;
- while (quota > 0) {
- synchronized (mQueueLock) {
- tile = mUploadQueue.pop();
- }
- if (tile == null) {
- break;
- }
- if (!tile.isContentValid()) {
- if (tile.mTileState == STATE_DECODED) {
- tile.updateContent(canvas);
- --quota;
- } else {
- Log.w(TAG, "Tile in upload queue has invalid state: " + tile.mTileState);
- }
- }
- }
- if (tile != null) {
- invalidate();
- }
- }
-
- // Draw the tile to a square at canvas that locates at (x, y) and
- // has a side length of length.
- private void drawTile(GLCanvas canvas,
- int tx, int ty, int level, float x, float y, float length) {
- RectF source = mSourceRect;
- RectF target = mTargetRect;
- target.set(x, y, x + length, y + length);
- source.set(0, 0, mTileSize, mTileSize);
-
- Tile tile = getTile(tx, ty, level);
- if (tile != null) {
- if (!tile.isContentValid()) {
- if (tile.mTileState == STATE_DECODED) {
- if (mUploadQuota > 0) {
- --mUploadQuota;
- tile.updateContent(canvas);
- } else {
- mRenderComplete = false;
- }
- } else if (tile.mTileState != STATE_DECODE_FAIL){
- mRenderComplete = false;
- queueForDecode(tile);
- }
- }
- if (drawTile(tile, canvas, source, target)) {
- return;
- }
- }
- if (mPreview != null) {
- int size = mTileSize << level;
- float scaleX = (float) mPreview.getWidth() / mImageWidth;
- float scaleY = (float) mPreview.getHeight() / mImageHeight;
- source.set(tx * scaleX, ty * scaleY, (tx + size) * scaleX,
- (ty + size) * scaleY);
- canvas.drawTexture(mPreview, source, target);
- }
- }
-
- private boolean drawTile(
- Tile tile, GLCanvas canvas, RectF source, RectF target) {
- while (true) {
- if (tile.isContentValid()) {
- canvas.drawTexture(tile, source, target);
- return true;
- }
-
- // Parent can be divided to four quads and tile is one of the four.
- Tile parent = tile.getParentTile();
- if (parent == null) {
- return false;
- }
- if (tile.mX == parent.mX) {
- source.left /= 2f;
- source.right /= 2f;
- } else {
- source.left = (mTileSize + source.left) / 2f;
- source.right = (mTileSize + source.right) / 2f;
- }
- if (tile.mY == parent.mY) {
- source.top /= 2f;
- source.bottom /= 2f;
- } else {
- source.top = (mTileSize + source.top) / 2f;
- source.bottom = (mTileSize + source.bottom) / 2f;
- }
- tile = parent;
- }
- }
-
- private class Tile extends UploadedTexture {
- public int mX;
- public int mY;
- public int mTileLevel;
- public Tile mNext;
- public Bitmap mDecodedTile;
- public volatile int mTileState = STATE_ACTIVATED;
-
- public Tile(int x, int y, int level) {
- mX = x;
- mY = y;
- mTileLevel = level;
- }
-
- @Override
- protected void onFreeBitmap(Bitmap bitmap) {
- sTilePool.release(bitmap);
- }
-
- boolean decode() {
- // Get a tile from the original image. The tile is down-scaled
- // by (1 << mTilelevel) from a region in the original image.
- try {
- Bitmap reuse = sTilePool.acquire();
- if (reuse != null && reuse.getWidth() != mTileSize) {
- reuse = null;
- }
- mDecodedTile = mModel.getTile(mTileLevel, mX, mY, reuse);
- } catch (Throwable t) {
- Log.w(TAG, "fail to decode tile", t);
- }
- return mDecodedTile != null;
- }
-
- @Override
- protected Bitmap onGetBitmap() {
- Utils.assertTrue(mTileState == STATE_DECODED);
-
- // We need to override the width and height, so that we won't
- // draw beyond the boundaries.
- int rightEdge = ((mImageWidth - mX) >> mTileLevel);
- int bottomEdge = ((mImageHeight - mY) >> mTileLevel);
- setSize(Math.min(mTileSize, rightEdge), Math.min(mTileSize, bottomEdge));
-
- Bitmap bitmap = mDecodedTile;
- mDecodedTile = null;
- mTileState = STATE_ACTIVATED;
- return bitmap;
- }
-
- // We override getTextureWidth() and getTextureHeight() here, so the
- // texture can be re-used for different tiles regardless of the actual
- // size of the tile (which may be small because it is a tile at the
- // boundary).
- @Override
- public int getTextureWidth() {
- return mTileSize;
- }
-
- @Override
- public int getTextureHeight() {
- return mTileSize;
- }
-
- public void update(int x, int y, int level) {
- mX = x;
- mY = y;
- mTileLevel = level;
- invalidateContent();
- }
-
- public Tile getParentTile() {
- if (mTileLevel + 1 == mLevelCount) {
- return null;
- }
- int size = mTileSize << (mTileLevel + 1);
- int x = size * (mX / size);
- int y = size * (mY / size);
- return getTile(x, y, mTileLevel + 1);
- }
-
- @Override
- public String toString() {
- return String.format("tile(%s, %s, %s / %s)",
- mX / mTileSize, mY / mTileSize, mLevel, mLevelCount);
- }
- }
-
- @Thunk static class TileQueue {
- private Tile mHead;
-
- public Tile pop() {
- Tile tile = mHead;
- if (tile != null) {
- mHead = tile.mNext;
- }
- return tile;
- }
-
- public boolean push(Tile tile) {
- if (contains(tile)) {
- Log.w(TAG, "Attempting to add a tile already in the queue!");
- return false;
- }
- boolean wasEmpty = mHead == null;
- tile.mNext = mHead;
- mHead = tile;
- return wasEmpty;
- }
-
- private boolean contains(Tile tile) {
- Tile other = mHead;
- while (other != null) {
- if (other == tile) {
- return true;
- }
- other = other.mNext;
- }
- return false;
- }
-
- public void clean() {
- mHead = null;
- }
- }
-
- @Thunk class TileDecoder extends Thread {
-
- public void finishAndWait() {
- interrupt();
- try {
- join();
- } catch (InterruptedException e) {
- Log.w(TAG, "Interrupted while waiting for TileDecoder thread to finish!");
- }
- }
-
- private Tile waitForTile() throws InterruptedException {
- synchronized (mQueueLock) {
- while (true) {
- Tile tile = mDecodeQueue.pop();
- if (tile != null) {
- return tile;
- }
- mQueueLock.wait();
- }
- }
- }
-
- @Override
- public void run() {
- try {
- while (!isInterrupted()) {
- Tile tile = waitForTile();
- decodeTile(tile);
- }
- } catch (InterruptedException ex) {
- // We were finished
- }
- }
-
- }
-}
diff --git a/WallpaperPicker/src/com/android/photos/views/TiledImageView.java b/WallpaperPicker/src/com/android/photos/views/TiledImageView.java
deleted file mode 100644
index 759613d98..000000000
--- a/WallpaperPicker/src/com/android/photos/views/TiledImageView.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.photos.views;
-
-import android.content.Context;
-import android.graphics.Matrix;
-import android.graphics.RectF;
-import android.opengl.GLSurfaceView;
-import android.opengl.GLSurfaceView.Renderer;
-import android.util.AttributeSet;
-import android.view.Choreographer;
-import android.view.Choreographer.FrameCallback;
-import android.widget.FrameLayout;
-
-import com.android.gallery3d.glrenderer.BasicTexture;
-import com.android.gallery3d.glrenderer.GLES20Canvas;
-import com.android.launcher3.util.Thunk;
-import com.android.photos.views.TiledImageRenderer.TileSource;
-
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.opengles.GL10;
-
-/**
- * Shows an image using {@link TiledImageRenderer} using either {@link GLSurfaceView}.
- */
-public class TiledImageView extends FrameLayout {
-
- @Thunk GLSurfaceView mGLSurfaceView;
- @Thunk boolean mInvalPending = false;
- private FrameCallback mFrameCallback;
-
- protected static class ImageRendererWrapper {
- // Guarded by locks
- public float scale;
- public int centerX, centerY;
- public int rotation;
- public TileSource source;
- Runnable isReadyCallback;
-
- // GL thread only
- TiledImageRenderer image;
- }
-
- private float[] mValues = new float[9];
-
- // -------------------------
- // Guarded by mLock
- // -------------------------
- protected Object mLock = new Object();
- protected ImageRendererWrapper mRenderer;
-
- public TiledImageView(Context context) {
- this(context, null);
- }
-
- public TiledImageView(Context context, AttributeSet attrs) {
- super(context, attrs);
- mRenderer = new ImageRendererWrapper();
- mRenderer.image = new TiledImageRenderer(this);
- mGLSurfaceView = new GLSurfaceView(context);
- mGLSurfaceView.setEGLContextClientVersion(2);
- mGLSurfaceView.setRenderer(new TileRenderer());
- mGLSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
- addView(mGLSurfaceView, new LayoutParams(
- LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- }
-
- @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.
- mGLSurfaceView.setVisibility(visibility);
- }
-
- public void destroy() {
- mGLSurfaceView.queueEvent(mFreeTextures);
- }
-
- private Runnable mFreeTextures = new Runnable() {
-
- @Override
- public void run() {
- mRenderer.image.freeTextures();
- }
- };
-
- public void onPause() {
- mGLSurfaceView.onPause();
- }
-
- public void onResume() {
- mGLSurfaceView.onResume();
- }
-
- public void setTileSource(TileSource source, Runnable isReadyCallback) {
- synchronized (mLock) {
- mRenderer.source = source;
- mRenderer.isReadyCallback = isReadyCallback;
- mRenderer.centerX = source != null ? source.getImageWidth() / 2 : 0;
- mRenderer.centerY = source != null ? source.getImageHeight() / 2 : 0;
- mRenderer.rotation = source != null ? source.getRotation() : 0;
- mRenderer.scale = 0;
- updateScaleIfNecessaryLocked(mRenderer);
- }
- invalidate();
- }
-
- public TileSource getTileSource() {
- return mRenderer.source;
- }
-
- @Override
- protected void onLayout(boolean changed, int left, int top, int right,
- int bottom) {
- super.onLayout(changed, left, top, right, bottom);
- synchronized (mLock) {
- updateScaleIfNecessaryLocked(mRenderer);
- }
- }
-
- private void updateScaleIfNecessaryLocked(ImageRendererWrapper renderer) {
- if (renderer == null || renderer.source == null
- || renderer.scale > 0 || getWidth() == 0) {
- return;
- }
- renderer.scale = Math.min(
- (float) getWidth() / (float) renderer.source.getImageWidth(),
- (float) getHeight() / (float) renderer.source.getImageHeight());
- }
-
- @Override
- public void invalidate() {
- invalOnVsync();
- }
-
- private void invalOnVsync() {
- if (!mInvalPending) {
- mInvalPending = true;
- if (mFrameCallback == null) {
- mFrameCallback = new FrameCallback() {
- @Override
- public void doFrame(long frameTimeNanos) {
- mInvalPending = false;
- mGLSurfaceView.requestRender();
- }
- };
- }
- Choreographer.getInstance().postFrameCallback(mFrameCallback);
- }
- }
-
- @Thunk class TileRenderer implements Renderer {
-
- private GLES20Canvas mCanvas;
-
- @Override
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- mCanvas = new GLES20Canvas();
- BasicTexture.invalidateAllTextures();
- mRenderer.image.setModel(mRenderer.source, mRenderer.rotation);
- }
-
- @Override
- public void onSurfaceChanged(GL10 gl, int width, int height) {
- mCanvas.setSize(width, height);
- mRenderer.image.setViewSize(width, height);
- }
-
- @Override
- public void onDrawFrame(GL10 gl) {
- mCanvas.clearBuffer();
- Runnable readyCallback;
- synchronized (mLock) {
- readyCallback = mRenderer.isReadyCallback;
- mRenderer.image.setModel(mRenderer.source, mRenderer.rotation);
- mRenderer.image.setPosition(mRenderer.centerX, mRenderer.centerY,
- mRenderer.scale);
- }
- boolean complete = mRenderer.image.draw(mCanvas);
- if (complete && readyCallback != null) {
- synchronized (mLock) {
- // Make sure we don't trample on a newly set callback/source
- // if it changed while we were rendering
- if (mRenderer.isReadyCallback == readyCallback) {
- mRenderer.isReadyCallback = null;
- }
- }
- if (readyCallback != null) {
- post(readyCallback);
- }
- }
- }
-
- }
-}
diff --git a/build.gradle b/build.gradle
index 44f5b7c52..ca49c1324 100644
--- a/build.gradle
+++ b/build.gradle
@@ -32,8 +32,8 @@ android {
}
sourceSets {
main {
- res.srcDirs = ['res', 'WallpaperPicker/res']
- java.srcDirs = ['src', 'WallpaperPicker/src']
+ res.srcDirs = ['res']
+ java.srcDirs = ['src']
manifest.srcFile 'AndroidManifest.xml'
proto.srcDirs 'protos/'
}
@@ -54,6 +54,7 @@ dependencies {
compile 'com.android.support:support-v4:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-2'
+ compile project(":WallpaperPicker-Lib")
testCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test:runner:+'
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 000000000..2cbf914a4
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,2 @@
+include ':WallpaperPicker-Lib'
+project(':WallpaperPicker-Lib').projectDir = new File(rootDir, '../WallpaperPicker') \ No newline at end of file
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 40aaf79aa..06810b434 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -113,10 +113,10 @@ import com.android.launcher3.util.LongArrayMap;
import com.android.launcher3.util.TestingUtils;
import com.android.launcher3.util.Thunk;
import com.android.launcher3.util.ViewOnDrawExecutor;
-import com.android.launcher3.util.WallpaperUtils;
import com.android.launcher3.widget.PendingAddWidgetInfo;
import com.android.launcher3.widget.WidgetHostViewLoader;
import com.android.launcher3.widget.WidgetsContainerView;
+import com.android.wallpaperpicker.WallpaperUtils;
import java.io.FileDescriptor;
import java.io.PrintWriter;
diff --git a/src/com/android/launcher3/WallpaperPickerActivity.java b/src/com/android/launcher3/WallpaperPickerActivity.java
new file mode 100644
index 000000000..62b9be43e
--- /dev/null
+++ b/src/com/android/launcher3/WallpaperPickerActivity.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2016 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.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.util.Pair;
+
+import com.android.wallpaperpicker.tileinfo.DefaultWallpaperInfo;
+import com.android.wallpaperpicker.tileinfo.FileWallpaperInfo;
+import com.android.wallpaperpicker.tileinfo.WallpaperTileInfo;
+
+import java.io.File;
+import java.util.ArrayList;
+
+public class WallpaperPickerActivity extends com.android.wallpaperpicker.WallpaperPickerActivity {
+
+ @Override
+ public void startActivityForResultSafely(Intent intent, int requestCode) {
+ Utilities.startActivityForResultSafely(this, intent, requestCode);
+ }
+
+ @Override
+ public boolean enableRotation() {
+ return super.enableRotation() ||
+ getContentResolver().call(LauncherSettings.Settings.CONTENT_URI,
+ LauncherSettings.Settings.METHOD_GET_BOOLEAN,
+ Utilities.ALLOW_ROTATION_PREFERENCE_KEY, new Bundle())
+ .getBoolean(LauncherSettings.Settings.EXTRA_VALUE);
+ }
+
+ @Override
+ public ArrayList<WallpaperTileInfo> findBundledWallpapers() {
+ final PackageManager pm = getPackageManager();
+ final ArrayList<WallpaperTileInfo> bundled = new ArrayList<WallpaperTileInfo>(24);
+
+ Partner partner = Partner.get(pm);
+ if (partner != null) {
+ final Resources partnerRes = partner.getResources();
+ final int resId = partnerRes.getIdentifier(Partner.RES_WALLPAPERS, "array",
+ partner.getPackageName());
+ if (resId != 0) {
+ addWallpapers(bundled, partnerRes, partner.getPackageName(), resId);
+ }
+
+ // Add system wallpapers
+ File systemDir = partner.getWallpaperDirectory();
+ if (systemDir != null && systemDir.isDirectory()) {
+ for (File file : systemDir.listFiles()) {
+ if (!file.isFile()) {
+ continue;
+ }
+ String name = file.getName();
+ int dotPos = name.lastIndexOf('.');
+ String extension = "";
+ if (dotPos >= -1) {
+ extension = name.substring(dotPos);
+ name = name.substring(0, dotPos);
+ }
+
+ if (name.endsWith("_small")) {
+ // it is a thumbnail
+ continue;
+ }
+
+ File thumbnail = new File(systemDir, name + "_small" + extension);
+ Bitmap thumb = BitmapFactory.decodeFile(thumbnail.getAbsolutePath());
+ if (thumb != null) {
+ bundled.add(new FileWallpaperInfo(
+ file, new BitmapDrawable(getResources(), thumb)));
+ }
+ }
+ }
+ }
+
+ Pair<ApplicationInfo, Integer> r = getWallpaperArrayResourceId();
+ if (r != null) {
+ try {
+ Resources wallpaperRes = pm.getResourcesForApplication(r.first);
+ addWallpapers(bundled, wallpaperRes, r.first.packageName, r.second);
+ } catch (PackageManager.NameNotFoundException e) {
+ }
+ }
+
+ if (partner == null || !partner.hideDefaultWallpaper()) {
+ // Add an entry for the default wallpaper (stored in system resources)
+ WallpaperTileInfo defaultWallpaperInfo = DefaultWallpaperInfo.get(this);
+ if (defaultWallpaperInfo != null) {
+ bundled.add(0, defaultWallpaperInfo);
+ }
+ }
+ return bundled;
+ }
+}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index e6ab11160..05f9d20c5 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -72,9 +72,9 @@ import com.android.launcher3.dragndrop.SpringLoadedDragController;
import com.android.launcher3.util.LongArrayMap;
import com.android.launcher3.util.Thunk;
import com.android.launcher3.util.WallpaperOffsetInterpolator;
-import com.android.launcher3.util.WallpaperUtils;
import com.android.launcher3.widget.PendingAddShortcutInfo;
import com.android.launcher3.widget.PendingAddWidgetInfo;
+import com.android.wallpaperpicker.WallpaperUtils;
import java.util.ArrayList;
import java.util.HashMap;
diff --git a/src/com/android/launcher3/util/WallpaperUtils.java b/src/com/android/launcher3/util/WallpaperUtils.java
deleted file mode 100644
index 45c83bd8c..000000000
--- a/src/com/android/launcher3/util/WallpaperUtils.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher3.util;
-
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.app.WallpaperManager;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.res.Resources;
-import android.graphics.Point;
-import android.os.Build;
-import android.view.WindowManager;
-
-import com.android.launcher3.LauncherFiles;
-import com.android.launcher3.Utilities;
-
-/**
- * Utility methods for wallpaper management.
- */
-public final class WallpaperUtils {
-
- public static final String WALLPAPER_WIDTH_KEY = "wallpaper.width";
- public static final String WALLPAPER_HEIGHT_KEY = "wallpaper.height";
- public static final float WALLPAPER_SCREENS_SPAN = 2f;
-
- public static final String EXTRA_WALLPAPER_OFFSET = "com.android.launcher3.WALLPAPER_OFFSET";
-
- public static void saveWallpaperDimensions(int width, int height, Activity activity) {
- if (Utilities.ATLEAST_KITKAT) {
- // From Kitkat onwards, ImageWallpaper does not care about the
- // desired width and desired height of the wallpaper.
- return;
- }
- String spKey = LauncherFiles.WALLPAPER_CROP_PREFERENCES_KEY;
- SharedPreferences sp = activity.getSharedPreferences(spKey, Context.MODE_MULTI_PROCESS);
- SharedPreferences.Editor editor = sp.edit();
- if (width != 0 && height != 0) {
- editor.putInt(WALLPAPER_WIDTH_KEY, width);
- editor.putInt(WALLPAPER_HEIGHT_KEY, height);
- } else {
- editor.remove(WALLPAPER_WIDTH_KEY);
- editor.remove(WALLPAPER_HEIGHT_KEY);
- }
- editor.commit();
- suggestWallpaperDimensionPreK(activity, true);
- }
-
- public static void suggestWallpaperDimensionPreK(
- Activity activity, boolean fallBackToDefaults) {
- final Point defaultWallpaperSize = getDefaultWallpaperSize(
- activity.getResources(), activity.getWindowManager());
-
- SharedPreferences sp = activity.getSharedPreferences(
- LauncherFiles.WALLPAPER_CROP_PREFERENCES_KEY, Context.MODE_MULTI_PROCESS);
- // If we have saved a wallpaper width/height, use that instead
- int width = sp.getInt(WALLPAPER_WIDTH_KEY, -1);
- int height = sp.getInt(WALLPAPER_HEIGHT_KEY, -1);
-
- if (width == -1 || height == -1) {
- if (!fallBackToDefaults) {
- return;
- } else {
- width = defaultWallpaperSize.x;
- height = defaultWallpaperSize.y;
- }
- }
-
- WallpaperManager wm = WallpaperManager.getInstance(activity);
- if (width != wm.getDesiredMinimumWidth() || height != wm.getDesiredMinimumHeight()) {
- wm.suggestDesiredDimensions(width, height);
- }
- }
-
- public static void suggestWallpaperDimension(Activity activity) {
- // Only live wallpapers care about desired size. Update the size to what launcher expects.
- final Point size = getDefaultWallpaperSize(
- activity.getResources(), activity.getWindowManager());
- WallpaperManager wm = WallpaperManager.getInstance(activity);
- if (size.x != wm.getDesiredMinimumWidth() || size.y != wm.getDesiredMinimumHeight()) {
- wm.suggestDesiredDimensions(size.x, size.y);
- }
- }
-
- /**
- * As a ratio of screen height, the total distance we want the parallax effect to span
- * horizontally
- */
- private static float wallpaperTravelToScreenWidthRatio(int width, int height) {
- float aspectRatio = width / (float) height;
-
- // At an aspect ratio of 16/10, the wallpaper parallax effect should span 1.5 * screen width
- // At an aspect ratio of 10/16, the wallpaper parallax effect should span 1.2 * screen width
- // We will use these two data points to extrapolate how much the wallpaper parallax effect
- // to span (ie travel) at any aspect ratio:
-
- final float ASPECT_RATIO_LANDSCAPE = 16/10f;
- final float ASPECT_RATIO_PORTRAIT = 10/16f;
- final float WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE = 1.5f;
- final float WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT = 1.2f;
-
- // To find out the desired width at different aspect ratios, we use the following two
- // formulas, where the coefficient on x is the aspect ratio (width/height):
- // (16/10)x + y = 1.5
- // (10/16)x + y = 1.2
- // We solve for x and y and end up with a final formula:
- final float x =
- (WALLPAPER_WIDTH_TO_SCREEN_RATIO_LANDSCAPE - WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT) /
- (ASPECT_RATIO_LANDSCAPE - ASPECT_RATIO_PORTRAIT);
- final float y = WALLPAPER_WIDTH_TO_SCREEN_RATIO_PORTRAIT - x * ASPECT_RATIO_PORTRAIT;
- return x * aspectRatio + y;
- }
-
- private static Point sDefaultWallpaperSize;
-
- @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
- public static Point getDefaultWallpaperSize(Resources res, WindowManager windowManager) {
- if (sDefaultWallpaperSize == null) {
- Point realSize = new Point();
- windowManager.getDefaultDisplay().getRealSize(realSize);
- int maxDim = Math.max(realSize.x, realSize.y);
- int minDim = Math.min(realSize.x, realSize.y);
-
- // We need to ensure that there is enough extra space in the wallpaper
- // for the intended parallax effects
- final int defaultWidth, defaultHeight;
- if (res.getConfiguration().smallestScreenWidthDp >= 720) {
- defaultWidth = (int) (maxDim * wallpaperTravelToScreenWidthRatio(maxDim, minDim));
- defaultHeight = maxDim;
- } else {
- defaultWidth = Math.max((int) (minDim * WALLPAPER_SCREENS_SPAN), maxDim);
- defaultHeight = maxDim;
- }
- sDefaultWallpaperSize = new Point(defaultWidth, defaultHeight);
- }
- return sDefaultWallpaperSize;
- }
-}