diff --git a/src/RoomInfoListItem.cc b/src/RoomInfoListItem.cc
index f8989948..3e84051e 100644
--- a/src/RoomInfoListItem.cc
+++ b/src/RoomInfoListItem.cc
@@ -28,6 +28,7 @@
#include "RoomInfoListItem.h"
#include "RoomSettings.h"
#include "Theme.h"
+#include "Utils.h"
constexpr int Padding = 7;
constexpr int IconSize = 48;
@@ -244,7 +245,8 @@ RoomInfoListItem::paintEvent(QPaintEvent *event)
p.setFont(font);
p.setPen(QColor("#333"));
p.setBrush(Qt::NoBrush);
- p.drawText(avatarRegion.translated(0, -1), Qt::AlignCenter, QChar(roomName()[0]));
+ p.drawText(
+ avatarRegion.translated(0, -1), Qt::AlignCenter, utils::firstChar(roomName()));
} else {
p.save();
diff --git a/src/TopRoomBar.cc b/src/TopRoomBar.cc
index 381702e0..dc597bc9 100644
--- a/src/TopRoomBar.cc
+++ b/src/TopRoomBar.cc
@@ -27,6 +27,7 @@
#include "OverlayModal.h"
#include "RoomSettings.h"
#include "TopRoomBar.h"
+#include "Utils.h"
TopRoomBar::TopRoomBar(QWidget *parent)
: QWidget(parent)
@@ -40,7 +41,7 @@ TopRoomBar::TopRoomBar(QWidget *parent)
topLayout_->setMargin(10);
avatar_ = new Avatar(this);
- avatar_->setLetter(QChar('?'));
+ avatar_->setLetter("");
avatar_->setSize(35);
textLayout_ = new QVBoxLayout();
@@ -169,12 +170,7 @@ TopRoomBar::closeLeaveRoomDialog(bool leaving)
void
TopRoomBar::updateRoomAvatarFromName(const QString &name)
{
- QChar letter = '?';
-
- if (name.size() > 0)
- letter = name[0];
-
- avatar_->setLetter(letter);
+ avatar_->setLetter(utils::firstChar(name));
update();
}
@@ -183,7 +179,7 @@ TopRoomBar::reset()
{
nameLabel_->setText("");
topicLabel_->setText("");
- avatar_->setLetter(QChar('?'));
+ avatar_->setLetter("");
roomName_.clear();
roomTopic_.clear();
diff --git a/src/Utils.cc b/src/Utils.cc
index 663f7196..9d575c09 100644
--- a/src/Utils.cc
+++ b/src/Utils.cc
@@ -119,3 +119,12 @@ utils::getMessageDescription(const TimelineEvent &event, const QString &localUse
return DescInfo{};
}
+
+QString
+utils::firstChar(const QString &input)
+{
+ if (!input.isEmpty())
+ return QString::fromUcs4(&input.toUcs4().at(0), 1);
+
+ return input;
+}
diff --git a/src/ui/Avatar.cc b/src/ui/Avatar.cc
index e3987e7a..17ee198e 100644
--- a/src/ui/Avatar.cc
+++ b/src/ui/Avatar.cc
@@ -7,7 +7,7 @@ Avatar::Avatar(QWidget *parent)
{
size_ = ui::AvatarSize;
type_ = ui::AvatarType::Letter;
- letter_ = QChar('A');
+ letter_ = "A";
QFont _font(font());
_font.setPointSizeF(ui::FontSize);
@@ -79,7 +79,7 @@ Avatar::setSize(int size)
}
void
-Avatar::setLetter(const QChar &letter)
+Avatar::setLetter(const QString &letter)
{
letter_ = letter;
type_ = ui::AvatarType::Letter;
|