mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-25 12:38:48 +03:00
Add basic support for replies (#292)
This commit is contained in:
parent
d56446ce97
commit
5b5d35fd1f
7 changed files with 41 additions and 1 deletions
|
@ -76,6 +76,8 @@ signals:
|
||||||
void connectionLost();
|
void connectionLost();
|
||||||
void connectionRestored();
|
void connectionRestored();
|
||||||
|
|
||||||
|
void messageReply(const QString &username, const QString &msg);
|
||||||
|
|
||||||
void notificationsRetrieved(const mtx::responses::Notifications &);
|
void notificationsRetrieved(const mtx::responses::Notifications &);
|
||||||
|
|
||||||
void uploadFailed(const QString &msg);
|
void uploadFailed(const QString &msg);
|
||||||
|
|
|
@ -144,6 +144,7 @@ public slots:
|
||||||
void openFileSelection();
|
void openFileSelection();
|
||||||
void hideUploadSpinner();
|
void hideUploadSpinner();
|
||||||
void focusLineEdit() { input_->setFocus(); }
|
void focusLineEdit() { input_->setFocus(); }
|
||||||
|
void addReply(const QString &username, const QString &msg);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void addSelectedEmoji(const QString &emoji);
|
void addSelectedEmoji(const QString &emoji);
|
||||||
|
|
|
@ -212,6 +212,8 @@ private:
|
||||||
void init();
|
void init();
|
||||||
//! Add a context menu option to save the image of the timeline item.
|
//! Add a context menu option to save the image of the timeline item.
|
||||||
void addSaveImageAction(ImageItem *image);
|
void addSaveImageAction(ImageItem *image);
|
||||||
|
//! Add the reply action in the context menu for widgets that support it.
|
||||||
|
void addReplyAction();
|
||||||
|
|
||||||
template<class Widget>
|
template<class Widget>
|
||||||
void setupLocalWidgetLayout(Widget *widget, const QString &userid, bool withSender);
|
void setupLocalWidgetLayout(Widget *widget, const QString &userid, bool withSender);
|
||||||
|
@ -240,6 +242,7 @@ private:
|
||||||
QAction *showReadReceipts_;
|
QAction *showReadReceipts_;
|
||||||
QAction *markAsRead_;
|
QAction *markAsRead_;
|
||||||
QAction *redactMsg_;
|
QAction *redactMsg_;
|
||||||
|
QAction *replyMsg_;
|
||||||
|
|
||||||
QHBoxLayout *topLayout_ = nullptr;
|
QHBoxLayout *topLayout_ = nullptr;
|
||||||
QHBoxLayout *messageLayout_ = nullptr;
|
QHBoxLayout *messageLayout_ = nullptr;
|
||||||
|
|
|
@ -605,6 +605,7 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent)
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(this, &ChatPage::dropToLoginPageCb, this, &ChatPage::dropToLoginPage);
|
connect(this, &ChatPage::dropToLoginPageCb, this, &ChatPage::dropToLoginPage);
|
||||||
|
connect(this, &ChatPage::messageReply, text_input_, &TextInputWidget::addReply);
|
||||||
|
|
||||||
instance_ = this;
|
instance_ = this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -614,3 +614,14 @@ TextInputWidget::paintEvent(QPaintEvent *)
|
||||||
p.setPen(QPen(borderColor()));
|
p.setPen(QPen(borderColor()));
|
||||||
p.drawLine(QPointF(0, 0), QPointF(width(), 0));
|
p.drawLine(QPointF(0, 0), QPointF(width(), 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TextInputWidget::addReply(const QString &username, const QString &msg)
|
||||||
|
{
|
||||||
|
input_->setText(QString("> %1: %2\n\n").arg(username).arg(msg));
|
||||||
|
input_->setFocus();
|
||||||
|
|
||||||
|
auto cursor = input_->textCursor();
|
||||||
|
cursor.movePosition(QTextCursor::End);
|
||||||
|
input_->setTextCursor(cursor);
|
||||||
|
}
|
||||||
|
|
|
@ -125,6 +125,7 @@ TimelineItem::TimelineItem(mtx::events::MessageType ty,
|
||||||
, room_id_{room_id}
|
, room_id_{room_id}
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
addReplyAction();
|
||||||
|
|
||||||
auto displayName = Cache::displayName(room_id_, userid);
|
auto displayName = Cache::displayName(room_id_, userid);
|
||||||
auto timestamp = QDateTime::currentDateTime();
|
auto timestamp = QDateTime::currentDateTime();
|
||||||
|
@ -290,6 +291,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Notice
|
||||||
, room_id_{room_id}
|
, room_id_{room_id}
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
addReplyAction();
|
||||||
|
|
||||||
event_id_ = QString::fromStdString(event.event_id);
|
event_id_ = QString::fromStdString(event.event_id);
|
||||||
const auto sender = QString::fromStdString(event.sender);
|
const auto sender = QString::fromStdString(event.sender);
|
||||||
|
@ -341,6 +343,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Emote>
|
||||||
, room_id_{room_id}
|
, room_id_{room_id}
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
addReplyAction();
|
||||||
|
|
||||||
event_id_ = QString::fromStdString(event.event_id);
|
event_id_ = QString::fromStdString(event.event_id);
|
||||||
const auto sender = QString::fromStdString(event.sender);
|
const auto sender = QString::fromStdString(event.sender);
|
||||||
|
@ -388,6 +391,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Text>
|
||||||
, room_id_{room_id}
|
, room_id_{room_id}
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
addReplyAction();
|
||||||
|
|
||||||
event_id_ = QString::fromStdString(event.event_id);
|
event_id_ = QString::fromStdString(event.event_id);
|
||||||
const auto sender = QString::fromStdString(event.sender);
|
const auto sender = QString::fromStdString(event.sender);
|
||||||
|
@ -610,6 +614,24 @@ TimelineItem::addSaveImageAction(ImageItem *image)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TimelineItem::addReplyAction()
|
||||||
|
{
|
||||||
|
if (contextMenu_) {
|
||||||
|
auto replyAction = new QAction("Reply", this);
|
||||||
|
contextMenu_->addAction(replyAction);
|
||||||
|
|
||||||
|
connect(replyAction, &QAction::triggered, this, [this]() {
|
||||||
|
if (!body_)
|
||||||
|
return;
|
||||||
|
|
||||||
|
emit ChatPage::instance()->messageReply(
|
||||||
|
Cache::displayName(room_id_, descriptionMsg_.userid),
|
||||||
|
body_->toPlainText());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TimelineItem::addAvatar()
|
TimelineItem::addAvatar()
|
||||||
{
|
{
|
||||||
|
|
|
@ -143,7 +143,7 @@ TimelineView::fetchHistory()
|
||||||
|
|
||||||
isPaginationInProgress_ = true;
|
isPaginationInProgress_ = true;
|
||||||
getMessages();
|
getMessages();
|
||||||
paginationTimer_->start(5000);
|
paginationTimer_->start(2000);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue