From a8991e2bc1d7d7ea00ca8d636c67c49272a831e3 Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Fri, 23 May 2025 12:57:48 +0300 Subject: [PATCH 1/3] Implement new Language selection menu WE2-990 Signed-off-by: Raul Metsma --- src/ui/CMakeLists.txt | 19 +- src/ui/dark.qss | 7 - src/ui/dialog.ui | 17 -- src/ui/languageselect.cpp | 52 +++++ src/ui/languageselect.hpp | 32 +++ src/ui/languageselect.qss | 21 ++ src/ui/languageselect.ui | 372 +++++++++++++++++++++++++++++++++++ src/ui/translations/cs.ts | 24 +++ src/ui/translations/de.ts | 24 +++ src/ui/translations/en.ts | 24 +++ src/ui/translations/et.ts | 24 +++ src/ui/translations/fi.ts | 24 +++ src/ui/translations/fr.ts | 24 +++ src/ui/translations/hr.ts | 24 +++ src/ui/translations/nl.ts | 24 +++ src/ui/translations/ru.ts | 24 +++ src/ui/translations/sk.ts | 24 +++ src/ui/web-eid-resources.qrc | 1 - src/ui/webeiddialog.cpp | 67 +------ 19 files changed, 728 insertions(+), 100 deletions(-) create mode 100644 src/ui/languageselect.cpp create mode 100644 src/ui/languageselect.hpp create mode 100644 src/ui/languageselect.qss create mode 100644 src/ui/languageselect.ui diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index cfd822f9..6fdb0891 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -1,6 +1,9 @@ add_library(ui STATIC certificatewidget.cpp certificatewidget.hpp + languageselect.cpp + languageselect.hpp + languageselect.ui punycode.hpp ui.cpp webeiddialog.cpp @@ -8,19 +11,9 @@ add_library(ui STATIC web-eid-resources.qrc dialog.ui ) -qt_add_translations(ui TS_FILES - translations/en.ts - translations/et.ts - translations/fi.ts - translations/hr.ts - translations/ru.ts - translations/de.ts - translations/fr.ts - translations/nl.ts - translations/cs.ts - translations/sk.ts - RESOURCE_PREFIX /translations -) +qt_add_resources(ui qss PREFIX / FILES dark.qss languageselect.qss) +file(GLOB TRANSLATIONS translations/*.ts) +qt_add_translations(ui TS_FILES ${TRANSLATIONS} RESOURCE_PREFIX /translations) set_target_properties(ui PROPERTIES AUTORCC ON AUTOUIC ON diff --git a/src/ui/dark.qss b/src/ui/dark.qss index eb12ec47..c40ee360 100644 --- a/src/ui/dark.qss +++ b/src/ui/dark.qss @@ -41,13 +41,6 @@ background-image: url(:images/down_dark.svg); #langButton::hover { background-color: #4E4E53; } -#langMenu { -border-color: #4E4E53; -background-color: #4E4E53; -} -#langMenu > QPushButton { -color: #FFFFFF; -} CertificateButton, CertificateWidget { border-color: #4E4E53; } diff --git a/src/ui/dialog.ui b/src/ui/dialog.ui index 19bfd744..f202d3b6 100644 --- a/src/ui/dialog.ui +++ b/src/ui/dialog.ui @@ -83,23 +83,6 @@ background-image: url(:images/down.svg); #langButton::hover { background-color: #EFEFEF; } -#langMenu { -border: 3px solid #EFEFEF; -border-radius: 3px; -background-color: #EFEFEF; -} -#langMenu > QPushButton { -color: #003168; -border: 0px; -max-height: 22px; -padding-left: 7px; -padding-right: 6px; -font-size: 14px; -text-align: left; -} -#langMenu > QPushButton:checked { -font-weight: bold; -} CertificateButton, CertificateWidget { border: 1px solid rgba(0,49,104,0.1); border-radius: 4px; diff --git a/src/ui/languageselect.cpp b/src/ui/languageselect.cpp new file mode 100644 index 00000000..5e541489 --- /dev/null +++ b/src/ui/languageselect.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2020-2024 Estonian Information System Authority + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "languageselect.hpp" +#include "ui_languageselect.h" + +#include "application.hpp" + +#include +#include +#include + +LanguageSelect::LanguageSelect(QWidget* parent) : QDialog(parent) +{ + Ui::LanguageSelect ui; + ui.setupUi(this); + if (Application::isDarkTheme()) { + if (QFile f(QStringLiteral(":languageselect.qss")); f.open(QFile::ReadOnly | QFile::Text)) { + style()->unpolish(this); + setStyleSheet(styleSheet() + QTextStream(&f).readAll()); + style()->polish(this); + } + } + if(auto *btn = findChild(QSettings().value(QStringLiteral("lang")).toString())) + btn->setChecked(true); + connect(ui.select, &QPushButton::clicked, this, &LanguageSelect::accept); + connect(ui.cancel, &QPushButton::clicked, this, &LanguageSelect::reject); + connect(ui.langGroup, qOverload(&QButtonGroup::buttonClicked), this, + [](QAbstractButton* action) { + QSettings().setValue(QStringLiteral("lang"), action->objectName()); + qApp->loadTranslations(); + }); +} diff --git a/src/ui/languageselect.hpp b/src/ui/languageselect.hpp new file mode 100644 index 00000000..b5a4db4d --- /dev/null +++ b/src/ui/languageselect.hpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2020-2024 Estonian Information System Authority + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#pragma once + +#include + +class LanguageSelect : public QDialog +{ + Q_OBJECT +public: + explicit LanguageSelect(QWidget* parent = nullptr); +}; diff --git a/src/ui/languageselect.qss b/src/ui/languageselect.qss new file mode 100644 index 00000000..844970bf --- /dev/null +++ b/src/ui/languageselect.qss @@ -0,0 +1,21 @@ + +#LanguageSelect { +background-color: #232325; +} +#label { +color: white; +} +QPushButton { +color: #FF5C79; +border-color: #FF5C79; +} +QPushButton:hover, QPushButton:pressed { +background-color: #232325; +} +QToolButton { +color: white; +border-color: #92A0B7; +} +QToolButton:checked { +background-color: #415982; +} diff --git a/src/ui/languageselect.ui b/src/ui/languageselect.ui new file mode 100644 index 00000000..0bdebb9d --- /dev/null +++ b/src/ui/languageselect.ui @@ -0,0 +1,372 @@ + + + LanguageSelect + + + + 0 + 0 + 540 + 438 + + + + Web-eID + + + #LanguageSelect { +background-color: white; +} +#label { +font-family: Roboto, Helvetica; +font-size: 20px; +font-weight: 700; +color: #003168; +} +QAbstractButton { +font-family: Roboto, Helvetica; +font-size: 14px; +font-weight: 700; +} +QToolButton { +color: #07142A; +border: 1px solid #AEB9CA; +border-radius: 5px; +padding: 16px; +} +QToolButton:checked { +border-color: #003168; +background-color: #EAF1F8 +} +QPushButton { +color: #AD2A45; +border: 1px solid #AD2A45; +border-radius: 4px; +padding: 11px 12px; +} +QPushButton:hover { +background-color: #F5EBED; +} +QPushButton:pressed { +background-color: #E1C1C6; +} +QPushButton::default { +color: white; +border-color: #2F70B6; +background-color: #2F70B6; +} +QPushButton::default:hover { +border-color: #2B66A6; +background-color: #2B66A6; +} +QPushButton::default:pressed { +border-color: #215081; +background-color: #215081; +} + + + + QLayout::SetFixedSize + + + 40 + + + 32 + + + 40 + + + 32 + + + 0 + + + 40 + + + + + Select language + + + Qt::AlignCenter + + + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + Eesti keel + + + true + + + true + + + langGroup + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + English + + + true + + + langGroup + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + Русский + + + true + + + langGroup + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + Suomi + + + true + + + langGroup + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + Hrvatska + + + true + + + langGroup + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + Deutsch + + + true + + + langGroup + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + Française + + + true + + + langGroup + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + Nederlands + + + true + + + langGroup + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + Čeština + + + true + + + langGroup + + + + + + + + 0 + 0 + + + + PointingHandCursor + + + Slovenština + + + true + + + langGroup + + + + + + + + + PointingHandCursor + + + Cancel + + + false + + + + + + + Qt::Horizontal + + + + 317 + 20 + + + + + + + + PointingHandCursor + + + Select + + + true + + + + + + + + + + + diff --git a/src/ui/translations/cs.ts b/src/ui/translations/cs.ts index 1039c78f..9ce4edf8 100644 --- a/src/ui/translations/cs.ts +++ b/src/ui/translations/cs.ts @@ -27,6 +27,21 @@ PIN zablokován + + LanguageSelect + + Cancel + Zrušit + + + Select language + + + + Select + + + WebEidDialog @@ -274,5 +289,14 @@ Active language CS + + PIN entry disabled + + + + English + Active language accessible + Čeština + diff --git a/src/ui/translations/de.ts b/src/ui/translations/de.ts index 1475cb5b..d6fe4307 100644 --- a/src/ui/translations/de.ts +++ b/src/ui/translations/de.ts @@ -27,6 +27,21 @@ PIN gesperrt + + LanguageSelect + + Cancel + Abbrechen + + + Select language + + + + Select + + + WebEidDialog @@ -272,5 +287,14 @@ Active language DE + + PIN entry disabled + + + + English + Active language accessible + Deutsch + diff --git a/src/ui/translations/en.ts b/src/ui/translations/en.ts index 38ec43ac..7454be95 100644 --- a/src/ui/translations/en.ts +++ b/src/ui/translations/en.ts @@ -27,6 +27,21 @@ Pin locked + + LanguageSelect + + Cancel + Cancel + + + Select language + Select language + + + Select + Select + + WebEidDialog @@ -272,5 +287,14 @@ Active language EN + + PIN entry disabled + + + + English + Active language accessible + English + diff --git a/src/ui/translations/et.ts b/src/ui/translations/et.ts index 97d7d4df..f45eb050 100644 --- a/src/ui/translations/et.ts +++ b/src/ui/translations/et.ts @@ -27,6 +27,21 @@ PIN-kood on lukus + + LanguageSelect + + Cancel + Katkesta + + + Select language + Vali keel + + + Select + Vali + + WebEidDialog @@ -272,5 +287,14 @@ Active language ET + + PIN entry disabled + + + + English + Active language accessible + Eesti + diff --git a/src/ui/translations/fi.ts b/src/ui/translations/fi.ts index 120ca47e..cc581136 100644 --- a/src/ui/translations/fi.ts +++ b/src/ui/translations/fi.ts @@ -27,6 +27,21 @@ Pin lukittu + + LanguageSelect + + Cancel + Peruuta + + + Select language + + + + Select + + + WebEidDialog @@ -272,5 +287,14 @@ Active language FI + + PIN entry disabled + + + + English + Active language accessible + Suomi + diff --git a/src/ui/translations/fr.ts b/src/ui/translations/fr.ts index 72220236..52f41fda 100644 --- a/src/ui/translations/fr.ts +++ b/src/ui/translations/fr.ts @@ -27,6 +27,21 @@ Pin bloquée + + LanguageSelect + + Cancel + Annuler + + + Select language + + + + Select + + + WebEidDialog @@ -272,5 +287,14 @@ Active language FR + + PIN entry disabled + + + + English + Active language accessible + Française + diff --git a/src/ui/translations/hr.ts b/src/ui/translations/hr.ts index 8bf5c112..ca94d71e 100644 --- a/src/ui/translations/hr.ts +++ b/src/ui/translations/hr.ts @@ -27,6 +27,21 @@ <b>%1</b><br />Izdavatelj: %2<br />Vrijedi: %3 do %4%5 + + LanguageSelect + + Cancel + Prekid + + + Select language + + + + Select + + + WebEidDialog @@ -274,5 +289,14 @@ Active language HR + + PIN entry disabled + + + + English + Active language accessible + Hrvatska + diff --git a/src/ui/translations/nl.ts b/src/ui/translations/nl.ts index 643a5cf4..65d03b97 100644 --- a/src/ui/translations/nl.ts +++ b/src/ui/translations/nl.ts @@ -27,6 +27,21 @@ PIN geblokkeerd + + LanguageSelect + + Cancel + Annuleer + + + Select language + + + + Select + + + WebEidDialog @@ -272,5 +287,14 @@ Active language NL + + PIN entry disabled + + + + English + Active language accessible + Nederlands + diff --git a/src/ui/translations/ru.ts b/src/ui/translations/ru.ts index d0041855..825cc25d 100644 --- a/src/ui/translations/ru.ts +++ b/src/ui/translations/ru.ts @@ -27,6 +27,21 @@ PIN-код заблокирован + + LanguageSelect + + Cancel + Прервать + + + Select language + + + + Select + + + WebEidDialog @@ -274,5 +289,14 @@ Active language RU + + PIN entry disabled + + + + English + Active language accessible + Русский + diff --git a/src/ui/translations/sk.ts b/src/ui/translations/sk.ts index 5fa57401..1f14a924 100644 --- a/src/ui/translations/sk.ts +++ b/src/ui/translations/sk.ts @@ -27,6 +27,21 @@ PIN zablokovaný + + LanguageSelect + + Cancel + Zrušiť + + + Select language + + + + Select + + + WebEidDialog @@ -274,5 +289,14 @@ Active language SK + + PIN entry disabled + + + + English + Active language accessible + Slovenština + diff --git a/src/ui/web-eid-resources.qrc b/src/ui/web-eid-resources.qrc index f3e72615..9ce0338c 100644 --- a/src/ui/web-eid-resources.qrc +++ b/src/ui/web-eid-resources.qrc @@ -1,6 +1,5 @@ - dark.qss images/arrow.svg images/cardreader.svg images/cardreader_dark.svg diff --git a/src/ui/webeiddialog.cpp b/src/ui/webeiddialog.cpp index dd30e2d0..0f94f66d 100644 --- a/src/ui/webeiddialog.cpp +++ b/src/ui/webeiddialog.cpp @@ -22,6 +22,7 @@ #include "webeiddialog.hpp" #include "application.hpp" +#include "languageselect.hpp" #include "punycode.hpp" #include "ui_dialog.h" @@ -43,8 +44,6 @@ #include #endif -#include - #if QT_VERSION < QT_VERSION_CHECK(6, 4, 0) constexpr inline QLatin1String operator"" _L1(const char* str, size_t size) noexcept { @@ -91,62 +90,9 @@ WebEidDialog::WebEidDialog(QWidget* parent) : WebEidUI(parent), ui(new Private) ui->langButton = new QToolButton(this); ui->langButton->setObjectName("langButton"); - static const std::vector> LANG_LIST { - {QStringLiteral("et"), QStringLiteral("Eesti")}, - {QStringLiteral("en"), QStringLiteral("English")}, - {QStringLiteral("ru"), QStringLiteral("Русский")}, - {QStringLiteral("fi"), QStringLiteral("Suomi")}, - {QStringLiteral("hr"), QStringLiteral("Hrvatska")}, - {QStringLiteral("de"), QStringLiteral("Deutsch")}, - {QStringLiteral("fr"), QStringLiteral("Française")}, - {QStringLiteral("nl"), QStringLiteral("Nederlands")}, - {QStringLiteral("cs"), QStringLiteral("Čeština")}, - {QStringLiteral("sk"), QStringLiteral("Slovenština")}}; ui->langButton->setText(tr("EN", "Active language")); - if (auto i = std::find_if(LANG_LIST.cbegin(), LANG_LIST.cend(), - [lang = ui->langButton->text().toLower()](const auto& elem) { - return elem.first == lang; - }); - i != LANG_LIST.cend()) { - ui->langButton->setAccessibleName(i->second); - } - connect(ui->langButton, &QToolButton::clicked, this, [this] { - if (auto* menu = findChild(QStringLiteral("langMenu"))) { - menu->deleteLater(); - return; - } - auto* menu = new QWidget(this); - menu->setObjectName("langMenu"); - auto* layout = new QGridLayout(menu); - layout->setContentsMargins(1, 1, 1, 1); - layout->setSpacing(1); - layout->setSizeConstraint(QLayout::SetFixedSize); - auto* langGroup = new QButtonGroup(menu); - langGroup->setExclusive(true); - int i {}; - for (const auto& [lang, title] : LANG_LIST) { - auto* action = new QPushButton(menu); - action->setText(title); - action->setProperty("lang", lang); - action->setAutoDefault(false); - layout->addWidget(action, i / 2, i % 2); - langGroup->addButton(action); - action->setCheckable(true); - action->setChecked(lang == ui->langButton->text().toLower()); - action->setMinimumSize(action->sizeHint() + QSize(1, 0)); - ++i; - } - menu->show(); - menu->move(ui->langButton->geometry().bottomRight() - menu->geometry().topRight() - + QPoint(0, 2)); - connect(langGroup, qOverload(&QButtonGroup::buttonClicked), menu, - [this, menu](QAbstractButton* action) { - QSettings().setValue(QStringLiteral("lang"), action->property("lang")); - ui->langButton->setText(action->property("lang").toString().toUpper()); - qApp->loadTranslations(); - menu->deleteLater(); - }); - }); + ui->langButton->setAccessibleName(tr("English", "Active language accessible")); + connect(ui->langButton, &QToolButton::clicked, this, [] { LanguageSelect().exec(); }); ui->pinInput->setAttribute(Qt::WA_MacShowFocusRect, false); auto pinInputFont = ui->pinInput->font(); @@ -509,14 +455,11 @@ bool WebEidDialog::event(QEvent* event) switch (event->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); + ui->langButton->setText(tr("EN", "Active language")); + ui->langButton->setAccessibleName(tr("English", "Active language accessible")); emit languageChange(); resizeHeight(); break; - case QEvent::MouseButtonRelease: - if (auto* w = findChild(QStringLiteral("langMenu"))) { - w->deleteLater(); - } - break; case QEvent::Resize: ui->langButton->move(width() - ui->langButton->width() - 20, 5); break; From 75e1e72b42418bcaa666fb056ded204451f49d9a Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Fri, 23 May 2025 14:36:40 +0300 Subject: [PATCH 2/3] Update main button UI WE2-991 Signed-off-by: Raul Metsma --- src/app/main.cpp | 2 - src/mac/main.mm | 2 - src/ui/CMakeLists.txt | 11 +++++- src/ui/dark.qss | 33 ++-------------- src/ui/dialog.ui | 77 +++++++++++++----------------------- src/ui/images/arrow.svg | 4 -- src/ui/images/help.svg | 8 ---- src/ui/images/help_dark.svg | 8 ---- src/ui/images/link.svg | 3 ++ src/ui/web-eid-resources.qrc | 34 ---------------- src/ui/webeiddialog.cpp | 1 - 11 files changed, 44 insertions(+), 139 deletions(-) delete mode 100644 src/ui/images/arrow.svg delete mode 100644 src/ui/images/help.svg delete mode 100644 src/ui/images/help_dark.svg create mode 100644 src/ui/images/link.svg delete mode 100644 src/ui/web-eid-resources.qrc diff --git a/src/app/main.cpp b/src/app/main.cpp index f7a8f31c..197fed52 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -30,8 +30,6 @@ int main(int argc, char* argv[]) { - Q_INIT_RESOURCE(web_eid_resources); - Application app(argc, argv, QStringLiteral("web-eid")); try { diff --git a/src/mac/main.mm b/src/mac/main.mm index 6f3bec48..f2b5b1ed 100644 --- a/src/mac/main.mm +++ b/src/mac/main.mm @@ -171,8 +171,6 @@ void showSafariSettings() final int main(int argc, char* argv[]) { - Q_INIT_RESOURCE(web_eid_resources); - SafariApplication app(argc, argv, QStringLiteral("web-eid-safari")); auto appPtr = &app; diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index 6fdb0891..52a0d6cb 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -8,10 +8,17 @@ add_library(ui STATIC ui.cpp webeiddialog.cpp webeiddialog.hpp - web-eid-resources.qrc dialog.ui ) -qt_add_resources(ui qss PREFIX / FILES dark.qss languageselect.qss) +file(GLOB IMAGES images/*.svg) +file(GLOB FONTS fonts/*.ttf) +qt_add_resources(ui resources BASE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX / FILES + ../../install/appicon_128.png + dark.qss + languageselect.qss + ${IMAGES} + ${FONTS} +) file(GLOB TRANSLATIONS translations/*.ts) qt_add_translations(ui TS_FILES ${TRANSLATIONS} RESOURCE_PREFIX /translations) set_target_properties(ui PROPERTIES diff --git a/src/ui/dark.qss b/src/ui/dark.qss index c40ee360..fda55a34 100644 --- a/src/ui/dark.qss +++ b/src/ui/dark.qss @@ -3,36 +3,11 @@ background-color: #232325; color: white; } QPushButton { -border-color: #4E4E53; -background-color: #4E4E53; -} -QPushButton::disabled { -border-color: #27272A; -background-color: #27272A; -} -QPushButton::hover { -background-color: #76767B; -border-color: #76767B; -} -QPushButton::focus { -background-color: #76767B; -border-color: #DEDEDE; -} -QPushButton:default { -background-color: #113F8E; -border-color: #113F8E; +color: #FF5C79; +border-color: #FF5C79; } -QPushButton:default::disabled { -background-color: #15213E; -border-color: #15213E; -} -QPushButton:default::hover { -background-color: #008EEA; -border-color: #008EEA; -} -QPushButton:default::focus { -background-color: #008EEA; -border-color: #DEDEDE; +QPushButton:hover, QPushButton:pressed { +background-color: #232325; } #langButton { color: #FFFFFF; diff --git a/src/ui/dialog.ui b/src/ui/dialog.ui index f202d3b6..042fde43 100644 --- a/src/ui/dialog.ui +++ b/src/ui/dialog.ui @@ -27,43 +27,32 @@ font-family: "Roboto"; color: black; } QPushButton { -font-size: 17px; -border: 3px solid #EFEFEF; -border-radius: 3px; -height: 39px; -padding-left: 17px; -padding-right: 17px; -min-width: 30px; -background-color: #EFEFEF; -} -QPushButton::disabled { -background-color: #FAFAFA; -border-color: #FAFAFA; +color: #AD2A45; +border: 1px solid #AD2A45; +border-radius: 4px; +padding: 11px 12px; +font-family: Roboto, Helvetica; +font-size: 14px; +font-weight: 700; } -QPushButton::hover { -background-color: #DEDEDE; -border-color: #DEDEDE; +QPushButton:hover { +background-color: #F5EBED; } -QPushButton::focus { -background-color: #DEDEDE; -border-color: #76767B; +QPushButton:pressed { +background-color: #E1C1C6; } -QPushButton:default { +QPushButton::default, #helpButton { color: white; -background-color: #113F8E; -border-color: #113F8E; +border-color: #2F70B6; +background-color: #2F70B6; } -QPushButton:default::disabled { -background-color: #B7C5DD; -border-color: #B7C5DD; +QPushButton::default:hover, #helpButton:hover { +border-color: #2B66A6; +background-color: #2B66A6; } -QPushButton:default::hover { -background-color: #003168; -border-color: #003168 -} -QPushButton:default::focus { -background-color: #003168; -border-color: #008EEA; +QPushButton::default:pressed, #helpButton:pressed { +border-color: #215081; +background-color: #215081; } #langButton { color: #003168; @@ -166,9 +155,6 @@ border-radius: 3px; #fatalErrorLabel, #aboutAlert { color: #CD2541; } -#helpButton { -color: #003168; -} #aboutVersion { color: #76767B; } @@ -874,21 +860,24 @@ height: 24px; PointingHandCursor + + Qt::RightToLeft + Help - :/images/help.svg:/images/help.svg + :/images/link.svg:/images/link.svg - 30 - 26 + 16 + 16 - - false + + true @@ -900,16 +889,6 @@ height: 24px; Confirm - - - :/images/arrow.svg:/images/arrow.svg - - - - 20 - 16 - - true diff --git a/src/ui/images/arrow.svg b/src/ui/images/arrow.svg deleted file mode 100644 index 1a6a0997..00000000 --- a/src/ui/images/arrow.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/ui/images/help.svg b/src/ui/images/help.svg deleted file mode 100644 index c9fe386e..00000000 --- a/src/ui/images/help.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/ui/images/help_dark.svg b/src/ui/images/help_dark.svg deleted file mode 100644 index 0388ea38..00000000 --- a/src/ui/images/help_dark.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/ui/images/link.svg b/src/ui/images/link.svg new file mode 100644 index 00000000..b576d24b --- /dev/null +++ b/src/ui/images/link.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/ui/web-eid-resources.qrc b/src/ui/web-eid-resources.qrc deleted file mode 100644 index 9ce0338c..00000000 --- a/src/ui/web-eid-resources.qrc +++ /dev/null @@ -1,34 +0,0 @@ - - - images/arrow.svg - images/cardreader.svg - images/cardreader_dark.svg - images/down.svg - images/down_dark.svg - images/fatal.svg - images/fatal_dark.svg - images/help.svg - images/help_dark.svg - images/id-card.svg - images/id-card_dark.svg - images/left.svg - images/no-id-card.svg - images/no-id-card_dark.svg - images/origin.svg - images/origin_dark.svg - images/wait.svg - fonts/Roboto-Black.ttf - fonts/Roboto-BlackItalic.ttf - fonts/Roboto-Bold.ttf - fonts/Roboto-BoldItalic.ttf - fonts/Roboto-Italic.ttf - fonts/Roboto-Light.ttf - fonts/Roboto-LightItalic.ttf - fonts/Roboto-Medium.ttf - fonts/Roboto-MediumItalic.ttf - fonts/Roboto-Regular.ttf - fonts/Roboto-Thin.ttf - fonts/Roboto-ThinItalic.ttf - ../../install/appicon_128.png - - diff --git a/src/ui/webeiddialog.cpp b/src/ui/webeiddialog.cpp index 0f94f66d..6e104c97 100644 --- a/src/ui/webeiddialog.cpp +++ b/src/ui/webeiddialog.cpp @@ -78,7 +78,6 @@ WebEidDialog::WebEidDialog(QWidget* parent) : WebEidUI(parent), ui(new Private) ui->cardChipIcon->setPixmap(pixmap("no-id-card"_L1)); ui->fatalErrorIcon->setPixmap(pixmap("fatal"_L1)); ui->aboutIcon->setPixmap(pixmap("fatal"_L1)); - ui->helpButton->setIcon(QIcon(QStringLiteral(":/images/help_dark.svg"))); } } setWindowFlag(Qt::CustomizeWindowHint); From 8f37b8810c0370ba688740bae3d4f644c458f32c Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Mon, 26 May 2025 21:37:30 +0300 Subject: [PATCH 3/3] Update icons WE2-993 Signed-off-by: Raul Metsma --- src/ui/certificatewidget.cpp | 35 +--------- src/ui/certificatewidget.hpp | 4 -- src/ui/dark.qss | 1 - src/ui/dialog.ui | 110 ++++++------------------------ src/ui/images/cardreader.svg | 4 -- src/ui/images/cardreader_dark.svg | 5 -- src/ui/images/down.svg | 3 - src/ui/images/down_dark.svg | 3 - src/ui/images/fatal.svg | 3 - src/ui/images/fatal_dark.svg | 3 - src/ui/images/id-card.svg | 13 +--- src/ui/images/id-card_dark.svg | 13 +--- src/ui/images/lang.svg | 3 + src/ui/images/lang_dark.svg | 3 + src/ui/images/left.svg | 3 - src/ui/images/no-id-card.svg | 8 +-- src/ui/images/no-id-card_dark.svg | 8 +-- src/ui/images/origin.svg | 7 -- src/ui/images/origin_dark.svg | 7 -- src/ui/images/wait.svg | 10 +-- src/ui/images/wait_dark.svg | 5 ++ src/ui/webeiddialog.cpp | 39 ++++++----- 22 files changed, 70 insertions(+), 220 deletions(-) delete mode 100644 src/ui/images/cardreader.svg delete mode 100644 src/ui/images/cardreader_dark.svg delete mode 100644 src/ui/images/down.svg delete mode 100644 src/ui/images/down_dark.svg delete mode 100644 src/ui/images/fatal.svg delete mode 100644 src/ui/images/fatal_dark.svg create mode 100644 src/ui/images/lang.svg create mode 100644 src/ui/images/lang_dark.svg delete mode 100644 src/ui/images/left.svg delete mode 100644 src/ui/images/origin.svg delete mode 100644 src/ui/images/origin_dark.svg create mode 100644 src/ui/images/wait_dark.svg diff --git a/src/ui/certificatewidget.cpp b/src/ui/certificatewidget.cpp index af787a67..d320040e 100644 --- a/src/ui/certificatewidget.cpp +++ b/src/ui/certificatewidget.cpp @@ -44,18 +44,14 @@ inline QString displayInRed(const QString& text) // support screen readers. CertificateWidgetInfo::CertificateWidgetInfo(QWidget* self) : - icon(new QLabel(self)), info(new QLabel(self)), warnIcon(new QLabel(self)), + icon(new QLabel(self)), info(new QLabel(self)), warn(new QLabel(CertificateWidget::tr("Pin locked"), self)) { if (Application::isDarkTheme()) { icon->setPixmap(QStringLiteral(":/images/id-card_dark.svg")); - warnIcon->setPixmap(QStringLiteral(":/images/fatal_dark.svg")); } else { icon->setPixmap(QStringLiteral(":/images/id-card.svg")); - warnIcon->setPixmap(QStringLiteral(":/images/fatal.svg")); } - warnIcon->hide(); - warnIcon->installEventFilter(self); warn->setObjectName(QStringLiteral("warn")); warn->hide(); auto* layout = new QHBoxLayout(self); @@ -63,10 +59,8 @@ CertificateWidgetInfo::CertificateWidgetInfo(QWidget* self) : layout->setSpacing(10); layout->addWidget(icon); layout->addWidget(info, 1); - layout->addWidget(warnIcon); auto* warnLayout = new QHBoxLayout; warnLayout->setSpacing(6); - warnLayout->addWidget(warnIcon); warnLayout->addWidget(warn); layout->addItem(warnLayout); } @@ -86,14 +80,6 @@ std::tuple CertificateWidgetInfo::certData() certAndPinInfo.certificate.expiryDate().date().toString(Qt::ISODate)}; } -void CertificateWidgetInfo::drawWarnIcon() -{ - QPainter p(warnIcon); - QRect cr = warnIcon->contentsRect(); - cr.adjust(warnIcon->margin(), warnIcon->margin(), -warnIcon->margin(), -warnIcon->margin()); - warnIcon->style()->drawItemPixmap(&p, cr, Qt::AlignCenter, warnIcon->pixmap()); -} - void CertificateWidgetInfo::setCertificateInfo(const CardCertificateAndPinInfo& cardCertPinInfo) { warn->setText(CertificateWidget::tr("Pin locked")); @@ -114,7 +100,6 @@ void CertificateWidgetInfo::setCertificateInfo(const CardCertificateAndPinInfo& info->parentWidget()->setDisabled(certInfo.notEffective || certInfo.isExpired || cardCertPinInfo.pinInfo.pinIsBlocked); if (warning.isEmpty() && cardCertPinInfo.pinInfo.pinIsBlocked) { - warnIcon->show(); warn->show(); } } @@ -129,15 +114,6 @@ CertificateWidget::CertificateWidget(QWidget* parent) : QWidget(parent), Certifi info->setFocusPolicy(Qt::TabFocus); } -bool CertificateWidget::eventFilter(QObject* object, QEvent* event) -{ - if (qobject_cast(object) && event->type() == QEvent::Paint) { - drawWarnIcon(); - return true; - } - return QWidget::eventFilter(object, event); -} - void CertificateWidget::paintEvent(QPaintEvent* /*event*/) { QPainter p(this); @@ -158,15 +134,6 @@ CertificateButton::CertificateButton(const CardCertificateAndPinInfo& cardCertPi setCertificateInfo(cardCertPinInfo); } -bool CertificateButton::eventFilter(QObject* object, QEvent* event) -{ - if (qobject_cast(object) && event->type() == QEvent::Paint) { - drawWarnIcon(); - return true; - } - return QAbstractButton::eventFilter(object, event); -} - void CertificateButton::setCertificateInfo(const CardCertificateAndPinInfo& cardCertPinInfo) { CertificateWidgetInfo::setCertificateInfo(cardCertPinInfo); diff --git a/src/ui/certificatewidget.hpp b/src/ui/certificatewidget.hpp index 51264541..4192ccfb 100644 --- a/src/ui/certificatewidget.hpp +++ b/src/ui/certificatewidget.hpp @@ -41,12 +41,10 @@ class CertificateWidgetInfo explicit CertificateWidgetInfo(QWidget* self); Q_DISABLE_COPY_MOVE(CertificateWidgetInfo) - void drawWarnIcon(); std::tuple certData() const; QLabel* icon; QLabel* info; - QLabel* warnIcon; QLabel* warn; CardCertificateAndPinInfo certAndPinInfo; }; @@ -59,7 +57,6 @@ class CertificateWidget final : public QWidget, public CertificateWidgetInfo explicit CertificateWidget(QWidget* parent); private: - bool eventFilter(QObject* object, QEvent* event) final; void paintEvent(QPaintEvent* event) final; }; @@ -71,7 +68,6 @@ class CertificateButton final : public QAbstractButton, public CertificateWidget CertificateButton(const CardCertificateAndPinInfo& cardCertPinInfo, QWidget* parent); private: - bool eventFilter(QObject* object, QEvent* event) final; void setCertificateInfo(const CardCertificateAndPinInfo& cardCertPinInfo) final; void paintEvent(QPaintEvent* event) final; }; diff --git a/src/ui/dark.qss b/src/ui/dark.qss index fda55a34..5eb1a4a3 100644 --- a/src/ui/dark.qss +++ b/src/ui/dark.qss @@ -11,7 +11,6 @@ background-color: #232325; } #langButton { color: #FFFFFF; -background-image: url(:images/down_dark.svg); } #langButton::hover { background-color: #4E4E53; diff --git a/src/ui/dialog.ui b/src/ui/dialog.ui index 042fde43..de8006bf 100644 --- a/src/ui/dialog.ui +++ b/src/ui/dialog.ui @@ -58,19 +58,9 @@ background-color: #215081; color: #003168; border: 0px; border-radius: 3px; -max-height: 22px; max-width: 55px; -padding-left: 0px; -padding-right: 0px; font-size: 14px; -text-align: left; -background-position: right; -background-repeat: no-repeat; -background-origin: content; -background-image: url(:images/down.svg); -} -#langButton::hover { -background-color: #EFEFEF; +padding: 8px; } CertificateButton, CertificateWidget { border: 1px solid rgba(0,49,104,0.1); @@ -289,20 +279,20 @@ height: 24px; - 20 + 10 - 50 - 32 + 24 + 24 - 50 - 32 + 24 + 24 @@ -327,7 +317,7 @@ height: 24px; - + 8 @@ -343,13 +333,6 @@ height: 24px; 10 - - - - :/images/fatal.svg - - - @@ -419,14 +402,11 @@ height: 24px; - - - 9 - - + + 10 - + @@ -448,14 +428,7 @@ height: 24px; - - - - :/images/origin.svg - - - - + Qt::TabFocus @@ -501,14 +474,11 @@ height: 24px; - - + + 10 - - 9 - - + Qt::TabFocus @@ -521,14 +491,7 @@ height: 24px; - - - - :/images/origin.svg - - - - + Qt::TabFocus @@ -553,19 +516,6 @@ height: 24px; Select another certificate - - - :/images/left.svg:/images/left.svg - - - - 24 - 24 - - - - Qt::ToolButtonTextBesideIcon - @@ -742,14 +692,11 @@ height: 24px; - - - 10 - - + + 20 - + Qt::TabFocus @@ -762,7 +709,7 @@ height: 24px; - + Qt::TabFocus @@ -775,25 +722,6 @@ height: 24px; - - - - - 24 - 24 - - - - - 24 - 24 - - - - :/images/fatal.svg - - - diff --git a/src/ui/images/cardreader.svg b/src/ui/images/cardreader.svg deleted file mode 100644 index 98152825..00000000 --- a/src/ui/images/cardreader.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/ui/images/cardreader_dark.svg b/src/ui/images/cardreader_dark.svg deleted file mode 100644 index 8ae67c2b..00000000 --- a/src/ui/images/cardreader_dark.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/ui/images/down.svg b/src/ui/images/down.svg deleted file mode 100644 index b7d64ba7..00000000 --- a/src/ui/images/down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/images/down_dark.svg b/src/ui/images/down_dark.svg deleted file mode 100644 index a7b51e7e..00000000 --- a/src/ui/images/down_dark.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/images/fatal.svg b/src/ui/images/fatal.svg deleted file mode 100644 index be1109f7..00000000 --- a/src/ui/images/fatal.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/images/fatal_dark.svg b/src/ui/images/fatal_dark.svg deleted file mode 100644 index 16d8f1df..00000000 --- a/src/ui/images/fatal_dark.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/images/id-card.svg b/src/ui/images/id-card.svg index 56a43e00..1c197f52 100644 --- a/src/ui/images/id-card.svg +++ b/src/ui/images/id-card.svg @@ -1,10 +1,3 @@ - - - - - - - - - - + + + \ No newline at end of file diff --git a/src/ui/images/id-card_dark.svg b/src/ui/images/id-card_dark.svg index 6693a86c..98b8cdfa 100644 --- a/src/ui/images/id-card_dark.svg +++ b/src/ui/images/id-card_dark.svg @@ -1,10 +1,3 @@ - - - - - - - - - - + + + \ No newline at end of file diff --git a/src/ui/images/lang.svg b/src/ui/images/lang.svg new file mode 100644 index 00000000..2bbe4f86 --- /dev/null +++ b/src/ui/images/lang.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/ui/images/lang_dark.svg b/src/ui/images/lang_dark.svg new file mode 100644 index 00000000..6d8b5f3e --- /dev/null +++ b/src/ui/images/lang_dark.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/ui/images/left.svg b/src/ui/images/left.svg deleted file mode 100644 index 7cef74e2..00000000 --- a/src/ui/images/left.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/ui/images/no-id-card.svg b/src/ui/images/no-id-card.svg index e1237f6e..1c197f52 100644 --- a/src/ui/images/no-id-card.svg +++ b/src/ui/images/no-id-card.svg @@ -1,5 +1,3 @@ - - - - - + + + \ No newline at end of file diff --git a/src/ui/images/no-id-card_dark.svg b/src/ui/images/no-id-card_dark.svg index 25f69f22..341e601c 100644 --- a/src/ui/images/no-id-card_dark.svg +++ b/src/ui/images/no-id-card_dark.svg @@ -1,5 +1,3 @@ - - - - - + + + \ No newline at end of file diff --git a/src/ui/images/origin.svg b/src/ui/images/origin.svg deleted file mode 100644 index 8ddab408..00000000 --- a/src/ui/images/origin.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/src/ui/images/origin_dark.svg b/src/ui/images/origin_dark.svg deleted file mode 100644 index 661085f9..00000000 --- a/src/ui/images/origin_dark.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/src/ui/images/wait.svg b/src/ui/images/wait.svg index 216d4dd9..11a3f4a2 100644 --- a/src/ui/images/wait.svg +++ b/src/ui/images/wait.svg @@ -1,5 +1,5 @@ - - - - - + + + + + \ No newline at end of file diff --git a/src/ui/images/wait_dark.svg b/src/ui/images/wait_dark.svg new file mode 100644 index 00000000..5fffdcbc --- /dev/null +++ b/src/ui/images/wait_dark.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/ui/webeiddialog.cpp b/src/ui/webeiddialog.cpp index 6e104c97..35a9a6c7 100644 --- a/src/ui/webeiddialog.cpp +++ b/src/ui/webeiddialog.cpp @@ -49,6 +49,11 @@ constexpr inline QLatin1String operator"" _L1(const char* str, size_t size) noex { return QLatin1String(str, int(size)); } + +inline QString operator""_s(const char16_t *str, size_t size) noexcept +{ + return QString(QStringPrivate(nullptr, const_cast(str), qsizetype(size))); +} #else using namespace Qt::Literals::StringLiterals; #endif @@ -70,14 +75,9 @@ WebEidDialog::WebEidDialog(QWidget* parent) : WebEidUI(parent), ui(new Private) setAttribute(Qt::WA_DeleteOnClose); ui->setupUi(this); if (Application::isDarkTheme()) { - QFile f(QStringLiteral(":dark.qss")); - if (f.open(QFile::ReadOnly | QFile::Text)) { + if (QFile f(u":dark.qss"_s); f.open(QFile::ReadOnly | QFile::Text)) { setStyleSheet(styleSheet() + QTextStream(&f).readAll()); - ui->selectCertificateOriginLabelIcon->setPixmap(pixmap("origin"_L1)); - ui->pinInputOriginLabelIcon->setPixmap(pixmap("origin"_L1)); ui->cardChipIcon->setPixmap(pixmap("no-id-card"_L1)); - ui->fatalErrorIcon->setPixmap(pixmap("fatal"_L1)); - ui->aboutIcon->setPixmap(pixmap("fatal"_L1)); } } setWindowFlag(Qt::CustomizeWindowHint); @@ -91,6 +91,11 @@ WebEidDialog::WebEidDialog(QWidget* parent) : WebEidUI(parent), ui(new Private) ui->langButton->setObjectName("langButton"); ui->langButton->setText(tr("EN", "Active language")); ui->langButton->setAccessibleName(tr("English", "Active language accessible")); + ui->langButton->setIcon(pixmap("lang"_L1)); + ui->langButton->setIconSize(QSize(20, 20)); + ui->langButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + ui->langButton->setCursor(QCursor(Qt::PointingHandCursor)); + ui->langButton->setLayoutDirection(Qt::RightToLeft); connect(ui->langButton, &QToolButton::clicked, this, [] { LanguageSelect().exec(); }); ui->pinInput->setAttribute(Qt::WA_MacShowFocusRect, false); @@ -98,7 +103,7 @@ WebEidDialog::WebEidDialog(QWidget* parent) : WebEidUI(parent), ui(new Private) pinInputFont.setLetterSpacing(QFont::AbsoluteSpacing, 2); ui->pinInput->setFont(pinInputFont); - ui->waitingSpinner->load(QStringLiteral(":/images/wait.svg")); + ui->waitingSpinner->load(Application::isDarkTheme() ? u":/images/wait_dark.svg"_s : u":/images/wait.svg"_s); ui->selectionGroup = new QButtonGroup(this); ui->fatalError->hide(); @@ -276,7 +281,7 @@ void WebEidDialog::onMultipleCertificatesReady( qobject_cast(ui->selectionGroup->checkedButton())) { emit accepted(button->certificateInfo()); } else { - emit failure(QStringLiteral("CertificateButton not found")); + emit failure(u"CertificateButton not found"_s); } }); ui->pageStack->setCurrentIndex(int(Page::SELECT_CERTIFICATE)); @@ -297,13 +302,13 @@ void WebEidDialog::onMultipleCertificatesReady( qobject_cast(ui->selectionGroup->checkedButton())) { onSingleCertificateReady(origin, button->certificateInfo()); } else { - emit failure(QStringLiteral("CertificateButton not found")); + emit failure(u"CertificateButton not found"_s); } }); ui->pageStack->setCurrentIndex(int(Page::SELECT_CERTIFICATE)); break; default: - emit failure(QStringLiteral("Command %1 not allowed here") + emit failure("Command %1 not allowed here"_L1 .arg(QString::fromStdString(currentCommand))); } } @@ -360,7 +365,7 @@ void WebEidDialog::onSingleCertificateReady(const QUrl& origin, : QT_TR_NOOP("Enter PIN2 for signing")); break; default: - emit failure(QStringLiteral("Only SELECT_CERTIFICATE, AUTHENTICATE or SIGN allowed")); + emit failure(u"Only SELECT_CERTIFICATE, AUTHENTICATE or SIGN allowed"_s); return; } @@ -595,8 +600,8 @@ void WebEidDialog::setupPinInput(const CardCertificateAndPinInfo& certAndPin) // 5. We additionally allow uppercase and lowercase Unicode letters. const auto& regexpWithOrWithoutLetters = certAndPin.cardInfo->eid().allowsUsingLettersAndSpecialCharactersInPin() - ? QStringLiteral("[0-9 -/:-@[-`{-~\\p{L}]{%1,%2}") - : QStringLiteral("[0-9]{%1,%2}"); + ? u"[0-9 -/:-@[-`{-~\\p{L}]{%1,%2}"_s + : u"[0-9]{%1,%2}"_s; const QRegularExpression numericMinMaxRegexp( regexpWithOrWithoutLetters.arg(certAndPin.pinInfo.pinMinMaxLength.first) .arg(certAndPin.pinInfo.pinMinMaxLength.second)); @@ -656,7 +661,7 @@ void WebEidDialog::resizeHeight() QPixmap WebEidDialog::pixmap(QLatin1String name) { - return {QStringLiteral(":/images/%1%2.svg") + return {":/images/%1%2.svg"_L1 .arg(name, Application::isDarkTheme() ? "_dark"_L1 : QLatin1String())}; } @@ -668,12 +673,12 @@ WebEidDialog::retriableErrorToTextTitleAndIcon(const RetriableError error) noexc return { QT_TR_NOOP("The smart card service required to use the ID-card is not running. Please " "start the smart card service and try again."), - QT_TR_NOOP("Launch the Smart Card service"), "cardreader"_L1}; + QT_TR_NOOP("Launch the Smart Card service"), "no-id-card"_L1}; case RetriableError::NO_SMART_CARD_READERS_FOUND: return {QT_TR_NOOP("Card reader not connected. Please connect the card reader to " "the computer."), - QT_TR_NOOP("Connect the card reader"), "cardreader"_L1}; + QT_TR_NOOP("Connect the card reader"), "no-id-card"_L1}; case RetriableError::NO_SMART_CARDS_FOUND: case RetriableError::PKCS11_TOKEN_NOT_PRESENT: @@ -743,7 +748,7 @@ WebEidDialog::retriableErrorToTextTitleAndIcon(const RetriableError error) noexc "used. Read more here."), - QT_TR_NOOP("Card driver error"), "cardreader"_L1}; + QT_TR_NOOP("Card driver error"), "no-id-card"_L1}; case RetriableError::UNKNOWN_ERROR: return {QT_TR_NOOP("Unknown error"), QT_TR_NOOP("Unknown error"), "no-id-card"_L1};