Hide enhancement QList behind access function
This commit is contained in:
@@ -30,7 +30,7 @@ LevelOnePage::LevelOnePage()
|
|||||||
m_paddingX26Triplet.setAddress(41);
|
m_paddingX26Triplet.setAddress(41);
|
||||||
m_paddingX26Triplet.setMode(0x1e);
|
m_paddingX26Triplet.setMode(0x1e);
|
||||||
m_paddingX26Triplet.setData(0);
|
m_paddingX26Triplet.setData(0);
|
||||||
localEnhance.reserve(208);
|
m_enhancements.reserve(208);
|
||||||
clearPage();
|
clearPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ LevelOnePage::LevelOnePage(const PageBase &other)
|
|||||||
m_paddingX26Triplet.setAddress(41);
|
m_paddingX26Triplet.setAddress(41);
|
||||||
m_paddingX26Triplet.setMode(0x1e);
|
m_paddingX26Triplet.setMode(0x1e);
|
||||||
m_paddingX26Triplet.setData(0);
|
m_paddingX26Triplet.setData(0);
|
||||||
localEnhance.reserve(208);
|
m_enhancements.reserve(208);
|
||||||
clearPage();
|
clearPage();
|
||||||
|
|
||||||
for (int i=0; i<26; i++)
|
for (int i=0; i<26; i++)
|
||||||
@@ -83,12 +83,12 @@ void LevelOnePage::clearPage()
|
|||||||
m_sidePanelStatusL25 = true;
|
m_sidePanelStatusL25 = true;
|
||||||
m_sidePanelColumns = 0;
|
m_sidePanelColumns = 0;
|
||||||
std::copy(m_defaultCLUT, m_defaultCLUT+32, m_CLUT);
|
std::copy(m_defaultCLUT, m_defaultCLUT+32, m_CLUT);
|
||||||
// If clearPage() is called outside constructor, we need to implement localEnhance.clear();
|
// If clearPage() is called outside constructor, we need to implement m_enhancements.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LevelOnePage::isEmpty() const
|
bool LevelOnePage::isEmpty() const
|
||||||
{
|
{
|
||||||
if (!localEnhance.isEmpty())
|
if (!m_enhancements.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!isPaletteDefault(0, 31))
|
if (!isPaletteDefault(0, 31))
|
||||||
@@ -129,14 +129,14 @@ QByteArray LevelOnePage::packet(int packetNumber, int designationCode) const
|
|||||||
for (int i=0; i<13; i++) {
|
for (int i=0; i<13; i++) {
|
||||||
enhanceListPointer = designationCode*13+i;
|
enhanceListPointer = designationCode*13+i;
|
||||||
|
|
||||||
if (enhanceListPointer < localEnhance.size()) {
|
if (enhanceListPointer < m_enhancements.size()) {
|
||||||
result[i*3+1] = localEnhance.at(enhanceListPointer).address();
|
result[i*3+1] = m_enhancements.at(enhanceListPointer).address();
|
||||||
result[i*3+2] = localEnhance.at(enhanceListPointer).mode() | ((localEnhance.at(enhanceListPointer).data() & 1) << 5);
|
result[i*3+2] = m_enhancements.at(enhanceListPointer).mode() | ((m_enhancements.at(enhanceListPointer).data() & 1) << 5);
|
||||||
result[i*3+3] = localEnhance.at(enhanceListPointer).data() >> 1;
|
result[i*3+3] = m_enhancements.at(enhanceListPointer).data() >> 1;
|
||||||
|
|
||||||
// If this is the last triplet, get a copy to repeat to the end of the packet
|
// If this is the last triplet, get a copy to repeat to the end of the packet
|
||||||
if (enhanceListPointer == localEnhance.size()-1) {
|
if (enhanceListPointer == m_enhancements.size()-1) {
|
||||||
lastTriplet = localEnhance.at(enhanceListPointer);
|
lastTriplet = m_enhancements.at(enhanceListPointer);
|
||||||
// If the last triplet was NOT a Termination Marker, make up one
|
// If the last triplet was NOT a Termination Marker, make up one
|
||||||
if (lastTriplet.mode() != 0x1f || lastTriplet.address() != 0x3f) {
|
if (lastTriplet.mode() != 0x1f || lastTriplet.address() != 0x3f) {
|
||||||
lastTriplet.setAddress(0x3f);
|
lastTriplet.setAddress(0x3f);
|
||||||
@@ -224,11 +224,11 @@ bool LevelOnePage::setPacket(int packetNumber, QByteArray packetContents)
|
|||||||
bool LevelOnePage::setPacket(int packetNumber, int designationCode, QByteArray packetContents)
|
bool LevelOnePage::setPacket(int packetNumber, int designationCode, QByteArray packetContents)
|
||||||
{
|
{
|
||||||
if (packetNumber == 26) {
|
if (packetNumber == 26) {
|
||||||
// Preallocate entries in the localEnhance list to hold our incoming triplets.
|
// Preallocate entries in the m_enhancements list to hold our incoming triplets.
|
||||||
// We write "dummy" reserved 11110 Row Triplets in the allocated entries which then get overwritten by the packet contents.
|
// We write "dummy" reserved 11110 Row Triplets in the allocated entries which then get overwritten by the packet contents.
|
||||||
// This is in case of missing packets so we can keep Local Object pointers valid.
|
// This is in case of missing packets so we can keep Local Object pointers valid.
|
||||||
while (localEnhance.size() < (designationCode+1)*13)
|
while (m_enhancements.size() < (designationCode+1)*13)
|
||||||
localEnhance.append(m_paddingX26Triplet);
|
m_enhancements.append(m_paddingX26Triplet);
|
||||||
|
|
||||||
int enhanceListPointer;
|
int enhanceListPointer;
|
||||||
X26Triplet newX26Triplet;
|
X26Triplet newX26Triplet;
|
||||||
@@ -239,12 +239,12 @@ bool LevelOnePage::setPacket(int packetNumber, int designationCode, QByteArray p
|
|||||||
newX26Triplet.setAddress(packetContents.at(i*3+1) & 0x3f);
|
newX26Triplet.setAddress(packetContents.at(i*3+1) & 0x3f);
|
||||||
newX26Triplet.setMode(packetContents.at(i*3+2) & 0x1f);
|
newX26Triplet.setMode(packetContents.at(i*3+2) & 0x1f);
|
||||||
newX26Triplet.setData(((packetContents.at(i*3+3) & 0x3f) << 1) | ((packetContents.at(i*3+2) & 0x20) >> 5));
|
newX26Triplet.setData(((packetContents.at(i*3+3) & 0x3f) << 1) | ((packetContents.at(i*3+2) & 0x20) >> 5));
|
||||||
localEnhance[enhanceListPointer] = newX26Triplet;
|
m_enhancements[enhanceListPointer] = newX26Triplet;
|
||||||
}
|
}
|
||||||
if (newX26Triplet.mode() == 0x1f && newX26Triplet.address() == 0x3f && newX26Triplet.data() & 0x01)
|
if (newX26Triplet.mode() == 0x1f && newX26Triplet.address() == 0x3f && newX26Triplet.data() & 0x01)
|
||||||
// Last triplet was a Termination Marker (without ..follows) so clean up the repeated ones
|
// Last triplet was a Termination Marker (without ..follows) so clean up the repeated ones
|
||||||
while (localEnhance.size()>1 && localEnhance.at(localEnhance.size()-2).mode() == 0x1f && localEnhance.at(localEnhance.size()-2).address() == 0x3f && localEnhance.at(localEnhance.size()-2).data() == newX26Triplet.data())
|
while (m_enhancements.size()>1 && m_enhancements.at(m_enhancements.size()-2).mode() == 0x1f && m_enhancements.at(m_enhancements.size()-2).address() == 0x3f && m_enhancements.at(m_enhancements.size()-2).data() == newX26Triplet.data())
|
||||||
localEnhance.removeLast();
|
m_enhancements.removeLast();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -324,7 +324,7 @@ bool LevelOnePage::packetNeeded(int packetNumber) const
|
|||||||
bool LevelOnePage::packetNeeded(int packetNumber, int designationCode) const
|
bool LevelOnePage::packetNeeded(int packetNumber, int designationCode) const
|
||||||
{
|
{
|
||||||
if (packetNumber == 26)
|
if (packetNumber == 26)
|
||||||
return ((localEnhance.size()+12) / 13) > designationCode;
|
return ((m_enhancements.size()+12) / 13) > designationCode;
|
||||||
|
|
||||||
if (packetNumber == 27 && designationCode == 0) {
|
if (packetNumber == 27 && designationCode == 0) {
|
||||||
for (int i=0; i<6; i++)
|
for (int i=0; i<6; i++)
|
||||||
@@ -455,16 +455,16 @@ int LevelOnePage::levelRequired() const
|
|||||||
|
|
||||||
int levelSeen = (!isPaletteDefault(16,31) || m_leftSidePanelDisplayed || m_rightSidePanelDisplayed || m_defaultScreenColour !=0 || m_defaultRowColour !=0 || m_blackBackgroundSubst || m_colourTableRemap !=0 || m_defaultCharSet != 0 || m_secondCharSet != 0xf) ? 2 : 0;
|
int levelSeen = (!isPaletteDefault(16,31) || m_leftSidePanelDisplayed || m_rightSidePanelDisplayed || m_defaultScreenColour !=0 || m_defaultRowColour !=0 || m_blackBackgroundSubst || m_colourTableRemap !=0 || m_defaultCharSet != 0 || m_secondCharSet != 0xf) ? 2 : 0;
|
||||||
|
|
||||||
if (localEnhance.isEmpty())
|
if (m_enhancements.isEmpty())
|
||||||
return levelSeen;
|
return levelSeen;
|
||||||
|
|
||||||
for (int i=0; i<localEnhance.size(); i++) {
|
for (int i=0; i<m_enhancements.size(); i++) {
|
||||||
if (localEnhance.at(i).modeExt() == 0x2e) // Font style
|
if (m_enhancements.at(i).modeExt() == 0x2e) // Font style
|
||||||
return 3;
|
return 3;
|
||||||
|
|
||||||
if (levelSeen == 0)
|
if (levelSeen == 0)
|
||||||
// Check for Level 1.5 triplets
|
// Check for Level 1.5 triplets
|
||||||
switch (localEnhance.at(i).modeExt()) {
|
switch (m_enhancements.at(i).modeExt()) {
|
||||||
case 0x04: // Set Active Position
|
case 0x04: // Set Active Position
|
||||||
case 0x07: // Address Row 0
|
case 0x07: // Address Row 0
|
||||||
case 0x1f: // Termination
|
case 0x1f: // Termination
|
||||||
@@ -475,21 +475,21 @@ int LevelOnePage::levelRequired() const
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (levelSeen < 2)
|
if (levelSeen < 2)
|
||||||
switch (localEnhance.at(i).modeExt()) {
|
switch (m_enhancements.at(i).modeExt()) {
|
||||||
// Check for Level 2.5 triplets
|
// Check for Level 2.5 triplets
|
||||||
case 0x00: // Full screen colour
|
case 0x00: // Full screen colour
|
||||||
case 0x01: // Full row colour
|
case 0x01: // Full row colour
|
||||||
case 0x10 ... 0x13: // Origin Modifer and Object Invocation
|
case 0x10 ... 0x13: // Origin Modifer and Object Invocation
|
||||||
case 0x15 ... 0x17: // Object Definition
|
case 0x15 ... 0x17: // Object Definition
|
||||||
// Check if Object Defition is required only at Level 3.5
|
// Check if Object Defition is required only at Level 3.5
|
||||||
if ((localEnhance.at(i).address() & 0x18) == 0x10)
|
if ((m_enhancements.at(i).address() & 0x18) == 0x10)
|
||||||
return 3;
|
return 3;
|
||||||
else
|
else
|
||||||
levelSeen = qMax(levelSeen, 2);
|
levelSeen = qMax(levelSeen, 2);
|
||||||
break;
|
break;
|
||||||
case 0x18: // DRCS Mode
|
case 0x18: // DRCS Mode
|
||||||
// Check if DRCS is required only at Level 3.5
|
// Check if DRCS is required only at Level 3.5
|
||||||
if ((localEnhance.at(i).data() & 0x30) == 0x20)
|
if ((m_enhancements.at(i).data() & 0x30) == 0x20)
|
||||||
return 3;
|
return 3;
|
||||||
else
|
else
|
||||||
levelSeen = qMax(levelSeen, 2);
|
levelSeen = qMax(levelSeen, 2);
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ public:
|
|||||||
|
|
||||||
void clearPage();
|
void clearPage();
|
||||||
|
|
||||||
|
QList<X26Triplet> *enhancements() { return &m_enhancements; };
|
||||||
|
|
||||||
/* void setSubPageNumber(int); */
|
/* void setSubPageNumber(int); */
|
||||||
int cycleValue() const { return m_cycleValue; };
|
int cycleValue() const { return m_cycleValue; };
|
||||||
void setCycleValue(int);
|
void setCycleValue(int);
|
||||||
@@ -105,8 +107,6 @@ public:
|
|||||||
int composeLinkSubPageCodes(int linkNumber) const { return m_composeLink[linkNumber].subPageCodes; }
|
int composeLinkSubPageCodes(int linkNumber) const { return m_composeLink[linkNumber].subPageCodes; }
|
||||||
void setComposeLinkSubPageCodes(int, int);
|
void setComposeLinkSubPageCodes(int, int);
|
||||||
|
|
||||||
QList<X26Triplet> localEnhance;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
unsigned char m_level1Page[25][40];
|
unsigned char m_level1Page[25][40];
|
||||||
/* int m_subPageNumber; */
|
/* int m_subPageNumber; */
|
||||||
@@ -126,6 +126,7 @@ private:
|
|||||||
int pageNumber, subPageCodes;
|
int pageNumber, subPageCodes;
|
||||||
} m_composeLink[8];
|
} m_composeLink[8];
|
||||||
|
|
||||||
|
QList<X26Triplet> m_enhancements;
|
||||||
X26Triplet m_paddingX26Triplet;
|
X26Triplet m_paddingX26Triplet;
|
||||||
|
|
||||||
const int m_defaultCLUT[32] = {
|
const int m_defaultCLUT[32] = {
|
||||||
|
|||||||
10
loadsave.cpp
10
loadsave.cpp
@@ -362,12 +362,12 @@ QString exportHashStringPackets(LevelOnePage *subPage)
|
|||||||
result.append(":X284=" + x28StringBegin + colourToHexString(0) + colourToHexString(1) + x28StringEnd);
|
result.append(":X284=" + x28StringBegin + colourToHexString(0) + colourToHexString(1) + x28StringEnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!subPage->localEnhance.isEmpty()) {
|
if (!subPage->enhancements()->isEmpty()) {
|
||||||
result.append(":X26=");
|
result.append(":X26=");
|
||||||
for (int i=0; i<subPage->localEnhance.size(); i++) {
|
for (int i=0; i<subPage->enhancements()->size(); i++) {
|
||||||
result.append(base64[subPage->localEnhance.at(i).data() >> 1]);
|
result.append(base64[subPage->enhancements()->at(i).data() >> 1]);
|
||||||
result.append(base64[subPage->localEnhance.at(i).mode() | ((subPage->localEnhance.at(i).data() & 1) << 5)]);
|
result.append(base64[subPage->enhancements()->at(i).mode() | ((subPage->enhancements()->at(i).data() & 1) << 5)]);
|
||||||
result.append(base64[subPage->localEnhance.at(i).address()]);
|
result.append(base64[subPage->enhancements()->at(i).address()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
20
render.cpp
20
render.cpp
@@ -128,7 +128,7 @@ void TeletextPageRender::buildEnhanceMap(TextLayer *enhanceLayer, int tripletNum
|
|||||||
int originModifierC=0;
|
int originModifierC=0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
x26Triplet = &m_levelOnePage->localEnhance.at(tripletNumber);
|
x26Triplet = &m_levelOnePage->enhancements()->at(tripletNumber);
|
||||||
if (x26Triplet->isRowTriplet())
|
if (x26Triplet->isRowTriplet())
|
||||||
// Row address group
|
// Row address group
|
||||||
switch (x26Triplet->mode()) {
|
switch (x26Triplet->mode()) {
|
||||||
@@ -153,7 +153,7 @@ void TeletextPageRender::buildEnhanceMap(TextLayer *enhanceLayer, int tripletNum
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x10: // Origin modifier
|
case 0x10: // Origin modifier
|
||||||
if (m_renderLevel >= 2 && (tripletNumber+1) < m_levelOnePage->localEnhance.size() && m_levelOnePage->localEnhance.at(tripletNumber+1).mode() >= 0x11 && m_levelOnePage->localEnhance.at(tripletNumber+1).mode() <= 0x13 && x26Triplet->address() >= 40 && x26Triplet->data() < 72) {
|
if (m_renderLevel >= 2 && (tripletNumber+1) < m_levelOnePage->enhancements()->size() && m_levelOnePage->enhancements()->at(tripletNumber+1).mode() >= 0x11 && m_levelOnePage->enhancements()->at(tripletNumber+1).mode() <= 0x13 && x26Triplet->address() >= 40 && x26Triplet->data() < 72) {
|
||||||
originModifierR = x26Triplet->address()-40;
|
originModifierR = x26Triplet->address()-40;
|
||||||
originModifierC = x26Triplet->data();
|
originModifierC = x26Triplet->data();
|
||||||
}
|
}
|
||||||
@@ -168,21 +168,21 @@ void TeletextPageRender::buildEnhanceMap(TextLayer *enhanceLayer, int tripletNum
|
|||||||
break;
|
break;
|
||||||
int tripletPointer = ((x26Triplet->data() >> 4) | ((x26Triplet->address() & 1) << 3)) * 13 + (x26Triplet->data() & 0x0f);
|
int tripletPointer = ((x26Triplet->data() >> 4) | ((x26Triplet->address() & 1) << 3)) * 13 + (x26Triplet->data() & 0x0f);
|
||||||
// Can't point to triplet beyond the end of the Local Enhancement Data
|
// Can't point to triplet beyond the end of the Local Enhancement Data
|
||||||
if ((tripletPointer+1) >= m_levelOnePage->localEnhance.size())
|
if ((tripletPointer+1) >= m_levelOnePage->enhancements()->size())
|
||||||
break;
|
break;
|
||||||
// Check if we're pointing to an actual Object Definition of the same type
|
// Check if we're pointing to an actual Object Definition of the same type
|
||||||
if ((x26Triplet->mode() | 0x04) != m_levelOnePage->localEnhance.at(tripletPointer).mode())
|
if ((x26Triplet->mode() | 0x04) != m_levelOnePage->enhancements()->at(tripletPointer).mode())
|
||||||
break;
|
break;
|
||||||
// The Object Definition can't declare it's at triplet 13-15; only 12 triplets per packet
|
// The Object Definition can't declare it's at triplet 13-15; only 12 triplets per packet
|
||||||
if ((m_levelOnePage->localEnhance.at(tripletPointer).data() & 0x0f) > 12)
|
if ((m_levelOnePage->enhancements()->at(tripletPointer).data() & 0x0f) > 12)
|
||||||
break;
|
break;
|
||||||
// Check if the Object Definition triplet is where it declares it is
|
// Check if the Object Definition triplet is where it declares it is
|
||||||
if ((((m_levelOnePage->localEnhance.at(tripletPointer).data() >> 4) | ((m_levelOnePage->localEnhance.at(tripletPointer).address() & 1) << 3)) * 13 + (m_levelOnePage->localEnhance.at(tripletPointer).data() & 0x0f)) != tripletPointer)
|
if ((((m_levelOnePage->enhancements()->at(tripletPointer).data() >> 4) | ((m_levelOnePage->enhancements()->at(tripletPointer).address() & 1) << 3)) * 13 + (m_levelOnePage->enhancements()->at(tripletPointer).data() & 0x0f)) != tripletPointer)
|
||||||
break;
|
break;
|
||||||
// Is the object required at the current presentation Level?
|
// Is the object required at the current presentation Level?
|
||||||
if (m_renderLevel == 2 && (m_levelOnePage->localEnhance.at(tripletPointer).address() & 0x08) == 0x00)
|
if (m_renderLevel == 2 && (m_levelOnePage->enhancements()->at(tripletPointer).address() & 0x08) == 0x00)
|
||||||
break;
|
break;
|
||||||
if (m_renderLevel == 3 && (m_levelOnePage->localEnhance.at(tripletPointer).address() & 0x10) == 0x00)
|
if (m_renderLevel == 3 && (m_levelOnePage->enhancements()->at(tripletPointer).address() & 0x10) == 0x00)
|
||||||
break;
|
break;
|
||||||
EnhanceLayer *newLayer = new EnhanceLayer;
|
EnhanceLayer *newLayer = new EnhanceLayer;
|
||||||
m_textLayer.push_back(newLayer);
|
m_textLayer.push_back(newLayer);
|
||||||
@@ -229,7 +229,7 @@ void TeletextPageRender::buildEnhanceMap(TextLayer *enhanceLayer, int tripletNum
|
|||||||
enhanceLayer->enhanceMap.insert((activePosition.row() << 8) | activePosition.column(), ((x26Triplet->mode() | 0x20) << 8) | x26Triplet->data());
|
enhanceLayer->enhanceMap.insert((activePosition.row() << 8) | activePosition.column(), ((x26Triplet->mode() | 0x20) << 8) | x26Triplet->data());
|
||||||
}
|
}
|
||||||
tripletNumber++;
|
tripletNumber++;
|
||||||
} while (!terminatorFound && tripletNumber < m_levelOnePage->localEnhance.size());
|
} while (!terminatorFound && tripletNumber < m_levelOnePage->enhancements()->size());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TeletextPageRender::decodePage()
|
void TeletextPageRender::decodePage()
|
||||||
@@ -256,7 +256,7 @@ void TeletextPageRender::decodePage()
|
|||||||
setFullRowColour(r ,downwardsFullRowColour);
|
setFullRowColour(r ,downwardsFullRowColour);
|
||||||
|
|
||||||
m_textLayer[1]->enhanceMap.clear();
|
m_textLayer[1]->enhanceMap.clear();
|
||||||
if (m_renderLevel == 0 || m_levelOnePage->localEnhance.empty())
|
if (m_renderLevel == 0 || m_levelOnePage->enhancements()->empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_textLayer[1]->setFullScreenColour(-1);
|
m_textLayer[1]->setFullScreenColour(-1);
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ void InsertTripletCommand::redo()
|
|||||||
m_x26Model->beginInsertRows(QModelIndex(), m_row, m_row+m_count-1);
|
m_x26Model->beginInsertRows(QModelIndex(), m_row, m_row+m_count-1);
|
||||||
|
|
||||||
for (int i=0; i<m_count; i++)
|
for (int i=0; i<m_count; i++)
|
||||||
m_teletextDocument->currentSubPage()->localEnhance.insert(m_row+i, m_insertedTriplet);
|
m_teletextDocument->currentSubPage()->enhancements()->insert(m_row+i, m_insertedTriplet);
|
||||||
|
|
||||||
if (changingSubPage)
|
if (changingSubPage)
|
||||||
m_teletextDocument->emit subPageSelected();
|
m_teletextDocument->emit subPageSelected();
|
||||||
@@ -74,7 +74,7 @@ void InsertTripletCommand::undo()
|
|||||||
m_x26Model->beginRemoveRows(QModelIndex(), m_row, m_row+m_count-1);
|
m_x26Model->beginRemoveRows(QModelIndex(), m_row, m_row+m_count-1);
|
||||||
|
|
||||||
for (int i=0; i<m_count; i++)
|
for (int i=0; i<m_count; i++)
|
||||||
m_teletextDocument->currentSubPage()->localEnhance.removeAt(m_row);
|
m_teletextDocument->currentSubPage()->enhancements()->removeAt(m_row);
|
||||||
|
|
||||||
if (changingSubPage)
|
if (changingSubPage)
|
||||||
m_teletextDocument->emit subPageSelected();
|
m_teletextDocument->emit subPageSelected();
|
||||||
@@ -92,7 +92,7 @@ DeleteTripletCommand::DeleteTripletCommand(TeletextDocument *teletextDocument, X
|
|||||||
m_x26Model = x26Model;
|
m_x26Model = x26Model;
|
||||||
m_row = row;
|
m_row = row;
|
||||||
m_count = count;
|
m_count = count;
|
||||||
m_deletedTriplet = m_teletextDocument->subPage(m_subPageIndex)->localEnhance.at(m_row);
|
m_deletedTriplet = m_teletextDocument->subPage(m_subPageIndex)->enhancements()->at(m_row);
|
||||||
setText(QString("delete triplet d%1 t%2").arg(m_row / 13).arg(m_row % 13));;
|
setText(QString("delete triplet d%1 t%2").arg(m_row / 13).arg(m_row % 13));;
|
||||||
// BUG we only store one of the deleted triplets
|
// BUG we only store one of the deleted triplets
|
||||||
if (m_count > 1)
|
if (m_count > 1)
|
||||||
@@ -106,7 +106,7 @@ void DeleteTripletCommand::redo()
|
|||||||
|
|
||||||
m_x26Model->beginRemoveRows(QModelIndex(), m_row, m_row+m_count-1);
|
m_x26Model->beginRemoveRows(QModelIndex(), m_row, m_row+m_count-1);
|
||||||
for (int i=0; i<m_count; i++)
|
for (int i=0; i<m_count; i++)
|
||||||
m_teletextDocument->currentSubPage()->localEnhance.removeAt(m_row);
|
m_teletextDocument->currentSubPage()->enhancements()->removeAt(m_row);
|
||||||
m_x26Model->endRemoveRows();
|
m_x26Model->endRemoveRows();
|
||||||
|
|
||||||
m_teletextDocument->emit subPageSelected();
|
m_teletextDocument->emit subPageSelected();
|
||||||
@@ -123,7 +123,7 @@ void DeleteTripletCommand::undo()
|
|||||||
m_x26Model->beginInsertRows(QModelIndex(), m_row, m_row+m_count-1);
|
m_x26Model->beginInsertRows(QModelIndex(), m_row, m_row+m_count-1);
|
||||||
|
|
||||||
for (int i=0; i<m_count; i++)
|
for (int i=0; i<m_count; i++)
|
||||||
m_teletextDocument->currentSubPage()->localEnhance.insert(m_row+i, m_deletedTriplet);
|
m_teletextDocument->currentSubPage()->enhancements()->insert(m_row+i, m_deletedTriplet);
|
||||||
|
|
||||||
if (changingSubPage)
|
if (changingSubPage)
|
||||||
m_teletextDocument->emit subPageSelected();
|
m_teletextDocument->emit subPageSelected();
|
||||||
@@ -143,7 +143,7 @@ EditTripletCommand::EditTripletCommand(TeletextDocument *teletextDocument, X26Mo
|
|||||||
m_x26Model = x26Model;
|
m_x26Model = x26Model;
|
||||||
m_row = row;
|
m_row = row;
|
||||||
m_role = role;
|
m_role = role;
|
||||||
m_oldTriplet = m_newTriplet = teletextDocument->currentSubPage()->localEnhance.at(m_row);
|
m_oldTriplet = m_newTriplet = teletextDocument->currentSubPage()->enhancements()->at(m_row);
|
||||||
setText(QString("edit triplet d%1 t%2").arg(m_row / 13).arg(m_row % 13));;
|
setText(QString("edit triplet d%1 t%2").arg(m_row / 13).arg(m_row % 13));;
|
||||||
switch (tripletPart) {
|
switch (tripletPart) {
|
||||||
case ETaddress:
|
case ETaddress:
|
||||||
@@ -164,7 +164,7 @@ void EditTripletCommand::redo()
|
|||||||
if (m_teletextDocument->currentSubPageIndex() != m_subPageIndex)
|
if (m_teletextDocument->currentSubPageIndex() != m_subPageIndex)
|
||||||
m_teletextDocument->selectSubPageIndex(m_subPageIndex, true);
|
m_teletextDocument->selectSubPageIndex(m_subPageIndex, true);
|
||||||
|
|
||||||
m_teletextDocument->currentSubPage()->localEnhance[m_row] = m_newTriplet;
|
m_teletextDocument->currentSubPage()->enhancements()->operator[](m_row) = m_newTriplet;
|
||||||
m_x26Model->emit dataChanged(m_x26Model->createIndex(m_row, 0), m_x26Model->createIndex(m_row, 3), {m_role});
|
m_x26Model->emit dataChanged(m_x26Model->createIndex(m_row, 0), m_x26Model->createIndex(m_row, 3), {m_role});
|
||||||
m_teletextDocument->emit refreshNeeded();
|
m_teletextDocument->emit refreshNeeded();
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@ void EditTripletCommand::undo()
|
|||||||
if (m_teletextDocument->currentSubPageIndex() != m_subPageIndex)
|
if (m_teletextDocument->currentSubPageIndex() != m_subPageIndex)
|
||||||
m_teletextDocument->selectSubPageIndex(m_subPageIndex, true);
|
m_teletextDocument->selectSubPageIndex(m_subPageIndex, true);
|
||||||
|
|
||||||
m_teletextDocument->currentSubPage()->localEnhance[m_row] = m_oldTriplet;
|
m_teletextDocument->currentSubPage()->enhancements()->operator[](m_row) = m_oldTriplet;
|
||||||
m_x26Model->emit dataChanged(m_x26Model->createIndex(m_row, 0), m_x26Model->createIndex(m_row, 3), {m_role});
|
m_x26Model->emit dataChanged(m_x26Model->createIndex(m_row, 0), m_x26Model->createIndex(m_row, 3), {m_role});
|
||||||
m_teletextDocument->emit refreshNeeded();
|
m_teletextDocument->emit refreshNeeded();
|
||||||
m_teletextDocument->emit tripletCommandHighlight(m_row);
|
m_teletextDocument->emit tripletCommandHighlight(m_row);
|
||||||
|
|||||||
186
x26model.cpp
186
x26model.cpp
@@ -38,7 +38,7 @@ void X26Model::setX26ListLoaded(bool newListLoaded)
|
|||||||
|
|
||||||
int X26Model::rowCount(const QModelIndex & /*parent*/) const
|
int X26Model::rowCount(const QModelIndex & /*parent*/) const
|
||||||
{
|
{
|
||||||
return m_listLoaded ? m_parentMainWidget->document()->currentSubPage()->localEnhance.size() : 0;
|
return m_listLoaded ? m_parentMainWidget->document()->currentSubPage()->enhancements()->size() : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int X26Model::columnCount(const QModelIndex & /*parent*/) const
|
int X26Model::columnCount(const QModelIndex & /*parent*/) const
|
||||||
@@ -48,17 +48,17 @@ int X26Model::columnCount(const QModelIndex & /*parent*/) const
|
|||||||
|
|
||||||
QVariant X26Model::data(const QModelIndex &index, int role) const
|
QVariant X26Model::data(const QModelIndex &index, int role) const
|
||||||
{
|
{
|
||||||
int mode = m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).mode();
|
int mode = m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).mode();
|
||||||
|
|
||||||
// Qt::UserRole will always return the raw values
|
// Qt::UserRole will always return the raw values
|
||||||
if (role == Qt::UserRole)
|
if (role == Qt::UserRole)
|
||||||
switch (index.column()) {
|
switch (index.column()) {
|
||||||
case 0:
|
case 0:
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address();
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address();
|
||||||
case 1:
|
case 1:
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).mode();
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).mode();
|
||||||
case 2:
|
case 2:
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data();
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data();
|
||||||
default:
|
default:
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
@@ -68,30 +68,30 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
case 0:
|
case 0:
|
||||||
// Show row number only if address part of triplet actually represents a row
|
// Show row number only if address part of triplet actually represents a row
|
||||||
// i.e. Full row colour, Set Active Position and Origin Modifier
|
// i.e. Full row colour, Set Active Position and Origin Modifier
|
||||||
if (!m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).isRowTriplet())
|
if (!m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).isRowTriplet())
|
||||||
return QVariant();
|
return QVariant();
|
||||||
// For Origin Modifier address of 40 refers to same row, so show it as 0
|
// For Origin Modifier address of 40 refers to same row, so show it as 0
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).mode() == 0x10) {
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).mode() == 0x10) {
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() == 40)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() == 40)
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).addressRow();
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).addressRow();
|
||||||
}
|
}
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).mode() == 0x01 || m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).mode() == 0x04)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).mode() == 0x01 || m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).mode() == 0x04)
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).addressRow();
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).addressRow();
|
||||||
else
|
else
|
||||||
return QVariant();
|
return QVariant();
|
||||||
case 1:
|
case 1:
|
||||||
if (!m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).isRowTriplet())
|
if (!m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).isRowTriplet())
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).addressColumn();
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).addressColumn();
|
||||||
// For Set Active Position and Origin Modifier, data is the column
|
// For Set Active Position and Origin Modifier, data is the column
|
||||||
else if (mode == 0x04 || mode == 0x10)
|
else if (mode == 0x04 || mode == 0x10)
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data();
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data();
|
||||||
else
|
else
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).isRowTriplet())
|
if (!m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).isRowTriplet())
|
||||||
mode |= 0x20;
|
mode |= 0x20;
|
||||||
|
|
||||||
QString result;
|
QString result;
|
||||||
@@ -103,14 +103,14 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 0x01: // Full row colour
|
case 0x01: // Full row colour
|
||||||
case 0x07: // Address row 0
|
case 0x07: // Address row 0
|
||||||
if ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x60) == 0x60)
|
if ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x60) == 0x60)
|
||||||
result = ", down to bottom";
|
result = ", down to bottom";
|
||||||
else if ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x60) == 0x00)
|
else if ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x60) == 0x00)
|
||||||
result = ", this row only";
|
result = ", this row only";
|
||||||
// fall-through
|
// fall-through
|
||||||
case 0x00: // Full screen colour
|
case 0x00: // Full screen colour
|
||||||
if (!(result.isEmpty()) || (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x60) == 0x00) {
|
if (!(result.isEmpty()) || (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x60) == 0x00) {
|
||||||
result.prepend(QString("CLUT %1:%2").arg((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x18) >> 3).arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x07));
|
result.prepend(QString("CLUT %1:%2").arg((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x18) >> 3).arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x07));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -119,9 +119,9 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
// For Set Active Position and Origin Modifier, data is the column, so return blank
|
// For Set Active Position and Origin Modifier, data is the column, so return blank
|
||||||
return QVariant();
|
return QVariant();
|
||||||
case 0x11 ... 0x13: // Invoke object
|
case 0x11 ... 0x13: // Invoke object
|
||||||
switch (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x18) {
|
switch (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x18) {
|
||||||
case 0x08:
|
case 0x08:
|
||||||
return QString("Local: d%1 t%2").arg((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() >> 4) | ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x01) << 3)).arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x0f);
|
return QString("Local: d%1 t%2").arg((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() >> 4) | ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x01) << 3)).arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x0f);
|
||||||
case 0x10:
|
case 0x10:
|
||||||
result = "POP";
|
result = "POP";
|
||||||
break;
|
break;
|
||||||
@@ -130,15 +130,15 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
break;
|
break;
|
||||||
// case 0x00: shouldn't happen since that would make a column triplet, not a row triplet
|
// case 0x00: shouldn't happen since that would make a column triplet, not a row triplet
|
||||||
}
|
}
|
||||||
result.append(QString(": subpage %1 pkt %2 trplt %3 bits ").arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x0f).arg((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x03) + 1).arg(((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x60) >> 5) * 3 + (mode & 0x03)));
|
result.append(QString(": subpage %1 pkt %2 trplt %3 bits ").arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x0f).arg((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x03) + 1).arg(((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x60) >> 5) * 3 + (mode & 0x03)));
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x10)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x10)
|
||||||
result.append("10-18");
|
result.append("10-18");
|
||||||
else
|
else
|
||||||
result.append("1-9");
|
result.append("1-9");
|
||||||
return result;
|
return result;
|
||||||
case 0x15 ... 0x17: // Define object
|
case 0x15 ... 0x17: // Define object
|
||||||
result = (QString("Local: d%1 t%2, ").arg((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() >> 4) | ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 1) << 3)).arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x0f));
|
result = (QString("Local: d%1 t%2, ").arg((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() >> 4) | ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 1) << 3)).arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x0f));
|
||||||
switch (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x18) {
|
switch (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x18) {
|
||||||
case 0x08:
|
case 0x08:
|
||||||
result.append("L2.5 only");
|
result.append("L2.5 only");
|
||||||
break;
|
break;
|
||||||
@@ -152,9 +152,9 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
case 0x18: // DRCS mode
|
case 0x18: // DRCS mode
|
||||||
result = (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x40) == 0x40 ? "Normal" : "Global";
|
result = (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x40) == 0x40 ? "Normal" : "Global";
|
||||||
result.append(QString(": subpage %1, ").arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x0f));
|
result.append(QString(": subpage %1, ").arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x0f));
|
||||||
switch (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x30) {
|
switch (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x30) {
|
||||||
case 0x10:
|
case 0x10:
|
||||||
result.append("L2.5 only");
|
result.append("L2.5 only");
|
||||||
break;
|
break;
|
||||||
@@ -170,7 +170,7 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
case 0x1f: // Termination
|
case 0x1f: // Termination
|
||||||
switch (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x07) {
|
switch (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x07) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
return "Intermed (G)POP subpage. End of object, more follows";
|
return "Intermed (G)POP subpage. End of object, more follows";
|
||||||
break;
|
break;
|
||||||
@@ -198,23 +198,23 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x08 ... 0x0d: // PDC
|
case 0x08 ... 0x0d: // PDC
|
||||||
return QString("0x%1").arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data(), 2, 16, QChar('0'));
|
return QString("0x%1").arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data(), 2, 16, QChar('0'));
|
||||||
case 0x20: // Foreground colour
|
case 0x20: // Foreground colour
|
||||||
case 0x23: // Background colour
|
case 0x23: // Background colour
|
||||||
if (!(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x60))
|
if (!(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x60))
|
||||||
return QString("CLUT %1:%2").arg((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x18) >> 3).arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x07);
|
return QString("CLUT %1:%2").arg((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x18) >> 3).arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x07);
|
||||||
break;
|
break;
|
||||||
case 0x21: // G1 mosaic character
|
case 0x21: // G1 mosaic character
|
||||||
case 0x22: // G3 mosaic character at level 1.5
|
case 0x22: // G3 mosaic character at level 1.5
|
||||||
case 0x29: // G0 character
|
case 0x29: // G0 character
|
||||||
case 0x2b: // G3 mosaic character at level >=2.5
|
case 0x2b: // G3 mosaic character at level >=2.5
|
||||||
case 0x2f ... 0x3f: // G2 character or G0 diacrtitical mark
|
case 0x2f ... 0x3f: // G2 character or G0 diacrtitical mark
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() >= 0x20)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() >= 0x20)
|
||||||
return QString("0x%1").arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data(), 2, 16);
|
return QString("0x%1").arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data(), 2, 16);
|
||||||
break;
|
break;
|
||||||
case 0x27: // Flash functions
|
case 0x27: // Flash functions
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() < 0x18) {
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() < 0x18) {
|
||||||
switch (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x03) {
|
switch (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x03) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
result = "Steady";
|
result = "Steady";
|
||||||
break;
|
break;
|
||||||
@@ -228,7 +228,7 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
result = "Adj CLUT";
|
result = "Adj CLUT";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x1c) {
|
switch (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x1c) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
result.append(", 1Hz");
|
result.append(", 1Hz");
|
||||||
break;
|
break;
|
||||||
@@ -253,20 +253,20 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
break;
|
break;
|
||||||
//TODO case 0x28: // G0 and G2 designation
|
//TODO case 0x28: // G0 and G2 designation
|
||||||
case 0x2c: // Display attributes
|
case 0x2c: // Display attributes
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x02)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x02)
|
||||||
result.append("Boxing ");
|
result.append("Boxing ");
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x04)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x04)
|
||||||
result.append("Conceal ");
|
result.append("Conceal ");
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x10)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x10)
|
||||||
result.append("Invert ");
|
result.append("Invert ");
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x20)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x20)
|
||||||
result.append("Underline ");
|
result.append("Underline ");
|
||||||
if (result.isEmpty())
|
if (result.isEmpty())
|
||||||
result = "None";
|
result = "None";
|
||||||
else
|
else
|
||||||
// Chop off the last space
|
// Chop off the last space
|
||||||
result.chop(1);
|
result.chop(1);
|
||||||
switch (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x41) {
|
switch (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x41) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
result.append(", normal size");
|
result.append(", normal size");
|
||||||
break;
|
break;
|
||||||
@@ -282,35 +282,35 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
case 0x2d: // DRCS character
|
case 0x2d: // DRCS character
|
||||||
result = (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x40) == 0x40 ? "Normal" : "Global";
|
result = (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x40) == 0x40 ? "Normal" : "Global";
|
||||||
result.append(QString(": %1").arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x3f));
|
result.append(QString(": %1").arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x3f));
|
||||||
return result;
|
return result;
|
||||||
case 0x2e: // Font style
|
case 0x2e: // Font style
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x01)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x01)
|
||||||
result.append("Proportional ");
|
result.append("Proportional ");
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x02)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x02)
|
||||||
result.append("Bold ");
|
result.append("Bold ");
|
||||||
if (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x04)
|
if (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x04)
|
||||||
result.append("Italic ");
|
result.append("Italic ");
|
||||||
if (result.isEmpty())
|
if (result.isEmpty())
|
||||||
result = "None";
|
result = "None";
|
||||||
else
|
else
|
||||||
// Chop off the last space
|
// Chop off the last space
|
||||||
result.chop(1);
|
result.chop(1);
|
||||||
result.append(QString(", %1 row(s)").arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() >> 4));
|
result.append(QString(", %1 row(s)").arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() >> 4));
|
||||||
return result;
|
return result;
|
||||||
case 0x28: // Modified G0 and G2 character set
|
case 0x28: // Modified G0 and G2 character set
|
||||||
case 0x26: // PDC
|
case 0x26: // PDC
|
||||||
return QString("0x%1").arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data(), 2, 16, QChar('0'));
|
return QString("0x%1").arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data(), 2, 16, QChar('0'));
|
||||||
default: // Reserved
|
default: // Reserved
|
||||||
return QString("Reserved 0x%1").arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data(), 2, 16, QChar('0'));
|
return QString("Reserved 0x%1").arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data(), 2, 16, QChar('0'));
|
||||||
}
|
}
|
||||||
// Reserved mode or data
|
// Reserved mode or data
|
||||||
return QString("Reserved 0x%1").arg(m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data(), 2, 16, QChar('0'));
|
return QString("Reserved 0x%1").arg(m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data(), 2, 16, QChar('0'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (role == Qt::EditRole && index.column() == 2) {
|
if (role == Qt::EditRole && index.column() == 2) {
|
||||||
if (!m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).isRowTriplet())
|
if (!m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).isRowTriplet())
|
||||||
mode |= 0x20;
|
mode |= 0x20;
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
@@ -327,34 +327,34 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
case 0x20: // Foreground colour
|
case 0x20: // Foreground colour
|
||||||
case 0x23: // Background colour
|
case 0x23: // Background colour
|
||||||
// Colour index
|
// Colour index
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x1f;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x1f;
|
||||||
case 0x11 ... 0x13: // Invoke object
|
case 0x11 ... 0x13: // Invoke object
|
||||||
// Object source: Local, POP or GPOP
|
// Object source: Local, POP or GPOP
|
||||||
return ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x18) >> 3) - 1;
|
return ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x18) >> 3) - 1;
|
||||||
break;
|
break;
|
||||||
case 0x15 ... 0x17: // Define object
|
case 0x15 ... 0x17: // Define object
|
||||||
// Required at level 2.5
|
// Required at level 2.5
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x08) == 0x08;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x08) == 0x08;
|
||||||
case 0x18: // DRCS mode
|
case 0x18: // DRCS mode
|
||||||
// Required at level 2.5
|
// Required at level 2.5
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x10) == 0x10;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x10) == 0x10;
|
||||||
case 0x1f: // Termination
|
case 0x1f: // Termination
|
||||||
// Intermed POP subpage|Last POP subpage|Local Object|Local enhance
|
// Intermed POP subpage|Last POP subpage|Local Object|Local enhance
|
||||||
return ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x06) >> 1);
|
return ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x06) >> 1);
|
||||||
case 0x27: // Flash functions
|
case 0x27: // Flash functions
|
||||||
// Flash mode
|
// Flash mode
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x03;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x03;
|
||||||
case 0x2c: // Display attributes
|
case 0x2c: // Display attributes
|
||||||
// Text size
|
// Text size
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x01) | ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x40) >> 5);
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x01) | ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x40) >> 5);
|
||||||
case 0x2d: // DRCS character
|
case 0x2d: // DRCS character
|
||||||
// Normal or Global
|
// Normal or Global
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x40) == 0x40;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x40) == 0x40;
|
||||||
case 0x2e: // Font style
|
case 0x2e: // Font style
|
||||||
// Proportional
|
// Proportional
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x01) == 0x01;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x01) == 0x01;
|
||||||
default:
|
default:
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data();
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -363,61 +363,61 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
case 0x01: // Full row colour
|
case 0x01: // Full row colour
|
||||||
case 0x07: // Address row 0
|
case 0x07: // Address row 0
|
||||||
// "this row only" or "down to bottom"
|
// "this row only" or "down to bottom"
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x60) == 0x60;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x60) == 0x60;
|
||||||
case 0x11 ... 0x13: // Invoke object
|
case 0x11 ... 0x13: // Invoke object
|
||||||
if ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x08) == 0x08)
|
if ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x08) == 0x08)
|
||||||
// Local object: Designation code
|
// Local object: Designation code
|
||||||
return ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x01) << 3) | ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x70) >> 4);
|
return ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x01) << 3) | ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x70) >> 4);
|
||||||
else
|
else
|
||||||
// (G)POP object: Subpage
|
// (G)POP object: Subpage
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x0f;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x0f;
|
||||||
break;
|
break;
|
||||||
case 0x15 ... 0x17: // Define object
|
case 0x15 ... 0x17: // Define object
|
||||||
// Local object: Designation code
|
// Local object: Designation code
|
||||||
return ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x01) << 3) | ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x70) >> 4);
|
return ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x01) << 3) | ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x70) >> 4);
|
||||||
case 0x18: // DRCS mode
|
case 0x18: // DRCS mode
|
||||||
// Required at level 3.5
|
// Required at level 3.5
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x20) == 0x20;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x20) == 0x20;
|
||||||
case 0x1f: // Termination
|
case 0x1f: // Termination
|
||||||
// More follows/Last
|
// More follows/Last
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x01) == 0x01;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x01) == 0x01;
|
||||||
case 0x27: // Flash functions
|
case 0x27: // Flash functions
|
||||||
// Flash rate and phase
|
// Flash rate and phase
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() >> 2;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() >> 2;
|
||||||
case 0x2c: // Display attributes
|
case 0x2c: // Display attributes
|
||||||
// Boxing/window
|
// Boxing/window
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x02) == 0x02;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x02) == 0x02;
|
||||||
case 0x2d: // DRCS character
|
case 0x2d: // DRCS character
|
||||||
// Character number
|
// Character number
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x3f;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x3f;
|
||||||
case 0x2e: // Font style
|
case 0x2e: // Font style
|
||||||
// Bold
|
// Bold
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x02) == 0x02;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x02) == 0x02;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Qt::UserRole+3:
|
case Qt::UserRole+3:
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 0x11 ... 0x13: // Invoke object
|
case 0x11 ... 0x13: // Invoke object
|
||||||
if ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x08) == 0x08)
|
if ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x08) == 0x08)
|
||||||
// Local object: Triplet number
|
// Local object: Triplet number
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x0f;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x0f;
|
||||||
else
|
else
|
||||||
// (G)POP object: Pointer location
|
// (G)POP object: Pointer location
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x03) + 1;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x03) + 1;
|
||||||
break;
|
break;
|
||||||
case 0x15 ... 0x17: // Define object
|
case 0x15 ... 0x17: // Define object
|
||||||
// Local object: Triplet number
|
// Local object: Triplet number
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x0f;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x0f;
|
||||||
case 0x18: // DRCS mode
|
case 0x18: // DRCS mode
|
||||||
// Normal or Global
|
// Normal or Global
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x40) == 0x40;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x40) == 0x40;
|
||||||
case 0x2c: // Display attributes
|
case 0x2c: // Display attributes
|
||||||
// Conceal
|
// Conceal
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x04) == 0x04;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x04) == 0x04;
|
||||||
case 0x2e: // Font style
|
case 0x2e: // Font style
|
||||||
// Italics
|
// Italics
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x04) == 0x04;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x04) == 0x04;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -425,19 +425,19 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 0x11 ... 0x13: // Invoke object
|
case 0x11 ... 0x13: // Invoke object
|
||||||
// (G)POP object: Triplet number
|
// (G)POP object: Triplet number
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() >> 5;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() >> 5;
|
||||||
case 0x15 ... 0x17: // Define object
|
case 0x15 ... 0x17: // Define object
|
||||||
// Required at level 3.5
|
// Required at level 3.5
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x10) == 0x10;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x10) == 0x10;
|
||||||
case 0x18: // DRCS mode
|
case 0x18: // DRCS mode
|
||||||
// Subpage
|
// Subpage
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x0f;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x0f;
|
||||||
case 0x2c: // Display attributes
|
case 0x2c: // Display attributes
|
||||||
// Invert
|
// Invert
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x10) == 0x10;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x10) == 0x10;
|
||||||
case 0x2e: // Font style
|
case 0x2e: // Font style
|
||||||
// Number of rows
|
// Number of rows
|
||||||
return m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() >> 4;
|
return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() >> 4;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -445,10 +445,10 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 0x11 ... 0x13: // Invoke object
|
case 0x11 ... 0x13: // Invoke object
|
||||||
// (G)POP object: Pointer position
|
// (G)POP object: Pointer position
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x10) >> 4;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x10) >> 4;
|
||||||
case 0x2c: // Display attributes
|
case 0x2c: // Display attributes
|
||||||
// Underline/Separated
|
// Underline/Separated
|
||||||
return (m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).data() & 0x20) == 0x20;
|
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x20) == 0x20;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -468,7 +468,7 @@ bool X26Model::setData(const QModelIndex &index, const QVariant &value, int role
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mode = m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).modeExt();
|
int mode = m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).modeExt();
|
||||||
|
|
||||||
// Cooked row, column and triplet mode
|
// Cooked row, column and triplet mode
|
||||||
if (role == Qt::EditRole && value.canConvert<int>()) {
|
if (role == Qt::EditRole && value.canConvert<int>()) {
|
||||||
@@ -502,12 +502,12 @@ bool X26Model::setData(const QModelIndex &index, const QVariant &value, int role
|
|||||||
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x00, intValue, role));
|
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x00, intValue, role));
|
||||||
return true;
|
return true;
|
||||||
case 2: // Cooked triplet mode
|
case 2: // Cooked triplet mode
|
||||||
if (intValue < 0x20 && !m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).isRowTriplet()) {
|
if (intValue < 0x20 && !m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).isRowTriplet()) {
|
||||||
// Changing mode from column triplet to row triplet
|
// Changing mode from column triplet to row triplet
|
||||||
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x00, 41, role));
|
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x00, 41, role));
|
||||||
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x00, 0, role));
|
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x00, 0, role));
|
||||||
}
|
}
|
||||||
if (intValue >= 0x20 && m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).isRowTriplet()) {
|
if (intValue >= 0x20 && m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).isRowTriplet()) {
|
||||||
// Changing mode from row triplet to column triplet
|
// Changing mode from row triplet to column triplet
|
||||||
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x00, 0, role));
|
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x00, 0, role));
|
||||||
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x00, 0, role));
|
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x00, 0, role));
|
||||||
@@ -580,7 +580,7 @@ bool X26Model::setData(const QModelIndex &index, const QVariant &value, int role
|
|||||||
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x1f, value.toInt() * 0x60, role));
|
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x1f, value.toInt() * 0x60, role));
|
||||||
break;
|
break;
|
||||||
case 0x11 ... 0x13: // Invoke object
|
case 0x11 ... 0x13: // Invoke object
|
||||||
if ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x08) == 0x08) {
|
if ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x08) == 0x08) {
|
||||||
// Local object: Designation code
|
// Local object: Designation code
|
||||||
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x0f, (value.toInt() & 0x07) << 4, role));
|
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x0f, (value.toInt() & 0x07) << 4, role));
|
||||||
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x38, value.toInt() >> 3, role));
|
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x38, value.toInt() >> 3, role));
|
||||||
@@ -623,7 +623,7 @@ bool X26Model::setData(const QModelIndex &index, const QVariant &value, int role
|
|||||||
case Qt::UserRole+3:
|
case Qt::UserRole+3:
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 0x11 ... 0x13: // Invoke object
|
case 0x11 ... 0x13: // Invoke object
|
||||||
if ((m_parentMainWidget->document()->currentSubPage()->localEnhance.at(index.row()).address() & 0x08) == 0x08)
|
if ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x08) == 0x08)
|
||||||
// Local object: triplet number
|
// Local object: triplet number
|
||||||
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x70, value.toInt(), role));
|
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x70, value.toInt(), role));
|
||||||
else
|
else
|
||||||
@@ -724,7 +724,7 @@ bool X26Model::insertRows(int row, int count, const QModelIndex &parent)
|
|||||||
{
|
{
|
||||||
Q_UNUSED(parent);
|
Q_UNUSED(parent);
|
||||||
|
|
||||||
m_parentMainWidget->document()->undoStack()->push(new InsertTripletCommand(m_parentMainWidget->document(), this, row, count, m_parentMainWidget->document()->currentSubPage()->localEnhance.at(row)));
|
m_parentMainWidget->document()->undoStack()->push(new InsertTripletCommand(m_parentMainWidget->document(), this, row, count, m_parentMainWidget->document()->currentSubPage()->enhancements()->at(row)));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user