@@ -375,25 +375,52 @@ void MainWindow::on_actionSaveAs_triggered()
375375 auto frm = currentMdiChild ();
376376 if (!frm) return ;
377377
378- QStringList filters;
379- filters << tr (" XML files (*.xml)" );
380- filters << tr (" All files (*)" );
378+ saveAs (frm, static_cast <SerializationFormat>(-1 ));
379+ }
380+
381+ // /
382+ // / \brief MainWindow::saveAs
383+ // / \param frm
384+ // / \param format
385+ // /
386+ void MainWindow::saveAs (FormModSim* frm, SerializationFormat format)
387+ {
388+ if (!frm) return ;
381389
382390 const auto dir = QString (" %1%2%3" ).arg (_savePath, QDir::separator (), frm->windowTitle ());
383391
384- QString selectedFilter;
385- auto filename = QFileDialog::getSaveFileName (this , QString (), dir, filters.join (" ;;" ), &selectedFilter);
392+ QString filename;
393+ QStringList filters;
394+ switch (format) {
395+ case SerializationFormat::Binary:
396+ filters << tr (" All files (*)" );
397+ filename = QFileDialog::getSaveFileName (this , QString (), dir, filters.join (" ;;" ));
398+ break ;
399+ case SerializationFormat::Xml:
400+ filters << tr (" XML files (*.xml)" );
401+ filename = QFileDialog::getSaveFileName (this , QString (), dir, filters.join (" ;;" ));
402+ break ;
403+ default :
404+ {
405+ filters << tr (" XML files (*.xml)" );
406+ filters << tr (" All files (*)" );
386407
387- if (filename.isEmpty ()) return ;
408+ QString selectedFilter;
409+ filename = QFileDialog::getSaveFileName (this , QString (), dir, filters.join (" ;;" ), &selectedFilter);
388410
389- auto format = SerializationFormat::Binary;
390- if (selectedFilter == filters[0 ]) {
391- format = SerializationFormat::Xml;
392- if (!filename.endsWith (" .xml" , Qt::CaseInsensitive)) {
393- filename.append (" .xml" );
411+ format = SerializationFormat::Binary;
412+ if (selectedFilter == filters[0 ]) {
413+ format = SerializationFormat::Xml;
414+ if (!filename.endsWith (" .xml" , Qt::CaseInsensitive)) {
415+ filename.append (" .xml" );
416+ }
417+ }
394418 }
419+ break ;
395420 }
396421
422+ if (filename.isEmpty ()) return ;
423+
397424 _savePath = QFileInfo (filename).absoluteDir ().absolutePath ();
398425 frm->setFilename (filename);
399426
@@ -1517,10 +1544,11 @@ void MainWindow::saveConfig(const QString& filename, SerializationFormat format)
15171544 const auto activeWnd = ui->mdiArea ->currentSubWindow ();
15181545 for (auto && wnd : ui->mdiArea ->subWindowList ())
15191546 {
1547+ const auto frm = qobject_cast<FormModSim*>(wnd->widget ());
1548+
15201549 windowActivate (wnd);
1521- ui-> actionSave -> trigger ( );
1550+ saveAs (frm, format );
15221551
1523- const auto frm = qobject_cast<FormModSim*>(wnd->widget ());
15241552 const auto filename = frm->filename ();
15251553 if (!filename.isEmpty ()) listFilename.push_back (filename);
15261554 }
0 commit comments