[automerger skipped] Import translations. DO NOT MERGE ANYWHERE am: 5397c3e385 -s ours am: 8bcceeab7e -s ours
am skip reason: subject contains skip directive
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/ThemePicker/+/19551663
Change-Id: Id9e69c1a83848a14d8ed069dca444da2e152c302
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ff8f187..ee96ae3 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -13,6 +13,8 @@
<queries>
<!-- Specific intents Wallpaper picker query for -->
+ <!-- Package for theme stub -->
+ <package android:name="com.android.customization.themes" />
<!-- Intent filter with action SET_WALLPAPER -->
<intent>
<action android:name="android.intent.action.SET_WALLPAPER" />
diff --git a/res/values/override.xml b/res/values/override.xml
index a070dbe..addebd4 100644
--- a/res/values/override.xml
+++ b/res/values/override.xml
@@ -16,7 +16,10 @@
limitations under the License.
-->
<resources>
- <string name="themes_stub_package" translatable="false"/>
+ <!-- Package of the stub apk containing the themes descriptions -->
+ <string name="themes_stub_package" translatable="false">com.android.customization.themes
+ </string>
+
<string name="clocks_stub_package" translatable="false"/>
<!-- Authority of a provider in System UI that will provide preview info for available clockfaces. -->
<string name="clocks_provider_authority" translatable="false">com.android.keyguard.clock</string>
diff --git a/src/com/android/customization/module/DefaultCustomizationSections.java b/src/com/android/customization/module/DefaultCustomizationSections.java
index a4510ea..21f2c84 100644
--- a/src/com/android/customization/module/DefaultCustomizationSections.java
+++ b/src/com/android/customization/module/DefaultCustomizationSections.java
@@ -6,6 +6,7 @@
import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
+import com.android.customization.model.color.ColorSectionController;
import com.android.customization.model.grid.GridOptionsManager;
import com.android.customization.model.grid.GridSectionController;
import com.android.customization.model.mode.DarkModeSectionController;
@@ -41,6 +42,10 @@
workspaceViewModel, sectionNavigationController, wallpaperPreviewNavigator,
savedInstanceState));
+ // Theme color section.
+ sectionControllers.add(new ColorSectionController(
+ activity, wallpaperColorsViewModel, lifecycleOwner, savedInstanceState));
+
// Dark/Light theme section.
sectionControllers.add(new DarkModeSectionController(activity,
lifecycleOwner.getLifecycle()));
diff --git a/src/com/android/customization/module/StatsLogUserEventLogger.java b/src/com/android/customization/module/StatsLogUserEventLogger.java
index 216395d..e3e4336 100644
--- a/src/com/android/customization/module/StatsLogUserEventLogger.java
+++ b/src/com/android/customization/module/StatsLogUserEventLogger.java
@@ -28,7 +28,6 @@
import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SETTINGS_SEARCH;
import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_SUW;
import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UICHANGED__LAUNCHED_PREFERENCE__LAUNCHED_TIPS;
-import static com.android.systemui.shared.system.SysUiStatsLog.STYLE_UI_CHANGED;
import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SETTINGS_SEARCH;
import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SOURCE_DEEP_LINK;
import static com.android.wallpaper.util.LaunchSourceUtils.LAUNCH_SOURCE_LAUNCHER;
@@ -49,7 +48,6 @@
import com.android.customization.model.color.ColorOption;
import com.android.customization.model.grid.GridOption;
import com.android.customization.model.theme.ThemeBundle;
-import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.wallpaper.module.Injector;
import com.android.wallpaper.module.InjectorProvider;
import com.android.wallpaper.module.NoOpUserEventLogger;
@@ -78,60 +76,67 @@
@Override
public void logAppLaunched(Intent launchSource) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, STYLE_UICHANGED__ACTION__APP_LAUNCHED,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, getAppLaunchSource(launchSource), 0, 0,
- 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(STYLE_UICHANGED__ACTION__APP_LAUNCHED)
+ .setLaunchedPreference(getAppLaunchSource(launchSource))
+ .log();
}
@Override
public void logResumed(boolean provisioned, boolean wallpaper) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.ONRESUME,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.ONRESUME)
+ .log();
}
@Override
public void logStopped() {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.ONSTOP,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.ONSTOP)
+ .log();
}
@Override
public void logActionClicked(String collectionId, int actionLabelResId) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.WALLPAPER_EXPLORE, 0, 0, 0, 0, 0,
- getIdHashCode(collectionId), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.WALLPAPER_EXPLORE)
+ .setWallpaperCategoryHash(getIdHashCode(collectionId))
+ .log();
}
@Override
public void logIndividualWallpaperSelected(String collectionId) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.WALLPAPER_SELECT, 0, 0, 0, 0, 0,
- getIdHashCode(collectionId), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.WALLPAPER_SELECT)
+ .setWallpaperCategoryHash(getIdHashCode(collectionId))
+ .log();
}
@Override
public void logCategorySelected(String collectionId) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.WALLPAPER_OPEN_CATEGORY,
- 0, 0, 0, 0, 0,
- getIdHashCode(collectionId),
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.WALLPAPER_OPEN_CATEGORY)
+ .setWallpaperCategoryHash(getIdHashCode(collectionId))
+ .log();
}
@Override
public void logLiveWallpaperInfoSelected(String collectionId, @Nullable String wallpaperId) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.LIVE_WALLPAPER_INFO_SELECT,
- 0, 0, 0, 0, 0,
- getIdHashCode(collectionId),
- getIdHashCode(wallpaperId),
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.LIVE_WALLPAPER_INFO_SELECT)
+ .setWallpaperCategoryHash(getIdHashCode(collectionId))
+ .setWallpaperIdHash(getIdHashCode(wallpaperId))
+ .log();
}
@Override
public void logLiveWallpaperCustomizeSelected(String collectionId,
@Nullable String wallpaperId) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.LIVE_WALLPAPER_CUSTOMIZE_SELECT,
- 0, 0, 0, 0, 0,
- getIdHashCode(collectionId),
- getIdHashCode(wallpaperId),
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger().setAction(StyleEnums.LIVE_WALLPAPER_CUSTOMIZE_SELECT)
+ .setWallpaperCategoryHash(getIdHashCode(collectionId))
+ .setWallpaperIdHash(getIdHashCode(wallpaperId))
+ .log();
+
}
@Override
@@ -139,6 +144,7 @@
final boolean isLockWallpaperSet = mWallpaperStatusChecker.isLockWallpaperSet(mContext);
final String homeCollectionId = mPreferences.getHomeWallpaperCollectionId();
final String homeRemoteId = mPreferences.getHomeWallpaperRemoteId();
+ final String effects = mPreferences.getWallpaperEffects();
String homeWallpaperId = TextUtils.isEmpty(homeRemoteId)
? mPreferences.getHomeWallpaperServiceName() : homeRemoteId;
String lockCollectionId = isLockWallpaperSet ? mPreferences.getLockWallpaperCollectionId()
@@ -146,35 +152,37 @@
String lockWallpaperId = isLockWallpaperSet ? mPreferences.getLockWallpaperRemoteId()
: homeWallpaperId;
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.SNAPSHOT,
- 0, 0, 0, 0, 0,
- getIdHashCode(homeCollectionId),
- getIdHashCode(homeWallpaperId),
- 0, 0, 0, 0, 0, 0,
- getIdHashCode(lockCollectionId),
- getIdHashCode(lockWallpaperId),
- mPreferences.getFirstLaunchDateSinceSetup(),
- mPreferences.getFirstWallpaperApplyDateSinceSetup(),
- mPreferences.getAppLaunchCount(),
- 0);
+ new SysUiStatsLogger().setAction(StyleEnums.SNAPSHOT)
+ .setWallpaperCategoryHash(getIdHashCode(homeCollectionId))
+ .setWallpaperIdHash(getIdHashCode(homeWallpaperId))
+ .setLockWallpaperCategoryHash(getIdHashCode(lockCollectionId))
+ .setLockWallpaperIdHash(getIdHashCode(lockWallpaperId))
+ .setFirstLaunchDateSinceSetup(mPreferences.getFirstLaunchDateSinceSetup())
+ .setFirstWallpaperApplyDateSinceSetup(
+ mPreferences.getFirstWallpaperApplyDateSinceSetup())
+ .setAppLaunchCount(mPreferences.getAppLaunchCount())
+ .setEffectIdHash(getIdHashCode(effects))
+ .log();
}
@Override
public void logWallpaperSet(String collectionId, @Nullable String wallpaperId,
@Nullable String effects) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.WALLPAPER_APPLIED,
- 0, 0, 0, 0, 0,
- getIdHashCode(collectionId),
- getIdHashCode(wallpaperId),
- 0, 0, 0, 0, 0, effects != null ? effects.hashCode() : 0,
- 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.WALLPAPER_APPLIED)
+ .setWallpaperCategoryHash(getIdHashCode(collectionId))
+ .setWallpaperIdHash(getIdHashCode(wallpaperId))
+ .setEffectIdHash(getIdHashCode(effects))
+ .log();
}
@Override
public void logEffectApply(String effect, @EffectStatus int status) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.WALLPAPER_EFFECT_APPLIED,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, status, effect != null ? effect.hashCode() : 0,
- 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.WALLPAPER_EFFECT_APPLIED)
+ .setEffectPreference(status)
+ .setEffectIdHash(getIdHashCode(effect))
+ .log();
}
@Nullable
@@ -185,60 +193,67 @@
@Override
public void logThemeSelected(ThemeBundle theme, boolean isCustomTheme) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.PICKER_SELECT,
- Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_COLOR)),
- Objects.hashCode(getThemePackage(theme,OVERLAY_CATEGORY_FONT)),
- Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_SHAPE)),
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.PICKER_SELECT)
+ .setColorPackageHash(
+ Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_COLOR)))
+ .setFontPackageHash(Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_FONT)))
+ .setShapePackageHash(
+ Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_SHAPE)))
+ .log();
}
@Override
public void logThemeApplied(ThemeBundle theme, boolean isCustomTheme) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.PICKER_APPLIED,
- Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_COLOR)),
- Objects.hashCode(getThemePackage(theme,OVERLAY_CATEGORY_FONT)),
- Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_SHAPE)),
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.PICKER_APPLIED)
+ .setColorPackageHash(
+ Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_COLOR)))
+ .setFontPackageHash(Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_FONT)))
+ .setShapePackageHash(
+ Objects.hashCode(getThemePackage(theme, OVERLAY_CATEGORY_SHAPE)))
+ .log();
}
@Override
public void logColorApplied(int action, ColorOption colorOption) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, action,
- 0, 0, 0, 0, 0, 0, 0,
- colorOption.getIndex(),
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, colorOption.getStyle().ordinal() + 1);
+ new SysUiStatsLogger()
+ .setAction(action)
+ .setColorPreference(colorOption.getIndex())
+ .setColorVariant(colorOption.getStyle().ordinal() + 1)
+ .log();
}
@Override
public void logClockSelected(Clockface clock) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.PICKER_SELECT,
- 0, 0, 0,
- Objects.hashCode(clock.getId()),
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.PICKER_SELECT)
+ .setClockPackageHash(Objects.hashCode(clock.getId()))
+ .log();
}
@Override
public void logClockApplied(Clockface clock) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.PICKER_APPLIED,
- 0, 0, 0,
- Objects.hashCode(clock.getId()),
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.PICKER_APPLIED)
+ .setClockPackageHash(Objects.hashCode(clock.getId()))
+ .log();
}
@Override
public void logGridSelected(GridOption grid) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.PICKER_SELECT,
- 0, 0, 0, 0,
- grid.cols,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.PICKER_SELECT)
+ .setLauncherGrid(grid.cols)
+ .log();
}
@Override
public void logGridApplied(GridOption grid) {
- SysUiStatsLog.write(STYLE_UI_CHANGED, StyleEnums.PICKER_APPLIED,
- 0, 0, 0, 0,
- grid.cols,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ new SysUiStatsLogger()
+ .setAction(StyleEnums.PICKER_APPLIED)
+ .setLauncherGrid(grid.cols)
+ .log();
}
private int getAppLaunchSource(Intent launchSource) {
diff --git a/src/com/android/customization/module/SysUiStatsLogger.kt b/src/com/android/customization/module/SysUiStatsLogger.kt
new file mode 100644
index 0000000..eb3bcc0
--- /dev/null
+++ b/src/com/android/customization/module/SysUiStatsLogger.kt
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2022 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.customization.module
+
+import android.stats.style.StyleEnums
+import com.android.systemui.shared.system.SysUiStatsLog
+import com.android.systemui.shared.system.SysUiStatsLog.STYLE_UI_CHANGED
+
+/**
+ * The builder for [SysUiStatsLog].
+ */
+class SysUiStatsLogger {
+
+ private var atom = STYLE_UI_CHANGED
+ private var action = StyleEnums.DEFAULT_ACTION
+ private var colorPackageHash = 0
+ private var fontPackageHash = 0
+ private var shapePackageHash = 0
+ private var clockPackageHash = 0
+ private var launcherGrid = 0
+ private var wallpaperCategoryHash = 0
+ private var wallpaperIdHash = 0
+ private var colorPreference = 0
+ private var locationPreference = StyleEnums.EFFECT_PREFERENCE_UNSPECIFIED
+ private var datePreference = StyleEnums.DATE_PREFERENCE_UNSPECIFIED
+ private var launchedPreference = StyleEnums.LAUNCHED_PREFERENCE_UNSPECIFIED
+ private var effectPreference = StyleEnums.EFFECT_PREFERENCE_UNSPECIFIED
+ private var effectIdHash = 0
+ private var lockWallpaperCategoryHash = 0
+ private var lockWallpaperIdHash = 0
+ private var firstLaunchDateSinceSetup = 0
+ private var firstWallpaperApplyDateSinceSetup = 0
+ private var appLaunchCount = 0
+ private var colorVariant = 0
+
+ fun setAction(action: Int) =
+ apply { this.action = action }
+
+ fun setColorPackageHash(color_package_hash: Int) =
+ apply { this.colorPackageHash = color_package_hash }
+
+ fun setFontPackageHash(font_package_hash: Int) =
+ apply { this.fontPackageHash = font_package_hash }
+
+ fun setShapePackageHash(shape_package_hash: Int) =
+ apply { this.shapePackageHash = shape_package_hash }
+
+ fun setClockPackageHash(clock_package_hash: Int) =
+ apply { this.clockPackageHash = clock_package_hash }
+
+ fun setLauncherGrid(launcher_grid: Int) =
+ apply { this.launcherGrid = launcher_grid }
+
+ fun setWallpaperCategoryHash(wallpaper_category_hash: Int) =
+ apply { this.wallpaperCategoryHash = wallpaper_category_hash }
+
+ fun setWallpaperIdHash(wallpaper_id_hash: Int) =
+ apply { this.wallpaperIdHash = wallpaper_id_hash }
+
+ fun setColorPreference(color_preference: Int) =
+ apply { this.colorPreference = color_preference }
+
+ fun setLocationPreference(location_preference: Int) =
+ apply { this.locationPreference = location_preference }
+
+ fun setDatePreference(date_preference: Int) =
+ apply { this.datePreference = date_preference }
+
+ fun setLaunchedPreference(launched_preference: Int) =
+ apply { this.launchedPreference = launched_preference }
+
+ fun setEffectPreference(effect_preference: Int) =
+ apply { this.effectPreference = effect_preference }
+
+ fun setEffectIdHash(effect_id_hash: Int) =
+ apply { this.effectIdHash = effect_id_hash }
+
+ fun setLockWallpaperCategoryHash(lock_wallpaper_category_hash: Int) =
+ apply { this.lockWallpaperCategoryHash = lock_wallpaper_category_hash }
+
+ fun setLockWallpaperIdHash(lock_wallpaper_id_hash: Int) =
+ apply { this.lockWallpaperIdHash = lock_wallpaper_id_hash }
+
+ fun setFirstLaunchDateSinceSetup(first_launch_date_since_setup: Int) =
+ apply { this.firstLaunchDateSinceSetup = first_launch_date_since_setup }
+
+ fun setFirstWallpaperApplyDateSinceSetup(first_wallpaper_apply_date_since_setup: Int) =
+ apply {
+ this.firstWallpaperApplyDateSinceSetup = first_wallpaper_apply_date_since_setup
+ }
+
+ fun setAppLaunchCount(app_launch_count: Int) =
+ apply { this.appLaunchCount = app_launch_count }
+
+ fun setColorVariant(color_variant: Int) =
+ apply { this.colorVariant = color_variant }
+
+ fun log() {
+ SysUiStatsLog.write(
+ atom,
+ action,
+ colorPackageHash,
+ fontPackageHash,
+ shapePackageHash,
+ clockPackageHash,
+ launcherGrid,
+ wallpaperCategoryHash,
+ wallpaperIdHash,
+ colorPreference,
+ locationPreference,
+ datePreference,
+ launchedPreference,
+ effectPreference,
+ effectIdHash,
+ lockWallpaperCategoryHash,
+ lockWallpaperIdHash,
+ firstLaunchDateSinceSetup,
+ firstWallpaperApplyDateSinceSetup,
+ appLaunchCount,
+ colorVariant
+ )
+ }
+}
\ No newline at end of file
diff --git a/themes/Android.bp b/themes/Android.bp
new file mode 100644
index 0000000..fb3d9be
--- /dev/null
+++ b/themes/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2022 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 {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: [
+ "Android-Apache-2.0",
+ ],
+}
+
+android_app {
+
+ name: "ThemesStub",
+ optimize: {
+ enabled: false,
+ },
+
+ aaptflags: ["--auto-add-overlay"],
+
+ sdk_version: "current",
+
+ product_specific: true,
+
+}
+
+// ==================================================
diff --git a/themes/AndroidManifest.xml b/themes/AndroidManifest.xml
new file mode 100755
index 0000000..68ead89
--- /dev/null
+++ b/themes/AndroidManifest.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.customization.themes"
+ android:versionCode="1">
+
+ <uses-sdk
+ android:minSdkVersion="31"
+ android:targetSdkVersion="31"/>
+
+ <application
+ android:hasCode="false"
+ android:label="@string/app_name"/>
+
+</manifest>
diff --git a/themes/res/values-b+sr+Latn/strings.xml b/themes/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..4227e14
--- /dev/null
+++ b/themes/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"Crvena"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"Narandžasta"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"Žuta"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"Zelena"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"Plava"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"Ljubičasta"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Magenta"</string>
+</resources>
diff --git a/themes/res/values-en-rAU/strings.xml b/themes/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..f10dfca
--- /dev/null
+++ b/themes/res/values-en-rAU/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"Red"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"Orange"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"Yellow"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"Green"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"Blue"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"Purple"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Magenta"</string>
+</resources>
diff --git a/themes/res/values-en-rCA/strings.xml b/themes/res/values-en-rCA/strings.xml
new file mode 100644
index 0000000..f10dfca
--- /dev/null
+++ b/themes/res/values-en-rCA/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"Red"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"Orange"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"Yellow"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"Green"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"Blue"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"Purple"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Magenta"</string>
+</resources>
diff --git a/themes/res/values-en-rGB/strings.xml b/themes/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..f10dfca
--- /dev/null
+++ b/themes/res/values-en-rGB/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"Red"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"Orange"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"Yellow"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"Green"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"Blue"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"Purple"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Magenta"</string>
+</resources>
diff --git a/themes/res/values-en-rIN/strings.xml b/themes/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..f10dfca
--- /dev/null
+++ b/themes/res/values-en-rIN/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"Red"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"Orange"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"Yellow"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"Green"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"Blue"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"Purple"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Magenta"</string>
+</resources>
diff --git a/themes/res/values-en-rXC/strings.xml b/themes/res/values-en-rXC/strings.xml
new file mode 100644
index 0000000..c6114a4
--- /dev/null
+++ b/themes/res/values-en-rXC/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"Red"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"Orange"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"Yellow"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"Green"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"Blue"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"Purple"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Magenta"</string>
+</resources>
diff --git a/themes/res/values-lo/strings.xml b/themes/res/values-lo/strings.xml
new file mode 100644
index 0000000..e4d1ebf
--- /dev/null
+++ b/themes/res/values-lo/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"ສີແດງ"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"ສີສົ້ມ"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"ສີເຫຼືອງ"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"ສີຂຽວ"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"ສີຟ້າ"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"ສີມ່ວງ"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"ສີແດງມ່ວງ"</string>
+</resources>
diff --git a/themes/res/values-lt/strings.xml b/themes/res/values-lt/strings.xml
new file mode 100644
index 0000000..0a6396e
--- /dev/null
+++ b/themes/res/values-lt/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"Raudona"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"Oranžinė"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"Geltona"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"Žalia"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"Mėlyna"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"Violetinė"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Purpurinė"</string>
+</resources>
diff --git a/themes/res/values-pa/strings.xml b/themes/res/values-pa/strings.xml
new file mode 100644
index 0000000..dae483e
--- /dev/null
+++ b/themes/res/values-pa/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"ਲਾਲ"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"ਸੰਤਰੀ"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"ਪੀਲਾ"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"ਹਰਾ"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"ਨੀਲਾ"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"ਜਾਮਨੀ"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"ਮੈਜੰਟਾ"</string>
+</resources>
diff --git a/themes/res/values-sr/strings.xml b/themes/res/values-sr/strings.xml
new file mode 100644
index 0000000..68155e0
--- /dev/null
+++ b/themes/res/values-sr/strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2022 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="rainbow_color_name_red" msgid="7452506008058561006">"Црвена"</string>
+ <string name="rainbow_color_name_orange" msgid="2921298510262609543">"Наранџаста"</string>
+ <string name="rainbow_color_name_yellow" msgid="8675574652757989201">"Жута"</string>
+ <string name="rainbow_color_name_green" msgid="1932895389710184112">"Зелена"</string>
+ <string name="rainbow_color_name_blue" msgid="3473176664458856892">"Плава"</string>
+ <string name="rainbow_color_name_purple" msgid="2704722524588084868">"Љубичаста"</string>
+ <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Магента"</string>
+</resources>
diff --git a/themes/res/values/color-bundles.xml b/themes/res/values/color-bundles.xml
new file mode 100644
index 0000000..4d7cc63
--- /dev/null
+++ b/themes/res/values/color-bundles.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2022 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>
+ <array name="color_bundles">
+ <item>rainbow1</item>
+ <item>rainbow2</item>
+ <item>rainbow3</item>
+ <item>rainbow4</item>
+ <item>rainbow5</item>
+ <item>rainbow6</item>
+ <item>rainbow7</item>
+ </array>
+</resources>
diff --git a/themes/res/values/colors.xml b/themes/res/values/colors.xml
new file mode 100644
index 0000000..3ffb9fc
--- /dev/null
+++ b/themes/res/values/colors.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2022 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="color_secondary_rainbow1">#FFB2B5</color>
+ <color name="color_secondary_rainbow2">#FFB868</color>
+ <color name="color_secondary_rainbow3">#E9C44A</color>
+ <color name="color_secondary_rainbow4">#BAF293</color>
+ <color name="color_secondary_rainbow5">#96CBFF</color>
+ <color name="color_secondary_rainbow6">#CBBFFF</color>
+ <color name="color_secondary_rainbow7">#F5ACFB</color>
+</resources>
diff --git a/themes/res/values/strings.xml b/themes/res/values/strings.xml
new file mode 100644
index 0000000..8bc04bd
--- /dev/null
+++ b/themes/res/values/strings.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2022 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>
+ <string name="app_name" translatable="false">Themes</string>
+ <string name="rainbow_color_name_red">Red</string>
+ <string name="rainbow_color_name_orange">Orange</string>
+ <string name="rainbow_color_name_yellow">Yellow</string>
+ <string name="rainbow_color_name_green">Green</string>
+ <string name="rainbow_color_name_blue">Blue</string>
+ <string name="rainbow_color_name_purple">Purple</string>
+ <string name="rainbow_color_name_magenta">Magenta</string>
+
+ <string name="bundle_name_rainbow1" translatable="false">@string/rainbow_color_name_red</string>
+ <string name="bundle_name_rainbow2" translatable="false">@string/rainbow_color_name_orange</string>
+ <string name="bundle_name_rainbow3" translatable="false">@string/rainbow_color_name_yellow</string>
+ <string name="bundle_name_rainbow4" translatable="false">@string/rainbow_color_name_green</string>
+ <string name="bundle_name_rainbow5" translatable="false">@string/rainbow_color_name_blue</string>
+ <string name="bundle_name_rainbow6" translatable="false">@string/rainbow_color_name_purple</string>
+ <string name="bundle_name_rainbow7" translatable="false">@string/rainbow_color_name_magenta</string>
+
+ <string name="color_style_rainbow1" translatable="false">RAINBOW</string>
+ <string name="color_style_rainbow2" translatable="false">RAINBOW</string>
+ <string name="color_style_rainbow3" translatable="false">RAINBOW</string>
+ <string name="color_style_rainbow4" translatable="false">RAINBOW</string>
+ <string name="color_style_rainbow5" translatable="false">RAINBOW</string>
+ <string name="color_style_rainbow6" translatable="false">RAINBOW</string>
+ <string name="color_style_rainbow7" translatable="false">RAINBOW</string>
+</resources>