diff --git a/src/dialogs/UserMentions.cpp b/src/dialogs/UserMentions.cpp
index 8f56ec93..4cfcdaca 100644
--- a/src/dialogs/UserMentions.cpp
+++ b/src/dialogs/UserMentions.cpp
@@ -1,3 +1,4 @@
+#include <QTabWidget>
#include <QTimer>
#include "UserMentions.h"
@@ -8,31 +9,50 @@ using namespace dialogs;
UserMentions::UserMentions(QWidget *parent)
: QWidget{parent}
{
+ tab_layout_ = new QTabWidget(this);
+
top_layout_ = new QVBoxLayout(this);
top_layout_->setSpacing(0);
top_layout_->setMargin(0);
- scroll_area_ = new QScrollArea(this);
- scroll_area_->setWidgetResizable(true);
- scroll_area_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ local_scroll_area_ = new QScrollArea(this);
+ local_scroll_area_->setWidgetResizable(true);
+ local_scroll_area_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+
+ local_scroll_widget_ = new QWidget(this);
+ local_scroll_widget_->setObjectName("local_scroll_widget");
+
+ all_scroll_area_ = new QScrollArea(this);
+ all_scroll_area_->setWidgetResizable(true);
+ all_scroll_area_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- scroll_widget_ = new QWidget(this);
- scroll_widget_->setObjectName("scroll_widget");
+ all_scroll_widget_ = new QWidget(this);
+ all_scroll_widget_->setObjectName("all_scroll_widget");
// Height of the typing display.
QFont f;
f.setPointSizeF(f.pointSizeF() * 0.9);
const int bottomMargin = QFontMetrics(f).height() + 6;
- scroll_layout_ = new QVBoxLayout(scroll_widget_);
- scroll_layout_->setContentsMargins(4, 0, 15, bottomMargin);
- scroll_layout_->setSpacing(0);
- scroll_layout_->setObjectName("timelinescrollarea");
+ local_scroll_layout_ = new QVBoxLayout(local_scroll_widget_);
+ local_scroll_layout_->setContentsMargins(4, 0, 15, bottomMargin);
+ local_scroll_layout_->setSpacing(0);
+ local_scroll_layout_->setObjectName("localcrollarea");
- scroll_area_->setWidget(scroll_widget_);
- scroll_area_->setAlignment(Qt::AlignBottom);
+ all_scroll_layout_ = new QVBoxLayout(all_scroll_widget_);
+ all_scroll_layout_->setContentsMargins(4, 0, 15, bottomMargin);
+ all_scroll_layout_->setSpacing(0);
+ all_scroll_layout_->setObjectName("allcrollarea");
- top_layout_->addWidget(scroll_area_);
+ local_scroll_area_->setWidget(local_scroll_widget_);
+ local_scroll_area_->setAlignment(Qt::AlignBottom);
+
+ all_scroll_area_->setWidget(all_scroll_widget_);
+ all_scroll_area_->setAlignment(Qt::AlignBottom);
+
+ tab_layout_->addTab(local_scroll_area_, tr("This Room"));
+ tab_layout_->addTab(all_scroll_area_, tr("All Rooms"));
+ top_layout_->addWidget(tab_layout_);
setLayout(top_layout_);
}
@@ -41,18 +61,41 @@ void
UserMentions::pushItem(const QString &event_id,
const QString &user_id,
const QString &body,
- const QString &room_id)
+ const QString &room_id,
+ const QString ¤t_room_id)
{
+ setUpdatesEnabled(false);
+
+ // Add to the 'all' section
TimelineItem *view_item = new TimelineItem(
- mtx::events::MessageType::Text, user_id, body, true, room_id, scroll_widget_);
+ mtx::events::MessageType::Text, user_id, body, true, room_id, all_scroll_widget_);
view_item->setEventId(event_id);
- setUpdatesEnabled(false);
view_item->hide();
- scroll_layout_->addWidget(view_item);
+ all_scroll_layout_->addWidget(view_item);
QTimer::singleShot(0, this, [view_item, this]() {
view_item->show();
view_item->adjustSize();
setUpdatesEnabled(true);
});
+
+ // if it matches the current room... add it to the current room as well.
+ if (QString::compare(room_id, current_room_id, Qt::CaseInsensitive) == 0) {
+ // Add to the 'local' section
+ TimelineItem *local_view_item = new TimelineItem(mtx::events::MessageType::Text,
+ user_id,
+ body,
+ true,
+ room_id,
+ local_scroll_widget_);
+ local_view_item->setEventId(event_id);
+ local_view_item->hide();
+
+ local_scroll_layout_->addWidget(local_view_item);
+
+ QTimer::singleShot(0, this, [local_view_item, this]() {
+ local_view_item->show();
+ local_view_item->adjustSize();
+ });
+ }
}
\ No newline at end of file
diff --git a/src/dialogs/UserMentions.h b/src/dialogs/UserMentions.h
index e995b207..9b43dcfd 100644
--- a/src/dialogs/UserMentions.h
+++ b/src/dialogs/UserMentions.h
@@ -2,6 +2,7 @@
#include <QScrollArea>
#include <QScrollBar>
+#include <QTabWidget>
#include <QVBoxLayout>
#include <QWidget>
@@ -15,14 +16,20 @@ public:
void pushItem(const QString &event_id,
const QString &user_id,
const QString &body,
- const QString &room_id);
+ const QString &room_id,
+ const QString ¤t_room_id);
private:
+ QTabWidget *tab_layout_;
QVBoxLayout *top_layout_;
- QVBoxLayout *scroll_layout_;
+ QVBoxLayout *local_scroll_layout_;
+ QVBoxLayout *all_scroll_layout_;
- QScrollArea *scroll_area_;
- QWidget *scroll_widget_;
+ QScrollArea *local_scroll_area_;
+ QWidget *local_scroll_widget_;
+
+ QScrollArea *all_scroll_area_;
+ QWidget *all_scroll_widget_;
};
}
\ No newline at end of file
|