diff --git a/src/controller/command-handlers/certificatereader.cpp b/src/controller/command-handlers/certificatereader.cpp index e377050c..d6df3ba6 100644 --- a/src/controller/command-handlers/certificatereader.cpp +++ b/src/controller/command-handlers/certificatereader.cpp @@ -58,9 +58,6 @@ EidCertificateAndPinInfo getCertificateWithStatusAndInfo(ElectronicID::ptr&& eid subject = QStringLiteral("%1, %2, %3").arg(surName, givenName, serialNumber); } - CertificateInfo certInfo { - certificateType, certificate.expiryDate() < QDateTime::currentDateTimeUtc(), - certificate.effectiveDate() > QDateTime::currentDateTimeUtc(), std::move(subject)}; auto info = certificateType.isAuthentication() ? eid->authPinInfo() : eid->signingPinInfo(); PinInfo pinInfo {.pinMinMaxLength = certificateType.isAuthentication() ? eid->authPinMinMaxLength() @@ -83,7 +80,13 @@ EidCertificateAndPinInfo getCertificateWithStatusAndInfo(ElectronicID::ptr&& eid .eid = std::move(eid), .certificateBytesInDer = std::move(certificateDer), .certificate = certificate, - .certInfo = std::move(certInfo), + .certInfo = + { + .type = certificateType, + .isExpired = certificate.expiryDate() < QDateTime::currentDateTimeUtc(), + .notEffective = certificate.effectiveDate() > QDateTime::currentDateTimeUtc(), + .subject = std::move(subject), + }, .pinInfo = std::move(pinInfo), .pin1Active = pin1Active, .pin2Active = pin2Active, diff --git a/src/ui/certificatewidget.cpp b/src/ui/certificatewidget.cpp index 48a05fe6..2e504f32 100644 --- a/src/ui/certificatewidget.cpp +++ b/src/ui/certificatewidget.cpp @@ -25,39 +25,36 @@ #include "application.hpp" #include -#include +#include #include #include #include -namespace -{ - -inline QString displayInRed(const QString& text) -{ - return QStringLiteral("%1").arg(text); -} - -} // namespace - // We use two separate widgets, CertificateWidget and CertificateButton, for accessibility, to // support screen readers. CertificateWidgetInfo::CertificateWidgetInfo(QWidget* self) : - icon(new QLabel(self)), info(new QLabel(self)), - warn(new QLabel(CertificateWidget::tr("Pin locked"), self)) + icon(new QLabel(self)), info(new QLabel(self)), issuer(new QLabel(self)), + status(new QLabel(self)) { - warn->setObjectName(QStringLiteral("warn")); - warn->hide(); - auto* layout = new QHBoxLayout(self); - layout->setContentsMargins(20, 0, 20, 0); - layout->setSpacing(10); - layout->addWidget(icon); - layout->addWidget(info, 1); - auto* warnLayout = new QHBoxLayout; - warnLayout->setSpacing(6); - warnLayout->addWidget(warn); - layout->addItem(warnLayout); + info->setObjectName(QStringLiteral("certificateName")); + info->setTextFormat(Qt::PlainText); + info->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + issuer->setObjectName(QStringLiteral("certificateIssuer")); + issuer->setTextFormat(Qt::PlainText); + issuer->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + status->setObjectName(QStringLiteral("certificateStatus")); + status->setTextFormat(Qt::PlainText); + issuer->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + auto* layout = new QGridLayout(self); + layout->setContentsMargins(16, 16, 16, 16); + layout->setHorizontalSpacing(16); + layout->setVerticalSpacing(2); + layout->addWidget(icon, 0, 0, 3, 1, Qt::AlignVCenter); + layout->addWidget(info, 0, 1); + layout->addWidget(issuer, 1, 1); + layout->addWidget(status, 2, 1, Qt::AlignLeft); + layout->setColumnStretch(1, 1); } EidCertificateAndPinInfo CertificateWidgetInfo::certificateInfo() const @@ -67,35 +64,36 @@ EidCertificateAndPinInfo CertificateWidgetInfo::certificateInfo() const std::tuple CertificateWidgetInfo::certData() const { - return {certAndPinInfo.certInfo.subject.toHtmlEscaped(), - certAndPinInfo.certificate.issuerInfo(QSslCertificate::CommonName) - .join(' ') - .toHtmlEscaped(), + return {certAndPinInfo.certInfo.subject, + certAndPinInfo.certificate.issuerInfo(QSslCertificate::CommonName).join(' '), certAndPinInfo.certificate.effectiveDate().date().toString(Qt::ISODate), certAndPinInfo.certificate.expiryDate().date().toString(Qt::ISODate)}; } void CertificateWidgetInfo::setCertificateInfo(const EidCertificateAndPinInfo& cardCertPinInfo) { - warn->setText(CertificateWidget::tr("Pin locked")); certAndPinInfo = cardCertPinInfo; const auto& certInfo = cardCertPinInfo.certInfo; QString warning; - auto [subject, issuer, effectiveDate, expiryDate] = certData(); + const auto& [subject, issuerName, effectiveDate, expiryDate] = certData(); + Q_UNUSED(effectiveDate) bool isError = certInfo.notEffective || certInfo.isExpired || cardCertPinInfo.pinInfo.pinIsBlocked(); if (certInfo.notEffective) { - effectiveDate = displayInRed(effectiveDate); - warning = displayInRed(CertificateWidget::tr(" (Not effective)")); + warning = CertificateWidget::tr(" (Not effective)"); } if (certInfo.isExpired) { - expiryDate = displayInRed(expiryDate); - warning = displayInRed(CertificateWidget::tr(" (Expired)")); + warning = CertificateWidget::tr(" (Expired)"); } - info->setText(CertificateWidget::tr("%1
Issuer: %2
Valid: %3 to %4%5") - .arg(subject, issuer, effectiveDate, expiryDate, warning)); + info->setText(subject); + issuer->setText(CertificateWidget::tr("Issuer: %1").arg(issuerName)); + status->setText(cardCertPinInfo.pinInfo.pinIsBlocked() + ? CertificateWidget::tr("Pin locked") + : CertificateWidget::tr("Valid until: %1%2").arg(expiryDate, warning)); + status->setProperty("warning", isError); + status->style()->unpolish(status); + status->style()->polish(status); info->parentWidget()->setDisabled(isError); - warn->setVisible(warning.isEmpty() && cardCertPinInfo.pinInfo.pinIsBlocked()); if (isError) { icon->setPixmap(Application::isDarkTheme() ? QStringLiteral(":/images/id-card-err_dark.svg") : QStringLiteral(":/images/id-card-err.svg")); @@ -132,14 +130,16 @@ CertificateButton::CertificateButton(const EidCertificateAndPinInfo& cardCertPin setAutoExclusive(true); CertificateWidgetInfo::icon->setAttribute(Qt::WA_TransparentForMouseEvents); info->setAttribute(Qt::WA_TransparentForMouseEvents); + issuer->setAttribute(Qt::WA_TransparentForMouseEvents); setCertificateInfo(cardCertPinInfo); } void CertificateButton::setCertificateInfo(const EidCertificateAndPinInfo& cardCertPinInfo) { CertificateWidgetInfo::setCertificateInfo(cardCertPinInfo); - auto [subject, issuer, effectiveDate, expiryDate] = certData(); - setText(tr("%1 Issuer: %2 Valid: %3 to %4").arg(subject, issuer, effectiveDate, expiryDate)); + auto [subject, issuerName, effectiveDate, expiryDate] = certData(); + setText( + tr("%1 Issuer: %2 Valid: %3 to %4").arg(subject, issuerName, effectiveDate, expiryDate)); } void CertificateButton::paintEvent(QPaintEvent* /*event*/) diff --git a/src/ui/certificatewidget.hpp b/src/ui/certificatewidget.hpp index f7b0257c..06fdfa29 100644 --- a/src/ui/certificatewidget.hpp +++ b/src/ui/certificatewidget.hpp @@ -45,7 +45,8 @@ class CertificateWidgetInfo QLabel* icon; QLabel* info; - QLabel* warn; + QLabel* issuer; + QLabel* status; EidCertificateAndPinInfo certAndPinInfo; }; diff --git a/src/ui/dark.qss b/src/ui/dark.qss index 5eb1a4a3..4eb22d39 100644 --- a/src/ui/dark.qss +++ b/src/ui/dark.qss @@ -15,27 +15,32 @@ color: #FFFFFF; #langButton::hover { background-color: #4E4E53; } -CertificateButton, CertificateWidget { -border-color: #4E4E53; +CertificateWidget { +border-color: transparent; } CertificateButton { background-color: rgba(255,255,255,0.1); -border-color: black; +border-color: #749FCE; } CertificateButton:checked { -border-color: #008EEA; +border-color: #749FCE; +background-color: #1A3E64; } /* CertificateButton QWidget:disabled, CertificateWidget QWidget:disabled */ -CertificateButton #warn, CertificateWidget #warn { -color: #F54A67; +#certificateStatus { +color: white; +background-color: #415982; +} +#certificateStatus[warning="true"] { +color: #FF5C79; +background-color: #4A2830; } QLineEdit { -background-color: rgba(255,255,255,0.1); -border-color: #008EEA; +border-color: #909299; +color: #FFFFFF; } QLineEdit[warning="true"] { -border-color: #F54A67; -color: #F54A67; +border-color: #FF5C79; } QProgressBar { background-color: rgba(255,255,255,0.1); @@ -49,10 +54,15 @@ border-color: #003168; color: #FFFFFF; } #selectCertificateOriginLabel, #pinInputOriginLabel { +color: #B5BFCF; +background-color: #091A36; +border-color: #415982; +} +#pinTitleLabel { color: white; } #pinErrorLabel { -color: #F54A67; +color: #FF5C79; } #aboutContent { border-color: #4E4E53; diff --git a/src/ui/dialog.ui b/src/ui/dialog.ui index 1d87fa4a..259fef0a 100644 --- a/src/ui/dialog.ui +++ b/src/ui/dialog.ui @@ -7,7 +7,7 @@ 0 0 550 - 510 + 512 @@ -68,15 +68,17 @@ font-size: 14px; padding: 8px; } CertificateButton, CertificateWidget { -border: 1px solid rgba(0,49,104,0.1); +border: 1px solid transparent; border-radius: 4px; min-height: 70px; } CertificateButton { background-color: #F5F5F5; +border-color: #E7EAEF; } CertificateButton:checked { -border: 2px solid #113F8E; +border: 1px solid #003168; +background-color: #EAF1F8; } CertificateButton QWidget, CertificateWidget QWidget { background-color: transparent; @@ -84,39 +86,45 @@ background-color: transparent; CertificateButton QWidget:disabled, CertificateWidget QWidget:disabled { color: #76767B; } -CertificateButton #warn, CertificateWidget #warn { -color: #CD2541; +#certificateName { +font-weight: 700; +} +#certificateIssuer { +font-size: 12px; +} +#certificateStatus { +color: #091A36; +background-color: #F3F5F7; +border-radius: 8px; +font-size: 12px; +font-weight: 400; +padding: 2px 8px; +} +#certificateStatus[warning="true"] { +color: #AD2A45; +background-color: #F5EBED; } QLineEdit { -border: 2px solid #113F8E; -color: #113F8E; -border-radius: 3px; -min-width: 200px; -min-height: 45px; -max-width: 200px; -max-height: 45px; -font-size: 26px; -font-weight: bold; -padding-right: 14px; -padding-left: 14px; -padding-top: 0px; -padding-bottom: 0px; +border: 1px solid #C4CBD8; +color: #607496; +border-radius: 8px; +font-size: 16px; +padding: 10px 14px; lineedit-password-character: 42; } QLineEdit[warning="true"] { -border: 2px solid #CD2541; -color: #CD2541; +border: 1px solid #BE7884; +color: #07142A; } QProgressBar { height: 30px; -background-color: #EFEFEF; -border: 1px solid #DEDEDE; +background-color: #F3F5F7; +border: 1px solid #C4CBD8; border-radius: 4px; padding: 2px; } QProgressBar::chunk { -background-color: #113F8E; -border: 1px solid #003168; +background-color: #2F70B6; border-radius: 2px; } #waitingPageTitleLabel, #messagePageTitleLabel, #selectCertificatePageTitleLabel, #pinInputPageTitleLabel, #aboutPageLabel { @@ -128,15 +136,20 @@ font-weight: bold; max-height: 40px; } #selectCertificateOriginLabel, #pinInputOriginLabel { -color: #003168; -font-weight: bold; -max-height: 20px; +color: #607496; +background-color: #F3F5F7; +border: 1px solid #C4CBD8; +border-radius: 8px; +font-size: 16px; +padding: 10px 14px; } -#pinTitleLabel, #pinErrorLabel { -max-height: 20px; +#pinTitleLabel { +font-size: 14px; +color: #07142A; } #pinErrorLabel { -color: #CD2541; +font-size: 14px; +color: #AD2A45; } #fatalError { border: 1px solid rgba(240,78,35,0.1); @@ -157,585 +170,216 @@ color: #76767B; color: #113F8E; border: 0px; height: 24px; +} +#warningBar { +background-color: #FAE7C9; +} +#warningLabel { +color: #003168; +font-family: Roboto, Helvetica; +font-size: 14px; +background-color: transparent; +} +#warningAction { +color: #003168; +border: none; +background-color: transparent; +font-family: Roboto, Helvetica; +font-size: 14px; +font-weight: 400; } - + - 30 + 0 - 20 + 0 - 25 + 0 - 20 + 0 - 20 + 0 - - - background-color: #FAE7C9; -color: #003168; -font-family: Roboto, Helvetica; -font-size: 14px; -padding: 10px; -border: none; -border-radius: 4px; - - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - - - true - - - true - + + + + 12 + + + 24 + + + 12 + + + 24 + + + 12 + + + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + + + true + + + true + + + + + + + PointingHandCursor + + + Qt::RightToLeft + + + Additional information + + + + :/images/link_navy.svg:/images/link_navy.svg + + + + 17 + 15 + + + + + - - - 0 - - - - - 20 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::TabFocus - - - Waiting for card - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - - - - 80 - 80 - - - - - 80 - 80 - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - - - - - 20 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::TabFocus - - - Insert the ID-card - - - true - - - - - - - 10 - - - - - - 24 - 24 - - - - - 24 - 24 - - - - :/images/no-id-card.svg - - - - - - - Qt::TabFocus - - - Insert a smart card - - - true - - - - - - - - + + + + 30 + + + 20 + + + 25 + + + 20 + + + 20 + + + + + 0 + + + - 8 + 20 - 10 + 0 - 10 + 0 - 10 + 0 - 10 + 0 - + Qt::TabFocus - Operation failed. More detailed information can be found in the log files. + Waiting for card - - true + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + 80 + 80 + + + + + 80 + 80 + + + + + Qt::Vertical + + + + 20 + 0 + + + + - - - - - Get help here: <a href="https://www.id.ee">id.ee</a> - - - true - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - - - - - 20 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::TabFocus - - - Select a certificate - - - - - - - 10 - - - - - - 0 - 60 - - - - Qt::TabFocus - - - By choosing the certificate, I agree to the transfer of my name and personal identification code to the service provider. - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - - - - - Qt::TabFocus - - - Qt::PlainText - - - - - - - - - 6 - - - - - - - - - 20 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::TabFocus - - - Authenticate - - - - - - - 10 - - - - - Qt::TabFocus - - - By authenticating, I agree to the transfer of my name and personal identification code to the service provider. - - - true - - - - - - - Qt::TabFocus - - - Qt::PlainText - - - - - - - - - 0 - - - 8 - - - - - - - - Select another certificate - - - - - - - Qt::Horizontal - - - - 40 - 0 - - - - - - - - - - 10 - - - - - - Roboto - -1 - true - - - - Enter PIN1 for authentication - - - Qt::AlignCenter - - - pinInput - - - - - - - 12 - - - QLineEdit::Password - - - - - - - - 0 - 36 - - - - Qt::TabFocus - - - 2 tries left - - - Qt::AlignCenter - - - true - - - - - - - 50 - - - false - - - - - - - Time remaining: - - - - - - - Qt::Vertical - - - - 20 - 5 - - - - - - - - - - - - 20 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 20 - - - 2 - - - - - - 60 - 60 - - - - - 60 - 60 - - - - :/install/appicon_128.png - - - true - - - - - - - Qt::TabFocus - - - About Web eID - - - - - - - Version: 1.0.0 - - - - - - - - + + 20 + + 0 + + + 0 + + + 0 + + + 0 + - + Qt::TabFocus - Web eID extension is disabled. The extension must be enabled in the web browser to authenticate and sign with an ID-card. + Insert the ID-card true @@ -743,120 +387,530 @@ border-radius: 4px; - + + + 10 + + + + + + 24 + 24 + + + + + 24 + 24 + + + + :/images/no-id-card.svg + + + + + + + Qt::TabFocus + + + Insert a smart card + + + true + + + + + + + + + + 8 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + Qt::TabFocus + + + Operation failed. More detailed information can be found in the log files. + + + true + + + + + + + + + + Get help here: <a href="https://www.id.ee">id.ee</a> + + + true + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + + 20 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::TabFocus + + + Select a certificate + + + + + + + 10 + + + + + + 0 + 60 + + + + Qt::TabFocus + + + By choosing the certificate, I agree to the transfer of my name and personal identification code to the service provider. + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + + Qt::TabFocus + + + Qt::PlainText + + + + + + + + + 6 + + + + + + + + + 20 + + + 0 + + + 0 + + + 0 + + + 0 + + + Qt::TabFocus - <b>This is a companion application to the Web eID browser extension</b> and cannot be used independently. To uninstall the extension, remove this application. + Authenticate - + + + + + + 10 + + + + + Qt::TabFocus + + + By authenticating, I agree to the transfer of my name and personal identification code to the service provider. + + + true + + + + + + + Qt::TabFocus + + + Qt::PlainText + + + + + + + + + 0 + + + 8 + + + + + + + + Select another certificate + + + + + + + Qt::Horizontal + + + + 40 + 0 + + + + + + + + + + 6 + + + + + Enter PIN1 for authentication + + + pinInput + + + + + + + 12 + + + QLineEdit::Password + + + + + + + Qt::TabFocus + + + 2 tries left + + + true + + + + + + + 50 + + + false + + + + + + + Time remaining: + + + + + + + + + + + 20 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 20 + + + 2 + + + + + + 60 + 60 + + + + + 60 + 60 + + + + :/install/appicon_128.png + + + true + + + + + + + Qt::TabFocus + + + About Web eID + + + + + + + Version: 1.0.0 + + + + + + + + + + 20 + + + + + Qt::TabFocus + + + Web eID extension is disabled. The extension must be enabled in the web browser to authenticate and sign with an ID-card. + + + true + + + + + + + Qt::TabFocus + + + <b>This is a companion application to the Web eID browser extension</b> and cannot be used independently. To uninstall the extension, remove this application. + + + true + + + + + + + + + + Get help here: <a href="https://www.id.ee">id.ee</a> + + true + + + + Qt::Vertical + + + + 20 + 0 + + + + - - - - - Get help here: <a href="https://www.id.ee">id.ee</a> - - - true - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - + + + + + + 6 + + + + + PointingHandCursor + + + Cancel + + + false + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + PointingHandCursor + + + Qt::RightToLeft + + + Help + + + + :/images/link.svg:/images/link.svg + + + + 16 + 16 + + + + true + + + + + + + PointingHandCursor + + + Confirm + + + true + + + + + + - - - - 6 - - - - - PointingHandCursor - - - Cancel - - - false - - - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - PointingHandCursor - - - Qt::RightToLeft - - - Help - - - - :/images/link.svg:/images/link.svg - - - - 16 - 16 - - - - true - - - - - - - PointingHandCursor - - - Confirm - - - true - - - - - diff --git a/src/ui/images/alert.svg b/src/ui/images/alert.svg new file mode 100644 index 00000000..02cd30dc --- /dev/null +++ b/src/ui/images/alert.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/images/alert_dark.svg b/src/ui/images/alert_dark.svg new file mode 100644 index 00000000..82f693a7 --- /dev/null +++ b/src/ui/images/alert_dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/images/link_navy.svg b/src/ui/images/link_navy.svg new file mode 100644 index 00000000..6dd6f674 --- /dev/null +++ b/src/ui/images/link_navy.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/ui/translations/cs.ts b/src/ui/translations/cs.ts index eac02e98..958f7566 100644 --- a/src/ui/translations/cs.ts +++ b/src/ui/translations/cs.ts @@ -30,8 +30,12 @@ (Platnost vypršela) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Vydavatel: %2<br />Platný: %3 až %4%5 + Issuer: %1 + Vydavatel: %1 + + + Valid until: %1%2 + Platný do: %1%2 Pin locked @@ -103,10 +107,6 @@ Select a certificate Vyberte certifikát - - PIN is locked. Unblock and try again. - PIN je uzamčen. Odblokujte ho a zkuste operaci znovu. - The PIN has been entered incorrectly at least once. %n attempts left. @@ -183,14 +183,54 @@ Operation failed Operace se nezdařila - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - - PIN entry disabled Zadávání PINu je zakázáno + + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + Autentizace a podepisování pomocí ID karty ještě nejsou možné. Pro použití ID karty je nutné ji aktivovat v samoobslužném portálu Policie a pohraniční stráže. + + + Activate ID-card + Aktivovat ID kartu + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/en/self-service-portal + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + Podepisování pomocí ID karty ještě není možné. Pro podepisování je nutné změnit kód PIN2 v aplikaci DigiDoc4. + + + Additional information + Další informace + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + PIN1 je blokován, protože byl zadán nesprávně %n krát. + PIN1 je blokován, protože byl zadán nesprávně %n krát. + PIN1 je blokován, protože byl zadán nesprávně %n krát. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + PIN2 je blokován, protože byl zadán nesprávně %n krát. + PIN2 je blokován, protože byl zadán nesprávně %n krát. + PIN2 je blokován, protože byl zadán nesprávně %n krát. + + + + Cancel blocking + Zrušit blokaci + Card driver error. Please try again. Chyba ovladače karty. Zkuste to prosím znovu. @@ -227,10 +267,6 @@ Try again Zkuste to znovu - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - - Cancel Zrušit diff --git a/src/ui/translations/de.ts b/src/ui/translations/de.ts index 3855b16e..bd6d7e1c 100644 --- a/src/ui/translations/de.ts +++ b/src/ui/translations/de.ts @@ -30,8 +30,12 @@ (Abgelaufen) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Aussteller: %2<br />Gültig: %3 bis %4%5 + Issuer: %1 + Aussteller: %1 + + + Valid until: %1%2 + Gültig bis: %1%2 Pin locked @@ -103,10 +107,6 @@ Select a certificate Wählen Sie ein Zertifikat aus - - PIN is locked. Unblock and try again. - PIN ist gesperrt. Entsperren Sie und versuchen Sie es erneut. - The PIN has been entered incorrectly at least once. %n attempts left. @@ -181,14 +181,52 @@ Operation failed Der Vorgang ist fehlgeschlagen - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - - PIN entry disabled PIN-Eingabe deaktiviert + + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + Authentifizierung und Signierung mit der ID-Karte sind noch nicht möglich. Die ID-Karte muss im Self-Service-Portal der Polizei- und Grenzschutzbehörde aktiviert werden, um sie verwenden zu können. + + + Activate ID-card + ID-Karte aktivieren + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/en/self-service-portal + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + Signieren mit der ID-Karte ist noch nicht möglich. Um zu signieren, muss der PIN2-Code in der DigiDoc4-Anwendung geändert werden. + + + Additional information + Weitere Informationen + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + PIN1 ist gesperrt, da die PIN %n Mal falsch eingegeben wurde. + PIN1 ist gesperrt, da die PIN %n Mal falsch eingegeben wurde. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + PIN2 ist gesperrt, da die PIN %n Mal falsch eingegeben wurde. + PIN2 ist gesperrt, da die PIN %n Mal falsch eingegeben wurde. + + + + Cancel blocking + Sperrung aufheben + Card driver error. Please try again. Kartentreiberfehler. Bitte versuche es erneut. @@ -225,10 +263,6 @@ Try again Versuch es noch einmal - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - - Cancel Abbrechen diff --git a/src/ui/translations/en.ts b/src/ui/translations/en.ts index 271ec7fa..fed85d10 100644 --- a/src/ui/translations/en.ts +++ b/src/ui/translations/en.ts @@ -30,8 +30,12 @@ (Expired) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 + Issuer: %1 + Issuer: %1 + + + Valid until: %1%2 + Valid until: %1%2 Pin locked @@ -103,10 +107,6 @@ Select a certificate Select a certificate - - PIN is locked. Unblock and try again. - PIN is locked. Unblock and try again. - The PIN has been entered incorrectly at least once. %n attempts left. @@ -181,14 +181,52 @@ Operation failed Operation failed - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - PIN entry disabled PIN entry disabled + + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + + + Activate ID-card + Activate ID-card + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/en/self-service-portal + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + + + Additional information + Additional information + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + PIN1 is blocked because it was entered incorrectly %n time. + PIN1 is blocked because it was entered incorrectly %n times. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + PIN2 is blocked because it was entered incorrectly %n time. + PIN2 is blocked because it was entered incorrectly %n times. + + + + Cancel blocking + Cancel blocking + Card driver error. Please try again. Card driver error. Please try again. @@ -225,10 +263,6 @@ Try again Try again - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - Cancel Cancel diff --git a/src/ui/translations/et.ts b/src/ui/translations/et.ts index b1840709..4739b71f 100644 --- a/src/ui/translations/et.ts +++ b/src/ui/translations/et.ts @@ -30,8 +30,12 @@ (Aegunud) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Väljaandja: %2<br />Kehtib: %3 kuni %4%5 + Issuer: %1 + Väljaandja: %1 + + + Valid until: %1%2 + Kehtib kuni: %1%2 Pin locked @@ -103,10 +107,6 @@ Select a certificate Vali sertifikaat - - PIN is locked. Unblock and try again. - PIN-kood on lukus. Tühista blokeering ja proovi uuesti. - The PIN has been entered incorrectly at least once. %n attempts left. @@ -129,10 +129,6 @@ PinPad timed out waiting for customer interaction. PinPad lugeja toiming aegus. - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - ID-kaardiga isikutuvastamine ja allkirjastamine ei ole veel võimalik. ID-kaardi kasutamiseks tuleb see aktiveerida Politsei- ja Piirivalveameti iseteeninduses. <a href="https://www.politsei.ee/et/iseteenindus">Aktiveeri ID-kaart</a> - PIN entry cancelled. PIN-koodi sisestamine katkestati. @@ -141,6 +137,48 @@ PIN entry disabled PIN'i sisestamine on keelatud + + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + ID-kaardiga isikutuvastamine ja allkirjastamine ei ole veel võimalik. ID-kaardi kasutamiseks tuleb see aktiveerida Politsei- ja Piirivalveameti iseteeninduses. + + + Activate ID-card + Aktiveeri ID-kaart + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/et/iseteenindus + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + ID-kaardiga allkirjastamine ei ole veel võimalik. Allkirjastamiseks tuleb DigiDoc4 rakenduses PIN2-koodi muuta. + + + Additional information + Lisainfo + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/artikkel/id-kaardi-pin-ja-puk-koodide-muutmine/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + PIN1 on blokeeritud, kuna PIN1-koodi on sisestatud %n kord valesti. + PIN1 on blokeeritud, kuna PIN1-koodi on sisestatud %n korda valesti. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + PIN2 on blokeeritud, kuna PIN2-koodi on sisestatud %n kord valesti. + PIN2 on blokeeritud, kuna PIN2-koodi on sisestatud %n korda valesti. + + + + Cancel blocking + Tühista blokeering + Launch the Smart Card service Käivita Kiipkaardi teenus @@ -225,10 +263,6 @@ Try again Proovi uuesti - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - ID-kaardiga allkirjastamine ei ole veel võimalik. Allkirjastamiseks tuleb DigiDoc4 rakenduses PIN2-koodi muuta. <a href="https://www.id.ee/artikkel/id-kaardi-pin-ja-puk-koodide-muutmine/">Lisainfo</a> - Cancel Katkesta diff --git a/src/ui/translations/fi.ts b/src/ui/translations/fi.ts index 30169981..d4cab230 100644 --- a/src/ui/translations/fi.ts +++ b/src/ui/translations/fi.ts @@ -30,8 +30,12 @@ (Voimassaoloaika päättynyt) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Myöntäjä: %2<br />Voimassa: %3 – %4%5 + Issuer: %1 + Myöntäjä: %1 + + + Valid until: %1%2 + Voimassa %1 asti%2 Pin locked @@ -99,10 +103,6 @@ Select a certificate Valitse varmenne - - PIN is locked. Unblock and try again. - PIN koodi on lukittu. Poista esto ja yritä uudelleen. - The PIN has been entered incorrectly at least once. %n attempts left. @@ -161,14 +161,52 @@ Operation failed Toiminto epäonnistui - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - - PIN entry disabled PIN-koodin syöttö ei ole käytössä + + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + Henkilökortilla tunnistautuminen ja allekirjoittaminen eivät ole vielä mahdollisia. Henkilökortti on aktivoitava Poliisin ja Rajavartiolaitoksen itsepalveluportaalissa, jotta sitä voi käyttää. + + + Activate ID-card + Aktivoi henkilökortti + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/en/self-service-portal + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + Henkilökortilla allekirjoittaminen ei ole vielä mahdollista. Allekirjoittamista varten PIN2-koodi on vaihdettava DigiDoc4-sovelluksessa. + + + Additional information + Lisätietoa + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + PIN1 on lukittu, koska se on syötetty väärin %n kerran. + PIN1 on lukittu, koska se on syötetty väärin %n kertaa. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + PIN2 on lukittu, koska se on syötetty väärin %n kerran. + PIN2 on lukittu, koska se on syötetty väärin %n kertaa. + + + + Cancel blocking + Poista esto + Card driver error. Please try again. Kortinlukijan virhe. Yritä uudelleen. @@ -197,10 +235,6 @@ Try again Yritä uudelleen - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - - Cancel Peruuta diff --git a/src/ui/translations/fr.ts b/src/ui/translations/fr.ts index 6e95c1a7..1239bd2b 100644 --- a/src/ui/translations/fr.ts +++ b/src/ui/translations/fr.ts @@ -30,8 +30,12 @@ (Expiré) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Émetteur: %2<br />Valide: %3 jusqu'à %4%5 + Issuer: %1 + Émetteur : %1 + + + Valid until: %1%2 + Valide jusqu’au : %1%2 Pin locked @@ -103,10 +107,6 @@ Select a certificate Sélectionnez un certificat - - PIN is locked. Unblock and try again. - Le code PIN est verrouillé. Débloquez et réessayez. - The PIN has been entered incorrectly at least once. %n attempts left. @@ -181,14 +181,52 @@ Operation failed L'opération a échoué - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - - PIN entry disabled Saisie du code PIN désactivée + + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + L'authentification et la signature avec la carte d'identité ne sont pas encore possibles. La carte d'identité doit être activée sur le portail libre-service de la Police et des Gardes-frontières afin de pouvoir l'utiliser. + + + Activate ID-card + Activer la carte d'identité + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/en/self-service-portal + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + La signature avec la carte d'identité n'est pas encore possible. Pour signer, le code PIN2 doit être modifié dans l'application DigiDoc4. + + + Additional information + Informations complémentaires + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + Le PIN1 est bloqué car il a été saisi incorrectement %n fois. + Le PIN1 est bloqué car il a été saisi incorrectement %n fois. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + Le PIN2 est bloqué car il a été saisi incorrectement %n fois. + Le PIN2 est bloqué car il a été saisi incorrectement %n fois. + + + + Cancel blocking + Annuler le blocage + Card driver error. Please try again. Erreur de pilote de carte. Veuillez réessayer. @@ -225,10 +263,6 @@ Try again Essayer à nouveau - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - - Cancel Annuler diff --git a/src/ui/translations/hr.ts b/src/ui/translations/hr.ts index 5915662a..c4cf5595 100644 --- a/src/ui/translations/hr.ts +++ b/src/ui/translations/hr.ts @@ -34,8 +34,12 @@ (Isteklo) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Izdavatelj: %2<br />Vrijedi: %3 do %4%5 + Issuer: %1 + Izdavatelj: %1 + + + Valid until: %1%2 + Vrijedi do: %1%2 @@ -95,10 +99,6 @@ Enter PIN1 for authentication Unos PIN1 za identifikaciju - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - - About Web eID O Web eID @@ -207,17 +207,53 @@ PIN je unesen neispravno više puta. Preostalo %n pokušaj/a. - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - - PIN entry disabled Unos PIN-a onemogućen - PIN is locked. Unblock and try again. - PIN je zaključan. Odblokirajte ga i pokušajte ponovo. + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + Autentifikacija i potpisivanje osobnom iskaznicom još nisu mogući. Osobnu iskaznicu potrebno je aktivirati putem sustava samoposluživanja Policijske i granične uprave da bi se mogla koristiti. + + + Activate ID-card + Aktiviraj osobnu iskaznicu + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/en/self-service-portal + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + Potpisivanje osobnom iskaznicom još nije moguće. Za potpisivanje je potrebno promijeniti PIN2 kôd u aplikaciji DigiDoc4. + + + Additional information + Dodatne informacije + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + PIN1 je blokiran jer je unesen pogrešno %n put/a. + PIN1 je blokiran jer je unesen pogrešno %n put/a. + PIN1 je blokiran jer je unesen pogrešno %n put/a. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + PIN2 je blokiran jer je unesen pogrešno %n put/a. + PIN2 je blokiran jer je unesen pogrešno %n put/a. + PIN2 je blokiran jer je unesen pogrešno %n put/a. + + + + Cancel blocking + Ukloni blokadu The smart card service required to use the ID-card is not running. Please start the smart card service and try again. diff --git a/src/ui/translations/nl.ts b/src/ui/translations/nl.ts index e33b3164..e45f250d 100644 --- a/src/ui/translations/nl.ts +++ b/src/ui/translations/nl.ts @@ -30,8 +30,12 @@ (Vervallen) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Uitgever: %2<br />Geldig: %3 tot %4%5 + Issuer: %1 + Uitgever: %1 + + + Valid until: %1%2 + Geldig tot: %1%2 Pin locked @@ -103,10 +107,6 @@ Select a certificate Selecteer een certificaat - - PIN is locked. Unblock and try again. - PIN is geblokkeerd. Deblokkeer en probeer het opnieuw. - The PIN has been entered incorrectly at least once. %n attempts left. @@ -181,14 +181,52 @@ Operation failed Bewerking mislukt - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - - PIN entry disabled PIN-invoer uitgeschakeld + + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + Authenticatie en ondertekenen met de ID-kaart is nog niet mogelijk. De ID-kaart moet worden geactiveerd in het zelfbedieningsportaal van de Politie- en Grensbewakingsraad om deze te kunnen gebruiken. + + + Activate ID-card + ID-kaart activeren + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/en/self-service-portal + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + Ondertekenen met de ID-kaart is nog niet mogelijk. Om te ondertekenen moet de PIN2-code worden gewijzigd in de DigiDoc4-toepassing. + + + Additional information + Meer informatie + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + PIN1 is geblokkeerd omdat de code %n keer verkeerd is ingevoerd. + PIN1 is geblokkeerd omdat de code %n keer verkeerd is ingevoerd. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + PIN2 is geblokkeerd omdat de code %n keer verkeerd is ingevoerd. + PIN2 is geblokkeerd omdat de code %n keer verkeerd is ingevoerd. + + + + Cancel blocking + Blokkering opheffen + Card driver error. Please try again. Fout met kaartstuurprogramma. Probeer het opnieuw. @@ -225,10 +263,6 @@ Try again Probeer opnieuw - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - - Cancel Annuleer diff --git a/src/ui/translations/ru.ts b/src/ui/translations/ru.ts index 3aef1ff1..d85d413e 100644 --- a/src/ui/translations/ru.ts +++ b/src/ui/translations/ru.ts @@ -30,8 +30,12 @@ (Истекший) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Выдавший: %2<br />Действительно: с %3 до %4%5 + Issuer: %1 + Выдавший: %1 + + + Valid until: %1%2 + Действителен до: %1%2 Pin locked @@ -103,10 +107,6 @@ Select a certificate Выберите сертификат - - PIN is locked. Unblock and try again. - PIN-код заблокирован. Разблокируйте и попробуйте еще раз. - The PIN has been entered incorrectly at least once. %n attempts left. @@ -183,14 +183,54 @@ Operation failed Операция не удалась - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - Идентификация и подписание документов с помощью ID карты пока невозможны. Для использования удостоверения личности его необходимо активировать в системе самообслуживания Управления полиции и пограничной охраны. <a href="https://www.politsei.ee/ru/samoobsluzhivanie">Активировать ID карту</a> - PIN entry disabled Ввод PIN запрещён + + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + Идентификация и подписание документов с помощью ID карты пока невозможны. Для использования удостоверения личности его необходимо активировать в системе самообслуживания Управления полиции и пограничной охраны. + + + Activate ID-card + Активировать ID карту + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/ru/samoobsluzhivanie + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + Подписание с помощью ID-карты ещё невозможно. Чтобы подписывать, необходимо изменить PIN2 в приложении DigiDoc4. + + + Additional information + Дополнительная информация + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/ru/artikkel/poryadok-izmeneniya-pin-kodov-i-puk-koda-id-karty/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + PIN1 заблокирован, так как был введён неверно %n раз. + PIN1 заблокирован, так как был введён неверно %n раза. + PIN1 заблокирован, так как был введён неверно %n раз. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + PIN2 заблокирован, так как был введён неверно %n раз. + PIN2 заблокирован, так как был введён неверно %n раза. + PIN2 заблокирован, так как был введён неверно %n раз. + + + + Cancel blocking + Отменить блокировку + Card driver error. Please try again. Ошибка драйвера карты. Пожалуйста, попробуйте еще раз. @@ -227,10 +267,6 @@ Try again Попробуйте еще раз - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - Подписание с помощью ID-карты ещё невозможно. Чтобы подписывать, необходимо изменить PIN2 в приложении DigiDoc4. <a href="https://www.id.ee/ru/artikkel/poryadok-izmeneniya-pin-kodov-i-puk-koda-id-karty/">Дополнительная информация</a> - Cancel Прервать diff --git a/src/ui/translations/sk.ts b/src/ui/translations/sk.ts index 76c7634a..8914e8b2 100644 --- a/src/ui/translations/sk.ts +++ b/src/ui/translations/sk.ts @@ -30,8 +30,12 @@ (Platnosť vypršala) - <b>%1</b><br />Issuer: %2<br />Valid: %3 to %4%5 - <b>%1</b><br />Vydavateľ: %2<br />Platný: %3 až %4%5 + Issuer: %1 + Vydavateľ: %1 + + + Valid until: %1%2 + Platný do: %1%2 Pin locked @@ -103,10 +107,6 @@ Select a certificate Vyberte certifikát - - PIN is locked. Unblock and try again. - PIN je uzamknutý. Odblokujte ho a skúste operáciu znova. - The PIN has been entered incorrectly at least once. %n attempts left. @@ -183,14 +183,54 @@ Operation failed Operácia zlyhala - - Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. <a href="https://www.politsei.ee/en/self-service-portal">Activate ID-card</a> - - PIN entry disabled Zadávanie PIN je zakázané + + Authentication and signing with the ID-card isn't possible yet. ID-card must be activated in the Police and Border Guard Board’s self-service portal in order to use it. + Autentizácia a podpisovanie pomocou ID karty ešte nie sú možné. Na použitie ID karty je potrebné ju aktivovať v samoobslužnom portáli Policajného a pohraničného zboru. + + + Activate ID-card + Aktivovať ID kartu + + + https://www.politsei.ee/en/self-service-portal + https://www.politsei.ee/en/self-service-portal + + + Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. + Podpisovanie pomocou ID karty ešte nie je možné. Na podpisovanie je potrebné zmeniť kód PIN2 v aplikácii DigiDoc4. + + + Additional information + Ďalšie informácie + + + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/ + + + PIN1 is blocked because it was entered incorrectly %n times. + + PIN1 je blokovaný, pretože bol zadaný nesprávne %n raz. + PIN1 je blokovaný, pretože bol zadaný nesprávne %n razy. + PIN1 je blokovaný, pretože bol zadaný nesprávne %n razov. + + + + PIN2 is blocked because it was entered incorrectly %n times. + + PIN2 je blokovaný, pretože bol zadaný nesprávne %n raz. + PIN2 je blokovaný, pretože bol zadaný nesprávne %n razy. + PIN2 je blokovaný, pretože bol zadaný nesprávne %n razov. + + + + Cancel blocking + Zrušiť blokovanie + Card driver error. Please try again. Chyba ovládača karty. Skúste to prosím znova. @@ -227,10 +267,6 @@ Try again Skúste to znova - - Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 application in order to sign. <a href="https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/">Additional information</a> - - Cancel Zrušiť diff --git a/src/ui/webeiddialog.cpp b/src/ui/webeiddialog.cpp index 8798eb03..18b6451e 100644 --- a/src/ui/webeiddialog.cpp +++ b/src/ui/webeiddialog.cpp @@ -51,6 +51,7 @@ using namespace electronic_id; class WebEidDialog::Private : public Ui::WebEidDialog { public: + observer_ptr pinInputAlert; observer_ptr pinInputValidator; observer_ptr pinTimeoutTimer; observer_ptr selectionGroup; @@ -62,7 +63,7 @@ WebEidDialog::WebEidDialog(QWidget* parent) : WebEidUI(parent), ui(new Private) // close() deletes the dialog automatically if the Qt::WA_DeleteOnClose flag is set. setAttribute(Qt::WA_DeleteOnClose); ui->setupUi(this); - ui->lockedWarning->hide(); + ui->warningBar->hide(); if (Application::isDarkTheme()) { if (QFile f(u":dark.qss"_s); f.open(QFile::ReadOnly | QFile::Text)) { setStyleSheet(styleSheet() + QTextStream(&f).readAll()); @@ -92,6 +93,15 @@ WebEidDialog::WebEidDialog(QWidget* parent) : WebEidUI(parent), ui(new Private) auto pinInputFont = ui->pinInput->font(); pinInputFont.setLetterSpacing(QFont::AbsoluteSpacing, 2); ui->pinInput->setFont(pinInputFont); + ui->pinInputAlert = new QSvgWidget(ui->pinInput); + ui->pinInputAlert->load(Application::isDarkTheme() ? u":/images/alert_dark.svg"_s + : u":/images/alert.svg"_s); + ui->pinInputAlert->setFixedSize(20, 20); + ui->pinInputAlert->hide(); + auto* pinInputLayout = new QHBoxLayout(ui->pinInput); + pinInputLayout->setContentsMargins(14, 10, 14, 10); + pinInputLayout->setSpacing(0); + pinInputLayout->addWidget(ui->pinInputAlert, 0, Qt::AlignRight); ui->waitingSpinner->load(Application::isDarkTheme() ? u":/images/wait_dark.svg"_s : u":/images/wait.svg"_s); @@ -115,31 +125,12 @@ WebEidDialog::WebEidDialog(QWidget* parent) : WebEidUI(parent), ui(new Private) connect(ui->cancelButton, &QPushButton::clicked, this, &WebEidDialog::reject); connect(ui->helpButton, &QPushButton::clicked, this, [this] { ui->helpButton->setDown(false); -#ifdef Q_OS_LINUX - // Launching Chrome in Linux causes the message "Opening in existing browser session." to be - // printed to stdout, which ruins the browser-app communication channel. Redirect stdout to - // pipe before launching the browser and restore it after to avoid this. - std::array unusedPipe {}; - int pipeFailed = pipe(unusedPipe.data()); - int savedStdout {}; - if (!pipeFailed) { - savedStdout = dup(1); // Save the original stdout. - dup2(unusedPipe[1], 1); // Redirect stdout to pipe. - } -#endif - QDesktopServices::openUrl( + openUrl( tr("https://www.id.ee/en/article/how-to-check-that-your-id-card-reader-is-working/")); -#ifdef Q_OS_LINUX - if (!pipeFailed) { - fflush(stdout); - if (savedStdout >= 0) { - dup2(savedStdout, 1); // Restore the original stdout. - ::close(savedStdout); - } - ::close(unusedPipe[1]); - ::close(unusedPipe[0]); - } -#endif + }); + connect(ui->warningAction, &QPushButton::clicked, this, [this] { + ui->warningAction->setDown(false); + openUrl(tr(warningActionUrl)); }); // Hide PIN-related widgets by default. @@ -372,7 +363,7 @@ void WebEidDialog::onSingleCertificateReady(const QUrl& origin, } if (certAndPinInfo.pinInfo.pinIsBlocked()) { - displayPinBlockedError(); + displayPinBlockedError(certAndPinInfo.pinInfo.pinRetriesCount.second); } else if (certAndPinInfo.certInfo.isExpired || certAndPinInfo.certInfo.notEffective) { ui->pinTitleLabel->hide(); } else if (useExternalPinDialog) { @@ -414,7 +405,7 @@ void WebEidDialog::onVerifyPinFailed(const VerifyPinFailed::Status status, const showPinInputWarning(true); break; case Status::PIN_BLOCKED: - displayPinBlockedError(); + displayPinBlockedError(currentPinMaxRetries); return; case Status::INVALID_PIN_LENGTH: message = [] { return tr("Invalid PIN length"); }; @@ -467,7 +458,9 @@ bool WebEidDialog::event(QEvent* event) resizeHeight(); break; case QEvent::Resize: - ui->langButton->move(width() - ui->langButton->width() - 20, ui->pageStack->pos().y() - 20); + ui->dialogContent->layout()->activate(); + ui->langButton->move(width() - ui->langButton->width() - 20, + ui->pageStack->mapTo(this, QPoint(0, 0)).y() - 20); break; default: break; @@ -574,6 +567,7 @@ void WebEidDialog::setupPinPrompt(PinInfo pinInfo, bool cardActive) void WebEidDialog::setupPinPadProgressBarAndEmitWait(const EidCertificateAndPinInfo& certAndPin) { setupWarning(certAndPin); + currentPinMaxRetries = certAndPin.pinInfo.pinRetriesCount.second; bool cardActive = isCardActive(certAndPin); setupPinPrompt(certAndPin.pinInfo, cardActive); if (!cardActive) { @@ -606,6 +600,7 @@ void WebEidDialog::setupPinPadProgressBarAndEmitWait(const EidCertificateAndPinI void WebEidDialog::setupPinInput(const EidCertificateAndPinInfo& certAndPinInfo) { setupWarning(certAndPinInfo); + currentPinMaxRetries = certAndPinInfo.pinInfo.pinRetriesCount.second; setupPinPrompt(certAndPinInfo.pinInfo, isCardActive(certAndPinInfo)); // The allowed character ranges are from the SafeNet eToken guide: // 1. English uppercase letters (ASCII 0x41...0x5A). @@ -642,31 +637,49 @@ void WebEidDialog::setupOK(Func func, const char* text, bool enabled) void WebEidDialog::setupWarning(const EidCertificateAndPinInfo& certAndPinInfo) { - ui->lockedWarning->setHidden(certAndPinInfo.pin1Active && certAndPinInfo.pin2Active); + ui->warningBar->setHidden(certAndPinInfo.pin1Active && certAndPinInfo.pin2Active); if (!certAndPinInfo.pin1Active) { - setTrText( - ui->lockedWarning, - QT_TR_NOOP( - "Authentication and signing with the ID-card isn't possible yet. " - "ID-card must be activated in the Police and Border Guard Board’s self-service " - "portal in order to use it. " - "Activate ID-card")); + setTrText(ui->warningLabel, + QT_TR_NOOP("Authentication and signing with the ID-card isn't possible yet. " + "ID-card must be activated in the Police and Border Guard Board’s " + "self-service portal in order to use it.")); + setTrText(ui->warningAction, QT_TR_NOOP("Activate ID-card")); + warningActionUrl = QT_TR_NOOP("https://www.politsei.ee/en/self-service-portal"); } else if (!certAndPinInfo.pin2Active) { - setTrText( - ui->lockedWarning, - QT_TR_NOOP( - "Signing with an ID-card isn't possible yet. PIN2 code must be changed in DigiDoc4 " - "application in order to sign. " - "Additional information")); + setTrText(ui->warningLabel, + QT_TR_NOOP("Signing with an ID-card isn't possible yet. PIN2 code must be " + "changed in DigiDoc4 application in order to sign.")); + setTrText(ui->warningAction, QT_TR_NOOP("Additional information")); + warningActionUrl = + QT_TR_NOOP("https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/"); } resizeHeight(); } -void WebEidDialog::displayPinBlockedError() +void WebEidDialog::displayPinBlockedError(int8_t maxRetries) { - displayFatalError([] { return tr("PIN is locked. Unblock and try again."); }); + ui->pinTitleLabel->hide(); + ui->pinInput->hide(); + ui->pinTimeoutTimer->stop(); + ui->pinTimeRemaining->hide(); + ui->pinEntryTimeoutProgressBar->hide(); + ui->okButton->hide(); + ui->cancelButton->setEnabled(true); + ui->cancelButton->show(); + ui->helpButton->show(); + + const bool isPin1 = currentCommand == CommandType::AUTHENTICATE; + setTrText(ui->warningLabel, [isPin1, maxRetries]() -> QString { + return isPin1 ? tr("PIN1 is blocked because it was entered incorrectly %n times.", nullptr, + maxRetries) + : tr("PIN2 is blocked because it was entered incorrectly %n times.", nullptr, + maxRetries); + }); + setTrText(ui->warningAction, QT_TR_NOOP("Cancel blocking")); + warningActionUrl = + QT_TR_NOOP("https://www.id.ee/en/article/changing-id-card-pin-codes-and-puk-code/"); + ui->warningBar->show(); + resizeHeight(); } template @@ -690,6 +703,7 @@ void WebEidDialog::showPinInputWarning(bool show) { style()->unpolish(ui->pinInput); ui->pinInput->setProperty("warning", show); + ui->pinInputAlert->setVisible(show); style()->polish(ui->pinInput); } @@ -699,6 +713,34 @@ void WebEidDialog::resizeHeight() adjustSize(); } +void WebEidDialog::openUrl(const QString& url) +{ +#ifdef Q_OS_LINUX + // Launching Chrome in Linux causes the message "Opening in existing browser session." to be + // printed to stdout, which ruins the browser-app communication channel. Redirect stdout to + // pipe before launching the browser and restore it after to avoid this. + std::array unusedPipe {}; + int pipeFailed = pipe(unusedPipe.data()); + int savedStdout {}; + if (!pipeFailed) { + savedStdout = dup(1); // Save the original stdout. + dup2(unusedPipe[1], 1); // Redirect stdout to pipe. + } +#endif + QDesktopServices::openUrl(url); +#ifdef Q_OS_LINUX + if (!pipeFailed) { + fflush(stdout); + if (savedStdout >= 0) { + dup2(savedStdout, 1); // Restore the original stdout. + ::close(savedStdout); + } + ::close(unusedPipe[1]); + ::close(unusedPipe[0]); + } +#endif +} + bool WebEidDialog::isCardActive(const EidCertificateAndPinInfo& certAndPinInfo) const noexcept { if (!certAndPinInfo.pin1Active) { diff --git a/src/ui/webeiddialog.hpp b/src/ui/webeiddialog.hpp index ee0ffa1e..84569256 100644 --- a/src/ui/webeiddialog.hpp +++ b/src/ui/webeiddialog.hpp @@ -108,12 +108,13 @@ class WebEidDialog final : public WebEidUI template void setupOK(Func func, const char* text = {}, bool enabled = false); void setupWarning(const EidCertificateAndPinInfo& certAndPinInfo); - void displayPinBlockedError(); + void displayPinBlockedError(int8_t maxRetries); template void displayFatalError(Text message); void showPinInputWarning(bool show); void resizeHeight(); + static void openUrl(const QString& url); bool isCardActive(const EidCertificateAndPinInfo& certAndPinInfo) const noexcept; static QPixmap pixmap(QLatin1String name); @@ -125,5 +126,7 @@ class WebEidDialog final : public WebEidUI CommandType currentCommand = CommandType::NONE; QString pin; + int8_t currentPinMaxRetries = -1; + const char* warningActionUrl = nullptr; bool closeUnconditionally = false; };