summary refs log tree commit diff
path: root/src/ChatPage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ChatPage.cpp')
-rw-r--r--src/ChatPage.cpp85
1 files changed, 44 insertions, 41 deletions
diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp

index ad07efdd..777709be 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp
@@ -56,6 +56,7 @@ constexpr int RETRY_TIMEOUT = 5'000; constexpr size_t MAX_ONETIME_KEYS = 50; Q_DECLARE_METATYPE(std::optional<mtx::crypto::EncryptedFile>) +Q_DECLARE_METATYPE(std::optional<RelatedInfo>) ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) : QWidget(parent) @@ -65,8 +66,8 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) { setObjectName("chatPage"); - qRegisterMetaType<std::optional<mtx::crypto::EncryptedFile>>( - "std::optional<mtx::crypto::EncryptedFile>"); + qRegisterMetaType<std::optional<mtx::crypto::EncryptedFile>>(); + qRegisterMetaType<std::optional<RelatedInfo>>(); topLayout_ = new QHBoxLayout(this); topLayout_->setSpacing(0); @@ -287,19 +288,14 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) SLOT(showUnreadMessageNotification(int))); connect(text_input_, - SIGNAL(sendTextMessage(const QString &)), + &TextInputWidget::sendTextMessage, view_manager_, - SLOT(queueTextMessage(const QString &))); + &TimelineViewManager::queueTextMessage); connect(text_input_, - SIGNAL(sendReplyMessage(const QString &, const RelatedInfo &)), + &TextInputWidget::sendEmoteMessage, view_manager_, - SLOT(queueReplyMessage(const QString &, const RelatedInfo &))); - - connect(text_input_, - SIGNAL(sendEmoteMessage(const QString &)), - view_manager_, - SLOT(queueEmoteMessage(const QString &))); + &TimelineViewManager::queueEmoteMessage); connect(text_input_, &TextInputWidget::sendJoinRoomRequest, this, &ChatPage::joinRoom); @@ -307,7 +303,10 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) text_input_, &TextInputWidget::uploadMedia, this, - [this](QSharedPointer<QIODevice> dev, QString mimeClass, const QString &fn) { + [this](QSharedPointer<QIODevice> dev, + QString mimeClass, + const QString &fn, + const std::optional<RelatedInfo> &related) { QMimeDatabase db; QMimeType mime = db.mimeTypeForData(dev.data()); @@ -341,7 +340,8 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) mimeClass, mime = mime.name(), size = payload.size(), - dimensions](const mtx::responses::ContentURI &res, mtx::http::RequestErr err) { + dimensions, + related](const mtx::responses::ContentURI &res, mtx::http::RequestErr err) { if (err) { emit uploadFailed( tr("Failed to upload media. Please try again.")); @@ -359,7 +359,8 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) mimeClass, mime, size, - dimensions); + dimensions, + related); }); }); @@ -367,35 +368,37 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) text_input_->hideUploadSpinner(); emit showNotification(msg); }); - connect(this, - &ChatPage::mediaUploaded, - this, - [this](QString roomid, - QString filename, - std::optional<mtx::crypto::EncryptedFile> encryptedFile, - QString url, - QString mimeClass, - QString mime, - qint64 dsize, - QSize dimensions) { - text_input_->hideUploadSpinner(); + connect( + this, + &ChatPage::mediaUploaded, + this, + [this](QString roomid, + QString filename, + std::optional<mtx::crypto::EncryptedFile> encryptedFile, + QString url, + QString mimeClass, + QString mime, + qint64 dsize, + QSize dimensions, + const std::optional<RelatedInfo> &related) { + text_input_->hideUploadSpinner(); - if (encryptedFile) - encryptedFile->url = url.toStdString(); + if (encryptedFile) + encryptedFile->url = url.toStdString(); - if (mimeClass == "image") - view_manager_->queueImageMessage( - roomid, filename, encryptedFile, url, mime, dsize, dimensions); - else if (mimeClass == "audio") - view_manager_->queueAudioMessage( - roomid, filename, encryptedFile, url, mime, dsize); - else if (mimeClass == "video") - view_manager_->queueVideoMessage( - roomid, filename, encryptedFile, url, mime, dsize); - else - view_manager_->queueFileMessage( - roomid, filename, encryptedFile, url, mime, dsize); - }); + if (mimeClass == "image") + view_manager_->queueImageMessage( + roomid, filename, encryptedFile, url, mime, dsize, dimensions, related); + else if (mimeClass == "audio") + view_manager_->queueAudioMessage( + roomid, filename, encryptedFile, url, mime, dsize, related); + else if (mimeClass == "video") + view_manager_->queueVideoMessage( + roomid, filename, encryptedFile, url, mime, dsize, related); + else + view_manager_->queueFileMessage( + roomid, filename, encryptedFile, url, mime, dsize, related); + }); connect(room_list_, &RoomList::roomAvatarChanged, this, &ChatPage::updateTopBarAvatar);