androidtv: rework Card Styles

This patches remove duplicate information on cards. if the title and
description are the same, we display one one line card.

Change-Id: I5794710a34010275edb25c053d8a3595dc1993b4
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/Card.java b/ring-android/app/src/main/java/cx/ring/tv/cards/Card.java
index 1028783..a5502b0 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/Card.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/Card.java
@@ -125,6 +125,8 @@
         SEARCH_RESULT,
         CONTRIBUTOR,
         LICENCES,
+        CONTACT,
+        CONTACT_WITH_USERNAME,
     }
 
 }
\ No newline at end of file
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/CardPresenterSelector.java b/ring-android/app/src/main/java/cx/ring/tv/cards/CardPresenterSelector.java
index 7238ac3..4ffafb6 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/CardPresenterSelector.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/CardPresenterSelector.java
@@ -52,7 +52,13 @@
                     presenter = new AboutCardPresenter(mContext);
                     break;
                 case SEARCH_RESULT:
-                    presenter = new ContactCardPresenter(mContext,R.style.SearchtCardTheme);
+                    presenter = new ContactCardPresenter(mContext,R.style.SearchCardTheme);
+                    break;
+                case CONTACT:
+                    presenter = new ContactCardPresenter(mContext,R.style.ContactCardTheme);
+                    break;
+                case CONTACT_WITH_USERNAME:
+                    presenter = new ContactCardPresenter(mContext,R.style.ContactCompleteCardTheme);
                     break;
                 default:
                     presenter = new ContactCardPresenter(mContext, R.style.DefaultCardTheme);
diff --git a/ring-android/app/src/main/java/cx/ring/tv/cards/contacts/ContactCard.java b/ring-android/app/src/main/java/cx/ring/tv/cards/contacts/ContactCard.java
index 034d042..ea292a1 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/cards/contacts/ContactCard.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/cards/contacts/ContactCard.java
@@ -25,6 +25,7 @@
 public class ContactCard extends Card {
     CallContact mCallContact = null;
     private byte[] mPhoto = null;
+
     public ContactCard(CallContact pCallContact, Type type) {
         mCallContact = pCallContact;
         setId(pCallContact.getId());
@@ -37,7 +38,18 @@
     }
 
     public ContactCard(CallContact pCallContact) {
-        this(pCallContact, Type.DEFAULT);
+        mCallContact = pCallContact;
+        setId(pCallContact.getId());
+        setTitle(pCallContact.getDisplayName());
+        setDescription(pCallContact.getRingUsername());
+        if (pCallContact.getPhoto() != null) {
+            mPhoto = pCallContact.getPhoto();
+        }
+        if (pCallContact.getDisplayName().equals(pCallContact.getRingUsername())) {
+            setType(Type.CONTACT);
+        } else {
+            setType(Type.CONTACT_WITH_USERNAME);
+        }
     }
 
     public CallContact getCallContact() {
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/MainPresenter.java b/ring-android/app/src/main/java/cx/ring/tv/main/MainPresenter.java
index 93612a6..f875cef 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/MainPresenter.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/MainPresenter.java
@@ -92,10 +92,9 @@
 
         switch (event.getEventType()) {
             case CONVERSATIONS_CHANGED:
-                reloadConversations();
-                break;
             case ACCOUNTS_CHANGED:
             case NAME_REGISTRATION_ENDED:
+                reloadConversations();
                 reloadAccountInfos();
                 break;
         }
diff --git a/ring-android/app/src/main/res/values/styles.xml b/ring-android/app/src/main/res/values/styles.xml
index f6f3d41..3c5bae8 100644
--- a/ring-android/app/src/main/res/values/styles.xml
+++ b/ring-android/app/src/main/res/values/styles.xml
@@ -128,6 +128,14 @@
         <item name="lbImageCardViewType">Title</item>
     </style>
 
+    <style name="ContactTitleViewStyle" parent="DefaultCardStyle">
+        <item name="lbImageCardViewType">Title</item>
+    </style>
+
+    <style name="ContactCompleteCardViewStyle" parent="DefaultCardStyle">
+        <item name="lbImageCardViewType">Title|Content</item>
+    </style>
+
     <style name="IconCardImageStyle" parent="Widget.Leanback.ImageCardView.ImageStyle">
         <item name="android:layout_width">96dp</item>
         <item name="android:layout_height">96dp</item>
@@ -147,8 +155,8 @@
         <item name="layout_viewType">main</item>
     </style>
 
-    <!-- A Searcht card style. Used in cards example. -->
-    <style name="SearchtCardImageStyle" parent="Widget.Leanback.ImageCardView.ImageStyle">
+    <!-- A Search card style. Used in cards example. -->
+    <style name="SearchCardImageStyle" parent="Widget.Leanback.ImageCardView.ImageStyle">
         <item name="android:layout_width">@dimen/search_image_card_width</item>
         <item name="android:layout_height">@dimen/search_image_card_height</item>
     </style>
@@ -157,11 +165,18 @@
         <item name="cardBackground">@null</item>
         <item name="android:layout_width">96dp</item>
         <item name="android:layout_height">96dp</item>
+        <item name="lbImageCardViewType">Title</item>
     </style>
 
-    <style name="SearchtCardTheme" parent="Theme.Leanback">
+    <style name="ContactCardTheme" parent="DefaultCardTheme">
+        <item name="imageCardViewStyle">@style/ContactTitleViewStyle</item>
+    </style>
+    <style name="ContactCompleteCardTheme" parent="DefaultCardTheme">
+        <item name="imageCardViewStyle">@style/ContactCompleteCardViewStyle</item>
+    </style>
+    <style name="SearchCardTheme" parent="Theme.Leanback">
         <item name="imageCardViewStyle">@style/SearchCardStyle</item>
-        <item name="imageCardViewImageStyle">@style/SearchtCardImageStyle</item>
+        <item name="imageCardViewImageStyle">@style/SearchCardImageStyle</item>
     </style>
     <!-- Theme corresponding to the IconCardStyle -->
     <style name="IconCardTheme" parent="Theme.Leanback">