Get "empty document detection" working

This commit is contained in:
G.K.MacGregor
2020-12-06 17:57:05 +00:00
parent 1855d8dacb
commit f9ce912e79
6 changed files with 42 additions and 4 deletions

View File

@@ -29,7 +29,6 @@ TeletextDocument::TeletextDocument()
m_description.clear();
m_pageFunction = PFLevelOnePage;
m_packetCoding = Coding7bit;
m_empty = true;
m_subPages.push_back(new LevelOnePage);
m_currentSubPageIndex = 0;
m_undoStack = new QUndoStack(this);
@@ -44,6 +43,15 @@ TeletextDocument::~TeletextDocument()
delete(subPage);
}
bool TeletextDocument::isEmpty() const
{
for (auto &subPage : m_subPages)
if (!subPage->isEmpty())
return false;
return true;
}
/*
void TeletextDocument::setPageFunction(PageFunctionEnum newPageFunction)
{

View File

@@ -37,8 +37,8 @@ public:
TeletextDocument();
~TeletextDocument();
bool isEmpty() const { return m_empty; }
void setModified(bool);
bool isEmpty() const;
PageFunctionEnum pageFunction() const { return m_pageFunction; }
// void setPageFunction(PageFunctionEnum);
@@ -88,7 +88,6 @@ signals:
private:
QString m_description;
bool m_empty;
int m_pageNumber, m_currentSubPageIndex;
PageFunctionEnum m_pageFunction;
PacketCodingEnum m_packetCoding;

View File

@@ -81,6 +81,23 @@ void LevelOnePage::clearPage()
// If clearPage() is called outside constructor, we need to implement localEnhance.clear();
}
bool LevelOnePage::isEmpty() const
{
if (!localEnhance.isEmpty())
return false;
for (int i=0; i<32; i++)
if (m_CLUT[i] != defaultCLUT[i])
return false;
for (int r=0; r<25; r++)
for (int c=0; c<40; c++)
if (m_level1Page[r][c] != 0x20)
return false;
return true;
}
QByteArray LevelOnePage::packet(int packetNumber, int designationCode) const
{
QByteArray result(40, 0x00);

View File

@@ -42,6 +42,8 @@ public:
LevelOnePage();
LevelOnePage(const PageBase &);
bool isEmpty() const override;
QByteArray packet(int, int=0) const override;
bool packetNeeded(int, int=0) const override;
bool setPacket(int, QByteArray) override;

View File

@@ -47,6 +47,16 @@ PageBase::~PageBase()
if (m_packets[i] != nullptr)
delete m_packets[i];
}
bool PageBase::isEmpty() const
{
for (int i=0; i<90; i++)
if (m_packets[i] != nullptr)
return false;
return true;
}
QByteArray PageBase::packet(int packetNumber, int designationCode) const
{
int arrayIndex = packetNumber;

View File

@@ -34,6 +34,8 @@ public:
PageBase(const PageBase &);
~PageBase();
virtual bool isEmpty() const;
virtual QByteArray packet(int, int=0) const;
virtual bool packetNeeded(int, int=0) const;
virtual bool setPacket(int, QByteArray);