Change DRCS mode level 2.5/3.5 widget

This commit is contained in:
G.K.MacGregor
2021-04-06 18:54:51 +01:00
parent 2e082dbc19
commit be1cb458b5
3 changed files with 17 additions and 27 deletions

View File

@@ -316,12 +316,12 @@ X26DockWidget::X26DockWidget(TeletextWidget *parent): QDockWidget(parent)
// Index 6 - DRCS mode // Index 6 - DRCS mode
QHBoxLayout *DRCSModeLayout = new QHBoxLayout; QHBoxLayout *DRCSModeLayout = new QHBoxLayout;
m_DRCSModeRequiredAtL2p5CheckBox = new QCheckBox("L2.5"); m_DRCSModeRequiredAtLevelsComboBox = new QComboBox;
m_DRCSModeRequiredAtL3p5CheckBox = new QCheckBox("L3.5"); m_DRCSModeRequiredAtLevelsComboBox->addItem("L2.5 only");
DRCSModeLayout->addWidget(m_DRCSModeRequiredAtL2p5CheckBox); m_DRCSModeRequiredAtLevelsComboBox->addItem("L3.5 only");
DRCSModeLayout->addWidget(m_DRCSModeRequiredAtL3p5CheckBox); m_DRCSModeRequiredAtLevelsComboBox->addItem("L2.5 + 3.5");
connect(m_DRCSModeRequiredAtL2p5CheckBox, &QCheckBox::stateChanged, this, [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+1); } ); DRCSModeLayout->addWidget(m_DRCSModeRequiredAtLevelsComboBox);
connect(m_DRCSModeRequiredAtL3p5CheckBox, &QCheckBox::stateChanged, this, [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+2); } ); connect(m_DRCSModeRequiredAtLevelsComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](const int value) { updateModelFromCookedWidget(value, Qt::UserRole+1); } );
m_DRCSModeGlobalRadioButton = new QRadioButton("Global"); m_DRCSModeGlobalRadioButton = new QRadioButton("Global");
m_DRCSModeNormalRadioButton = new QRadioButton("Normal"); m_DRCSModeNormalRadioButton = new QRadioButton("Normal");
QButtonGroup *DRCSModeButtonGroup = new QButtonGroup; QButtonGroup *DRCSModeButtonGroup = new QButtonGroup;
@@ -788,18 +788,15 @@ void X26DockWidget::updateCookedTripletParameters(const QModelIndex &index)
m_tripletParameterStackedLayout->setCurrentIndex(5); m_tripletParameterStackedLayout->setCurrentIndex(5);
break; break;
case 0x18: // DRCS mode case 0x18: // DRCS mode
m_DRCSModeRequiredAtL2p5CheckBox->blockSignals(true); m_DRCSModeRequiredAtLevelsComboBox->blockSignals(true);
m_DRCSModeRequiredAtL3p5CheckBox->blockSignals(true);
m_DRCSModeGlobalRadioButton->blockSignals(true); m_DRCSModeGlobalRadioButton->blockSignals(true);
m_DRCSModeNormalRadioButton->blockSignals(true); m_DRCSModeNormalRadioButton->blockSignals(true);
m_DRCSModeSubPageSpinBox->blockSignals(true); m_DRCSModeSubPageSpinBox->blockSignals(true);
m_DRCSModeRequiredAtL2p5CheckBox->setChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toBool()); m_DRCSModeRequiredAtLevelsComboBox->setCurrentIndex(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toInt());
m_DRCSModeRequiredAtL3p5CheckBox->setChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+2).toBool());
m_DRCSModeGlobalRadioButton->setChecked(!index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+3).toBool()); m_DRCSModeGlobalRadioButton->setChecked(!index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+3).toBool());
m_DRCSModeNormalRadioButton->setChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+3).toBool()); m_DRCSModeNormalRadioButton->setChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+3).toBool());
m_DRCSModeSubPageSpinBox->setValue(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+4).toInt()); m_DRCSModeSubPageSpinBox->setValue(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+4).toInt());
m_DRCSModeRequiredAtL2p5CheckBox->blockSignals(false); m_DRCSModeRequiredAtLevelsComboBox->blockSignals(false);
m_DRCSModeRequiredAtL3p5CheckBox->blockSignals(false);
m_DRCSModeGlobalRadioButton->blockSignals(false); m_DRCSModeGlobalRadioButton->blockSignals(false);
m_DRCSModeNormalRadioButton->blockSignals(false); m_DRCSModeNormalRadioButton->blockSignals(false);
m_DRCSModeSubPageSpinBox->blockSignals(false); m_DRCSModeSubPageSpinBox->blockSignals(false);

View File

@@ -83,7 +83,7 @@ private:
QSpinBox *m_invokePOPSubPageSpinBox, *m_invokePOPPacketNumberSpinBox; QSpinBox *m_invokePOPSubPageSpinBox, *m_invokePOPPacketNumberSpinBox;
QComboBox *m_invokePOPTripletNumberComboBox, *m_invokePOPPointerBitsComboBox; QComboBox *m_invokePOPTripletNumberComboBox, *m_invokePOPPointerBitsComboBox;
QStackedLayout *m_invokeObjectSourceStackedLayout, *m_tripletParameterStackedLayout; QStackedLayout *m_invokeObjectSourceStackedLayout, *m_tripletParameterStackedLayout;
QCheckBox *m_DRCSModeRequiredAtL2p5CheckBox, *m_DRCSModeRequiredAtL3p5CheckBox; QComboBox *m_DRCSModeRequiredAtLevelsComboBox;
QRadioButton *m_DRCSModeGlobalRadioButton, *m_DRCSModeNormalRadioButton; QRadioButton *m_DRCSModeGlobalRadioButton, *m_DRCSModeNormalRadioButton;
QSpinBox *m_DRCSModeSubPageSpinBox; QSpinBox *m_DRCSModeSubPageSpinBox;
QRadioButton *m_DRCSCharacterGlobalRadioButton, *m_DRCSCharacterNormalRadioButton; QRadioButton *m_DRCSCharacterGlobalRadioButton, *m_DRCSCharacterNormalRadioButton;

View File

@@ -164,9 +164,9 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
case 0x30: case 0x30:
result.append("L2.5 and 3.5"); result.append("L2.5 and 3.5");
break; break;
//case 0x00: case 0x00:
// result = "Reserved"; result.append("Reserved");
// break; break;
} }
return result; return result;
case 0x1f: // Termination case 0x1f: // Termination
@@ -336,8 +336,8 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
// Required at which levels // Required at which levels
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;
case 0x18: // DRCS mode case 0x18: // DRCS mode
// Required at level 2.5 // Required at which levels
return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x10) == 0x10; return ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x30) >> 4) - 1;
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()->enhancements()->at(index.row()).data() & 0x06) >> 1); return ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x06) >> 1);
@@ -375,9 +375,6 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
case 0x15 ... 0x17: // Define object case 0x15 ... 0x17: // Define object
// Local object: Designation code // Local object: Designation code
return ((m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).address() & 0x01) << 3) | ((m_parentMainWidget->document()->currentSubPage()->enhancements()->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
// Required at level 3.5
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()->enhancements()->at(index.row()).data() & 0x01) == 0x01; return (m_parentMainWidget->document()->currentSubPage()->enhancements()->at(index.row()).data() & 0x01) == 0x01;
@@ -629,8 +626,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 0x18: // DRCS Mode case 0x18: // DRCS Mode
// Required at level 2.5 // Required at which levels
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x6f, value.toInt() << 3, role)); m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x4f, (value.toInt()+1) << 4, role));
break; break;
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
@@ -679,10 +676,6 @@ 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, 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));
break; break;
case 0x18: // DRCS Mode
// Required at level 3.5
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x5f, value.toInt() << 4, role));
break;
case 0x1f: // Termination case 0x1f: // Termination
// More follows/Last // More follows/Last
m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x06, value.toInt(), role)); m_parentMainWidget->document()->undoStack()->push(new EditTripletCommand(m_parentMainWidget->document(), this, index.row(), EditTripletCommand::ETdata, 0x06, value.toInt(), role));