summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBabak Bostan <babakbo@google.com>2023-07-07 16:52:44 -0700
committerBabak Bostan <babakbo@google.com>2023-07-07 16:56:53 -0700
commit4af770c330e547832007b0b7d68a6b8b2de79318 (patch)
tree1fea31c5e810c147fe2e797ef29a7d68d3ced4ac
parenta8c47c4c48c576d9036d21d445fc4bf24d34ffa1 (diff)
downloadsystemlibs-4af770c330e547832007b0b7d68a6b8b2de79318.tar.gz
Make car-qc-lib responsive to ui config changes
- Updated the QCViewUtils to read the resources when needed. The previous implementation which would cache them at the util class creation time would prevent the ui elements to properly reflect the resources after the ui config changes. - Changed `android:textAppearance` to `style` since RRO does not peroperly work on textAppearance. Bug: 290413703 Test: Manual Change-Id: I508cf7c0c772f6260a7c40a04ef2ebf7271dcbc7
-rw-r--r--car-qc-lib/res/layout/qc_row_view.xml4
-rw-r--r--car-qc-lib/res/layout/qc_tile_view.xml2
-rw-r--r--car-qc-lib/src/com/android/car/qc/view/QCRowView.java3
-rw-r--r--car-qc-lib/src/com/android/car/qc/view/QCTileView.java3
-rw-r--r--car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java59
5 files changed, 24 insertions, 47 deletions
diff --git a/car-qc-lib/res/layout/qc_row_view.xml b/car-qc-lib/res/layout/qc_row_view.xml
index a4af032..9976ac6 100644
--- a/car-qc-lib/res/layout/qc_row_view.xml
+++ b/car-qc-lib/res/layout/qc_row_view.xml
@@ -77,7 +77,7 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:singleLine="true"
- android:textAppearance="@style/TextAppearance.QC.Title"
+ style="@style/TextAppearance.QC.Title"
app:layout_constraintStart_toEndOf="@+id/barrier1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/qc_summary"
@@ -89,7 +89,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
- android:textAppearance="@style/TextAppearance.QC.Subtitle"
+ style="@style/TextAppearance.QC.Subtitle"
app:layout_constraintStart_toEndOf="@+id/barrier1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/qc_title"
diff --git a/car-qc-lib/res/layout/qc_tile_view.xml b/car-qc-lib/res/layout/qc_tile_view.xml
index 7fb0884..c7b7511 100644
--- a/car-qc-lib/res/layout/qc_tile_view.xml
+++ b/car-qc-lib/res/layout/qc_tile_view.xml
@@ -37,5 +37,5 @@
android:id="@android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:textAppearance="@style/TextAppearance.QC.Subtitle"/>
+ style="@style/TextAppearance.QC.Subtitle"/>
</com.android.car.ui.uxr.DrawableStateLinearLayout> \ No newline at end of file
diff --git a/car-qc-lib/src/com/android/car/qc/view/QCRowView.java b/car-qc-lib/src/com/android/car/qc/view/QCRowView.java
index 2b6b7a5..490615c 100644
--- a/car-qc-lib/src/com/android/car/qc/view/QCRowView.java
+++ b/car-qc-lib/src/com/android/car/qc/view/QCRowView.java
@@ -346,8 +346,7 @@ public class QCRowView extends FrameLayout {
toggleButton.setTextOn(null);
toggleButton.setTextOff(null);
toggleButton.setOnCheckedChangeListener(null);
- Drawable icon = QCViewUtils.getInstance(mContext).getToggleIcon(
- action.getIcon(), action.isAvailable());
+ Drawable icon = QCViewUtils.getToggleIcon(mContext, action.getIcon(), action.isAvailable());
toggleButton.setContentDescription(action.getContentDescription());
toggleButton.setButtonDrawable(icon);
toggleButton.setChecked(action.isChecked());
diff --git a/car-qc-lib/src/com/android/car/qc/view/QCTileView.java b/car-qc-lib/src/com/android/car/qc/view/QCTileView.java
index 33c0eff..4173e25 100644
--- a/car-qc-lib/src/com/android/car/qc/view/QCTileView.java
+++ b/car-qc-lib/src/com/android/car/qc/view/QCTileView.java
@@ -125,8 +125,7 @@ public class QCTileView extends FrameLayout implements Observer<QCItem> {
}
mToggleButton.toggle();
});
- Drawable icon = QCViewUtils.getInstance(mContext).getToggleIcon(
- qcTile.getIcon(), qcTile.isAvailable());
+ Drawable icon = QCViewUtils.getToggleIcon(mContext, qcTile.getIcon(), qcTile.isAvailable());
mToggleButton.setButtonDrawable(icon);
mToggleButton.setOnCheckedChangeListener(
(buttonView, isChecked) -> {
diff --git a/car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java b/car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java
index 366c724..ca0f877 100644
--- a/car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java
+++ b/car-qc-lib/src/com/android/car/qc/view/QCViewUtils.java
@@ -16,7 +16,6 @@
package com.android.car.qc.view;
-import android.annotation.ColorInt;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
@@ -32,64 +31,44 @@ import com.android.car.qc.R;
* Utility class used by {@link QCTileView} and {@link QCRowView}
*/
public class QCViewUtils {
- private static QCViewUtils sInstance;
-
- private final Context mContext;
- private final Drawable mDefaultToggleBackground;
- private final Drawable mUnavailableToggleBackground;
- private final ColorStateList mDefaultToggleIconTint;
- @ColorInt
- private final int mUnavailableToggleIconTint;
- private final int mToggleForegroundIconInset;
-
- private QCViewUtils(@NonNull Context context) {
- mContext = context.getApplicationContext();
- mDefaultToggleBackground = mContext.getDrawable(R.drawable.qc_toggle_background);
- mUnavailableToggleBackground = mContext.getDrawable(
- R.drawable.qc_toggle_unavailable_background);
- mDefaultToggleIconTint = mContext.getColorStateList(R.color.qc_toggle_icon_fill_color);
- mUnavailableToggleIconTint = mContext.getColor(R.color.qc_toggle_unavailable_color);
- mToggleForegroundIconInset = mContext.getResources()
- .getDimensionPixelSize(R.dimen.qc_toggle_foreground_icon_inset);
- }
-
- /**
- * Get an instance of {@link QCViewUtils}
- */
- public static QCViewUtils getInstance(@NonNull Context context) {
- if (sInstance == null) {
- sInstance = new QCViewUtils(context);
- }
- return sInstance;
- }
/**
* Create a return a Quick Control toggle icon - used for tiles and action toggles.
*/
- public Drawable getToggleIcon(@Nullable Icon icon, boolean available) {
+ public static Drawable getToggleIcon(@NonNull Context context, @Nullable Icon icon,
+ boolean available) {
+ Drawable defaultToggleBackground = context.getDrawable(R.drawable.qc_toggle_background);
+ Drawable unavailableToggleBackground = context.getDrawable(
+ R.drawable.qc_toggle_unavailable_background);
+ int toggleForegroundIconInset = context.getResources()
+ .getDimensionPixelSize(R.dimen.qc_toggle_foreground_icon_inset);
+
Drawable background = available
- ? mDefaultToggleBackground.getConstantState().newDrawable().mutate()
- : mUnavailableToggleBackground.getConstantState().newDrawable().mutate();
+ ? defaultToggleBackground.getConstantState().newDrawable().mutate()
+ : unavailableToggleBackground.getConstantState().newDrawable().mutate();
if (icon == null) {
return background;
}
- Drawable iconDrawable = icon.loadDrawable(mContext);
+ Drawable iconDrawable = icon.loadDrawable(context);
if (iconDrawable == null) {
return background;
}
if (!available) {
- iconDrawable.setTint(mUnavailableToggleIconTint);
+ int unavailableToggleIconTint = context.getColor(R.color.qc_toggle_unavailable_color);
+ iconDrawable.setTint(unavailableToggleIconTint);
} else {
- iconDrawable.setTintList(mDefaultToggleIconTint);
+ ColorStateList defaultToggleIconTint = context.getColorStateList(
+ R.color.qc_toggle_icon_fill_color);
+ iconDrawable.setTintList(defaultToggleIconTint);
}
Drawable[] layers = {background, iconDrawable};
LayerDrawable drawable = new LayerDrawable(layers);
- drawable.setLayerInsetRelative(/* index= */ 1, mToggleForegroundIconInset,
- mToggleForegroundIconInset, mToggleForegroundIconInset,
- mToggleForegroundIconInset);
+ drawable.setLayerInsetRelative(/* index= */ 1, toggleForegroundIconInset,
+ toggleForegroundIconInset, toggleForegroundIconInset,
+ toggleForegroundIconInset);
return drawable;
}
}