diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts
index 15497d60..b596fb67 100644
--- a/resources/langs/nheko_de.ts
+++ b/resources/langs/nheko_de.ts
@@ -12,7 +12,7 @@
ChatPage
-
+
Hochladen des Bildes fehlgeschlagen. Bitte versuche es erneut.
@@ -977,6 +977,19 @@ Medien-Größe: %2
Hochladen der Bilddatei fehlgeschlagen: %s
+
+ dialogs::UserMentions
+
+
+
+
+
+
+
+
+
+
+
dialogs::UserProfile
@@ -1056,32 +1069,32 @@ Medien-Größe: %2
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1089,7 +1102,7 @@ Medien-Größe: %2
message-description:
-
+
For when someone else is the sender
@@ -1108,7 +1121,7 @@ Medien-Größe: %2
utils
-
+
Du
diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts
index 84b76ba4..700c3d57 100644
--- a/resources/langs/nheko_el.ts
+++ b/resources/langs/nheko_el.ts
@@ -12,7 +12,7 @@
ChatPage
-
+
@@ -975,6 +975,19 @@ Media size: %2
+
+ dialogs::UserMentions
+
+
+
+
+
+
+
+
+
+
+
dialogs::UserProfile
@@ -1054,32 +1067,32 @@ Media size: %2
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1087,7 +1100,7 @@ Media size: %2
message-description:
-
+
For when someone else is the sender
@@ -1106,7 +1119,7 @@ Media size: %2
utils
-
+
diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts
index f44f8a73..a8329a94 100644
--- a/resources/langs/nheko_en.ts
+++ b/resources/langs/nheko_en.ts
@@ -12,7 +12,7 @@
ChatPage
-
+
Failed to upload image. Please try again.
@@ -979,6 +979,19 @@ Media size: %2
Failed to upload image: %s
+
+ dialogs::UserMentions
+
+
+
+
+
+
+
+
+
+
+
dialogs::UserProfile
@@ -1058,32 +1071,32 @@ Media size: %2
%1 an audio clip
-
+
%1 an image
-
+
%1 a file
-
+
%1 a video clip
-
+
%1 a sticker
-
+
%1 a notification
-
+
%1 an encrypted message
@@ -1091,7 +1104,7 @@ Media size: %2
message-description:
-
+
For when someone else is the sender
sent
@@ -1110,7 +1123,7 @@ Media size: %2
utils
-
+
You
diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts
index 6494664a..89eb33b7 100644
--- a/resources/langs/nheko_fi.ts
+++ b/resources/langs/nheko_fi.ts
@@ -12,7 +12,7 @@
ChatPage
-
+
Kuvan lähettäminen epäonnistui. Ole hyvä ja yritä uudelleen.
@@ -979,6 +979,19 @@ Median koko: %2
Kuvan lähetys epäonnistui: %s
+
+ dialogs::UserMentions
+
+
+
+
+
+
+
+
+
+
+
dialogs::UserProfile
@@ -1058,32 +1071,32 @@ Median koko: %2
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1091,7 +1104,7 @@ Median koko: %2
message-description:
-
+
For when someone else is the sender
@@ -1110,7 +1123,7 @@ Median koko: %2
utils
-
+
Sinä
diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts
index 600d191c..42f82b0f 100644
--- a/resources/langs/nheko_fr.ts
+++ b/resources/langs/nheko_fr.ts
@@ -12,7 +12,7 @@
ChatPage
-
+
@@ -978,6 +978,19 @@ Taille du média : %2
+
+ dialogs::UserMentions
+
+
+
+
+
+
+
+
+
+
+
dialogs::UserProfile
@@ -1057,32 +1070,32 @@ Taille du média : %2
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1090,7 +1103,7 @@ Taille du média : %2
message-description:
-
+
For when someone else is the sender
@@ -1109,7 +1122,7 @@ Taille du média : %2
utils
-
+
diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts
index aa1c6928..53840f82 100644
--- a/resources/langs/nheko_nl.ts
+++ b/resources/langs/nheko_nl.ts
@@ -12,7 +12,7 @@
ChatPage
-
+
@@ -977,6 +977,19 @@ Mediagrootte: %2
+
+ dialogs::UserMentions
+
+
+
+
+
+
+
+
+
+
+
dialogs::UserProfile
@@ -1056,32 +1069,32 @@ Mediagrootte: %2
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1089,7 +1102,7 @@ Mediagrootte: %2
message-description:
-
+
For when someone else is the sender
@@ -1108,7 +1121,7 @@ Mediagrootte: %2
utils
-
+
diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts
index 4c90292f..f4f98dbb 100644
--- a/resources/langs/nheko_pl.ts
+++ b/resources/langs/nheko_pl.ts
@@ -12,7 +12,7 @@
ChatPage
-
+
Nie udało się wysłać obrazu. Spróbuj ponownie.
@@ -981,6 +981,19 @@ Rozmiar multimediów: %2
Nie udało się wysłać obrazu: %s
+
+ dialogs::UserMentions
+
+
+
+
+
+
+
+
+
+
+
dialogs::UserProfile
@@ -1060,32 +1073,32 @@ Rozmiar multimediów: %2
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1093,7 +1106,7 @@ Rozmiar multimediów: %2
message-description:
-
+
For when someone else is the sender
@@ -1112,7 +1125,7 @@ Rozmiar multimediów: %2
utils
-
+
diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts
index 958e93fa..04285c72 100644
--- a/resources/langs/nheko_ru.ts
+++ b/resources/langs/nheko_ru.ts
@@ -12,7 +12,7 @@
ChatPage
-
+
Не удалось загрузить изображение. Пожалуйста, попробуйте еще раз.
@@ -980,6 +980,19 @@ Media size: %2
Не удалось загрузить изображение: %s
+
+ dialogs::UserMentions
+
+
+
+
+
+
+
+
+
+
+
dialogs::UserProfile
@@ -1059,32 +1072,32 @@ Media size: %2
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1092,7 +1105,7 @@ Media size: %2
message-description:
-
+
For when someone else is the sender
@@ -1111,7 +1124,7 @@ Media size: %2
utils
-
+
diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts
index 8c7b2d34..1e539e64 100644
--- a/resources/langs/nheko_zh_CN.ts
+++ b/resources/langs/nheko_zh_CN.ts
@@ -12,7 +12,7 @@
ChatPage
-
+
上传图像失败。请重试。
@@ -977,6 +977,19 @@ Media size: %2
上传图像失败:%s
+
+ dialogs::UserMentions
+
+
+
+
+
+
+
+
+
+
+
dialogs::UserProfile
@@ -1064,32 +1077,32 @@ Media size: %2
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1097,7 +1110,7 @@ Media size: %2
message-description:
-
+
For when someone else is the sender
@@ -1116,7 +1129,7 @@ Media size: %2
utils
-
+
diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp
index 18188429..ca18d810 100644
--- a/src/ChatPage.cpp
+++ b/src/ChatPage.cpp
@@ -91,12 +91,11 @@ ChatPage::ChatPage(QSharedPointer userSettings, QWidget *parent)
connect(sidebarActions_, &SideBarActions::createRoom, this, &ChatPage::createRoom);
user_info_widget_ = new UserInfoWidget(sideBar_);
- // user_mentions_widget_ = new UserMentionsWidget(sideBar_);
+ // user_mentions_widget_ = new UserMentionsWidget(top_bar_);
room_list_ = new RoomList(sideBar_);
connect(room_list_, &RoomList::joinRoom, this, &ChatPage::joinRoom);
sideBarLayout_->addWidget(user_info_widget_);
- // sideBarLayout_->addWidget(user_mentions_widget_);
sideBarLayout_->addWidget(room_list_);
sideBarLayout_->addWidget(sidebarActions_);
@@ -1000,7 +999,7 @@ ChatPage::showNotificationsDialog(const mtx::responses::Notifications &res, cons
const auto user_id = utils::event_sender(item.event);
const auto body = utils::event_body(item.event);
- notifDialog->pushItem(event_id, user_id, body, room_id);
+ notifDialog->pushItem(event_id, user_id, body, room_id, current_room_);
} catch (const lmdb::error &e) {
nhlog::db()->warn("error while sending desktop notification: {}", e.what());
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
#include
#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);
- scroll_widget_ = new QWidget(this);
- scroll_widget_->setObjectName("scroll_widget");
+ 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);
+
+ 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)
{
- TimelineItem *view_item = new TimelineItem(
- mtx::events::MessageType::Text, user_id, body, true, room_id, scroll_widget_);
- view_item->setEventId(event_id);
setUpdatesEnabled(false);
+
+ // Add to the 'all' section
+ TimelineItem *view_item = new TimelineItem(
+ mtx::events::MessageType::Text, user_id, body, true, room_id, all_scroll_widget_);
+ view_item->setEventId(event_id);
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
#include
+#include
#include
#include
@@ -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