diff --git a/pageenhancementsdockwidget.cpp b/pageenhancementsdockwidget.cpp index 73d3bc7..9108c03 100644 --- a/pageenhancementsdockwidget.cpp +++ b/pageenhancementsdockwidget.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -114,6 +115,8 @@ PageEnhancementsDockWidget::PageEnhancementsDockWidget(TeletextWidget *parent): level3p5OnlyLabel->setAlignment(Qt::AlignCenter); x27Layout->addWidget(level3p5OnlyLabel, 5, 0, 1, 5); + m_pageNumberValidator = new QRegExpValidator(QRegExp("[1-8][0-9A-Fa-f][0-9A-Fa-f]"), this); + for (int i=0; i<8; i++) { if (i < 4) { // Required at which Levels @@ -136,8 +139,8 @@ PageEnhancementsDockWidget::PageEnhancementsDockWidget(TeletextWidget *parent): // Page link m_composeLinkPageNumberLineEdit[i] = new QLineEdit("100"); m_composeLinkPageNumberLineEdit[i]->setMaxLength(3); - m_composeLinkPageNumberLineEdit[i]->setInputMask("DHH"); - // TODO restrict first digit of page number to 1-8 + m_composeLinkPageNumberLineEdit[i]->setInputMask(">DHH"); + m_composeLinkPageNumberLineEdit[i]->setValidator(m_pageNumberValidator); x27Layout->addWidget(m_composeLinkPageNumberLineEdit[i], i+(i<4 ? 1 : 2), 3, 1, 1); connect(m_composeLinkPageNumberLineEdit[i], &QLineEdit::textEdited, [=](QString value) { setComposeLinkPageNumber(i, value); } ); diff --git a/pageenhancementsdockwidget.h b/pageenhancementsdockwidget.h index 9927474..7650db4 100644 --- a/pageenhancementsdockwidget.h +++ b/pageenhancementsdockwidget.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -51,6 +52,8 @@ private: QCheckBox *m_composeLinkLevelCheckbox[4][2]; // For links 0-3 QComboBox *m_composeLinkFunctionComboBox[4]; // For links 4-7; remember to subtract 4! QLineEdit *m_composeLinkPageNumberLineEdit[8], *m_composeLinkSubPageNumbersLineEdit[8]; + + QRegExpValidator *m_pageNumberValidator; }; #endif diff --git a/pageoptionsdockwidget.cpp b/pageoptionsdockwidget.cpp index a73c003..21dccbf 100644 --- a/pageoptionsdockwidget.cpp +++ b/pageoptionsdockwidget.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -40,12 +41,14 @@ PageOptionsDockWidget::PageOptionsDockWidget(TeletextWidget *parent): QDockWidge this->setWindowTitle("Page options"); // Page number + m_pageNumberValidator = new QRegExpValidator(QRegExp("[1-8][0-9A-Fa-f][0-9A-Fa-f]"), this); + QHBoxLayout *pageNumberLayout = new QHBoxLayout; pageNumberLayout->addWidget(new QLabel(tr("Page number"))); m_pageNumberEdit = new QLineEdit("100"); m_pageNumberEdit->setMaxLength(3); - m_pageNumberEdit->setInputMask("DHH"); - //TODO restrict first digit of page number to 1-8 + m_pageNumberEdit->setInputMask(">DHH"); + m_pageNumberEdit->setValidator(m_pageNumberValidator); pageNumberLayout->addWidget(m_pageNumberEdit); connect(m_pageNumberEdit, &QLineEdit::textEdited, m_parentMainWidget->document(), &TeletextDocument::setPageNumberFromString); @@ -66,8 +69,8 @@ PageOptionsDockWidget::PageOptionsDockWidget(TeletextWidget *parent): QDockWidge fastTextLayout->addWidget(new QLabel(fastTextLabel[i]), 0, i, 1, 1, Qt::AlignCenter); m_fastTextEdit[i] = new QLineEdit; m_fastTextEdit[i]->setMaxLength(3); - m_fastTextEdit[i]->setInputMask("DHH"); - //TODO restrict first digit of page number to 1-8 + m_fastTextEdit[i]->setInputMask(">DHH"); + m_fastTextEdit[i]->setValidator(m_pageNumberValidator); fastTextLayout->addWidget(m_fastTextEdit[i], 1, i, 1, 1); connect(m_fastTextEdit[i], &QLineEdit::textEdited, [=](QString value) { setFastTextLinkPageNumber(i, value); } ); } diff --git a/pageoptionsdockwidget.h b/pageoptionsdockwidget.h index 84fc89f..7827534 100644 --- a/pageoptionsdockwidget.h +++ b/pageoptionsdockwidget.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include "mainwidget.h" @@ -45,6 +46,8 @@ private: QComboBox *m_defaultRegionCombo, *m_defaultNOSCombo, *m_secondRegionCombo, *m_secondNOSCombo; QLineEdit *m_fastTextEdit[6]; + QRegExpValidator *m_pageNumberValidator; + void addRegionList(QComboBox *); void setFastTextLinkPageNumber(int, const QString &); void setDefaultRegion();