diff --git a/document.cpp b/document.cpp index d4fb4af..78aa32b 100644 --- a/document.cpp +++ b/document.cpp @@ -182,17 +182,12 @@ void TeletextDocument::unDeleteSubPageFromRecycle(int subPage) m_recycleSubPages.pop_back(); } -void TeletextDocument::setPageNumber(QString pageNumberString) +void TeletextDocument::setPageNumber(int pageNumber) { - bool pageNumberOk; - int pageNumberRead = pageNumberString.toInt(&pageNumberOk, 16); - if ((!pageNumberOk) || pageNumberRead < 0x100 || pageNumberRead > 0x8ff) - return; - // If the magazine number was changed, we need to update the relative magazine numbers in FastText // and page enhancement links int oldMagazine = (m_pageNumber & 0xf00); - int newMagazine = (pageNumberRead & 0xf00); + int newMagazine = (pageNumber & 0xf00); // Fix magazine 0 to 8 if (oldMagazine == 0x800) oldMagazine = 0x000; @@ -200,7 +195,7 @@ void TeletextDocument::setPageNumber(QString pageNumberString) newMagazine = 0x000; int magazineFlip = oldMagazine ^ newMagazine; - m_pageNumber = pageNumberRead; + m_pageNumber = pageNumber; for (auto &subPage : m_subPages) if (magazineFlip) { @@ -211,6 +206,17 @@ void TeletextDocument::setPageNumber(QString pageNumberString) } } +void TeletextDocument::setPageNumberFromString(QString pageNumberString) +{ + bool pageNumberOk; + int pageNumberRead = pageNumberString.toInt(&pageNumberOk, 16); + + if ((!pageNumberOk) || pageNumberRead < 0x100 || pageNumberRead > 0x8ff) + return; + + setPageNumber(pageNumberRead); +} + void TeletextDocument::setDescription(QString newDescription) { m_description = newDescription; diff --git a/document.h b/document.h index d51552f..f548440 100644 --- a/document.h +++ b/document.h @@ -74,7 +74,8 @@ public: void deleteSubPageToRecycle(int); void unDeleteSubPageFromRecycle(int); int pageNumber() const { return m_pageNumber; } - void setPageNumber(QString); + void setPageNumber(int); + void setPageNumberFromString(QString); QString description() const { return m_description; } void setDescription(QString); void setFastTextLinkPageNumberOnAllSubPages(int, int); diff --git a/loadsave.cpp b/loadsave.cpp index 0484b39..e46ceb6 100644 --- a/loadsave.cpp +++ b/loadsave.cpp @@ -52,7 +52,7 @@ void loadTTI(QFile *inFile, TeletextDocument *document) document->insertSubPage(document->numberOfSubPages(), false); loadingPage = document->subPage(document->numberOfSubPages()-1); } else { - document->setPageNumber(inLine.mid(3,3)); + document->setPageNumberFromString(inLine.mid(3,3)); firstSubPageAlreadyFound = true; } } diff --git a/pageoptionsdockwidget.cpp b/pageoptionsdockwidget.cpp index aa77d3e..a73c003 100644 --- a/pageoptionsdockwidget.cpp +++ b/pageoptionsdockwidget.cpp @@ -47,7 +47,7 @@ PageOptionsDockWidget::PageOptionsDockWidget(TeletextWidget *parent): QDockWidge m_pageNumberEdit->setInputMask("DHH"); //TODO restrict first digit of page number to 1-8 pageNumberLayout->addWidget(m_pageNumberEdit); - connect(m_pageNumberEdit, &QLineEdit::textEdited, m_parentMainWidget->document(), &TeletextDocument::setPageNumber); + connect(m_pageNumberEdit, &QLineEdit::textEdited, m_parentMainWidget->document(), &TeletextDocument::setPageNumberFromString); pageOptionsLayout->addLayout(pageNumberLayout);