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();
}
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;

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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);