summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--exempting_lint_checks.txt (renamed from grandfathered_lint_checks.txt)0
-rw-r--r--main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java2
-rw-r--r--main/res/values/attrs.xml9
-rw-r--r--partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfig.java81
-rw-r--r--partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java37
-rw-r--r--partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigKey.java90
6 files changed, 208 insertions, 11 deletions
diff --git a/grandfathered_lint_checks.txt b/exempting_lint_checks.txt
index e69de29..e69de29 100644
--- a/grandfathered_lint_checks.txt
+++ b/exempting_lint_checks.txt
diff --git a/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java b/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java
index 896840c..e3f608b 100644
--- a/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java
+++ b/main/java/com/google/android/setupcompat/PartnerCustomizationLayout.java
@@ -214,7 +214,7 @@ public class PartnerCustomizationLayout extends TemplateLayout {
}
}
- private static Activity lookupActivityFromContext(Context context) {
+ public static Activity lookupActivityFromContext(Context context) {
if (context instanceof Activity) {
return (Activity) context;
} else if (context instanceof ContextWrapper) {
diff --git a/main/res/values/attrs.xml b/main/res/values/attrs.xml
index 147e0d8..516dfcb 100644
--- a/main/res/values/attrs.xml
+++ b/main/res/values/attrs.xml
@@ -98,15 +98,10 @@
<declare-styleable name="SucHeaderMixin">
<attr name="sucHeaderText" format="string" localization="suggested" />
<attr name="sucHeaderTextColor" format="reference|color" />
- <attr name="sucGlifIconMarginTop" format="dimension" />
<attr name="sucGlifHeaderMarginTop" format="dimension" />
<attr name="sucGlifHeaderMarginBottom" format="dimension" />
+ <attr name="sucGlifIconMarginTop" format="dimension" />
+ <attr name="sucHeaderContainerMarginBottom" format="dimension" />
</declare-styleable>
- <declare-styleable name="SucSubtitleMixin">
- <attr name="sucSubtitleText" format="string" localization="suggested" />
- <attr name="sucSubtitleTextColor" format="reference|color" />
- <attr name="sucGlifSubtitleMarginTop" format="dimension" />
- <attr name="sucGlifSubtitleMarginBottom" format="dimension" />
- </declare-styleable>
</resources>
diff --git a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfig.java b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfig.java
index f0baef3..82e353c 100644
--- a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfig.java
+++ b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfig.java
@@ -124,6 +124,12 @@ public enum PartnerConfig {
// Background color of layout
CONFIG_LAYOUT_BACKGROUND_COLOR(PartnerConfigKey.KEY_LAYOUT_BACKGROUND_COLOR, ResourceType.COLOR),
+ // Margin start of the layout
+ CONFIG_LAYOUT_MARGIN_START(PartnerConfigKey.KEY_LAYOUT_MARGIN_START, ResourceType.DIMENSION),
+
+ // Margin end of the layout
+ CONFIG_LAYOUT_MARGIN_END(PartnerConfigKey.KEY_LAYOUT_MARGIN_END, ResourceType.DIMENSION),
+
// Text color of the header
CONFIG_HEADER_TEXT_COLOR(PartnerConfigKey.KEY_HEADER_TEXT_COLOR, ResourceType.COLOR),
@@ -133,13 +139,50 @@ public enum PartnerConfig {
// Font family of the header
CONFIG_HEADER_FONT_FAMILY(PartnerConfigKey.KEY_HEADER_FONT_FAMILY, ResourceType.STRING),
+ // Margin top size of the header text
+ CONFIG_HEADER_TEXT_MARGIN_TOP(
+ PartnerConfigKey.KEY_HEADER_TEXT_MARGIN_TOP, ResourceType.DIMENSION),
+
+ // Margin bottom size of the header text
+ CONFIG_HEADER_TEXT_MARGIN_BOTTOM(
+ PartnerConfigKey.KEY_HEADER_TEXT_MARGIN_BOTTOM, ResourceType.DIMENSION),
+
// Gravity of the header, icon and description
CONFIG_LAYOUT_GRAVITY(PartnerConfigKey.KEY_LAYOUT_GRAVITY, ResourceType.STRING),
+ // Margin top of the icon
+ CONFIG_ICON_MARGIN_TOP(PartnerConfigKey.KEY_ICON_MARGIN_TOP, ResourceType.DIMENSION),
+
+ // Size of the icon
+ CONFIG_ICON_SIZE(PartnerConfigKey.KEY_ICON_SIZE, ResourceType.DIMENSION),
+
// Background color of the header area
CONFIG_HEADER_AREA_BACKGROUND_COLOR(
PartnerConfigKey.KEY_HEADER_AREA_BACKGROUND_COLOR, ResourceType.COLOR),
+ // Margin bottom size of the header container
+ CONFIG_HEADER_CONTAINER_MARGIN_BOTTOM(
+ PartnerConfigKey.KEY_HEADER_CONTAINER_MARGIN_BOTTOM, ResourceType.DIMENSION),
+
+ // Auto text size enabled status
+ CONFIG_HEADER_AUTO_SIZE_ENABLED(PartnerConfigKey.KEY_HEADER_AUTO_SIZE_ENABLED, ResourceType.BOOL),
+
+ // Max text size of header when auto size enabled. Ignored if auto size is false.
+ CONFIG_HEADER_AUTO_SIZE_MAX_TEXT_SIZE(
+ PartnerConfigKey.KEY_HEADER_AUTO_SIZE_MAX_TEXT_SIZE, ResourceType.DIMENSION),
+
+ // Min text size of header when auto size enabled. Ignored if auto size is false.
+ CONFIG_HEADER_AUTO_SIZE_MIN_TEXT_SIZE(
+ PartnerConfigKey.KEY_HEADER_AUTO_SIZE_MIN_TEXT_SIZE, ResourceType.DIMENSION),
+
+ // The max lines of the max text size when auto size enabled. Ignored if auto size is false.
+ CONFIG_HEADER_AUTO_SIZE_MAX_LINE_OF_MAX_SIZE(
+ PartnerConfigKey.KEY_HEADER_AUTO_SIZE_MAX_LINE_OF_MAX_SIZE, ResourceType.INTEGER),
+
+ // Extra line spacing of header when auto size enabled. Ignored if auto size is false.
+ CONFIG_HEADER_AUTO_SIZE_LINE_SPACING_EXTRA(
+ PartnerConfigKey.KEY_HEADER_AUTO_SIZE_LINE_SPACING_EXTRA, ResourceType.DIMENSION),
+
// Text size of the description
CONFIG_DESCRIPTION_TEXT_SIZE(PartnerConfigKey.KEY_DESCRIPTION_TEXT_SIZE, ResourceType.DIMENSION),
@@ -153,6 +196,14 @@ public enum PartnerConfig {
// Font family of the description
CONFIG_DESCRIPTION_FONT_FAMILY(PartnerConfigKey.KEY_DESCRIPTION_FONT_FAMILY, ResourceType.STRING),
+ // Margin top size of the description text
+ CONFIG_DESCRIPTION_TEXT_MARGIN_TOP(
+ PartnerConfigKey.KEY_DESCRIPTION_TEXT_MARGIN_TOP, ResourceType.DIMENSION),
+
+ // Margin bottom size of the description text
+ CONFIG_DESCRIPTION_TEXT_MARGIN_BOTTOM(
+ PartnerConfigKey.KEY_DESCRIPTION_TEXT_MARGIN_BOTTOM, ResourceType.DIMENSION),
+
// Text size of the body content text
CONFIG_CONTENT_TEXT_SIZE(PartnerConfigKey.KEY_CONTENT_TEXT_SIZE, ResourceType.DIMENSION),
@@ -168,6 +219,29 @@ public enum PartnerConfig {
// Gravity of the body content text
CONFIG_CONTENT_LAYOUT_GRAVITY(PartnerConfigKey.KEY_CONTENT_LAYOUT_GRAVITY, ResourceType.STRING),
+ // The title text size of list items.
+ CONFIG_ITEMS_TITLE_TEXT_SIZE(PartnerConfigKey.KEY_ITEMS_TITLE_TEXT_SIZE, ResourceType.DIMENSION),
+
+ // The summary text size of list items.
+ CONFIG_ITEMS_SUMMARY_TEXT_SIZE(
+ PartnerConfigKey.KEY_ITEMS_SUMMARY_TEXT_SIZE, ResourceType.DIMENSION),
+
+ // The summary margin top of list items.
+ CONFIG_ITEMS_SUMMARY_MARGIN_TOP(
+ PartnerConfigKey.KEY_ITEMS_SUMMARY_MARGIN_TOP, ResourceType.DIMENSION),
+
+ // The font family of list items.
+ CONFIG_ITEMS_FONT_FAMILY(PartnerConfigKey.KEY_ITEMS_FONT_FAMILY, ResourceType.STRING),
+
+ // The padding top of list items.
+ CONFIG_ITEMS_PADDING_TOP(PartnerConfigKey.KEY_ITEMS_PADDING_TOP, ResourceType.DIMENSION),
+
+ // The padding bottom of list items.
+ CONFIG_ITEMS_PADDING_BOTTOM(PartnerConfigKey.KEY_ITEMS_PADDING_BOTTOM, ResourceType.DIMENSION),
+
+ // The minimum height of list items.
+ CONFIG_ITEMS_MIN_HEIGHT(PartnerConfigKey.KEY_ITEMS_MIN_HEIGHT, ResourceType.DIMENSION),
+
// The animation of loading screen used in those activities which is non of below type.
CONFIG_PROGRESS_ILLUSTRATION_DEFAULT(
PartnerConfigKey.KEY_PROGRESS_ILLUSTRATION_DEFAULT, ResourceType.ILLUSTRATION),
@@ -188,9 +262,14 @@ public enum PartnerConfig {
CONFIG_PROGRESS_ILLUSTRATION_UPDATE(
PartnerConfigKey.KEY_PROGRESS_ILLUSTRATION_UPDATE, ResourceType.ILLUSTRATION),
+ // The animation of loading screen to define how long showing on the pages.
CONFIG_PROGRESS_ILLUSTRATION_DISPLAY_MINIMUM_MS(
- PartnerConfigKey.KEY_PROGRESS_ILLUSTRATION_DISPLAY_MINIMUM_MS, ResourceType.INTEGER);
+ PartnerConfigKey.KEY_PROGRESS_ILLUSTRATION_DISPLAY_MINIMUM_MS, ResourceType.INTEGER),
+
+ // The transition type to decide the transition between activities or fragments.
+ CONFIG_TRANSITION_TYPE(PartnerConfigKey.KEY_TRANSITION_TYPE, ResourceType.INTEGER);
+ /** Resource type of the partner resources type. */
public enum ResourceType {
INTEGER,
BOOL,
diff --git a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java
index a29a235..9b5b592 100644
--- a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java
+++ b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigHelper.java
@@ -261,8 +261,8 @@ public class PartnerConfigHelper {
}
/**
- * Returns the dimension of given {@code resourceConfig}. If the given {@code resourceConfig} not
- * found, will return {@code defaultValue}. If the {@code ResourceType} of given {@code
+ * Returns the dimension of given {@code resourceConfig}. If the given {@code resourceConfig} is
+ * not found, will return {@code defaultValue}. If the {@code ResourceType} of given {@code
* resourceConfig} is not dimension, will throw IllegalArgumentException.
*
* @param context The context of client activity
@@ -344,6 +344,39 @@ public class PartnerConfigHelper {
}
/**
+ * Returns the integer of given {@code resourceConfig}. If the given {@code resourceConfig} is not
+ * found, will return {@code defaultValue}. If the {@code ResourceType} of given {@code
+ * resourceConfig} is not dimension, will throw IllegalArgumentException.
+ *
+ * @param context The context of client activity
+ * @param resourceConfig The {@code PartnerConfig} of target resource
+ * @param defaultValue The default value
+ */
+ public int getInteger(@NonNull Context context, PartnerConfig resourceConfig, int defaultValue) {
+ if (resourceConfig.getResourceType() != ResourceType.INTEGER) {
+ throw new IllegalArgumentException("Not a integer resource");
+ }
+
+ if (partnerResourceCache.containsKey(resourceConfig)) {
+ return (int) partnerResourceCache.get(resourceConfig);
+ }
+
+ int result = defaultValue;
+ try {
+ ResourceEntry resourceEntry =
+ getResourceEntryFromKey(context, resourceConfig.getResourceName());
+ Resources resource = resourceEntry.getResources();
+ int resId = resourceEntry.getResourceId();
+
+ result = resource.getInteger(resId);
+ partnerResourceCache.put(resourceConfig, result);
+ } catch (NullPointerException exception) {
+ // fall through
+ }
+ return result;
+ }
+
+ /**
* Returns the {@link ResourceEntry} of given {@code resourceConfig}, or {@code null} if the given
* {@code resourceConfig} is not found. If the {@link ResourceType} of the given {@code
* resourceConfig} is not illustration, IllegalArgumentException will be thrown.
diff --git a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigKey.java b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigKey.java
index 840472e..d2fd1a5 100644
--- a/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigKey.java
+++ b/partnerconfig/java/com/google/android/setupcompat/partnerconfig/PartnerConfigKey.java
@@ -51,25 +51,47 @@ import java.lang.annotation.RetentionPolicy;
PartnerConfigKey.KEY_FOOTER_SECONDARY_BUTTON_BG_COLOR,
PartnerConfigKey.KEY_FOOTER_SECONDARY_BUTTON_TEXT_COLOR,
PartnerConfigKey.KEY_LAYOUT_BACKGROUND_COLOR,
+ PartnerConfigKey.KEY_LAYOUT_MARGIN_START,
+ PartnerConfigKey.KEY_LAYOUT_MARGIN_END,
PartnerConfigKey.KEY_HEADER_TEXT_SIZE,
PartnerConfigKey.KEY_HEADER_TEXT_COLOR,
PartnerConfigKey.KEY_HEADER_FONT_FAMILY,
PartnerConfigKey.KEY_HEADER_AREA_BACKGROUND_COLOR,
+ PartnerConfigKey.KEY_HEADER_TEXT_MARGIN_TOP,
+ PartnerConfigKey.KEY_HEADER_TEXT_MARGIN_BOTTOM,
+ PartnerConfigKey.KEY_HEADER_CONTAINER_MARGIN_BOTTOM,
+ PartnerConfigKey.KEY_HEADER_AUTO_SIZE_ENABLED,
+ PartnerConfigKey.KEY_HEADER_AUTO_SIZE_MAX_TEXT_SIZE,
+ PartnerConfigKey.KEY_HEADER_AUTO_SIZE_MIN_TEXT_SIZE,
+ PartnerConfigKey.KEY_HEADER_AUTO_SIZE_MAX_LINE_OF_MAX_SIZE,
+ PartnerConfigKey.KEY_HEADER_AUTO_SIZE_LINE_SPACING_EXTRA,
PartnerConfigKey.KEY_LAYOUT_GRAVITY,
+ PartnerConfigKey.KEY_ICON_MARGIN_TOP,
+ PartnerConfigKey.KEY_ICON_SIZE,
PartnerConfigKey.KEY_DESCRIPTION_TEXT_SIZE,
PartnerConfigKey.KEY_DESCRIPTION_TEXT_COLOR,
PartnerConfigKey.KEY_DESCRIPTION_LINK_TEXT_COLOR,
PartnerConfigKey.KEY_DESCRIPTION_FONT_FAMILY,
+ PartnerConfigKey.KEY_DESCRIPTION_TEXT_MARGIN_TOP,
+ PartnerConfigKey.KEY_DESCRIPTION_TEXT_MARGIN_BOTTOM,
PartnerConfigKey.KEY_CONTENT_TEXT_SIZE,
PartnerConfigKey.KEY_CONTENT_TEXT_COLOR,
PartnerConfigKey.KEY_CONTENT_LINK_TEXT_COLOR,
PartnerConfigKey.KEY_CONTENT_FONT_FAMILY,
PartnerConfigKey.KEY_CONTENT_LAYOUT_GRAVITY,
+ PartnerConfigKey.KEY_ITEMS_TITLE_TEXT_SIZE,
+ PartnerConfigKey.KEY_ITEMS_SUMMARY_TEXT_SIZE,
+ PartnerConfigKey.KEY_ITEMS_SUMMARY_MARGIN_TOP,
+ PartnerConfigKey.KEY_ITEMS_FONT_FAMILY,
+ PartnerConfigKey.KEY_ITEMS_PADDING_TOP,
+ PartnerConfigKey.KEY_ITEMS_PADDING_BOTTOM,
+ PartnerConfigKey.KEY_ITEMS_MIN_HEIGHT,
PartnerConfigKey.KEY_PROGRESS_ILLUSTRATION_DEFAULT,
PartnerConfigKey.KEY_PROGRESS_ILLUSTRATION_ACCOUNT,
PartnerConfigKey.KEY_PROGRESS_ILLUSTRATION_CONNECTION,
PartnerConfigKey.KEY_PROGRESS_ILLUSTRATION_UPDATE,
PartnerConfigKey.KEY_PROGRESS_ILLUSTRATION_DISPLAY_MINIMUM_MS,
+ PartnerConfigKey.KEY_TRANSITION_TYPE,
})
// TODO: can be removed and always reference PartnerConfig.getResourceName()?
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
@@ -158,6 +180,12 @@ public @interface PartnerConfigKey {
// Background color of layout
String KEY_LAYOUT_BACKGROUND_COLOR = "setup_design_layout_bg_color";
+ // Margin start of the layout
+ String KEY_LAYOUT_MARGIN_START = "setup_design_layout_margin_start";
+
+ // Margin end of the layout
+ String KEY_LAYOUT_MARGIN_END = "setup_design_layout_margin_end";
+
// Text size of the header
String KEY_HEADER_TEXT_SIZE = "setup_design_header_text_size";
@@ -167,12 +195,44 @@ public @interface PartnerConfigKey {
// Font family of the header
String KEY_HEADER_FONT_FAMILY = "setup_design_header_font_family";
+ // Margin top size of the header text
+ String KEY_HEADER_TEXT_MARGIN_TOP = "setup_design_header_text_margin_top";
+
+ // Margin bottom size of the header text
+ String KEY_HEADER_TEXT_MARGIN_BOTTOM = "setup_design_header_text_margin_bottom";
+
// Gravity of the header, icon and description
String KEY_LAYOUT_GRAVITY = "setup_design_layout_gravity";
+ // Margin top of the icon
+ String KEY_ICON_MARGIN_TOP = "setup_design_icon_margin_top";
+
+ // Size of the icon
+ String KEY_ICON_SIZE = "setup_design_icon_size";
+
// Background color of the header area
String KEY_HEADER_AREA_BACKGROUND_COLOR = "setup_design_header_area_background_color";
+ // Margin bottom size of the header container
+ String KEY_HEADER_CONTAINER_MARGIN_BOTTOM = "setup_design_header_container_margin_bottom";
+
+ // Auto text size enabled status
+ String KEY_HEADER_AUTO_SIZE_ENABLED = "setup_design_header_auto_size_enabled";
+
+ // Max text size of header when auto size enabled. Ignored if auto size is false.
+ String KEY_HEADER_AUTO_SIZE_MAX_TEXT_SIZE = "setup_design_header_auto_size_max_text_size";
+
+ // Min text size of header when auto size enabled. Ignored if auto size is false.
+ String KEY_HEADER_AUTO_SIZE_MIN_TEXT_SIZE = "setup_design_header_auto_size_min_text_size";
+
+ // The max lines of the max text size when auto size enabled. Ignored if auto size is false.
+ String KEY_HEADER_AUTO_SIZE_MAX_LINE_OF_MAX_SIZE =
+ "setup_design_header_auto_size_max_line_of_max_size";
+
+ // Extra line spacing of header when auto size enabled. Ignored if auto size is false.
+ String KEY_HEADER_AUTO_SIZE_LINE_SPACING_EXTRA =
+ "setup_design_header_auto_size_line_spacing_extra";
+
// Text size of the description
String KEY_DESCRIPTION_TEXT_SIZE = "setup_design_description_text_size";
@@ -185,6 +245,12 @@ public @interface PartnerConfigKey {
// Font family of the description
String KEY_DESCRIPTION_FONT_FAMILY = "setup_design_description_font_family";
+ // Margin top size of the header text
+ String KEY_DESCRIPTION_TEXT_MARGIN_TOP = "setup_design_description_text_margin_top";
+
+ // Margin bottom size of the header text
+ String KEY_DESCRIPTION_TEXT_MARGIN_BOTTOM = "setup_design_description_text_margin_bottom";
+
// Text size of the body content text
String KEY_CONTENT_TEXT_SIZE = "setup_design_content_text_size";
@@ -200,6 +266,27 @@ public @interface PartnerConfigKey {
// Gravity of the body content text
String KEY_CONTENT_LAYOUT_GRAVITY = "setup_design_content_layout_gravity";
+ // The title text size of list items.
+ String KEY_ITEMS_TITLE_TEXT_SIZE = "setup_design_items_title_text_size";
+
+ // The summary text size of list items.
+ String KEY_ITEMS_SUMMARY_TEXT_SIZE = "setup_design_items_summary_text_size";
+
+ // The summary margin top of list items.
+ String KEY_ITEMS_SUMMARY_MARGIN_TOP = "setup_design_items_summary_margin_top";
+
+ // The font family of list items.
+ String KEY_ITEMS_FONT_FAMILY = "setup_design_items_font_family";
+
+ // The padding top of list items.
+ String KEY_ITEMS_PADDING_TOP = "setup_design_items_padding_top";
+
+ // The padding bottom of list items.
+ String KEY_ITEMS_PADDING_BOTTOM = "setup_design_items_padding_bottom";
+
+ // The minimum height of list items.
+ String KEY_ITEMS_MIN_HEIGHT = "setup_design_items_min_height";
+
// The animation of loading screen used in those activities which is non of below type.
String KEY_PROGRESS_ILLUSTRATION_DEFAULT = "progress_illustration_custom_default";
@@ -218,4 +305,7 @@ public @interface PartnerConfigKey {
// The minimum illustration display time, set to 0 may cause the illustration stuck
String KEY_PROGRESS_ILLUSTRATION_DISPLAY_MINIMUM_MS = "progress_illustration_display_minimum_ms";
+
+ // The transition type between activities
+ String KEY_TRANSITION_TYPE = "setup_design_transition_type";
}