Skip to content

Commit d35dae4

Browse files
committed
Correct xml/binary serialization ui behaviour
1 parent 2584437 commit d35dae4

4 files changed

Lines changed: 61 additions & 27 deletions

File tree

omodsim/mainwindow.cpp

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

omodsim/mainwindow.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ private slots:
159159
void loadSettings();
160160
void saveSettings();
161161

162+
void saveAs(FormModSim* frm, SerializationFormat format);
163+
162164
private:
163165
Ui::MainWindow *ui;
164166
QWidgetAction* _actionRunMode;

omodsim/translations/omodsim_ru.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1754,22 +1754,24 @@ Script.onInit(()=&gt;{
17541754
</message>
17551755
<message>
17561756
<location filename="../mainwindow.cpp" line="332"/>
1757-
<location filename="../mainwindow.cpp" line="380"/>
1758-
<location filename="../mainwindow.cpp" line="410"/>
1759-
<location filename="../mainwindow.cpp" line="436"/>
1757+
<location filename="../mainwindow.cpp" line="396"/>
1758+
<location filename="../mainwindow.cpp" line="406"/>
1759+
<location filename="../mainwindow.cpp" line="437"/>
1760+
<location filename="../mainwindow.cpp" line="463"/>
17601761
<source>All files (*)</source>
17611762
<translation>Все файлы (*)</translation>
17621763
</message>
17631764
<message>
17641765
<location filename="../mainwindow.cpp" line="331"/>
1765-
<location filename="../mainwindow.cpp" line="379"/>
1766-
<location filename="../mainwindow.cpp" line="409"/>
1767-
<location filename="../mainwindow.cpp" line="435"/>
1766+
<location filename="../mainwindow.cpp" line="400"/>
1767+
<location filename="../mainwindow.cpp" line="405"/>
1768+
<location filename="../mainwindow.cpp" line="436"/>
1769+
<location filename="../mainwindow.cpp" line="462"/>
17681770
<source>XML files (*.xml)</source>
17691771
<translation type="unfinished"></translation>
17701772
</message>
17711773
<message>
1772-
<location filename="../mainwindow.cpp" line="1327"/>
1774+
<location filename="../mainwindow.cpp" line="1354"/>
17731775
<source>Capture Error:<byte value="xd"/>
17741776
%1</source>
17751777
<translation>Ошибка захвата:

omodsim/translations/omodsim_zh.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1762,22 +1762,24 @@ Script.onInit(()=&gt;{
17621762
</message>
17631763
<message>
17641764
<location filename="../mainwindow.cpp" line="332"/>
1765-
<location filename="../mainwindow.cpp" line="380"/>
1766-
<location filename="../mainwindow.cpp" line="410"/>
1767-
<location filename="../mainwindow.cpp" line="436"/>
1765+
<location filename="../mainwindow.cpp" line="396"/>
1766+
<location filename="../mainwindow.cpp" line="406"/>
1767+
<location filename="../mainwindow.cpp" line="437"/>
1768+
<location filename="../mainwindow.cpp" line="463"/>
17681769
<source>All files (*)</source>
17691770
<translation>所有文件 (*)</translation>
17701771
</message>
17711772
<message>
17721773
<location filename="../mainwindow.cpp" line="331"/>
1773-
<location filename="../mainwindow.cpp" line="379"/>
1774-
<location filename="../mainwindow.cpp" line="409"/>
1775-
<location filename="../mainwindow.cpp" line="435"/>
1774+
<location filename="../mainwindow.cpp" line="400"/>
1775+
<location filename="../mainwindow.cpp" line="405"/>
1776+
<location filename="../mainwindow.cpp" line="436"/>
1777+
<location filename="../mainwindow.cpp" line="462"/>
17761778
<source>XML files (*.xml)</source>
17771779
<translation type="unfinished"></translation>
17781780
</message>
17791781
<message>
1780-
<location filename="../mainwindow.cpp" line="1327"/>
1782+
<location filename="../mainwindow.cpp" line="1354"/>
17811783
<source>Capture Error:<byte value="xd"/>
17821784
%1</source>
17831785
<translation>捕获错误:

0 commit comments

Comments
 (0)