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);