summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-05-11 16:00:14 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-05-11 16:00:14 +0300
commit18061f06002b349bdc0e5b439a84d54545b9c87e (patch)
treec58d47200c244c8005ac05e7f7f73c030943088d /src
parentMake explicit that MatrixClient & Cache are unique pointers (diff)
downloadnheko-18061f06002b349bdc0e5b439a84d54545b9c87e.tar.xz
Use the correct avatar size for HiDPI displays
Diffstat (limited to 'src')
-rw-r--r--src/CommunitiesListItem.cc7
-rw-r--r--src/MatrixClient.cc6
-rw-r--r--src/RoomInfoListItem.cc3
-rw-r--r--src/Utils.cc11
-rw-r--r--src/dialogs/RoomSettings.cpp16
-rw-r--r--src/ui/Avatar.cc10
6 files changed, 42 insertions, 11 deletions
diff --git a/src/CommunitiesListItem.cc b/src/CommunitiesListItem.cc

index 0650c0cf..e5127050 100644 --- a/src/CommunitiesListItem.cc +++ b/src/CommunitiesListItem.cc
@@ -88,3 +88,10 @@ CommunitiesListItem::paintEvent(QPaintEvent *) p.restore(); } } + +void +CommunitiesListItem::setAvatar(const QImage &img) +{ + communityAvatar_ = utils::scaleImageToPixmap(img, IconSize); + update(); +} diff --git a/src/MatrixClient.cc b/src/MatrixClient.cc
index 6336a5cf..a9720d10 100644 --- a/src/MatrixClient.cc +++ b/src/MatrixClient.cc
@@ -59,6 +59,8 @@ MatrixClient::MatrixClient(QObject *parent) , mediaApiUrl_{"/_matrix/media/r0"} , serverProtocol_{"https"} { + qRegisterMetaType<mtx::responses::Sync>(); + QSettings settings; txn_id_ = settings.value("client/transaction_id", 1).toInt(); @@ -344,8 +346,7 @@ MatrixClient::sync() noexcept } try { - mtx::responses::Sync response = nlohmann::json::parse(data); - emit syncCompleted(response); + emit syncCompleted(nlohmann::json::parse(std::move(data))); } catch (std::exception &e) { qWarning() << "Sync error: " << e.what(); } @@ -461,7 +462,6 @@ MatrixClient::initialSync() noexcept return; } - qRegisterMetaType<mtx::responses::Sync>(); QtConcurrent::run([data = reply->readAll(), this]() { try { emit initialSyncCompleted(nlohmann::json::parse(std::move(data))); diff --git a/src/RoomInfoListItem.cc b/src/RoomInfoListItem.cc
index a10ad619..f6f2e532 100644 --- a/src/RoomInfoListItem.cc +++ b/src/RoomInfoListItem.cc
@@ -368,8 +368,7 @@ RoomInfoListItem::mousePressEvent(QMouseEvent *event) void RoomInfoListItem::setAvatar(const QImage &img) { - roomAvatar_ = QPixmap::fromImage( - img.scaled(IconSize, IconSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + roomAvatar_ = utils::scaleImageToPixmap(img, IconSize); update(); } diff --git a/src/Utils.cc b/src/Utils.cc
index 14620145..f2e4b381 100644 --- a/src/Utils.cc +++ b/src/Utils.cc
@@ -1,5 +1,8 @@ #include "Utils.h" +#include <QApplication> +#include <QDesktopWidget> + #include <variant.hpp> using TimelineEvent = mtx::events::collections::TimelineEvents; @@ -138,3 +141,11 @@ utils::event_body(const mtx::events::collections::TimelineEvents &event) return QString(); } + +QPixmap +utils::scaleImageToPixmap(const QImage &img, int size) +{ + const int sz = QApplication::desktop()->screen()->devicePixelRatio() * size; + return QPixmap::fromImage( + img.scaled(sz, sz, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); +} diff --git a/src/dialogs/RoomSettings.cpp b/src/dialogs/RoomSettings.cpp
index 976d2acc..b85971b0 100644 --- a/src/dialogs/RoomSettings.cpp +++ b/src/dialogs/RoomSettings.cpp
@@ -15,6 +15,22 @@ using namespace dialogs; +TopSection::TopSection(const RoomInfo &info, const QImage &img, QWidget *parent) + : QWidget{parent} + , info_{std::move(info)} +{ + textColor_ = palette().color(QPalette::Text); + avatar_ = utils::scaleImageToPixmap(img, AvatarSize); +} + +QSize +TopSection::sizeHint() const +{ + QFont font; + font.setPixelSize(18); + return QSize(200, AvatarSize + QFontMetrics(font).ascent() + 6 * Padding); +} + RoomSettings::RoomSettings(const QString &room_id, QWidget *parent) : QFrame(parent) , room_id_{std::move(room_id)} diff --git a/src/ui/Avatar.cc b/src/ui/Avatar.cc
index 81e6cbed..2f10db39 100644 --- a/src/ui/Avatar.cc +++ b/src/ui/Avatar.cc
@@ -1,6 +1,7 @@ #include <QPainter> #include "Avatar.h" +#include "Utils.h" Avatar::Avatar(QWidget *parent) : QWidget(parent) @@ -64,10 +65,8 @@ Avatar::setSize(int size) { size_ = size; - if (!image_.isNull()) { - pixmap_ = QPixmap::fromImage( - image_.scaled(size_, size_, Qt::KeepAspectRatio, Qt::SmoothTransformation)); - } + if (!image_.isNull()) + pixmap_ = utils::scaleImageToPixmap(image_, size_); QFont _font(font()); _font.setPointSizeF(size_ * (ui::FontSize) / 40); @@ -89,8 +88,7 @@ Avatar::setImage(const QImage &image) { image_ = image; type_ = ui::AvatarType::Image; - pixmap_ = QPixmap::fromImage( - image_.scaled(size_, size_, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + pixmap_ = utils::scaleImageToPixmap(image_, size_); update(); }