4343#include " widgets/WarningList.h"
4444
4545#include < QtCore/QMimeData>
46- #include < QtCore/QStandardPaths>
4746#include < QtGui/QDragEnterEvent>
4847#include < QtWidgets/QMessageBox>
4948
@@ -104,15 +103,15 @@ MainWindow::MainWindow( QWidget *parent )
104103 connect (ui->signIntroButton , &QPushButton::clicked, this , [this ] { openContainer (true ); });
105104 connect (ui->cryptoIntroButton , &QPushButton::clicked, this , [this ] { openContainer (false ); });
106105 connect (ui->signContainerPage , &ContainerPage::action, this , &MainWindow::onSignAction);
107- connect (ui->signContainerPage , &ContainerPage::addFiles, this , [this ](const QStringList &files) { openFiles (files, true ); } );
106+ connect (ui->signContainerPage , &ContainerPage::addFiles, this , [this ](const QStringList &files) { openFiles (files); } );
108107 connect (ui->signContainerPage , &ContainerPage::removed, this , &MainWindow::removeSignature);
109108 connect (ui->signContainerPage , &ContainerPage::warning, this , [this ](WarningText warningText) {
110109 ui->warnings ->showWarning (std::move (warningText));
111110 ui->signature ->warningIcon (true );
112111 });
113112
114113 connect (ui->cryptoContainerPage , &ContainerPage::action, this , &MainWindow::onCryptoAction);
115- connect (ui->cryptoContainerPage , &ContainerPage::addFiles, this , [this ](const QStringList &files) { openFiles (files, true ); } );
114+ connect (ui->cryptoContainerPage , &ContainerPage::addFiles, this , [this ](const QStringList &files) { openFiles (files); } );
116115 connect (ui->cryptoContainerPage , &ContainerPage::warning, this , [this ](WarningText warningText) {
117116 ui->warnings ->showWarning (std::move (warningText));
118117 ui->crypto ->warningIcon (true );
@@ -404,10 +403,6 @@ void MainWindow::onSignAction(int action, const QString &idCode, const QString &
404403 if (digiDoc)
405404 convertToCDoc ();
406405 break ;
407- case ContainerSave:
408- save ();
409- ui->signContainerPage ->transition (digiDoc.get ());
410- break ;
411406 default :
412407 break ;
413408 }
@@ -522,24 +517,19 @@ void MainWindow::openFiles(QStringList files, bool addFile, bool forceCreate)
522517 break ;
523518 case ContainerState::UnsignedContainer:
524519 case ContainerState::UnsignedSavedContainer:
525- case ContainerState::UnencryptedContainer:
526- create = !addFile;
527- if (addFile)
528- {
529- page = (state == ContainerState::UnencryptedContainer) ? CryptoDetails : SignDetails;
530- if (page != CryptoDetails && digiDoc->isPDF () && !wrap (digiDoc->fileName (), true ))
531- return ;
532- DocumentModel* model = (current == CryptoDetails) ?
533- cryptoDoc->documentModel () : digiDoc->documentModel ();
534- for (const auto &file: files)
535- model->addFile (file);
536- selectPage (page);
520+ if (digiDoc->isPDF () && !wrap (digiDoc->fileName (), true ))
537521 return ;
538- }
539- // If browsed (double-clicked in Explorer/Finder, clicked on bdoc/cdoc in opened container)
540- // or recently opened file is opened, then new container should be created.
541- page = (state == ContainerState::UnencryptedContainer) ? SignDetails : CryptoDetails;
542- break ;
522+ for (DocumentModel* model = digiDoc->documentModel ();
523+ const auto &file: std::as_const (files))
524+ model->addFile (file);
525+ selectPage (SignDetails);
526+ return ;
527+ case ContainerState::UnencryptedContainer:
528+ for (DocumentModel* model = cryptoDoc->documentModel ();
529+ const auto &file: std::as_const (files))
530+ model->addFile (file);
531+ selectPage (CryptoDetails);
532+ return ;
543533 default :
544534 if (addFile)
545535 {
@@ -596,36 +586,15 @@ void MainWindow::resetDigiDoc(std::unique_ptr<DigiDoc> &&doc)
596586 ->addButton (tr (" Save" ), QMessageBox::Save);
597587 }
598588 if (dlg->exec () == QMessageBox::Save)
599- save ();
589+ digiDoc-> save ();
600590 }
601591 digiDoc = std::move (doc);
602592}
603593
604- bool MainWindow::save ()
605- {
606- if (!digiDoc)
607- return false ;
608-
609- QString target = digiDoc->fileName ();
610- while (!FileDialog::fileIsWritable (target))
611- {
612- auto *dlg = WarningDialog::create (this )
613- ->withTitle (tr (" Cannot alter container" ))
614- ->withText (tr (" Cannot alter container %1. Save different location?" ).arg (FileDialog::normalized (target)))
615- ->addButton (WarningDialog::YES, QMessageBox::Yes);
616- if (dlg->exec () != QMessageBox::Yes)
617- return false ;
618- if (target = FileDialog::getSaveFileName (this , FileDialog::tr (" Save file" ), target); target.isEmpty ())
619- return false ;
620- }
621- bool result = digiDoc->save (target);
622- if (result)
623- ui->signContainerPage ->setHeader (target);
624- return result;
625- }
626-
627594void MainWindow::selectPage (Pages page)
628595{
596+ if (ui->startScreen ->currentIndex () == page)
597+ return ;
629598 auto *btn = page < CryptoIntro ? ui->signature : (page == MyEid ? ui->myEid : ui->crypto );
630599 btn->setChecked (true );
631600 ui->startScreen ->setCurrentIndex (page);
@@ -692,7 +661,7 @@ void MainWindow::sign(F &&sign)
692661 else if (!sign (city, state, zip, country, role))
693662 return ;
694663
695- if (!save ())
664+ if (!digiDoc-> save ())
696665 return ;
697666
698667 ui->signContainerPage ->transition (digiDoc.get ());
@@ -707,7 +676,7 @@ void MainWindow::removeSignature(int index)
707676 return ;
708677 WaitDialogHolder waitDialog (this , tr (" Removing signature" ));
709678 digiDoc->removeSignature (unsigned (index));
710- save ();
679+ digiDoc-> save ();
711680 ui->signContainerPage ->transition (digiDoc.get ());
712681 adjustDrops ();
713682}
0 commit comments