From 24c1d3c47b94f57236c7a961842d351122f1db1b Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 18 Mar 2019 17:25:21 +0100 Subject: Make loginform-icon more flexible Scale up to 128x128; honor SVGs preferring a size smaller than 128x128 instead of scaling them up. --- src/loginform.cpp | 27 +++-- src/loginform.ui | 294 +++++++++++++++++++++++++++++++++++------------------- 2 files changed, 209 insertions(+), 112 deletions(-) diff --git a/src/loginform.cpp b/src/loginform.cpp index f6c438d..b193cb1 100644 --- a/src/loginform.cpp +++ b/src/loginform.cpp @@ -10,9 +10,11 @@ #include #include #include +#include #include #include #include +#include #include @@ -49,14 +51,25 @@ void LoginForm::setFocus(Qt::FocusReason reason) void LoginForm::initialize() { - // fallback to built-in bwlp logo - QPixmap icon(":/resources/bwlp.svg"); // This project came from Razor-qt - if (!Settings::miniIconFile().isNull() && !Settings::miniIconFile().isEmpty()) { - QPixmap configuredIcon(Settings::miniIconFile()); - if (!configuredIcon.isNull()) - icon = configuredIcon; + QString path = Settings::miniIconFile(); + QPixmap pixmap; + if (!path.isEmpty()) { + QSize size = QSvgRenderer(path).defaultSize(); + if (!size.isValid()) { + size = ui->iconLabel->maximumSize(); + } else { + QSize o(ui->iconLabel->maximumSize()); + size = QSize(qMin(size.width(), o.width()), qMin(size.height(), o.height())); + } + pixmap = QIcon(path).pixmap(size); } - ui->iconLabel->setPixmap(icon.scaled(ui->iconLabel->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); + if (pixmap.isNull() || pixmap.width() < 10) { + // fallback to built-in bwlp logo + pixmap = QIcon(QLatin1String(":/resources/bwlp.svg")).pixmap(ui->iconLabel->size()); + } + + ui->iconLabel->setPixmap(pixmap); + ui->iconLabel->setFixedSize(pixmap.size()); ui->leaveComboBox->setView(new QListView()); // This is required to get the stylesheet to apply diff --git a/src/loginform.ui b/src/loginform.ui index 10f7105..3ad728a 100644 --- a/src/loginform.ui +++ b/src/loginform.ui @@ -6,10 +6,16 @@ 0 0 - 367 - 270 + 386 + 439 + + + 0 + 0 + + Andale Mono @@ -74,88 +80,130 @@ QComboBox QAbstractItemView::item { - + 0 0 - - + + 9 - - 8 + + 9 - - - - - 0 - 60 - - - - - 10000 - 60 - - - - - Bitstream Vera Sans - 14 - 50 - true - false - - - - Hostname - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - 0 - - - 10 + + 9 + + + + + + 0 + 0 + - - - - - 80 - 30 + 0 + 50 - - - 80 - 30 - + + QFrame::StyledPanel - - Qt::NoFocus + + QFrame::Raised - - - + + + 0 + + + 0 + + + 0 - - - :/resources/leaveIcon.svg:/resources/leaveIcon.svg + + 0 - + + 0 + + + + + + 0 + 60 + + + + + 10000 + 60 + + + + + Bitstream Vera Sans + 14 + 50 + true + false + + + + Hostname + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + 0 + + + 10 + + + + + + + + 0 + 0 + + + + + 10 + 50 + + + + + 128 + 128 + + + + + + + :/resources/bwlp.svg + + + + - + - 200 + 350 60 @@ -181,11 +229,11 @@ QComboBox QAbstractItemView::item { - + - 0 + 350 60 @@ -223,48 +271,84 @@ QComboBox QAbstractItemView::item { - - - - - 80 - 50 - + + + + QFrame::StyledPanel - - - 80 - 50 - - - - - - - :/resources/bwlp.svg - - - true - - - Qt::AlignCenter - - - - - - - - 200 - 30 - - - - false - - - + + QFrame::Raised + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 200 + 30 + + + + false + + + + + + + + + + + 0 + 0 + + + + + 80 + 30 + + + + + 80 + 30 + + + + Qt::NoFocus + + + + + + + + :/resources/leaveIcon.svg:/resources/leaveIcon.svg + + + + + -- cgit v1.2.3-55-g7522