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_fastTextLink[i] = 0x8ff;
|
||||||
m_empty = true;
|
m_empty = true;
|
||||||
m_subPages.push_back(new LevelOnePage);
|
m_subPages.push_back(new LevelOnePage);
|
||||||
|
m_subPages[0]->setPageNumber(m_pageNumber);
|
||||||
m_currentSubPageIndex = 0;
|
m_currentSubPageIndex = 0;
|
||||||
m_undoStack = new QUndoStack(this);
|
m_undoStack = new QUndoStack(this);
|
||||||
m_cursorRow = 1;
|
m_cursorRow = 1;
|
||||||
@@ -70,6 +71,7 @@ void TeletextDocument::loadDocument(QFile *inFile)
|
|||||||
// This assumes that PN is the first command of a new subpage...
|
// This assumes that PN is the first command of a new subpage...
|
||||||
if (firstSubPageFound) {
|
if (firstSubPageFound) {
|
||||||
m_subPages.push_back(new LevelOnePage);
|
m_subPages.push_back(new LevelOnePage);
|
||||||
|
m_subPages.back()->setPageNumber(m_pageNumber);
|
||||||
loadingPage = m_subPages.back();
|
loadingPage = m_subPages.back();
|
||||||
}
|
}
|
||||||
m_pageNumber = pageNumberRead;
|
m_pageNumber = pageNumberRead;
|
||||||
@@ -187,6 +189,7 @@ void TeletextDocument::insertSubPage(int beforeSubPageIndex, bool copySubPage)
|
|||||||
insertedSubPage = new LevelOnePage(*m_subPages.at(beforeSubPageIndex));
|
insertedSubPage = new LevelOnePage(*m_subPages.at(beforeSubPageIndex));
|
||||||
else
|
else
|
||||||
insertedSubPage = new LevelOnePage;
|
insertedSubPage = new LevelOnePage;
|
||||||
|
insertedSubPage->setPageNumber(m_pageNumber);
|
||||||
if (beforeSubPageIndex == m_subPages.size())
|
if (beforeSubPageIndex == m_subPages.size())
|
||||||
m_subPages.push_back(insertedSubPage);
|
m_subPages.push_back(insertedSubPage);
|
||||||
else
|
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...
|
// The LineEdit should check if a valid hex number was entered, but just in case...
|
||||||
bool newPageNumberOk;
|
bool newPageNumberOk;
|
||||||
int newPageNumberRead = newPageNumberString.toInt(&newPageNumberOk, 16);
|
int newPageNumberRead = newPageNumberString.toInt(&newPageNumberOk, 16);
|
||||||
if (newPageNumberOk && newPageNumberRead >= 0x100 && newPageNumberRead <= 0x8fe)
|
if (newPageNumberOk && newPageNumberRead >= 0x100 && newPageNumberRead <= 0x8fe) {
|
||||||
m_pageNumber = newPageNumberRead;
|
m_pageNumber = newPageNumberRead;
|
||||||
|
for (auto &subPage : m_subPages)
|
||||||
|
subPage->setPageNumber(newPageNumberRead);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TeletextDocument::setDescription(QString newDescription)
|
void TeletextDocument::setDescription(QString newDescription)
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
PageBase::PageBase()
|
PageBase::PageBase()
|
||||||
{
|
{
|
||||||
|
m_pageNumber = 0x8ff;
|
||||||
m_pageFunction = PFLOP;
|
m_pageFunction = PFLOP;
|
||||||
m_packetCoding = PC7bit;
|
m_packetCoding = PC7bit;
|
||||||
// We use nullptrs to keep track of allocated packets, so initialise them this way
|
// 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)
|
PageBase::PageBase(const PageBase &other)
|
||||||
{
|
{
|
||||||
|
setPageNumber(other.pageNumber());
|
||||||
setPageFunction(other.pageFunction());
|
setPageFunction(other.pageFunction());
|
||||||
setPacketCoding(other.packetCoding());
|
setPacketCoding(other.packetCoding());
|
||||||
for (int i=0; i<8; i++)
|
for (int i=0; i<8; i++)
|
||||||
@@ -50,6 +52,11 @@ PageBase::~PageBase()
|
|||||||
delete m_packets[i];
|
delete m_packets[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PageBase::setPageNumber(int newPageNumber)
|
||||||
|
{
|
||||||
|
m_pageNumber = newPageNumber;
|
||||||
|
}
|
||||||
|
|
||||||
QByteArray PageBase::packet(int packetNumber, int designationCode) const
|
QByteArray PageBase::packet(int packetNumber, int designationCode) const
|
||||||
{
|
{
|
||||||
int arrayIndex = packetNumber;
|
int arrayIndex = packetNumber;
|
||||||
|
|||||||
@@ -37,6 +37,9 @@ public:
|
|||||||
PageBase(const PageBase &);
|
PageBase(const PageBase &);
|
||||||
~PageBase();
|
~PageBase();
|
||||||
|
|
||||||
|
int pageNumber() const { return m_pageNumber; }
|
||||||
|
void setPageNumber(int);
|
||||||
|
|
||||||
QByteArray packet(int, int=0) const;
|
QByteArray packet(int, int=0) const;
|
||||||
bool packetNeeded(int, int=0) const;
|
bool packetNeeded(int, int=0) const;
|
||||||
bool setPacket(int, QByteArray);
|
bool setPacket(int, QByteArray);
|
||||||
@@ -57,6 +60,7 @@ public:
|
|||||||
bool setPacketCoding(PacketCodingEnum);
|
bool setPacketCoding(PacketCodingEnum);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
int m_pageNumber;
|
||||||
bool m_controlBits[8];
|
bool m_controlBits[8];
|
||||||
PageFunctionEnum m_pageFunction;
|
PageFunctionEnum m_pageFunction;
|
||||||
PacketCodingEnum m_packetCoding;
|
PacketCodingEnum m_packetCoding;
|
||||||
|
|||||||
Reference in New Issue
Block a user