diff options
Diffstat (limited to 'src/loginform.cpp')
-rw-r--r-- | src/loginform.cpp | 27 |
1 files changed, 20 insertions, 7 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 <QAbstractListModel> #include <QModelIndex> #include <QPixmap> +#include <QIcon> #include <QMessageBox> #include <QMenu> #include <QListView> +#include <QSvgRenderer> #include <iostream> @@ -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 |