Store page numbers in Page classes
Although the document class keeps the page number, the sub pages may need to know the page number as well. For example X/27 packets contain relative magazine numbers which need the current page number to calculate the actual page numbers referenced.
This commit is contained in:
@@ -33,6 +33,7 @@ TeletextDocument::TeletextDocument()
|
||||
m_fastTextLink[i] = 0x8ff;
|
||||
m_empty = true;
|
||||
m_subPages.push_back(new LevelOnePage);
|
||||
m_subPages[0]->setPageNumber(m_pageNumber);
|
||||
m_currentSubPageIndex = 0;
|
||||
m_undoStack = new QUndoStack(this);
|
||||
m_cursorRow = 1;
|
||||
@@ -70,6 +71,7 @@ void TeletextDocument::loadDocument(QFile *inFile)
|
||||
// This assumes that PN is the first command of a new subpage...
|
||||
if (firstSubPageFound) {
|
||||
m_subPages.push_back(new LevelOnePage);
|
||||
m_subPages.back()->setPageNumber(m_pageNumber);
|
||||
loadingPage = m_subPages.back();
|
||||
}
|
||||
m_pageNumber = pageNumberRead;
|
||||
@@ -187,6 +189,7 @@ void TeletextDocument::insertSubPage(int beforeSubPageIndex, bool copySubPage)
|
||||
insertedSubPage = new LevelOnePage(*m_subPages.at(beforeSubPageIndex));
|
||||
else
|
||||
insertedSubPage = new LevelOnePage;
|
||||
insertedSubPage->setPageNumber(m_pageNumber);
|
||||
if (beforeSubPageIndex == m_subPages.size())
|
||||
m_subPages.push_back(insertedSubPage);
|
||||
else
|
||||
@@ -204,8 +207,11 @@ void TeletextDocument::setPageNumber(QString newPageNumberString)
|
||||
// The LineEdit should check if a valid hex number was entered, but just in case...
|
||||
bool newPageNumberOk;
|
||||
int newPageNumberRead = newPageNumberString.toInt(&newPageNumberOk, 16);
|
||||
if (newPageNumberOk && newPageNumberRead >= 0x100 && newPageNumberRead <= 0x8fe)
|
||||
if (newPageNumberOk && newPageNumberRead >= 0x100 && newPageNumberRead <= 0x8fe) {
|
||||
m_pageNumber = newPageNumberRead;
|
||||
for (auto &subPage : m_subPages)
|
||||
subPage->setPageNumber(newPageNumberRead);
|
||||
}
|
||||
}
|
||||
|
||||
void TeletextDocument::setDescription(QString newDescription)
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
PageBase::PageBase()
|
||||
{
|
||||
m_pageNumber = 0x8ff;
|
||||
m_pageFunction = PFLOP;
|
||||
m_packetCoding = PC7bit;
|
||||
// We use nullptrs to keep track of allocated packets, so initialise them this way
|
||||
@@ -34,6 +35,7 @@ PageBase::PageBase()
|
||||
|
||||
PageBase::PageBase(const PageBase &other)
|
||||
{
|
||||
setPageNumber(other.pageNumber());
|
||||
setPageFunction(other.pageFunction());
|
||||
setPacketCoding(other.packetCoding());
|
||||
for (int i=0; i<8; i++)
|
||||
@@ -50,6 +52,11 @@ PageBase::~PageBase()
|
||||
delete m_packets[i];
|
||||
}
|
||||
|
||||
void PageBase::setPageNumber(int newPageNumber)
|
||||
{
|
||||
m_pageNumber = newPageNumber;
|
||||
}
|
||||
|
||||
QByteArray PageBase::packet(int packetNumber, int designationCode) const
|
||||
{
|
||||
int arrayIndex = packetNumber;
|
||||
|
||||
@@ -37,6 +37,9 @@ public:
|
||||
PageBase(const PageBase &);
|
||||
~PageBase();
|
||||
|
||||
int pageNumber() const { return m_pageNumber; }
|
||||
void setPageNumber(int);
|
||||
|
||||
QByteArray packet(int, int=0) const;
|
||||
bool packetNeeded(int, int=0) const;
|
||||
bool setPacket(int, QByteArray);
|
||||
@@ -57,6 +60,7 @@ public:
|
||||
bool setPacketCoding(PacketCodingEnum);
|
||||
|
||||
private:
|
||||
int m_pageNumber;
|
||||
bool m_controlBits[8];
|
||||
PageFunctionEnum m_pageFunction;
|
||||
PacketCodingEnum m_packetCoding;
|
||||
|
||||
Reference in New Issue
Block a user