SupportLeanbackShowcase: Changed styles into new theme APIs

The card styles are  converted into themes, and in the
ImageCardViewPresenter, each ImageCardView is generated through the use
of the resource ID of each specific theme.
This is to conform to the latest widget API change which moved a set of
attributes to theme for customizing widgets.

Bug: 26249596
Change-Id: Id64aeebb96bee13c6cb68f8ab69cacdfb9a98531
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/cards/CardExampleActivity.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/cards/CardExampleActivity.java
index 7b8225f..ecb0c7a 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/cards/CardExampleActivity.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/app/cards/CardExampleActivity.java
@@ -19,8 +19,8 @@
 import android.graphics.drawable.ColorDrawable;
 import android.os.Bundle;
 import android.support.v17.leanback.app.GuidedStepFragment;
-import android.support.v17.leanback.supportleanbackshowcase.R;
 import android.support.v17.leanback.supportleanbackshowcase.app.dialog.DialogExampleFragment;
+import android.support.v17.leanback.supportleanbackshowcase.R;
 
 /**
  * TODO: Javadoc
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CardPresenterSelector.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CardPresenterSelector.java
index 1228b14..d4e8283 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CardPresenterSelector.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CardPresenterSelector.java
@@ -53,19 +53,19 @@
                 case SQUARE_BIG:
                 case GRID_SQUARE:
                 case GAME: {
-                    int style = R.style.MovieCardSimpleStyle;
+                    int themeResId = R.style.MovieCardSimpleTheme;
                     if (card.getType() == Card.Type.MOVIE_BASE) {
-                        style = R.style.MovieCardBasicStyle;
+                        themeResId = R.style.MovieCardBasicTheme;
                     } else if (card.getType() == Card.Type.MOVIE_COMPLETE) {
-                        style = R.style.MovieCardCompleteStyle;
+                        themeResId = R.style.MovieCardCompleteTheme;
                     } else if (card.getType() == Card.Type.SQUARE_BIG) {
-                        style = R.style.SquareBigCard;
+                        themeResId = R.style.SquareBigCardTheme;
                     } else if (card.getType() == Card.Type.GRID_SQUARE) {
-                        style = R.style.GridCardStyle;
+                        themeResId = R.style.GridCardTheme;
                     } else if (card.getType() == Card.Type.GAME) {
-                        style = R.style.GameCardStyle;
+                        themeResId = R.style.GameCardTheme;
                     }
-                    presenter = new ImageCardViewPresenter(mContext, style);
+                    presenter = new ImageCardViewPresenter(mContext, themeResId);
                     break;
                 }
                 case SIDE_INFO:
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/IconCardPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/IconCardPresenter.java
index bf5be70..9e7a69f 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/IconCardPresenter.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/IconCardPresenter.java
@@ -28,7 +28,7 @@
 public class IconCardPresenter extends ImageCardViewPresenter {
 
     public IconCardPresenter(Context context) {
-        super(context, R.style.IconCardStyle);
+        super(context, R.style.IconCardTheme);
     }
 
     @Override
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/ImageCardViewPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/ImageCardViewPresenter.java
index 813c1e7..1bb1703 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/ImageCardViewPresenter.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/ImageCardViewPresenter.java
@@ -18,6 +18,8 @@
 import android.support.v17.leanback.supportleanbackshowcase.R;
 import android.support.v17.leanback.supportleanbackshowcase.models.Card;
 import android.support.v17.leanback.widget.ImageCardView;
+import android.view.ContextThemeWrapper;
+
 import com.squareup.picasso.Picasso;
 
 /**
@@ -27,21 +29,17 @@
  */
 public class ImageCardViewPresenter extends AbstractCardPresenter<ImageCardView> {
 
-    private final int mCardStyleResId;
-
-    public ImageCardViewPresenter(Context context, int cardStyleResId) {
-        super(context);
-        mCardStyleResId = cardStyleResId;
+    public ImageCardViewPresenter(Context context, int cardThemeResId) {
+        super(new ContextThemeWrapper(context, cardThemeResId));
     }
 
     public ImageCardViewPresenter(Context context) {
-        super(context);
-        mCardStyleResId = R.style.DefaultCardStyle;
+        this(context, R.style.DefaultCardTheme);
     }
 
     @Override
     protected ImageCardView onCreateView() {
-        return new ImageCardView(getContext(), mCardStyleResId);
+        return new ImageCardView(getContext());
     }
 
     @Override
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/SingleLineCardPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/SingleLineCardPresenter.java
index 24dedd5..a823993 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/SingleLineCardPresenter.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/SingleLineCardPresenter.java
@@ -27,7 +27,7 @@
 public class SingleLineCardPresenter extends ImageCardViewPresenter {
 
     public SingleLineCardPresenter(Context context) {
-        super(context, R.style.SingleLineCardStyle);
+        super(context, R.style.SingleLineCardTheme);
     }
 
     @Override public void onBindViewHolder(Card card, ImageCardView cardView) {
diff --git a/samples/SupportLeanbackShowcase/app/src/main/res/values/styles.xml b/samples/SupportLeanbackShowcase/app/src/main/res/values/styles.xml
index c9b0476..4e866de 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/res/values/styles.xml
+++ b/samples/SupportLeanbackShowcase/app/src/main/res/values/styles.xml
@@ -51,21 +51,35 @@
         <item name="android:layout_height">@dimen/movie_image_card_height</item>
     </style>
 
+
     <style name="MovieCardSimpleStyle" parent="Widget.Leanback.ImageCardViewStyle">
         <item name="lbImageCardViewType">Title</item>
-        <item name="lbImageCardViewImageStyle">@style/MovieCardImageStyle</item>
         <item name="cardBackground">@null</item>
     </style>
 
+    <!-- Theme corresponding to the MovieCardSimpleStyle -->
+    <style name="MovieCardSimpleTheme" parent="Theme.Leanback">
+        <item name="imageCardViewStyle"> @style/MovieCardSimpleStyle </item>
+        <item name="imageCardViewImageStyle">@style/MovieCardImageStyle</item>
+    </style>
+
     <style name="MovieCardCompleteStyle" parent="MovieCardSimpleStyle">
-        <item name="lbImageCardViewTitleStyle">@style/MovieCardTitleTwoLineStyle</item>
-        <item name="lbImageCardViewBadgeStyle">@style/MovieCardBadgeStyle</item>
-        <item name="lbImageCardViewContentStyle">@style/MovieCardContentStyle</item>
+
         <item name="lbImageCardViewType">Title|Content|IconOnLeft</item>
     </style>
 
-    <style name="MovieCardBasicStyle" parent="MovieCardCompleteStyle">
-        <item name="lbImageCardViewContentStyle">@style/MovieCardContentGoneStyle</item>
+    <!-- Theme corresponding to the MovieCardCompleteStyle -->
+    <style name="MovieCardCompleteTheme" parent="Theme.Leanback">
+        <item name="imageCardViewStyle"> @style/MovieCardCompleteStyle </item>
+        <item name="imageCardViewImageStyle">@style/MovieCardImageStyle</item>
+        <item name="imageCardViewTitleStyle">@style/MovieCardTitleTwoLineStyle</item>
+        <item name="imageCardViewBadgeStyle">@style/MovieCardBadgeStyle</item>
+        <item name="imageCardViewContentStyle">@style/MovieCardContentStyle</item>
+    </style>
+    
+    <!-- Theme corresponding to the MovieCardBasicStyle -->
+    <style name="MovieCardBasicTheme" parent="MovieCardCompleteTheme">
+        <item name="imageCardViewContentStyle">@style/MovieCardContentGoneStyle</item>
     </style>
 
     <!-- Squared Title/Content card style. Used in cards example. -->
@@ -75,10 +89,15 @@
     </style>
 
     <style name="SquareBigCard" parent="Widget.Leanback.ImageCardViewStyle">
-        <item name="lbImageCardViewImageStyle">@style/SquareBigCardImageStyle</item>
         <item name="cardBackground">@null</item>
     </style>
 
+    <!-- Theme corresponding to the SquareBigCard -->
+    <style name="SquareBigCardTheme" parent="Theme.Leanback">
+        <item name="imageCardViewStyle"> @style/SquareBigCard </item>
+        <item name="imageCardViewImageStyle">@style/SquareBigCardImageStyle</item>
+    </style>
+
     <!-- SideInfo. used in cards example -->
     <style name="SideInfoCardStyle" parent="Widget.Leanback.BaseCardViewStyle">
         <item name="cardType">mainOnly</item>
@@ -102,10 +121,15 @@
     </style>
 
     <style name="GridCardStyle" parent="Widget.Leanback.ImageCardViewStyle">
-        <item name="lbImageCardViewImageStyle">@style/GridCardImageStyle</item>
         <item name="cardBackground">@null</item>
     </style>
 
+    <!-- Theme corresponding to the GridCardTheme -->
+    <style name="GridCardTheme" parent="Theme.Leanback">
+        <item name="imageCardViewStyle"> @style/GridCardStyle </item>
+        <item name="imageCardViewImageStyle">@style/GridCardImageStyle</item>
+    </style>
+
     <!-- A default card style. Used in cards example. -->
     <style name="DefaultCardImageStyle" parent="Widget.Leanback.ImageCardView.ImageStyle">
         <item name="android:layout_width">@dimen/default_image_card_width</item>
@@ -114,7 +138,11 @@
 
     <style name="DefaultCardStyle" parent="Widget.Leanback.ImageCardViewStyle">
         <item name="cardBackground">@null</item>
-        <item name="lbImageCardViewImageStyle">@style/DefaultCardImageStyle</item>
+    </style>
+
+    <style name="DefaultCardTheme" parent="Theme.Leanback">
+        <item name="imageCardViewStyle"> @style/DefaultCardStyle </item>
+        <item name="imageCardViewImageStyle">@style/DefaultCardImageStyle</item>
     </style>
 
     <!-- Game card styles with custom Badge icon. Used in cards example. -->
@@ -127,9 +155,15 @@
     </style>
 
     <style name="GameCardStyle" parent="DefaultCardStyle">
-        <item name="lbImageCardViewContentStyle">@style/GameCardContentStyle</item>
         <item name="lbImageCardViewType">Title|Content|IconOnLeft</item>
-        <item name="lbImageCardViewBadgeStyle">@style/GameCardBadgeStyle</item>
+    </style>
+
+    <!-- Theme corresponding to the GameCardStyle -->
+    <style name="GameCardTheme" parent="Theme.Leanback">
+        <item name="imageCardViewStyle"> @style/GameCardStyle </item>
+        <item name="imageCardViewContentStyle">@style/GameCardContentStyle</item>
+        <item name="imageCardViewBadgeStyle">@style/GameCardBadgeStyle</item>
+        <item name="imageCardViewImageStyle">@style/DefaultCardImageStyle</item>
     </style>
 
     <!-- Squared single line card with colored footer style. Used in cards example. -->
@@ -149,13 +183,23 @@
     </style>
 
     <style name="SingleLineCardStyle" parent="DefaultCardStyle">
-        <item name="lbImageCardViewTitleStyle">@style/SingleLineCardTitleStyle</item>
         <item name="lbImageCardViewType">Title</item>
-        <item name="lbImageCardViewImageStyle">@style/SingleLineCardImageStyle</item>
-        <item name="lbImageCardViewInfoAreaStyle">@style/SingleLineCardInfoAreaStyle</item>
     </style>
 
+    <!-- Theme corresponding to the SingleLineCardStyle -->
+    <style name="SingleLineCardTheme" parent="Theme.Leanback">
+        <item name="imageCardViewStyle"> @style/SingleLineCardStyle </item>
+        <item name="imageCardViewTitleStyle">@style/SingleLineCardTitleStyle</item>
+        <item name="imageCardViewImageStyle">@style/SingleLineCardImageStyle</item>
+        <item name="imageCardViewInfoAreaStyle">@style/SingleLineCardInfoAreaStyle</item>
+    </style>
+
+
     <!-- Icon card style with custom focus handler. Used in cards example. -->
+    <style name="IconCardViewStyle" parent="DefaultCardStyle">
+        <item name="lbImageCardViewType">Title</item>
+    </style>
+
     <style name="IconCardImageStyle" parent="Widget.Leanback.ImageCardView.ImageStyle">
         <item name="android:layout_width">96dp</item>
         <item name="android:layout_height">96dp</item>
@@ -174,13 +218,12 @@
         <item name="layout_viewType">main</item>
     </style>
 
-    <style name="IconCardStyle" parent="DefaultCardStyle">
-        <item name="android:layout_width">96dp</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="lbImageCardViewTitleStyle">@style/IconCardTitleStyle</item>
-        <item name="lbImageCardViewType">Title</item>
-        <item name="lbImageCardViewImageStyle">@style/IconCardImageStyle</item>
-        <item name="lbImageCardViewInfoAreaStyle">@style/IconCardInfoAreaStyle</item>
+    <!-- Theme corresponding to the IconCardStyle -->
+    <style name="IconCardTheme" parent="Theme.Leanback">
+        <item name="imageCardViewStyle"> @style/IconCardViewStyle </item>
+        <item name="imageCardViewTitleStyle">@style/IconCardTitleStyle</item>
+        <item name="imageCardViewImageStyle">@style/IconCardImageStyle</item>
+        <item name="imageCardViewInfoAreaStyle">@style/IconCardInfoAreaStyle</item>
     </style>
 
 </resources>