diff --git a/src/timeline/.TimelineItem.cpp.swp b/src/timeline/.TimelineItem.cpp.swp
new file mode 100644
index 00000000..75e03aeb
--- /dev/null
+++ b/src/timeline/.TimelineItem.cpp.swp
Binary files differdiff --git a/src/timeline/TimelineItem.cpp b/src/timeline/TimelineItem.cpp
index e52dce7b..7916bd80 100644
--- a/src/timeline/TimelineItem.cpp
+++ b/src/timeline/TimelineItem.cpp
@@ -282,6 +282,7 @@ TimelineItem::TimelineItem(mtx::events::MessageType ty,
const QString &room_id,
QWidget *parent)
: QWidget(parent)
+ , message_type_(ty)
, room_id_{room_id}
{
init();
@@ -325,8 +326,7 @@ TimelineItem::TimelineItem(mtx::events::MessageType ty,
generateBody(userid, displayName, formatted_body);
setupAvatarLayout(displayName);
- AvatarProvider::resolve(
- room_id_, userid, this, [this](const QImage &img) { setUserAvatar(img); });
+ setUserAvatar(userid);
} else {
generateBody(formatted_body);
setupSimpleLayout();
@@ -341,6 +341,7 @@ TimelineItem::TimelineItem(ImageItem *image,
const QString &room_id,
QWidget *parent)
: QWidget{parent}
+ , message_type_(mtx::events::MessageType::Image)
, room_id_{room_id}
{
init();
@@ -356,6 +357,7 @@ TimelineItem::TimelineItem(FileItem *file,
const QString &room_id,
QWidget *parent)
: QWidget{parent}
+ , message_type_(mtx::events::MessageType::File)
, room_id_{room_id}
{
init();
@@ -369,6 +371,7 @@ TimelineItem::TimelineItem(AudioItem *audio,
const QString &room_id,
QWidget *parent)
: QWidget{parent}
+ , message_type_(mtx::events::MessageType::Audio)
, room_id_{room_id}
{
init();
@@ -382,6 +385,7 @@ TimelineItem::TimelineItem(VideoItem *video,
const QString &room_id,
QWidget *parent)
: QWidget{parent}
+ , message_type_(mtx::events::MessageType::Video)
, room_id_{room_id}
{
init();
@@ -395,6 +399,7 @@ TimelineItem::TimelineItem(ImageItem *image,
const QString &room_id,
QWidget *parent)
: QWidget(parent)
+ , message_type_(mtx::events::MessageType::Image)
, room_id_{room_id}
{
setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::Image>, ImageItem>(
@@ -426,6 +431,7 @@ TimelineItem::TimelineItem(FileItem *file,
const QString &room_id,
QWidget *parent)
: QWidget(parent)
+ , message_type_(mtx::events::MessageType::File)
, room_id_{room_id}
{
setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::File>, FileItem>(
@@ -440,6 +446,7 @@ TimelineItem::TimelineItem(AudioItem *audio,
const QString &room_id,
QWidget *parent)
: QWidget(parent)
+ , message_type_(mtx::events::MessageType::Audio)
, room_id_{room_id}
{
setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::Audio>, AudioItem>(
@@ -454,6 +461,7 @@ TimelineItem::TimelineItem(VideoItem *video,
const QString &room_id,
QWidget *parent)
: QWidget(parent)
+ , message_type_(mtx::events::MessageType::Video)
, room_id_{room_id}
{
setupWidgetLayout<mtx::events::RoomEvent<mtx::events::msg::Video>, VideoItem>(
@@ -470,6 +478,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Notice
const QString &room_id,
QWidget *parent)
: QWidget(parent)
+ , message_type_(mtx::events::MessageType::Notice)
, room_id_{room_id}
{
init();
@@ -499,8 +508,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Notice
generateBody(sender, displayName, formatted_body);
setupAvatarLayout(displayName);
- AvatarProvider::resolve(
- room_id_, sender, this, [this](const QImage &img) { setUserAvatar(img); });
+ setUserAvatar(sender);
} else {
generateBody(formatted_body);
setupSimpleLayout();
@@ -517,6 +525,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Emote>
const QString &room_id,
QWidget *parent)
: QWidget(parent)
+ , message_type_(mtx::events::MessageType::Emote)
, room_id_{room_id}
{
init();
@@ -547,8 +556,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Emote>
generateBody(sender, displayName, formatted_body);
setupAvatarLayout(displayName);
- AvatarProvider::resolve(
- room_id_, sender, this, [this](const QImage &img) { setUserAvatar(img); });
+ setUserAvatar(sender);
} else {
generateBody(formatted_body);
setupSimpleLayout();
@@ -565,6 +573,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Text>
const QString &room_id,
QWidget *parent)
: QWidget(parent)
+ , message_type_(mtx::events::MessageType::Text)
, room_id_{room_id}
{
init();
@@ -595,8 +604,7 @@ TimelineItem::TimelineItem(const mtx::events::RoomEvent<mtx::events::msg::Text>
generateBody(sender, displayName, formatted_body);
setupAvatarLayout(displayName);
- AvatarProvider::resolve(
- room_id_, sender, this, [this](const QImage &img) { setUserAvatar(img); });
+ setUserAvatar(sender);
} else {
generateBody(formatted_body);
setupSimpleLayout();
@@ -781,9 +789,8 @@ TimelineItem::setupAvatarLayout(const QString &userName)
QFont f;
f.setPointSizeF(f.pointSizeF());
- userAvatar_ = new Avatar(this);
+ userAvatar_ = new Avatar(this, QFontMetrics(f).height() * 2);
userAvatar_->setLetter(QChar(userName[0]).toUpper());
- userAvatar_->setSize(QFontMetrics(f).height() * 2);
// TODO: The provided user name should be a UserId class
if (userName[0] == '@' && userName.size() > 1)
@@ -810,12 +817,12 @@ TimelineItem::setupSimpleLayout()
}
void
-TimelineItem::setUserAvatar(const QImage &avatar)
+TimelineItem::setUserAvatar(const QString &userid)
{
if (userAvatar_ == nullptr)
return;
- userAvatar_->setImage(avatar);
+ userAvatar_->setImage(room_id_, userid);
}
void
@@ -899,8 +906,7 @@ TimelineItem::addAvatar()
setupAvatarLayout(displayName);
- AvatarProvider::resolve(
- room_id_, userid, this, [this](const QImage &img) { setUserAvatar(img); });
+ setUserAvatar(userid);
}
void
@@ -951,4 +957,4 @@ TimelineItem::openRawMessageViewer() const
"failed to serialize event ({}, {})", room_id, event_id);
}
});
-}
\ No newline at end of file
+}
diff --git a/src/timeline/TimelineItem.h b/src/timeline/TimelineItem.h
index c0dab6b8..356976e5 100644
--- a/src/timeline/TimelineItem.h
+++ b/src/timeline/TimelineItem.h
@@ -215,7 +215,7 @@ public:
void setBackgroundColor(const QColor &color) { backgroundColor_ = color; }
QColor backgroundColor() const { return backgroundColor_; }
- void setUserAvatar(const QImage &pixmap);
+ void setUserAvatar(const QString &userid);
DescInfo descriptionMessage() const { return descriptionMsg_; }
QString eventId() const { return event_id_; }
void setEventId(const QString &event_id) { event_id_ = event_id; }
@@ -277,7 +277,7 @@ private:
QFutureWatcher<QString> *colorGenerating_;
QString event_id_;
- mtx::events::MessageType message_type_;
+ mtx::events::MessageType message_type_ = mtx::events::MessageType::Unknown;
QString room_id_;
DescInfo descriptionMsg_;
@@ -336,8 +336,7 @@ TimelineItem::setupLocalWidgetLayout(Widget *widget, const QString &userid, bool
generateBody(userid, displayName, "");
setupAvatarLayout(displayName);
- AvatarProvider::resolve(
- room_id_, userid, this, [this](const QImage &img) { setUserAvatar(img); });
+ setUserAvatar(userid);
} else {
setupSimpleLayout();
}
@@ -381,8 +380,7 @@ TimelineItem::setupWidgetLayout(Widget *widget, const Event &event, bool withSen
generateBody(sender, displayName, "");
setupAvatarLayout(displayName);
- AvatarProvider::resolve(
- room_id_, sender, this, [this](const QImage &img) { setUserAvatar(img); });
+ setUserAvatar(sender);
} else {
setupSimpleLayout();
}
diff --git a/src/timeline/TimelineView.cpp b/src/timeline/TimelineView.cpp
index 18b73eb0..ed783e90 100644
--- a/src/timeline/TimelineView.cpp
+++ b/src/timeline/TimelineView.cpp
@@ -306,7 +306,10 @@ TimelineView::parseEncryptedEvent(const mtx::events::EncryptedEvent<mtx::events:
dummy.origin_server_ts = e.origin_server_ts;
dummy.event_id = e.event_id;
dummy.sender = e.sender;
- dummy.content.body = "-- Encrypted Event (No keys found for decryption) --";
+ dummy.content.body =
+ tr("-- Encrypted Event (No keys found for decryption) --",
+ "Placeholder, when the message was not decrypted yet or can't be decrypted")
+ .toStdString();
try {
if (!cache::client()->inboundMegolmSessionExists(index)) {
@@ -319,7 +322,10 @@ TimelineView::parseEncryptedEvent(const mtx::events::EncryptedEvent<mtx::events:
}
} catch (const lmdb::error &e) {
nhlog::db()->critical("failed to check megolm session's existence: {}", e.what());
- dummy.content.body = "-- Decryption Error (failed to communicate with DB) --";
+ dummy.content.body = tr("-- Decryption Error (failed to communicate with DB) --",
+ "Placeholder, when the message can't be decrypted, because "
+ "the DB access failed when trying to lookup the session.")
+ .toStdString();
return {dummy, false};
}
@@ -335,7 +341,10 @@ TimelineView::parseEncryptedEvent(const mtx::events::EncryptedEvent<mtx::events:
index.sender_key,
e.what());
dummy.content.body =
- "-- Decryption Error (failed to retrieve megolm keys from db) --";
+ tr("-- Decryption Error (failed to retrieve megolm keys from db) --",
+ "Placeholder, when the message can't be decrypted, because the DB access "
+ "failed.")
+ .toStdString();
return {dummy, false};
} catch (const mtx::crypto::olm_exception &e) {
nhlog::crypto()->critical("failed to decrypt message with index ({}, {}, {}): {}",
@@ -343,7 +352,12 @@ TimelineView::parseEncryptedEvent(const mtx::events::EncryptedEvent<mtx::events:
index.session_id,
index.sender_key,
e.what());
- dummy.content.body = "-- Decryption Error (" + std::string(e.what()) + ") --";
+ dummy.content.body =
+ tr("-- Decryption Error (%1) --",
+ "Placeholder, when the message can't be decrypted. In this case, the Olm "
+ "decrytion returned an error, which is passed ad %1")
+ .arg(e.what())
+ .toStdString();
return {dummy, false};
}
@@ -365,7 +379,11 @@ TimelineView::parseEncryptedEvent(const mtx::events::EncryptedEvent<mtx::events:
if (events.size() == 1)
return {events.at(0), true};
- dummy.content.body = "-- Encrypted Event (Unknown event type) --";
+ dummy.content.body =
+ tr("-- Encrypted Event (Unknown event type) --",
+ "Placeholder, when the message was decrypted, but we couldn't parse it, because "
+ "Nheko/mtxclient don't support that event type yet")
+ .toStdString();
return {dummy, false};
}
|