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