Move page function and packet coding

This commit is contained in:
Gavin MacGregor
2025-05-25 14:42:03 +01:00
parent 395f3769cb
commit 041a35a597
5 changed files with 19 additions and 35 deletions

View File

@@ -62,8 +62,6 @@ TeletextDocument::TeletextDocument()
{
m_pageNumber = 0x199;
m_description.clear();
m_pageFunction = PFLevelOnePage;
m_packetCoding = Coding7bit;
m_subPages.append(new LevelOnePage);
m_currentSubPageIndex = 0;
m_undoStack = new QUndoStack(this);
@@ -113,18 +111,6 @@ void TeletextDocument::clear()
}
}
/*
void TeletextDocument::setPageFunction(PageFunctionEnum newPageFunction)
{
m_pageFunction = newPageFunction;
}
void TeletextDocument::setPacketCoding(PacketCodingEnum newPacketEncoding)
{
m_packetCoding = newPacketEncoding;
}
*/
void TeletextDocument::selectSubPageIndex(int newSubPageIndex, bool forceRefresh)
{
// forceRefresh overrides "beyond the last subpage" check, so inserting a subpage after the last one still shows - dangerous workaround?

View File

@@ -48,22 +48,12 @@ class TeletextDocument : public QObject
Q_OBJECT
public:
// Available Page Functions according to 9.4.2.1 of the spec
enum PageFunctionEnum { PFLevelOnePage, PFDataBroadcasting, PFGlobalPOP, PFNormalPOP, PFGlobalDRCS, PFNormalDRCS, PFMOT, PFMIP, PFBasicTOPTable, PFAdditionalInformationTable, PFMultiPageTable, PFMultiPageExtensionTable, PFTriggerMessages };
// Available Page Codings of X/1 to X/25 according to 9.4.2.1 of the spec
enum PacketCodingEnum { Coding7bit, Coding8bit, Coding18bit, Coding4bit, Coding4bitThen7bit, CodingPerPacket };
TeletextDocument();
~TeletextDocument();
bool isEmpty() const;
void clear();
PageFunctionEnum pageFunction() const { return m_pageFunction; }
// void setPageFunction(PageFunctionEnum);
PacketCodingEnum packetCoding() const { return m_packetCoding; }
// void setPacketCoding(PacketCodingEnum);
int numberOfSubPages() const { return m_subPages.size(); }
LevelOnePage* subPage(int p) const { return m_subPages[p]; }
LevelOnePage* currentSubPage() const { return m_subPages[m_currentSubPageIndex]; }
@@ -121,8 +111,6 @@ signals:
private:
QString m_description;
int m_pageNumber, m_currentSubPageIndex;
PageFunctionEnum m_pageFunction;
PacketCodingEnum m_packetCoding;
QList<LevelOnePage *> m_subPages;
QList<LevelOnePage *> m_recycleSubPages;
QUndoStack *m_undoStack;

View File

@@ -72,7 +72,7 @@ void SaveFormat::writeSubPageBody(const PageBase &subPage)
{
writeX27Packets(subPage);
writeX28Packets(subPage);
if (m_document->pageFunction() == TeletextDocument::PFLevelOnePage) {
if (subPage.pageFunction() == PageBase::PFLevelOnePage) {
writeX26Packets(subPage);
writeX1to25Packets(subPage);
} else {
@@ -173,7 +173,7 @@ void SaveTTIFormat::writeSubPageStart(const PageBase &subPage, int subPageNumber
// Subpage
// Magazine Organisation Table and Magazine Inventory Page don't have subpages
if (m_document->pageFunction() != TeletextDocument::PFMOT && m_document->pageFunction() != TeletextDocument::PFMIP)
if (subPage.pageFunction() != PageBase::PFMOT && subPage.pageFunction() != PageBase::PFMIP)
writeString(QString("SC,%1").arg(subPageNumber, 4, 10, QChar('0')));
// Status bits
@@ -190,14 +190,14 @@ void SaveTTIFormat::writeSubPageStart(const PageBase &subPage, int subPageNumber
writeString(QString("PS,%1").arg(0x8000 | statusBits, 4, 16, QChar('0')));
if (m_document->pageFunction() == TeletextDocument::PFLevelOnePage) {
if (subPage.pageFunction() == PageBase::PFLevelOnePage) {
// Level One Page: page region and cycle
writeString(QString("RE,%1").arg(static_cast<const LevelOnePage *>(&subPage)->defaultCharSet()));
writeString(QString("CT,%1,%2").arg(static_cast<const LevelOnePage *>(&subPage)->cycleValue()).arg(static_cast<const LevelOnePage *>(&subPage)->cycleType()==LevelOnePage::CTcycles ? 'C' : 'T'));
} else
// Not a Level One Page: X/28/0 specifies page function and coding but the PF command
// should make it obvious to a human that this is not a Level One Page
writeString(QString("PF,%1,%2").arg(m_document->pageFunction()).arg(m_document->packetCoding()));
writeString(QString("PF,%1,%2").arg(subPage.pageFunction()).arg(subPage.packetCoding()));
}
void SaveTTIFormat::writeSubPageBody(const PageBase &subPage)
@@ -208,7 +208,7 @@ void SaveTTIFormat::writeSubPageBody(const PageBase &subPage)
// FLOF links
bool writeFLCommand = false;
if (m_document->pageFunction() == TeletextDocument::PFLevelOnePage && subPage.packetExists(27,0)) {
if (subPage.pageFunction() == PageBase::PFLevelOnePage && subPage.packetExists(27,0)) {
// Subpage has FLOF links - if any link to a specific subpage we need to write X/27/0
// as raw, otherwise we write the links as a human-readable FL command later on
writeFLCommand = true;
@@ -231,7 +231,7 @@ void SaveTTIFormat::writeSubPageBody(const PageBase &subPage)
// Now write the other packets like the rest of writeSubPageBody does
writeX28Packets(subPage);
if (m_document->pageFunction() == TeletextDocument::PFLevelOnePage) {
if (subPage.pageFunction() == PageBase::PFLevelOnePage) {
writeX26Packets(subPage);
writeX1to25Packets(subPage);
} else {