Update "Define triplet" self-pointers automatically
This commit is contained in:
@@ -287,13 +287,15 @@ X26DockWidget::X26DockWidget(TeletextWidget *parent): QDockWidget(parent)
|
|||||||
// Invoke Local Objects
|
// Invoke Local Objects
|
||||||
QHBoxLayout *invokeLocalObjectLayout = new QHBoxLayout;
|
QHBoxLayout *invokeLocalObjectLayout = new QHBoxLayout;
|
||||||
|
|
||||||
invokeLocalObjectLayout->addWidget(new QLabel(tr("Designation")));
|
m_invokeLocalObjectDesignationCodeLabel = new QLabel(tr("Designation"));
|
||||||
|
invokeLocalObjectLayout->addWidget(m_invokeLocalObjectDesignationCodeLabel);
|
||||||
m_invokeLocalObjectDesignationCodeSpinBox = new QSpinBox;
|
m_invokeLocalObjectDesignationCodeSpinBox = new QSpinBox;
|
||||||
m_invokeLocalObjectDesignationCodeSpinBox->setMaximum(15);
|
m_invokeLocalObjectDesignationCodeSpinBox->setMaximum(15);
|
||||||
invokeLocalObjectLayout->addWidget(m_invokeLocalObjectDesignationCodeSpinBox);
|
invokeLocalObjectLayout->addWidget(m_invokeLocalObjectDesignationCodeSpinBox);
|
||||||
connect(m_invokeLocalObjectDesignationCodeSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+2); } );
|
connect(m_invokeLocalObjectDesignationCodeSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+2); } );
|
||||||
|
|
||||||
invokeLocalObjectLayout->addWidget(new QLabel(tr("Triplet")));
|
m_invokeLocalObjectTripletNumberLabel = new QLabel(tr("Triplet"));
|
||||||
|
invokeLocalObjectLayout->addWidget(m_invokeLocalObjectTripletNumberLabel);
|
||||||
m_invokeLocalObjectTripletNumberSpinBox = new QSpinBox;
|
m_invokeLocalObjectTripletNumberSpinBox = new QSpinBox;
|
||||||
m_invokeLocalObjectTripletNumberSpinBox->setMaximum(12);
|
m_invokeLocalObjectTripletNumberSpinBox->setMaximum(12);
|
||||||
invokeLocalObjectLayout->addWidget(m_invokeLocalObjectTripletNumberSpinBox);
|
invokeLocalObjectLayout->addWidget(m_invokeLocalObjectTripletNumberSpinBox);
|
||||||
@@ -799,14 +801,22 @@ void X26DockWidget::updateCookedTripletParameters(const QModelIndex &index)
|
|||||||
// BUG we're only dealing with Local Object Definitions at the moment!
|
// BUG we're only dealing with Local Object Definitions at the moment!
|
||||||
if (index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toInt() == 0 || (index.model()->data(index.model()->index(index.row(), 1), Qt::UserRole).toInt() & 0x04)) {
|
if (index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toInt() == 0 || (index.model()->data(index.model()->index(index.row(), 1), Qt::UserRole).toInt() & 0x04)) {
|
||||||
// if (triplet.objectSource() == X26Triplet::LocalObjectSource) {
|
// if (triplet.objectSource() == X26Triplet::LocalObjectSource) {
|
||||||
|
const bool tripletLocationWidgetsVisible = (modeExt & 0x04) != 0x04;
|
||||||
|
|
||||||
|
m_invokeLocalObjectDesignationCodeLabel->setVisible(tripletLocationWidgetsVisible);
|
||||||
|
m_invokeLocalObjectDesignationCodeSpinBox->setVisible(tripletLocationWidgetsVisible);
|
||||||
|
m_invokeLocalObjectTripletNumberLabel->setVisible(tripletLocationWidgetsVisible);
|
||||||
|
m_invokeLocalObjectTripletNumberSpinBox->setVisible(tripletLocationWidgetsVisible);
|
||||||
m_objectSourceComboBox->setCurrentIndex(0);
|
m_objectSourceComboBox->setCurrentIndex(0);
|
||||||
m_invokeObjectSourceStackedLayout->setCurrentIndex(0);
|
m_invokeObjectSourceStackedLayout->setCurrentIndex(0);
|
||||||
|
if (tripletLocationWidgetsVisible) {
|
||||||
m_invokeLocalObjectDesignationCodeSpinBox->blockSignals(true);
|
m_invokeLocalObjectDesignationCodeSpinBox->blockSignals(true);
|
||||||
m_invokeLocalObjectTripletNumberSpinBox->blockSignals(true);
|
m_invokeLocalObjectTripletNumberSpinBox->blockSignals(true);
|
||||||
m_invokeLocalObjectDesignationCodeSpinBox->setValue(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+2).toInt());
|
m_invokeLocalObjectDesignationCodeSpinBox->setValue(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+2).toInt());
|
||||||
m_invokeLocalObjectTripletNumberSpinBox->setValue(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+3).toInt());
|
m_invokeLocalObjectTripletNumberSpinBox->setValue(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+3).toInt());
|
||||||
m_invokeLocalObjectDesignationCodeSpinBox->blockSignals(false);
|
m_invokeLocalObjectDesignationCodeSpinBox->blockSignals(false);
|
||||||
m_invokeLocalObjectTripletNumberSpinBox->blockSignals(false);
|
m_invokeLocalObjectTripletNumberSpinBox->blockSignals(false);
|
||||||
|
}
|
||||||
} else { // if (triplet.objectSource() != X26Triplet::IllegalObjectSource) {
|
} else { // if (triplet.objectSource() != X26Triplet::IllegalObjectSource) {
|
||||||
m_objectSourceComboBox->setCurrentIndex(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toInt());
|
m_objectSourceComboBox->setCurrentIndex(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toInt());
|
||||||
m_invokeObjectSourceStackedLayout->setCurrentIndex(1);
|
m_invokeObjectSourceStackedLayout->setCurrentIndex(1);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
|
#include <QLabel>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QRadioButton>
|
#include <QRadioButton>
|
||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
@@ -98,6 +99,7 @@ private:
|
|||||||
QComboBox *m_textSizeComboBox;
|
QComboBox *m_textSizeComboBox;
|
||||||
QCheckBox *m_displayAttributeBoxingCheckBox, *m_displayAttributeConcealCheckBox, *m_displayAttributeInvertCheckBox, *m_displayAttributeUnderlineCheckBox;
|
QCheckBox *m_displayAttributeBoxingCheckBox, *m_displayAttributeConcealCheckBox, *m_displayAttributeInvertCheckBox, *m_displayAttributeUnderlineCheckBox;
|
||||||
QComboBox *m_objectSourceComboBox, *m_objectRequiredAtLevelsComboBox;
|
QComboBox *m_objectSourceComboBox, *m_objectRequiredAtLevelsComboBox;
|
||||||
|
QLabel *m_invokeLocalObjectDesignationCodeLabel, *m_invokeLocalObjectTripletNumberLabel;
|
||||||
QSpinBox *m_invokeLocalObjectDesignationCodeSpinBox, *m_invokeLocalObjectTripletNumberSpinBox;
|
QSpinBox *m_invokeLocalObjectDesignationCodeSpinBox, *m_invokeLocalObjectTripletNumberSpinBox;
|
||||||
QSpinBox *m_invokePOPSubPageSpinBox, *m_invokePOPPacketNumberSpinBox;
|
QSpinBox *m_invokePOPSubPageSpinBox, *m_invokePOPPacketNumberSpinBox;
|
||||||
QComboBox *m_invokePOPTripletNumberComboBox, *m_invokePOPPointerBitsComboBox;
|
QComboBox *m_invokePOPTripletNumberComboBox, *m_invokePOPPointerBitsComboBox;
|
||||||
|
|||||||
@@ -145,20 +145,19 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
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((triplet.data() >> 4) | ((triplet.address() & 1) << 3)).arg(triplet.data() & 0x0f));
|
|
||||||
switch (triplet.address() & 0x18) {
|
switch (triplet.address() & 0x18) {
|
||||||
case 0x08:
|
case 0x08:
|
||||||
result.append("L2.5 only");
|
return "Local: L2.5 only";
|
||||||
break;
|
break;
|
||||||
case 0x10:
|
case 0x10:
|
||||||
result.append("L3.5 only");
|
return "Local: L3.5 only";
|
||||||
break;
|
break;
|
||||||
case 0x18:
|
case 0x18:
|
||||||
result.append("L2.5 and 3.5");
|
return "Local: L2.5 and 3.5";
|
||||||
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
|
||||||
}
|
}
|
||||||
return result;
|
break;
|
||||||
case 0x18: // DRCS mode
|
case 0x18: // DRCS mode
|
||||||
result = (triplet.data() & 0x40) == 0x40 ? "Normal" : "Global";
|
result = (triplet.data() & 0x40) == 0x40 ? "Normal" : "Global";
|
||||||
result.append(QString(": subpage %1, ").arg(triplet.data() & 0x0f));
|
result.append(QString(": subpage %1, ").arg(triplet.data() & 0x0f));
|
||||||
|
|||||||
@@ -92,6 +92,13 @@ void X26TripletList::updateInternalData(int r)
|
|||||||
break;
|
break;
|
||||||
case 0x15 ... 0x17: // Define Object
|
case 0x15 ... 0x17: // Define Object
|
||||||
activePosition.reset();
|
activePosition.reset();
|
||||||
|
// Make sure data field holds correct place of triplet
|
||||||
|
// otherwise the object won't appear
|
||||||
|
triplet->m_address &= 0x3c;
|
||||||
|
if (i >= 104) // Triplet 8
|
||||||
|
triplet->m_address |= 0x01;
|
||||||
|
triplet->m_data = (((i / 13) & 0x07) << 4) | (i % 13);
|
||||||
|
break;
|
||||||
};
|
};
|
||||||
// Column triplet: make sure that PDC and reserved triplets don't affect the Active Position
|
// Column triplet: make sure that PDC and reserved triplets don't affect the Active Position
|
||||||
} else if (triplet->modeExt() != 0x24 && triplet->modeExt() != 0x25 && triplet->modeExt() != 0x26 && triplet->modeExt() != 0x2a)
|
} else if (triplet->modeExt() != 0x24 && triplet->modeExt() != 0x25 && triplet->modeExt() != 0x26 && triplet->modeExt() != 0x2a)
|
||||||
|
|||||||
Reference in New Issue
Block a user