Refuse to overwrite imported file with multiple subpages
This commit is contained in:
@@ -206,6 +206,7 @@ bool LoadT42Format::load(QFile *inFile, TeletextDocument *document)
|
||||
|
||||
m_warnings.clear();
|
||||
m_error.clear();
|
||||
m_reExportWarning = false;
|
||||
|
||||
for (;;) {
|
||||
if (!readPacket())
|
||||
@@ -247,6 +248,7 @@ bool LoadT42Format::load(QFile *inFile, TeletextDocument *document)
|
||||
if (readPageNumber != foundPageNumber) {
|
||||
// More than one page in .t42 file - end of current page reached
|
||||
m_warnings.append("More than one page in .t42 file, only first full page loaded.");
|
||||
m_reExportWarning = true;
|
||||
break;
|
||||
}
|
||||
// Could get here if X/0 with same page number was found with no body packets inbetween
|
||||
@@ -421,6 +423,7 @@ bool LoadEP1Format::load(QFile *inFile, TeletextDocument *document)
|
||||
{
|
||||
m_warnings.clear();
|
||||
m_error.clear();
|
||||
m_reExportWarning = false;
|
||||
|
||||
unsigned char inLine[42];
|
||||
unsigned char numOfSubPages = 1;
|
||||
@@ -440,6 +443,7 @@ bool LoadEP1Format::load(QFile *inFile, TeletextDocument *document)
|
||||
return false;
|
||||
|
||||
m_warnings.append("More than one page in EP1/EPX file, only first full page loaded.");
|
||||
m_reExportWarning = true;
|
||||
}
|
||||
|
||||
// Check for header of a (sub)page
|
||||
|
||||
@@ -43,11 +43,13 @@ public:
|
||||
QString fileDialogFilter() const { return QString(description() + " (*." + extensions().join(" *.") + ')'); };
|
||||
QStringList warningStrings() const { return m_warnings; };
|
||||
QString errorString() const { return m_error; };
|
||||
bool reExportWarning() const { return m_reExportWarning; };
|
||||
|
||||
protected:
|
||||
TeletextDocument const *m_document;
|
||||
QStringList m_warnings;
|
||||
QString m_error;
|
||||
bool m_reExportWarning = false;
|
||||
};
|
||||
|
||||
class LoadTTIFormat : public LoadFormat
|
||||
|
||||
@@ -332,6 +332,7 @@ void MainWindow::init()
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
||||
m_isUntitled = true;
|
||||
m_reExportWarning = false;
|
||||
|
||||
m_textWidget = new TeletextWidget;
|
||||
|
||||
@@ -1087,6 +1088,8 @@ void MainWindow::loadFile(const QString &fileName)
|
||||
if (!loadingFormat->warningStrings().isEmpty())
|
||||
QMessageBox::warning(this, QApplication::applicationDisplayName(), tr("The following issues were encountered when loading<br>%1:<ul><li>%2</li></ul>").arg(QDir::toNativeSeparators(fileName), loadingFormat->warningStrings().join("</li><li>")));
|
||||
|
||||
m_reExportWarning = loadingFormat->reExportWarning();
|
||||
|
||||
setCurrentFile(fileName);
|
||||
statusBar()->showMessage(tr("File loaded"), 2000);
|
||||
}
|
||||
@@ -1228,9 +1231,14 @@ void MainWindow::exportFile(bool fromAuto)
|
||||
QString exportFileName;
|
||||
SaveFormat *exportFormat = nullptr;
|
||||
|
||||
if (fromAuto)
|
||||
if (fromAuto) {
|
||||
if (m_reExportWarning) {
|
||||
QMessageBox::StandardButton ret = QMessageBox::warning(this, QApplication::applicationDisplayName(), tr("Will not overwrite imported file %1:\nAll other subpages in that file would be erased.\nPlease save or export to a different file.").arg(strippedName(m_exportAutoFileName)));
|
||||
|
||||
return;
|
||||
}
|
||||
exportFileName = m_exportAutoFileName;
|
||||
else {
|
||||
} else {
|
||||
if (m_exportAutoFileName.isEmpty())
|
||||
exportFileName = m_curFile;
|
||||
else
|
||||
@@ -1284,6 +1292,7 @@ void MainWindow::exportFile(bool fromAuto)
|
||||
MainWindow::prependToRecentFiles(exportFileName);
|
||||
|
||||
m_exportAutoFileName = exportFileName;
|
||||
m_reExportWarning = false;
|
||||
statusBar()->showMessage(tr("File exported"), 2000);
|
||||
}
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ private:
|
||||
QRadioButton *m_levelRadioButton[4];
|
||||
|
||||
QString m_curFile, m_exportAutoFileName, m_exportImageFileName;
|
||||
bool m_isUntitled;
|
||||
bool m_isUntitled, m_reExportWarning;
|
||||
|
||||
LoadFormats m_loadFormats;
|
||||
SaveFormats m_saveFormats;
|
||||
|
||||
Reference in New Issue
Block a user