chat: fix history not being displayed
Issue: #79704
Change-Id: I8336277ec8932b74782b92e2ed14db7e0319f9d1
diff --git a/callwidget.cpp b/callwidget.cpp
index 06ef685..db1b00e 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -311,6 +311,7 @@
|| call->state() == Call::State::FAILURE
|| call->state() == Call::State::ABORTED) {
setActualCall(nullptr);
+ ui->instantMessagingWidget->setMediaText(nullptr);
ui->videoWidget->hide();
displaySpinner(false);
auto onHoldCall = callModel_->getActiveCalls().first();
@@ -321,6 +322,7 @@
} else if (call->state() == Call::State::CURRENT) {
displaySpinner(false);
ui->videoWidget->show();
+ ui->instantMessagingWidget->setMediaText(actualCall_);
}
ui->callStateLabel->setText(QString(tr("Call State: %1", "%1 is the state of the call"))
.arg(call->toHumanStateName()));
@@ -394,7 +396,6 @@
CallWidget::setActualCall(Call* value)
{
actualCall_ = value;
- ui->instantMessagingWidget->setMediaText(actualCall_);
}
void
diff --git a/instantmessagingwidget.cpp b/instantmessagingwidget.cpp
index 34f55d3..df4346b 100644
--- a/instantmessagingwidget.cpp
+++ b/instantmessagingwidget.cpp
@@ -75,14 +75,27 @@
if (call != nullptr) {
connect(call, SIGNAL(mediaAdded(Media::Media*)),
this, SLOT(mediaAdd(Media::Media*)));
- Media::Text *textMedia = call->addOutgoingMedia<Media::Text>();
- connect(ui->messageInput, &QLineEdit::returnPressed, [=]()
- {
- QMap<QString, QString> messages;
- messages["text/plain"] = ui->messageInput->text();
- textMedia->send(messages);
- ui->messageInput->clear();
- });
+ Media::Text *textMedia = nullptr;
+ if (call->hasMedia(Media::Media::Type::TEXT, Media::Media::Direction::OUT)) {
+ textMedia = call->firstMedia<Media::Text>(Media::Media::Direction::OUT);
+ } else {
+ textMedia = call->addOutgoingMedia<Media::Text>();
+ }
+ if (textMedia) {
+ connect(ui->messageOutput->model(),
+ SIGNAL(rowsInserted(const QModelIndex&, int, int)),
+ ui->messageOutput, SLOT(scrollToBottom()));
+ ui->messageOutput->setModel(
+ textMedia->recording()->
+ instantMessagingModel());
+ connect(ui->messageInput, &QLineEdit::returnPressed, [=]()
+ {
+ QMap<QString, QString> messages;
+ messages["text/plain"] = ui->messageInput->text();
+ textMedia->send(messages);
+ ui->messageInput->clear();
+ });
+ }
} else {
ui->messageOutput->disconnect();
ui->messageInput->disconnect();
@@ -99,12 +112,6 @@
break;
case Media::Media::Type::TEXT:
if (media->direction() == Media::Text::Direction::IN) {
- ui->messageOutput->setModel(
- static_cast<Media::Text*>(media)->recording()->
- instantMessagingModel());
- connect(ui->messageOutput->model(),
- SIGNAL(rowsInserted(const QModelIndex&, int, int)),
- ui->messageOutput, SLOT(scrollToBottom()));
connect(static_cast<Media::Text*>(media),
SIGNAL(messageReceived(QMap<QString,QString>)),
this,
@@ -158,4 +165,5 @@
GlobalSystemTray::instance().showMessage("Ring: Message Received", message["text/plain"]);
QApplication::alert(this, 5000);
}
+ this->show();
}