androidTV: rework User cards on main frag

This patch resize cards on the main frag, and fix the display of
ringid on blockchain user.

Change-Id: I199315257bcbdd5838180e6f6f76d57692473e9e
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 d8059dd..6b57773 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
@@ -22,16 +22,15 @@
 import java.util.Arrays;
 
 import cx.ring.model.CallContact;
-import cx.ring.smartlist.SmartListViewModel;
 import cx.ring.tv.cards.Card;
+import cx.ring.tv.model.TVListViewModel;
 
 public class ContactCard extends Card {
-    SmartListViewModel mModel = null;
-    CallContact mContact = null;
+    TVListViewModel mModel = null;
     private byte[] mPhoto = null;
 
     public ContactCard(CallContact pCallContact, Type type) {
-        mContact = pCallContact;
+        mModel =  new TVListViewModel(pCallContact);
         setId(pCallContact.getId());
         setTitle(pCallContact.getDisplayName());
         setDescription(pCallContact.getRingUsername());
@@ -41,14 +40,14 @@
         setType(type);
     }
 
-    public ContactCard(SmartListViewModel model) {
+    public ContactCard(TVListViewModel model) {
         mModel = model;
-        setTitle(mModel.getContactName());
-        setDescription(mModel.getUuid());
-        if (mModel.getPhotoData() != null) {
-            mPhoto = mModel.getPhotoData();
+        setTitle(mModel.getCallContact().getDisplayName());
+        setDescription(mModel.getCallContact().getRingUsername());
+        if (mModel.getCallContact().getPhoto() != null) {
+            mPhoto = mModel.getCallContact().getPhoto();
         }
-        if (mModel.getContactName().equals(mModel.getUuid())) {
+        if (mModel.getCallContact().getDisplayName().equals(mModel.getCallContact().getRingUsername())) {
             if (model.isOnline()) {
                 setType(Type.CONTACT_ONLINE);
             } else {
@@ -63,13 +62,10 @@
         }
     }
 
-    public SmartListViewModel getModel() {
+    public TVListViewModel getModel() {
         return mModel;
     }
 
-    public CallContact getContact() {
-        return mContact;
-    }
 
     public byte[] getPhoto() {
         return mPhoto;
@@ -83,18 +79,9 @@
         ContactCard that = (ContactCard) pO;
 
         if (mModel != null )
-            return mModel.getUuid().equals(that.mModel.getUuid());
-        if (mContact != null ? !mContact.equals(that.mContact) : that.mContact != null)
-            return false;
+            return mModel.getCallContact().getId() == that.mModel.getCallContact().getId();
         return Arrays.equals(mPhoto, that.mPhoto);
 
     }
 
-    @Override
-    public int hashCode() {
-        int result = mModel != null ? mModel.hashCode() : 0;
-        result = 31 * result + (mContact != null ? mContact.hashCode() : 0);
-        result = 31 * result + Arrays.hashCode(mPhoto);
-        return result;
-    }
 }
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java b/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java
index f77fb5f..d97be93 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/MainFragment.java
@@ -34,7 +34,6 @@
 
 import cx.ring.R;
 import cx.ring.application.RingApplication;
-import cx.ring.smartlist.SmartListViewModel;
 import cx.ring.tv.about.AboutActivity;
 import cx.ring.tv.account.TVAccountExport;
 import cx.ring.tv.call.TVCallActivity;
@@ -46,6 +45,7 @@
 import cx.ring.tv.cards.contacts.ContactCard;
 import cx.ring.tv.cards.iconcards.IconCard;
 import cx.ring.tv.cards.iconcards.IconCardHelper;
+import cx.ring.tv.model.TVListViewModel;
 import cx.ring.tv.search.SearchActivity;
 
 public class MainFragment extends BaseBrowseFragment<MainPresenter> implements MainView {
@@ -177,7 +177,7 @@
     }
 
     @Override
-    public void refreshContact(final SmartListViewModel contact) {
+    public void refreshContact(final TVListViewModel contact) {
         getActivity().runOnUiThread(new Runnable() {
             @Override
             public void run() {
@@ -195,12 +195,12 @@
     }
 
     @Override
-    public void showContacts(final ArrayList<SmartListViewModel> contacts) {
+    public void showContacts(final ArrayList<TVListViewModel> contacts) {
         getActivity().runOnUiThread(new Runnable() {
             @Override
             public void run() {
                 cardRowAdapter.clear();
-                for (SmartListViewModel contact : contacts) {
+                for (TVListViewModel contact : contacts) {
                     cardRowAdapter.add(new ContactCard(contact));
                 }
                 mRowsAdapter.notifyArrayItemRangeChanged(0, contacts.size());
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 7bc49d3..2b828fb 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
@@ -36,7 +36,7 @@
 import cx.ring.services.AccountService;
 import cx.ring.services.ContactService;
 import cx.ring.services.PresenceService;
-import cx.ring.smartlist.SmartListViewModel;
+import cx.ring.tv.model.TVListViewModel;
 import cx.ring.utils.Observable;
 import cx.ring.utils.Observer;
 
@@ -108,7 +108,7 @@
                 case NEW_BUDDY_NOTIFICATION:
                     refreshContact(
                             event.getString(ServiceEvent.EventInput.BUDDY_URI));
-                           break;
+                    break;
             }
         }
     }
@@ -116,11 +116,10 @@
     private void refreshContact(String buddy) {
         for (Conversation conversation : mConversations) {
             CallContact callContact = conversation.getContact();
-            if (callContact.getIds().get(0).equals("ring:"+buddy)) {
-                SmartListViewModel smartListViewModel = new SmartListViewModel(conversation,
-                        callContact.getDisplayName(),
-                        callContact.getPhoto());
-                smartListViewModel.setOnline(mPresenceService.isBuddyOnline(callContact.getIds().get(0)));
+            if (callContact.getIds().get(0).equals("ring:" + buddy)) {
+                TVListViewModel smartListViewModel = new TVListViewModel(
+                        callContact,
+                        mPresenceService.isBuddyOnline(callContact.getIds().get(0)));
                 getView().refreshContact(smartListViewModel);
             }
         }
@@ -133,16 +132,16 @@
             public void run() {
                 mConversations.clear();
                 mConversations.addAll(mConversationFacade.getConversationsList());
-                ArrayList<SmartListViewModel> contacts = new ArrayList<>();
+                ArrayList<TVListViewModel> contacts = new ArrayList<>();
                 if (mConversations != null && mConversations.size() > 0) {
                     for (int i = 0; i < mConversations.size(); i++) {
                         Conversation conversation = mConversations.get(i);
                         CallContact callContact = conversation.getContact();
                         mContactService.loadContactData(callContact);
-                        SmartListViewModel smartListViewModel = new SmartListViewModel(conversation,
-                                callContact.getDisplayName(),
-                                callContact.getPhoto());
-                        smartListViewModel.setOnline(mPresenceService.isBuddyOnline(callContact.getIds().get(0)));
+
+                        TVListViewModel smartListViewModel = new TVListViewModel(
+                                callContact,
+                                mPresenceService.isBuddyOnline(callContact.getIds().get(0)));
                         contacts.add(smartListViewModel);
                     }
                 }
@@ -154,9 +153,10 @@
         subscribePresence();
     }
 
-    public void contactClicked(SmartListViewModel item) {
+    public void contactClicked(TVListViewModel item) {
         String accountID = mAccountService.getCurrentAccount().getAccountID();
-        String ringID = item.getUuid();
+
+        String ringID = item.getCallContact().getPhones().get(0).getNumber().toString();
         getView().callContact(accountID, ringID);
     }
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/main/MainView.java b/ring-android/app/src/main/java/cx/ring/tv/main/MainView.java
index 896dba0..56ce466 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/main/MainView.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/main/MainView.java
@@ -21,15 +21,15 @@
 
 import java.util.ArrayList;
 
-import cx.ring.smartlist.SmartListViewModel;
+import cx.ring.tv.model.TVListViewModel;
 
 public interface MainView {
 
     void showLoading(boolean show);
 
-    void refreshContact(SmartListViewModel contact);
+    void refreshContact(TVListViewModel contact);
 
-    void showContacts(ArrayList<SmartListViewModel> contacts);
+    void showContacts(ArrayList<TVListViewModel> contacts);
 
     void callContact(String accountID, String ringID);
 
diff --git a/ring-android/app/src/main/java/cx/ring/tv/model/TVListViewModel.java b/ring-android/app/src/main/java/cx/ring/tv/model/TVListViewModel.java
new file mode 100644
index 0000000..6206b04
--- /dev/null
+++ b/ring-android/app/src/main/java/cx/ring/tv/model/TVListViewModel.java
@@ -0,0 +1,53 @@
+/*
+ *  Copyright (C) 2017 Savoir-faire Linux Inc.
+ *
+ *  Author: Michel Schmit <michel.schmit@savoirfairelinux.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package cx.ring.tv.model;
+
+import cx.ring.model.CallContact;
+
+public class TVListViewModel {
+    CallContact mCallContact;
+    boolean isOnline;
+
+    public TVListViewModel(CallContact pCallContact, boolean pIsOnline) {
+        mCallContact = pCallContact;
+        isOnline = pIsOnline;
+    }
+
+    public TVListViewModel(CallContact pCallContact) {
+        mCallContact = pCallContact;
+        isOnline = false;
+    }
+
+    public CallContact getCallContact() {
+        return mCallContact;
+    }
+
+    public void setCallContact(CallContact pCallContact) {
+        mCallContact = pCallContact;
+    }
+
+    public boolean isOnline() {
+        return isOnline;
+    }
+
+    public void setOnline(boolean pOnline) {
+        isOnline = pOnline;
+    }
+}
diff --git a/ring-android/app/src/main/java/cx/ring/tv/search/RingSearchFragment.java b/ring-android/app/src/main/java/cx/ring/tv/search/RingSearchFragment.java
index 22eadf7..c0b7f1a 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/search/RingSearchFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/search/RingSearchFragment.java
@@ -148,7 +148,7 @@
         @Override
         public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
                                   RowPresenter.ViewHolder rowViewHolder, Row row) {
-            presenter.contactClicked(((ContactCard) item).getContact());
+            presenter.contactClicked(((ContactCard) item).getModel().getCallContact());
         }
     }
 
diff --git a/ring-android/app/src/main/res/values/dimens.xml b/ring-android/app/src/main/res/values/dimens.xml
index 88b9cc3..1aa0685 100644
--- a/ring-android/app/src/main/res/values/dimens.xml
+++ b/ring-android/app/src/main/res/values/dimens.xml
@@ -39,9 +39,9 @@
     <dimen name="drawer_content_padding">0dp</dimen>
     <dimen name="drawer_size">320dp</dimen>
 
-    <dimen name="default_image_card_width">168dp</dimen>
-    <dimen name="default_image_card_height">150dp</dimen>
+    <dimen name="default_image_card_width">110dp</dimen>
+    <dimen name="default_image_card_height">100dp</dimen>
 
-    <dimen name="search_image_card_width">112dp</dimen>
-    <dimen name="search_image_card_height">100dp</dimen>
+    <dimen name="search_image_card_width">100dp</dimen>
+    <dimen name="search_image_card_height">90dp</dimen>
 </resources>
\ No newline at end of file