Change object invocation level 2.5/3.5 widget

This commit is contained in:
G.K.MacGregor
2021-04-06 18:24:42 +01:00
parent 5fbec979f1
commit 2e082dbc19
3 changed files with 17 additions and 30 deletions

View File

@@ -243,12 +243,12 @@ X26DockWidget::X26DockWidget(TeletextWidget *parent): QDockWidget(parent)
connect(m_objectSourceComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+1); updateCookedTripletParameters(m_x26View->currentIndex()); } ); connect(m_objectSourceComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+1); updateCookedTripletParameters(m_x26View->currentIndex()); } );
// Object required at which levels // Object required at which levels
m_objectRequiredAtL2p5CheckBox = new QCheckBox("L2.5"); m_objectRequiredAtLevelsComboBox = new QComboBox;
m_objectRequiredAtL3p5CheckBox = new QCheckBox("L3.5"); m_objectRequiredAtLevelsComboBox->addItem("L2.5 only");
invokeObjectLayout->addWidget(m_objectRequiredAtL2p5CheckBox); m_objectRequiredAtLevelsComboBox->addItem("L3.5 only");
invokeObjectLayout->addWidget(m_objectRequiredAtL3p5CheckBox); m_objectRequiredAtLevelsComboBox->addItem("L2.5 + 3.5");
connect(m_objectRequiredAtL2p5CheckBox, &QCheckBox::stateChanged, this, [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+1); } ); invokeObjectLayout->addWidget(m_objectRequiredAtLevelsComboBox);
connect(m_objectRequiredAtL3p5CheckBox, &QCheckBox::stateChanged, this, [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+4); } ); connect(m_objectRequiredAtLevelsComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+1); } );
// Invoke Local Objects // Invoke Local Objects
QHBoxLayout *invokeLocalObjectLayout = new QHBoxLayout; QHBoxLayout *invokeLocalObjectLayout = new QHBoxLayout;
@@ -743,18 +743,13 @@ void X26DockWidget::updateCookedTripletParameters(const QModelIndex &index)
if (index.model()->data(index.model()->index(index.row(), 1), Qt::UserRole).toInt() & 0x04) { if (index.model()->data(index.model()->index(index.row(), 1), Qt::UserRole).toInt() & 0x04) {
// Define object // Define object
m_objectSourceComboBox->setVisible(false); m_objectSourceComboBox->setVisible(false);
m_objectRequiredAtL2p5CheckBox->setVisible(true); m_objectRequiredAtLevelsComboBox->setVisible(true);
m_objectRequiredAtL3p5CheckBox->setVisible(true); m_objectRequiredAtLevelsComboBox->blockSignals(true);
m_objectRequiredAtL2p5CheckBox->blockSignals(true); m_objectRequiredAtLevelsComboBox->setCurrentIndex(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toInt());
m_objectRequiredAtL3p5CheckBox->blockSignals(true); m_objectRequiredAtLevelsComboBox->blockSignals(false);
m_objectRequiredAtL2p5CheckBox->setChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toBool());
m_objectRequiredAtL3p5CheckBox->setChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+4).toBool());
m_objectRequiredAtL2p5CheckBox->blockSignals(false);
m_objectRequiredAtL3p5CheckBox->blockSignals(false);
} else { } else {
// Invoke object // Invoke object
m_objectRequiredAtL2p5CheckBox->setVisible(false); m_objectRequiredAtLevelsComboBox->setVisible(false);
m_objectRequiredAtL3p5CheckBox->setVisible(false);
m_objectSourceComboBox->setVisible(true); m_objectSourceComboBox->setVisible(true);
} }
m_objectSourceComboBox->blockSignals(true); m_objectSourceComboBox->blockSignals(true);

View File

@@ -78,8 +78,7 @@ private:
QComboBox *m_flashModeComboBox, *m_flashRateComboBox; QComboBox *m_flashModeComboBox, *m_flashRateComboBox;
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; QComboBox *m_objectSourceComboBox, *m_objectRequiredAtLevelsComboBox;
QCheckBox *m_objectRequiredAtL2p5CheckBox, *m_objectRequiredAtL3p5CheckBox;
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;

View File

@@ -333,8 +333,8 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
return ((m_parentMainWidget->document()->currentSubPage()->enhancements()->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 which levels
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x08) == 0x08; return ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x18) >> 3) - 1;
case 0x18: // DRCS mode case 0x18: // DRCS mode
// Required at level 2.5 // Required at level 2.5
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x10) == 0x10; return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x10) == 0x10;
@@ -426,9 +426,6 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
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()->enhancements()->at(index.row()).data() >> 5; return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() >> 5;
case 0x15 ... 0x17: // Define object
// Required at level 3.5
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()->enhancements()->at(index.row()).data() & 0x0f; return m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x0f;
@@ -520,7 +517,7 @@ bool X26Model::setData(const QModelIndex &index, const QVariant &value, int role
// Now set data values to avoid reserved bits if we need to // Now set data values to avoid reserved bits if we need to
// FIXME this can rather messily push multiple EditTripletCommands // FIXME this can rather messily push multiple EditTripletCommands
// that rely on mergeWith to tidy them up afterwards // that rely on mergeWith to tidy them up afterwards
// Also this just flips bits, where we could use default values // Also this just flips bits, where we could use default values
switch (intValue) { switch (intValue) {
case 0x00: // Full screen colour case 0x00: // Full screen colour
case 0x20: // Foreground colour case 0x20: // Foreground colour
@@ -628,8 +625,8 @@ 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, 0x27, (value.toInt()+1) << 3, role)); m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x27, (value.toInt()+1) << 3, role));
break; break;
case 0x15 ... 0x17: // Define object case 0x15 ... 0x17: // Define object
// Required at level 2.5 // Required at which levels
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x37, value.toInt() << 2, role)); m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x27, (value.toInt()+1) << 3, role));
break; break;
case 0x18: // DRCS Mode case 0x18: // DRCS Mode
// Required at level 2.5 // Required at level 2.5
@@ -744,10 +741,6 @@ bool X26Model::setData(const QModelIndex &index, const QVariant &value, int role
// (G)POP object: Triplet number // (G)POP object: Triplet number
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x1f, value.toInt() << 5, role)); m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x1f, value.toInt() << 5, role));
break; break;
case 0x15 ... 0x17: // Define object
// Required at level 3.5
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETaddress, 0x2f, value.toInt() << 3, role));
break;
case 0x18: // DRCS Mode case 0x18: // DRCS Mode
// Subpage // Subpage
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));