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 ¤t, 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,