Allow setting page number from int value

This commit is contained in:
G.K.MacGregor
2021-08-08 19:34:14 +01:00
parent c356d0f5ae
commit 798630bd50
4 changed files with 18 additions and 11 deletions

View File

@@ -182,17 +182,12 @@ void TeletextDocument::unDeleteSubPageFromRecycle(int subPage)
m_recycleSubPages.pop_back(); 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 // If the magazine number was changed, we need to update the relative magazine numbers in FastText
// and page enhancement links // and page enhancement links
int oldMagazine = (m_pageNumber & 0xf00); int oldMagazine = (m_pageNumber & 0xf00);
int newMagazine = (pageNumberRead & 0xf00); int newMagazine = (pageNumber & 0xf00);
// Fix magazine 0 to 8 // Fix magazine 0 to 8
if (oldMagazine == 0x800) if (oldMagazine == 0x800)
oldMagazine = 0x000; oldMagazine = 0x000;
@@ -200,7 +195,7 @@ void TeletextDocument::setPageNumber(QString pageNumberString)
newMagazine = 0x000; newMagazine = 0x000;
int magazineFlip = oldMagazine ^ newMagazine; int magazineFlip = oldMagazine ^ newMagazine;
m_pageNumber = pageNumberRead; m_pageNumber = pageNumber;
for (auto &subPage : m_subPages) for (auto &subPage : m_subPages)
if (magazineFlip) { 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) void TeletextDocument::setDescription(QString newDescription)
{ {
m_description = newDescription; m_description = newDescription;

View File

@@ -74,7 +74,8 @@ public:
void deleteSubPageToRecycle(int); void deleteSubPageToRecycle(int);
void unDeleteSubPageFromRecycle(int); void unDeleteSubPageFromRecycle(int);
int pageNumber() const { return m_pageNumber; } int pageNumber() const { return m_pageNumber; }
void setPageNumber(QString); void setPageNumber(int);
void setPageNumberFromString(QString);
QString description() const { return m_description; } QString description() const { return m_description; }
void setDescription(QString); void setDescription(QString);
void setFastTextLinkPageNumberOnAllSubPages(int, int); void setFastTextLinkPageNumberOnAllSubPages(int, int);

View File

@@ -52,7 +52,7 @@ void loadTTI(QFile *inFile, TeletextDocument *document)
document->insertSubPage(document->numberOfSubPages(), false); document->insertSubPage(document->numberOfSubPages(), false);
loadingPage = document->subPage(document->numberOfSubPages()-1); loadingPage = document->subPage(document->numberOfSubPages()-1);
} else { } else {
document->setPageNumber(inLine.mid(3,3)); document->setPageNumberFromString(inLine.mid(3,3));
firstSubPageAlreadyFound = true; firstSubPageAlreadyFound = true;
} }
} }

View File

@@ -47,7 +47,7 @@ PageOptionsDockWidget::PageOptionsDockWidget(TeletextWidget *parent): QDockWidge
m_pageNumberEdit->setInputMask("DHH"); m_pageNumberEdit->setInputMask("DHH");
//TODO restrict first digit of page number to 1-8 //TODO restrict first digit of page number to 1-8
pageNumberLayout->addWidget(m_pageNumberEdit); 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); pageOptionsLayout->addLayout(pageNumberLayout);