Skip to content

Commit 371a2f2

Browse files
authored
Update remaining buttons to new UI guidlines (open-eid#1382)
IB-7965 Signed-off-by: Raul Metsma <raul@metsma.ee>
1 parent 31d477c commit 371a2f2

52 files changed

Lines changed: 386 additions & 1120 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
steps:
1717
- &Checkout
1818
name: Checkout
19-
uses: actions/checkout@v5
19+
uses: actions/checkout@v6
2020
with:
2121
submodules: recursive
2222
- name: Download artifact
@@ -36,7 +36,7 @@ jobs:
3636
sudo installer -verboseR -pkg opensc_*.pkg -target /
3737
rm -rf libdigidocpp-pkg
3838
- name: Cache libraries
39-
uses: actions/cache@v4
39+
uses: actions/cache@v5
4040
with:
4141
path: ${{ env.LIBS_PATH }}
4242
key: vcpkg-macOS-${{ hashFiles('prepare_osx_build_environment.sh') }}
@@ -60,7 +60,7 @@ jobs:
6060
cmake --build build --target macdeployqt
6161
cmake --build build --target zip
6262
- name: Archive artifacts
63-
uses: actions/upload-artifact@v5
63+
uses: actions/upload-artifact@v6
6464
with:
6565
name: macOS
6666
path: build/qdigidoc4*.zip
@@ -70,7 +70,7 @@ jobs:
7070
container: ubuntu:${{ matrix.container }}
7171
strategy:
7272
matrix:
73-
container: ['22.04', '24.04', '25.04', '25.10']
73+
container: ['22.04', '24.04', '25.10']
7474
arch: ['amd64', 'arm64']
7575
env:
7676
DEBIAN_FRONTEND: noninteractive
@@ -106,7 +106,7 @@ jobs:
106106
- name: Lintian
107107
run: lintian *.deb;
108108
- name: Archive artifacts
109-
uses: actions/upload-artifact@v5
109+
uses: actions/upload-artifact@v6
110110
with:
111111
name: ubuntu_${{ matrix.container }}_${{ matrix.arch }}
112112
path: qdigidoc4*.*
@@ -134,7 +134,7 @@ jobs:
134134
cmake -DCMAKE_INSTALL_PREFIX=/usr -B build -S .
135135
cmake --build build --target all package
136136
- name: Archive artifacts
137-
uses: actions/upload-artifact@v5
137+
uses: actions/upload-artifact@v6
138138
with:
139139
name: fedora_${{ matrix.container }}
140140
path: build/qdigidoc4*.rpm
@@ -161,7 +161,7 @@ jobs:
161161
Rename-Item "libdigidocpp*.msi" libdigidocpp.msi
162162
msiexec /qn /i libdigidocpp.msi
163163
- name: Cache vcpkg
164-
uses: actions/cache@v4
164+
uses: actions/cache@v5
165165
with:
166166
path: ${{ github.workspace }}/vcpkg_cache
167167
key: vcpkg-${{ matrix.vcver }}-${{ hashFiles('vcpkg.json') }}
@@ -194,7 +194,7 @@ jobs:
194194
cmake --build build --target msishellext
195195
cmake --build build --target appx
196196
- name: Archive artifacts
197-
uses: actions/upload-artifact@v5
197+
uses: actions/upload-artifact@v6
198198
with:
199199
name: msi_${{ matrix.vcver }}_x64
200200
path: |

client/Application.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
#include "QSmartCard.h"
2929
#include "DigiDoc.h"
3030
#include "Settings.h"
31-
#include "Styles.h"
3231
#ifdef Q_OS_MAC
3332
#include "MacMenuBar.h"
3433
#else
@@ -57,7 +56,6 @@ class MacMenuBar {};
5756
#include <QtCore/QJsonObject>
5857
#include <QtCore/QProcess>
5958
#include <QtCore/QRegularExpression>
60-
#include <QtCore/QStandardPaths>
6159
#include <QtCore/QTimer>
6260
#include <QtCore/QTranslator>
6361
#include <QtCore/QUrl>
@@ -316,10 +314,6 @@ Application::Application( int &argc, char **argv )
316314
setWindowIcon(QIcon(QStringLiteral(":/images/Icon.svg")));
317315
if(QFile::exists(QStringLiteral("%1/%2.log").arg(QDir::tempPath(), applicationName())))
318316
qInstallMessageHandler(msgHandler);
319-
QPalette p = palette();
320-
p.setBrush(QPalette::Link, QBrush("#2F70B6"));
321-
p.setBrush(QPalette::LinkVisited, QBrush("#2F70B6"));
322-
setPalette(p);
323317

324318
#if defined(Q_OS_WIN)
325319
AllowSetForegroundWindow( ASFW_ANY );
@@ -332,10 +326,6 @@ Application::Application( int &argc, char **argv )
332326
setLibraryPaths({ applicationDirPath() + "/../PlugIns" });
333327
#endif
334328
#endif
335-
setStyleSheet(QStringLiteral(
336-
"QDialogButtonBox { dialogbuttonbox-buttons-have-icons: 0; }\n"));
337-
338-
QNetworkProxyFactory::setUseSystemConfiguration(true);
339329

340330
QStringList args = arguments();
341331
args.removeFirst();
@@ -348,7 +338,18 @@ Application::Application( int &argc, char **argv )
348338
connect(this, &Application::messageReceived, this, qOverload<const QString&>(&Application::parseArgs));
349339
#endif
350340

341+
QPalette p = palette();
342+
p.setBrush(QPalette::Link, QBrush("#2F70B6"));
343+
p.setBrush(QPalette::LinkVisited, QBrush("#2F70B6"));
344+
setPalette(p);
345+
setStyleSheet(QStringLiteral(
346+
"QDialogButtonBox { dialogbuttonbox-buttons-have-icons: 0; }\n"));
347+
QNetworkProxyFactory::setUseSystemConfiguration(true);
351348
QFontDatabase::addApplicationFont(QStringLiteral(":/fonts/Roboto-Bold.ttf"));
349+
QFontDatabase::addApplicationFont(QStringLiteral(":/fonts/Roboto-Regular.ttf"));
350+
QFont f(QStringLiteral("Roboto, Helvetica"));
351+
f.setPixelSize(14);
352+
QToolTip::setFont(f);
352353

353354
#ifdef CONFIG_URL
354355
d->conf = new Configuration(this);
@@ -408,7 +409,6 @@ Application::Application( int &argc, char **argv )
408409
qRegisterMetaType<TokenData>("TokenData");
409410
qRegisterMetaType<QSmartCardData>("QSmartCardData");
410411
qRegisterMetaType<QEventLoop*>("QEventLoop*");
411-
QToolTip::setFont(Styles::font(Styles::Regular, 14));
412412
QDesktopServices::setUrlHandler(QStringLiteral("browse"), this, "browse");
413413
QDesktopServices::setUrlHandler(QStringLiteral("mailto"), this, "mailTo");
414414
QAccessible::installFactory([](const QString &classname, QObject *object) -> QAccessibleInterface* {
@@ -894,9 +894,6 @@ void Application::showClient(QStringList files, bool crypto, bool sign, bool new
894894
i = files.erase(i);
895895
}
896896

897-
if(sign)
898-
sign = files.size() != 1 || !CONTAINER_EXT.contains(QFileInfo(files.value(0)).suffix(), Qt::CaseInsensitive);
899-
900897
MainWindow *w = nullptr;
901898
if(newWindow)
902899
w = nullptr;
@@ -950,6 +947,8 @@ void Application::showClient(QStringList files, bool crypto, bool sign, bool new
950947
return;
951948
QMetaObject::invokeMethod(w, [&] {
952949
using enum ria::qdigidoc4::Pages;
950+
if(sign)
951+
sign = files.size() != 1 || !CONTAINER_EXT.contains(QFileInfo(files.value(0)).suffix(), Qt::CaseInsensitive);
953952
w->selectPage(crypto && !sign ? CryptoIntro : SignIntro);
954953
w->openFiles(std::move(files), false, sign);
955954
});

client/CMakeLists.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ add_executable(${PROJECT_NAME} WIN32 MACOSX_BUNDLE
3333
${PROJECT_NAME}.rc
3434
${WIDGETS}
3535
images/images.qrc
36-
fonts/fonts.qrc
3736
mac/Info.plist.cmake
3837
common_enums.h
3938
main.cpp
@@ -85,8 +84,6 @@ add_executable(${PROJECT_NAME} WIN32 MACOSX_BUNDLE
8584
Settings.h
8685
SslCertificate.cpp
8786
SslCertificate.h
88-
Styles.cpp
89-
Styles.h
9087
TokenData.cpp
9188
TokenData.h
9289
Utils.h
@@ -104,6 +101,10 @@ qt_add_translations(${PROJECT_NAME} TS_FILES
104101
LUPDATE_OPTIONS -locations none
105102
)
106103
qt_add_resources(${PROJECT_NAME} tsl BASE ${TSL_DIR} PREFIX /TSL FILES ${TSL_LIST})
104+
qt_add_resources(${PROJECT_NAME} fonts BASE fonts PREFIX /fonts FILES
105+
fonts/Roboto-Bold.ttf
106+
fonts/Roboto-Regular.ttf
107+
)
107108

108109
target_link_libraries(${PROJECT_NAME}
109110
qdigidoccommon

client/CryptoDoc.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,8 @@ bool CryptoDoc::decrypt()
383383
if(d->cdoc->version() == 2 && !key.transaction_id.isEmpty() && !Settings::CDOC2_NOTIFICATION.isSet())
384384
{
385385
auto *dlg = WarningDialog::create()
386-
->withTitle(QSigner::tr("Failed to decrypt document"))
387-
->withText(tr("You must enter your PIN code twice in order to decrypt the CDOC2 container. "
386+
->withTitle(tr("You must enter your PIN code twice in order to decrypt the CDOC2 container"))
387+
->withText(tr(
388388
"The first PIN entry is required for authentication to the key server referenced in the CDOC2 container. "
389389
"Second PIN entry is required to decrypt the CDOC2 container."))
390390
->setCancelText(WarningDialog::Cancel)

client/DigiDoc.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "Application.h"
2323
#include "CheckConnection.h"
2424
#include "Common.h"
25+
#include "MainWindow.h"
2526
#include "QSigner.h"
2627
#include "TokenData.h"
2728
#include "Utils.h"
@@ -602,12 +603,25 @@ void DigiDoc::removeSignature( unsigned int num )
602603
catch( const Exception &e ) { setLastError( tr("Failed remove signature from container"), e ); }
603604
}
604605

605-
bool DigiDoc::save( const QString &filename )
606+
bool DigiDoc::save(QString filename)
606607
{
607-
if(!filename.isEmpty())
608-
m_fileName = filename;
609-
if(!saveAs(m_fileName))
608+
if(filename.isEmpty())
609+
filename = m_fileName;
610+
QWidget *parentWidget = qobject_cast<QWidget*>(parent());
611+
if(!FileDialog::fileIsWritable(filename))
612+
{
613+
auto *dlg = WarningDialog::create(parentWidget)
614+
->withTitle(MainWindow::tr("Cannot alter container"))
615+
->withText(MainWindow::tr("Cannot alter container %1. Save different location?").arg(FileDialog::normalized(filename)))
616+
->addButton(WarningDialog::YES, QMessageBox::Yes);
617+
if(dlg->exec() != QMessageBox::Yes)
618+
return false;
619+
if(filename = FileDialog::getSaveFileName(parentWidget, FileDialog::tr("Save file"), filename); filename.isEmpty())
620+
return false;
621+
}
622+
if(!saveAs(filename))
610623
return false;
624+
m_fileName = filename;
611625
Application::addRecent(m_fileName);
612626
modified = false;
613627
containerState = signatures().isEmpty() ? ContainerState::UnsignedSavedContainer : ContainerState::SignedContainer;

client/DigiDoc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class DigiDoc: public QObject
132132
bool move(const QString &to);
133133
bool open( const QString &file );
134134
void removeSignature( unsigned int num );
135-
bool save(const QString &filename = {});
135+
bool save(QString filename = {});
136136
bool saveAs(const QString &filename);
137137
bool sign(const QString &city,
138138
const QString &state,

client/MainWindow.cpp

Lines changed: 19 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
#include "widgets/WarningList.h"
4343

4444
#include <QtCore/QMimeData>
45-
#include <QtCore/QStandardPaths>
4645
#include <QtGui/QDragEnterEvent>
4746
#include <QtWidgets/QMessageBox>
4847

@@ -103,15 +102,15 @@ MainWindow::MainWindow( QWidget *parent )
103102
connect(ui->signIntroButton, &QPushButton::clicked, this, [this] { openContainer(true); });
104103
connect(ui->cryptoIntroButton, &QPushButton::clicked, this, [this] { openContainer(false); });
105104
connect(ui->signContainerPage, &ContainerPage::action, this, &MainWindow::onSignAction);
106-
connect(ui->signContainerPage, &ContainerPage::addFiles, this, [this](const QStringList &files) { openFiles(files, true); } );
105+
connect(ui->signContainerPage, &ContainerPage::addFiles, this, [this](const QStringList &files) { openFiles(files); } );
107106
connect(ui->signContainerPage, &ContainerPage::removed, this, &MainWindow::removeSignature);
108107
connect(ui->signContainerPage, &ContainerPage::warning, this, [this](WarningText warningText) {
109108
ui->warnings->showWarning(std::move(warningText));
110109
ui->signature->warningIcon(true);
111110
});
112111

113112
connect(ui->cryptoContainerPage, &ContainerPage::action, this, &MainWindow::onCryptoAction);
114-
connect(ui->cryptoContainerPage, &ContainerPage::addFiles, this, [this](const QStringList &files) { openFiles(files, true); } );
113+
connect(ui->cryptoContainerPage, &ContainerPage::addFiles, this, [this](const QStringList &files) { openFiles(files); } );
115114
connect(ui->cryptoContainerPage, &ContainerPage::warning, this, [this](WarningText warningText) {
116115
ui->warnings->showWarning(std::move(warningText));
117116
ui->crypto->warningIcon(true);
@@ -353,10 +352,6 @@ void MainWindow::onSignAction(int action, const QString &idCode, const QString &
353352
if(digiDoc)
354353
convertToCDoc();
355354
break;
356-
case ContainerSave:
357-
save();
358-
ui->signContainerPage->transition(digiDoc.get());
359-
break;
360355
default:
361356
break;
362357
}
@@ -468,24 +463,19 @@ void MainWindow::openFiles(QStringList files, bool addFile, bool forceCreate)
468463
break;
469464
case ContainerState::UnsignedContainer:
470465
case ContainerState::UnsignedSavedContainer:
471-
case ContainerState::UnencryptedContainer:
472-
create = !addFile;
473-
if(addFile)
474-
{
475-
page = (state == ContainerState::UnencryptedContainer) ? CryptoDetails : SignDetails;
476-
if(page != CryptoDetails && digiDoc->isPDF() && !wrap(digiDoc->fileName(), true))
477-
return;
478-
DocumentModel* model = (current == CryptoDetails) ?
479-
cryptoDoc->documentModel() : digiDoc->documentModel();
480-
for(const auto &file: files)
481-
model->addFile(file);
482-
selectPage(page);
466+
if(digiDoc->isPDF() && !wrap(digiDoc->fileName(), true))
483467
return;
484-
}
485-
// If browsed (double-clicked in Explorer/Finder, clicked on bdoc/cdoc in opened container)
486-
// or recently opened file is opened, then new container should be created.
487-
page = (state == ContainerState::UnencryptedContainer) ? SignDetails : CryptoDetails;
488-
break;
468+
for(DocumentModel* model = digiDoc->documentModel();
469+
const auto &file: std::as_const(files))
470+
model->addFile(file);
471+
selectPage(SignDetails);
472+
return;
473+
case ContainerState::UnencryptedContainer:
474+
for(DocumentModel* model = cryptoDoc->documentModel();
475+
const auto &file: std::as_const(files))
476+
model->addFile(file);
477+
selectPage(CryptoDetails);
478+
return;
489479
default:
490480
if(addFile)
491481
{
@@ -542,36 +532,15 @@ void MainWindow::resetDigiDoc(std::unique_ptr<DigiDoc> &&doc)
542532
->addButton(tr("Save"), QMessageBox::Save);
543533
}
544534
if(dlg->exec() == QMessageBox::Save)
545-
save();
535+
digiDoc->save();
546536
}
547537
digiDoc = std::move(doc);
548538
}
549539

550-
bool MainWindow::save()
551-
{
552-
if(!digiDoc)
553-
return false;
554-
555-
QString target = digiDoc->fileName();
556-
while(!FileDialog::fileIsWritable(target))
557-
{
558-
auto *dlg = WarningDialog::create(this)
559-
->withTitle(tr("Cannot alter container"))
560-
->withText(tr("Cannot alter container %1. Save different location?").arg(FileDialog::normalized(target)))
561-
->addButton(WarningDialog::YES, QMessageBox::Yes);
562-
if(dlg->exec() != QMessageBox::Yes)
563-
return false;
564-
if(target = FileDialog::getSaveFileName(this, FileDialog::tr("Save file"), target); target.isEmpty())
565-
return false;
566-
}
567-
bool result = digiDoc->save(target);
568-
if(result)
569-
ui->signContainerPage->setHeader(target);
570-
return result;
571-
}
572-
573540
void MainWindow::selectPage(Pages page)
574541
{
542+
if(ui->startScreen->currentIndex() == page)
543+
return;
575544
auto *btn = page < CryptoIntro ? ui->signature : (page == MyEid ? ui->myEid : ui->crypto);
576545
btn->setChecked(true);
577546
ui->startScreen->setCurrentIndex(page);
@@ -638,7 +607,7 @@ void MainWindow::sign(F &&sign)
638607
else if(!sign(city, state, zip, country, role))
639608
return;
640609

641-
if(!save())
610+
if(!digiDoc->save())
642611
return;
643612

644613
ui->signContainerPage->transition(digiDoc.get());
@@ -653,7 +622,7 @@ void MainWindow::removeSignature(int index)
653622
return;
654623
WaitDialogHolder waitDialog(this, tr("Removing signature"));
655624
digiDoc->removeSignature(unsigned(index));
656-
save();
625+
digiDoc->save();
657626
ui->signContainerPage->transition(digiDoc.get());
658627
adjustDrops();
659628
}

client/MainWindow.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,9 @@ namespace Ui {
2828
class MainWindow;
2929
}
3030

31-
class CKey;
3231
class CryptoDoc;
3332
class DigiDoc;
34-
class DocumentModel;
35-
class PageIcon;
3633
class TokenData;
37-
class WarningList;
3834

3935
class MainWindow final : public QWidget
4036
{
@@ -70,7 +66,6 @@ class MainWindow final : public QWidget
7066
void openContainer(bool signature);
7167
void resetDigiDoc(std::unique_ptr<DigiDoc> &&doc);
7268
void removeSignature(int index);
73-
bool save();
7469
template <typename F>
7570
void sign(F &&sign);
7671
void updateSelector();

0 commit comments

Comments
 (0)