summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2019-03-18 17:25:21 +0100
committerSimon Rettberg2019-03-18 17:25:21 +0100
commit24c1d3c47b94f57236c7a961842d351122f1db1b (patch)
tree1e46097d70ede539dd82340f5b6fda9ab66d042e
parentAdd second logo key for better migration from old slx-admin (diff)
downloadslxgreeter-24c1d3c47b94f57236c7a961842d351122f1db1b.tar.gz
slxgreeter-24c1d3c47b94f57236c7a961842d351122f1db1b.tar.xz
slxgreeter-24c1d3c47b94f57236c7a961842d351122f1db1b.zip
Make loginform-icon more flexible
Scale up to 128x128; honor SVGs preferring a size smaller than 128x128 instead of scaling them up.
-rw-r--r--src/loginform.cpp27
-rw-r--r--src/loginform.ui294
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 <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
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 @@
<rect>
<x>0</x>
<y>0</y>
- <width>367</width>
- <height>270</height>
+ <width>386</width>
+ <height>439</height>
</rect>
</property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
<property name="font">
<font>
<family>Andale Mono</family>
@@ -74,88 +80,130 @@ QComboBox QAbstractItemView::item {
<item>
<widget class="QFrame" name="formFrame">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <layout class="QGridLayout" name="gridLayout">
- <property name="bottomMargin">
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="topMargin">
<number>9</number>
</property>
- <property name="verticalSpacing">
- <number>8</number>
+ <property name="rightMargin">
+ <number>9</number>
</property>
- <item row="0" column="0">
- <widget class="QLabel" name="hostnameLabel">
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>60</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>10000</width>
- <height>60</height>
- </size>
- </property>
- <property name="font">
- <font>
- <family>Bitstream Vera Sans</family>
- <pointsize>14</pointsize>
- <weight>50</weight>
- <italic>true</italic>
- <bold>false</bold>
- </font>
- </property>
- <property name="text">
- <string>Hostname</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="indent">
- <number>10</number>
+ <property name="bottomMargin">
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QFrame" name="frame">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- </widget>
- </item>
- <item row="5" column="1">
- <widget class="QComboBox" name="leaveComboBox">
<property name="minimumSize">
<size>
- <width>80</width>
- <height>30</height>
+ <width>0</width>
+ <height>50</height>
</size>
</property>
- <property name="maximumSize">
- <size>
- <width>80</width>
- <height>30</height>
- </size>
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
</property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
</property>
- <item>
- <property name="text">
- <string/>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
</property>
- <property name="icon">
- <iconset resource="../qt-lightdm-greeter.qrc">
- <normaloff>:/resources/leaveIcon.svg</normaloff>:/resources/leaveIcon.svg</iconset>
+ <property name="rightMargin">
+ <number>0</number>
</property>
- </item>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="hostnameLabel">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>60</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>10000</width>
+ <height>60</height>
+ </size>
+ </property>
+ <property name="font">
+ <font>
+ <family>Bitstream Vera Sans</family>
+ <pointsize>14</pointsize>
+ <weight>50</weight>
+ <italic>true</italic>
+ <bold>false</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Hostname</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="indent">
+ <number>10</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="iconLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>10</width>
+ <height>50</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>128</width>
+ <height>128</height>
+ </size>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="../qt-lightdm-greeter.qrc">:/resources/bwlp.svg</pixmap>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
- <item row="1" column="0" colspan="2">
+ <item>
<widget class="QLineEdit" name="userInput">
<property name="minimumSize">
<size>
- <width>200</width>
+ <width>350</width>
<height>60</height>
</size>
</property>
@@ -181,11 +229,11 @@ QComboBox QAbstractItemView::item {
</property>
</widget>
</item>
- <item row="3" column="0" colspan="2">
+ <item>
<widget class="QLineEdit" name="passwordInput">
<property name="minimumSize">
<size>
- <width>0</width>
+ <width>350</width>
<height>60</height>
</size>
</property>
@@ -223,48 +271,84 @@ QComboBox QAbstractItemView::item {
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QLabel" name="iconLabel">
- <property name="minimumSize">
- <size>
- <width>80</width>
- <height>50</height>
- </size>
+ <item>
+ <widget class="QFrame" name="frame_2">
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
</property>
- <property name="maximumSize">
- <size>
- <width>80</width>
- <height>50</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="pixmap">
- <pixmap resource="../qt-lightdm-greeter.qrc">:/resources/bwlp.svg</pixmap>
- </property>
- <property name="scaledContents">
- <bool>true</bool>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item row="5" column="0">
- <widget class="QLabel" name="messageLabel">
- <property name="minimumSize">
- <size>
- <width>200</width>
- <height>30</height>
- </size>
- </property>
- <property name="autoFillBackground">
- <bool>false</bool>
- </property>
- <property name="text">
- <string notr="true"/>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
</property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="messageLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>200</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="leaveComboBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>80</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>80</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <item>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset resource="../qt-lightdm-greeter.qrc">
+ <normaloff>:/resources/leaveIcon.svg</normaloff>:/resources/leaveIcon.svg</iconset>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
</layout>