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-
573540void 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}
0 commit comments