change instant messaging UI

changing the interface to provide a clearer view
and convert the remaining unecessary hashes to
registered name when available.

Change-Id: I985036bc5fc4cdbe121dbf5e88252fb964cdc757
diff --git a/callwidget.cpp b/callwidget.cpp
index a3ad48a..929088d 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -781,13 +781,15 @@
 {
     ui->contactMethodComboBox->clear();
     configureSendCRPageButton(nodeIdx);
-    ui->imNameLabel->setText(QString(tr("Conversation with %1", "%1 is the contact name"))
-                             .arg(nodeIdx.data(static_cast<int>(Ring::Role::Name)).toString()));
+    ui->imNameLabel->setText(QString(tr("%1\n%2", "%1 is the contact username, %2 is the contact registered name"))
+                             .arg(nodeIdx.data(static_cast<int>(Ring::Role::Name)).toString())
+                             .arg(nodeIdx.data(static_cast<int>(Person::Role::IdOfLastCMUsed)).value<QString>()));
     auto cmVector = RecentModel::instance().getContactMethods(nodeIdx);
-    ui->contactMethodComboBox->setEnabled(cmVector.size() > 1);
+    ui->contactMethodComboBox->setVisible(cmVector.size() > 1);
     foreach (const ContactMethod* cm, cmVector) {
-        ui->contactMethodComboBox->addItem(cm->uri());
+        ui->contactMethodComboBox->addItem(cm->bestId());
     }
+
     ui->stackedWidget->setCurrentWidget(ui->messagingPage);
     disconnect(imClickedConnection_);
     imClickedConnection_ = connect(ui->listMessageView, &QListView::clicked, [this](const QModelIndex& index) {
@@ -805,14 +807,21 @@
 {
     if (ui->imMessageEdit->text().trimmed().isEmpty())
         return;
-    auto number = ui->contactMethodComboBox->currentText();
-    if (auto cm = PhoneDirectoryModel::instance().getNumber(number)) {
-        QMap<QString, QString> msg;
-        msg["text/plain"] = ui->imMessageEdit->text();
-        cm->sendOfflineTextMessage(msg);
-        ui->imMessageEdit->clear();
+
+    auto idx = RecentModel::instance().selectionModel()->currentIndex();
+    auto cmVec = RecentModel::instance().getContactMethods(idx);
+    if (cmVec.size() > 0) {
+            auto cm = cmVec[0];
+            if(!cm) {
+                qWarning() << "Contact Method not found";
+                return;
+            }
+            QMap<QString, QString> msg;
+            msg["text/plain"] = ui->imMessageEdit->text();
+            cm->sendOfflineTextMessage(msg);
+            ui->imMessageEdit->clear();
     } else {
-        qWarning() << "Contact Method not found for " << number;
+        qWarning() << "No contact method found for messaging";
     }
 }
 
@@ -822,35 +831,45 @@
     on_sendIMButton_clicked();
 }
 
-void
-CallWidget::on_contactMethodComboBox_currentIndexChanged(const QString& number)
+void CallWidget::on_contactMethodComboBox_currentIndexChanged(int index)
 {
-    auto cm = PhoneDirectoryModel::instance().getNumber(number);
-    if (auto txtRecording = cm->textRecording()) {
-        ui->listMessageView->setModel(txtRecording->instantMessagingModel());
-        if (imConnection_)
-            disconnect(imConnection_);
-        imConnection_ = connect(txtRecording,
-                                SIGNAL(messageInserted(QMap<QString,QString>,ContactMethod*,Media::Media::Direction)),
-                                this,
-                                SLOT(slotAccountMessageReceived(QMap<QString,QString>,ContactMethod*,Media::Media::Direction)));
-        auto messagesPresent = txtRecording->instantMessagingModel()->rowCount() > 0;
-        if (messagesPresent) {
-            ui->listMessageView->scrollToBottom();
-            txtRecording->setAllRead();
-        }
-        ui->listMessageView->setVisible(messagesPresent);
-        ui->noMessagesLabel->setVisible(!messagesPresent);
-        if (not messagesPresent) {
-            imVisibleConnection_ = connect(txtRecording->instantMessagingModel(),
-                                           &QAbstractItemModel::rowsInserted,
-                                           [this, txtRecording]() {
-                if (imVisibleConnection_)
-                    disconnect(imVisibleConnection_);
-                auto messagesPresent = txtRecording->instantMessagingModel()->rowCount() > 0;
-                ui->listMessageView->setVisible(messagesPresent);
-                ui->noMessagesLabel->setVisible(!messagesPresent);
-            });
+    auto idx = RecentModel::instance().selectionModel()->currentIndex();
+    auto cmVec = RecentModel::instance().getContactMethods(idx);
+    ContactMethod* cm {};
+
+    if (index < cmVec.size() && index >= 0 ){
+        cm = cmVec[index];
+    } else {
+        qWarning() << "no contact method available";
+    }
+
+    if (cm){
+        if (auto txtRecording = cm->textRecording()) {
+            ui->listMessageView->setModel(txtRecording->instantMessagingModel());
+            if (imConnection_)
+                disconnect(imConnection_);
+            imConnection_ = connect(txtRecording,
+                                    SIGNAL(messageInserted(QMap<QString,QString>,ContactMethod*,Media::Media::Direction)),
+                                    this,
+                                    SLOT(slotAccountMessageReceived(QMap<QString,QString>,ContactMethod*,Media::Media::Direction)));
+            auto messagesPresent = txtRecording->instantMessagingModel()->rowCount() > 0;
+            if (messagesPresent) {
+                ui->listMessageView->scrollToBottom();
+                txtRecording->setAllRead();
+            }
+            ui->listMessageView->setVisible(messagesPresent);
+            ui->noMessagesLabel->setVisible(!messagesPresent);
+            if (not messagesPresent) {
+                imVisibleConnection_ = connect(txtRecording->instantMessagingModel(),
+                                               &QAbstractItemModel::rowsInserted,
+                                               [this, txtRecording]() {
+                    if (imVisibleConnection_)
+                        disconnect(imVisibleConnection_);
+                    auto messagesPresent = txtRecording->instantMessagingModel()->rowCount() > 0;
+                    ui->listMessageView->setVisible(messagesPresent);
+                    ui->noMessagesLabel->setVisible(!messagesPresent);
+                });
+            }
         }
     }
 }
@@ -908,13 +927,6 @@
 }
 
 void
-CallWidget::on_copyCMButton_clicked()
-{
-    auto text = ui->contactMethodComboBox->currentText();
-    QApplication::clipboard()->setText(text);
-}
-
-void
 CallWidget::on_qrButton_toggled(bool checked)
 {
     ui->qrLabel->setVisible(checked);
diff --git a/callwidget.h b/callwidget.h
index 1b63eaa..d16a826 100644
--- a/callwidget.h
+++ b/callwidget.h
@@ -73,10 +73,8 @@
     void on_smartList_doubleClicked(const QModelIndex& index);
     void on_sendIMButton_clicked();
     void on_imMessageEdit_returnPressed();
-    void on_contactMethodComboBox_currentIndexChanged(const QString& number);
     void on_ringContactLineEdit_textChanged(const QString& text);
     void on_imBackButton_clicked();
-    void on_copyCMButton_clicked();
     void on_sendContactRequestPageButton_clicked();
     void on_sendCRBackButton_clicked();
     void on_smartList_clicked(const QModelIndex &index);
@@ -96,6 +94,7 @@
     void contactLineEdit_registeredNameFound(Account *account, NameDirectory::LookupStatus status, const QString& address, const QString& name);
     void searchBtnClicked();
     void selectedAccountChanged(const QModelIndex &current, const QModelIndex &previous);
+    void on_contactMethodComboBox_currentIndexChanged(int index);
 
 private:
     Ui::CallWidget* ui;
diff --git a/callwidget.ui b/callwidget.ui
index c65e9cc..cf4dc85 100644
--- a/callwidget.ui
+++ b/callwidget.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>1046</width>
+    <width>1128</width>
     <height>724</height>
    </rect>
   </property>
@@ -77,7 +77,7 @@
         <enum>Qt::Horizontal</enum>
        </property>
        <property name="handleWidth">
-        <number>10</number>
+        <number>2</number>
        </property>
        <property name="childrenCollapsible">
         <bool>true</bool>
@@ -477,6 +477,9 @@
                 <verstretch>0</verstretch>
                </sizepolicy>
               </property>
+              <property name="toolTip">
+               <string/>
+              </property>
               <property name="currentIndex">
                <number>0</number>
               </property>
@@ -1047,28 +1050,6 @@
                    </widget>
                   </item>
                   <item>
-                   <widget class="QPushButton" name="sendContactRequestPageButton">
-                    <property name="sizePolicy">
-                     <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-                      <horstretch>0</horstretch>
-                      <verstretch>0</verstretch>
-                     </sizepolicy>
-                    </property>
-                    <property name="minimumSize">
-                     <size>
-                      <width>130</width>
-                      <height>30</height>
-                     </size>
-                    </property>
-                    <property name="styleSheet">
-                     <string notr="true"/>
-                    </property>
-                    <property name="text">
-                     <string>contact request</string>
-                    </property>
-                   </widget>
-                  </item>
-                  <item>
                    <spacer name="horizontalSpacer_7">
                     <property name="orientation">
                      <enum>Qt::Horizontal</enum>
@@ -1083,6 +1064,12 @@
                   </item>
                   <item>
                    <widget class="QLabel" name="imNameLabel">
+                    <property name="minimumSize">
+                     <size>
+                      <width>400</width>
+                      <height>0</height>
+                     </size>
+                    </property>
                     <property name="font">
                      <font>
                       <pointsize>12</pointsize>
@@ -1091,7 +1078,7 @@
                      </font>
                     </property>
                     <property name="text">
-                     <string>Conversation with</string>
+                     <string/>
                     </property>
                     <property name="alignment">
                      <set>Qt::AlignCenter</set>
@@ -1118,16 +1105,16 @@
                    <widget class="QComboBox" name="contactMethodComboBox">
                     <property name="minimumSize">
                      <size>
-                      <width>244</width>
+                      <width>160</width>
                       <height>0</height>
                      </size>
                     </property>
                    </widget>
                   </item>
                   <item>
-                   <widget class="QPushButton" name="copyCMButton">
+                   <widget class="QPushButton" name="sendContactRequestPageButton">
                     <property name="sizePolicy">
-                     <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                     <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
                       <horstretch>0</horstretch>
                       <verstretch>0</verstretch>
                      </sizepolicy>
@@ -1138,24 +1125,18 @@
                       <height>30</height>
                      </size>
                     </property>
-                    <property name="maximumSize">
-                     <size>
-                      <width>30</width>
-                      <height>30</height>
-                     </size>
+                    <property name="toolTip">
+                     <string>Add to contacts</string>
+                    </property>
+                    <property name="styleSheet">
+                     <string notr="true"/>
                     </property>
                     <property name="text">
                      <string/>
                     </property>
                     <property name="icon">
                      <iconset resource="ressources.qrc">
-                      <normaloff>:/images/icons/ic_content_copy_white_24dp.png</normaloff>:/images/icons/ic_content_copy_white_24dp.png</iconset>
-                    </property>
-                    <property name="iconSize">
-                     <size>
-                      <width>18</width>
-                      <height>18</height>
-                     </size>
+                      <normaloff>:/images/icons/ic_person_add_white_24dp.png</normaloff>:/images/icons/ic_person_add_white_24dp.png</iconset>
                     </property>
                    </widget>
                   </item>
@@ -1209,6 +1190,9 @@
                   <property name="horizontalScrollMode">
                    <enum>QAbstractItemView::ScrollPerPixel</enum>
                   </property>
+                  <property name="spacing">
+                   <number>1</number>
+                  </property>
                   <property name="wordWrap">
                    <bool>true</bool>
                   </property>
@@ -1223,7 +1207,7 @@
                    <number>6</number>
                   </property>
                   <property name="topMargin">
-                   <number>6</number>
+                   <number>0</number>
                   </property>
                   <property name="rightMargin">
                    <number>6</number>
@@ -1244,6 +1228,12 @@
                       <pointsize>10</pointsize>
                      </font>
                     </property>
+                    <property name="inputMask">
+                     <string/>
+                    </property>
+                    <property name="placeholderText">
+                     <string>Type your message here</string>
+                    </property>
                    </widget>
                   </item>
                   <item>
diff --git a/stylesheet.css b/stylesheet.css
index 0611ca8..eb30916 100644
--- a/stylesheet.css
+++ b/stylesheet.css
@@ -123,15 +123,13 @@
 }
 
 QListView#listMessageView{
-    background: rgb(242, 242, 242);
+    background: rgb(255, 255, 255);
     border-top: 1px solid rgb(229, 229, 229);
+    border-bottom: 1px solid rgb(229, 229, 229);
 }
 
 QLineEdit#messageEdit, QLineEdit#imMessageEdit{
-    border-color: rgb(0, 192, 212);
-    border-radius: 5px;
-    border-width: 1px;
-    border-style: outset;
+    border: none;
     background-color: rgb(255, 255, 255);
 }
 
@@ -234,19 +232,19 @@
 }
 
 QPushButton#searchBtn, QPushButton#btnComBarVideo,
-QPushButton#sendButton, QPushButton#sendIMButton{
+QPushButton#sendButton, QPushButton#sendIMButton, QPushButton#sendContactRequestPageButton{
    background-color: #3AC0D2;
    border-radius: 15px;
    border:solid 1px;
 }
 
 QPushButton#searchBtn:hover, QPushButton#sendButton:hover,
-QPushButton#sendIMButton:hover, QPushButton#btnComBarVideo:hover{
+QPushButton#sendIMButton:hover, QPushButton#btnComBarVideo:hover, QPushButton#sendContactRequestPageButton:hover{
    background-color: #4dc6d6;
 }
 
 QPushButton#searchBtn:pressed, QPushButton#sendButton:pressed,
-QPushButton#sendIMButton:pressed, QPushButton#btnComBarVideo:pressed{
+QPushButton#sendIMButton:pressed, QPushButton#btnComBarVideo:pressed, QPushButton#sendContactRequestPageButton:pressed{
    background-color: #34acbd;
 }
 
@@ -288,7 +286,7 @@
 }
 
 QWidget#messagingPage, QWidget#contactRequestPage{
-    background: rgb(242, 242, 242);
+    background: rgb(255, 255, 255);
 }
 
 QPushButton#nextButton, QPushButton#playButton, QPushButton#clearHistoryButton, QPushButton#doTransferButton,