SAESpageWidget::SAESpageWidget(QWidget *parent) : QWidget(parent) { /*create*/ gridLayout = new QGridLayout(this); keygridLayout = new QGridLayout(); inputTypeLayout = new QHBoxLayout(); inputTypeL = new QLabel(tr("Input Type:"), this); binaryL = new QLabel(tr("Binary (16 digits)"), this); decimalL = new QLabel(tr("Integer (value <= 65535)"), this); hexL = new QLabel(tr("Hex (4 digits)"), this); binaryE = new QLineEdit(this); decimalE = new QLineEdit(this); hexE = new QLineEdit(this); inputTypeE = new QComboBox(this); keyBox = new QGroupBox(tr("Key (16 bit)"), this); inputL = new QGroupBox(this); outputL = new QGroupBox(this); inputLayout = new QHBoxLayout(inputL); outputLayout = new QHBoxLayout(outputL); inputE = new QPlainTextEdit(this); outputE = new QTextBrowser(this); clearButton = new QPushButton(tr("Clear"), this); convertButton = new QPushButton(this); QRegExp binRegExp("[01]{16}"); QRegExp hexRegExp("[0-9A-Fa-f]{4}"); binaryValidator = new QRegExpValidator(binRegExp, this); decimalValidator = new QIntValidator(0, 65535, this); hexValidator = new QRegExpValidator(hexRegExp, this); inputValidator = new QRegExpValidator(this); binaryE->setValidator(binaryValidator); decimalE->setValidator(decimalValidator); hexE->setValidator(hexValidator); /*lay out*/ inputLayout->addWidget(inputE); outputLayout->addWidget(outputE); inputTypeLayout->addWidget(inputTypeL); inputTypeLayout->addWidget(inputTypeE); inputTypeLayout->addStretch(); keygridLayout->addLayout(inputTypeLayout, 0, 0, 1, 4); keygridLayout->addWidget(binaryL, 1, 0, 1, 1); keygridLayout->setAlignment(binaryL, Qt::AlignRight); keygridLayout->addWidget(binaryE, 1, 1, 1, 3); keygridLayout->addWidget(decimalL, 2, 0, 1, 1); keygridLayout->setAlignment(decimalL, Qt::AlignRight); keygridLayout->addWidget(decimalE, 2, 1, 1, 3); keygridLayout->addWidget(hexL, 3, 0, 1, 1); keygridLayout->setAlignment(hexL, Qt::AlignRight); keygridLayout->addWidget(hexE, 3, 1, 1, 3); keygridLayout->setRowMinimumHeight(4, 50); keyBox->setLayout(keygridLayout); gridLayout->addWidget(keyBox, 0, 0, 4, 4); gridLayout->addWidget(inputL, 0, 4, 4, 8); gridLayout->addWidget(clearButton, 4, 8, 1, 2); gridLayout->addWidget(convertButton, 4, 10, 1, 2); gridLayout->addWidget(outputL, 6, 0, 3, 12); gridLayout->setRowMinimumHeight(5, 8); /*initialize*/ inputTypeE->addItem(tr("Binary (Base 2)")); inputTypeE->addItem(tr("Integer (Base 10)")); inputTypeE->addItem(tr("Hex (Base 16)")); setCurrentKeyInput(0); /*signals&slots*/ connect(inputTypeE, SIGNAL(currentIndexChanged(int)), this, SLOT(setCurrentKeyInput(int))); connect(binaryE, SIGNAL(textEdited(QString)), this, SLOT(fillAndColorKeyInput(QString))); connect(decimalE, SIGNAL(textEdited(QString)), this, SLOT(fillAndColorKeyInput(QString))); connect(hexE, SIGNAL(textEdited(QString)), this, SLOT(fillAndColorKeyInput(QString))); connect(clearButton, SIGNAL(clicked()), this, SLOT(clearBoxes())); }
SAESpageWidget::SAESpageWidget(QWidget *parent) : QWidget(parent) { /*create*/ gridLayout = new QGridLayout(this); keygridLayout = new QGridLayout(); inputTypeLayout = new QHBoxLayout(); inputTypeL = new QLabel(tr("Input Type:"), this); binaryL = new QLabel(tr("Binary (16 digits)"), this); decimalL = new QLabel(tr("Integer (value <= 65535)"), this); hexL = new QLabel(tr("Hex (4 digits)"), this); binaryE = new QLineEdit(this); decimalE = new QLineEdit(this); hexE = new QLineEdit(this); inputTypeE = new QComboBox(this); keyBox = new QGroupBox(tr("Key (16 bit)"), this); inputL = new QGroupBox(this); outputL = new QGroupBox(this); inputLayout = new QHBoxLayout(inputL); outputLayout = new QHBoxLayout(outputL); inputE = new QPlainTextEdit(this); outputE = new QTextBrowser(this); clearButton = new QPushButton(tr("Clear"), this); convertButton = new QPushButton(this); QRegExp binRegExp("[01]{16}"); //we use regular expressions to cleanse the input QRegExp hexRegExp("[0-9A-Fa-f]{4}"); //for some of the key fields! Fr. Smolarski would //be proud :P binaryValidator = new QRegExpValidator(binRegExp, this); //the purpose of validators is to restrict decimalValidator = new QIntValidator(0, 65535, this); //input in certain boxes to something hexValidator = new QRegExpValidator(hexRegExp, this); //appropriate; i.e. if our input box inputValidator = new QRegExpValidator(this); //needs a number, the QIntValidator //prevents you from typing in anything else binaryE->setValidator(binaryValidator); decimalE->setValidator(decimalValidator); hexE->setValidator(hexValidator); /*lay out*/ inputLayout->addWidget(inputE); outputLayout->addWidget(outputE); inputTypeLayout->addWidget(inputTypeL); inputTypeLayout->addWidget(inputTypeE); inputTypeLayout->addStretch(); keygridLayout->addLayout(inputTypeLayout, 0, 0, 1, 4); keygridLayout->addWidget(binaryL, 1, 0, 1, 1); keygridLayout->setAlignment(binaryL, Qt::AlignRight); keygridLayout->addWidget(binaryE, 1, 1, 1, 3); keygridLayout->addWidget(decimalL, 2, 0, 1, 1); keygridLayout->setAlignment(decimalL, Qt::AlignRight); keygridLayout->addWidget(decimalE, 2, 1, 1, 3); keygridLayout->addWidget(hexL, 3, 0, 1, 1); keygridLayout->setAlignment(hexL, Qt::AlignRight); keygridLayout->addWidget(hexE, 3, 1, 1, 3); keygridLayout->setRowMinimumHeight(4, 50); keyBox->setLayout(keygridLayout); gridLayout->addWidget(keyBox, 0, 0, 4, 4); gridLayout->addWidget(inputL, 0, 4, 4, 8); gridLayout->addWidget(clearButton, 4, 8, 1, 2); gridLayout->addWidget(convertButton, 4, 10, 1, 2); gridLayout->addWidget(outputL, 6, 0, 3, 12); gridLayout->setRowMinimumHeight(5, 8); /*initialize*/ inputTypeE->addItem(tr("Binary (Base 2)")); inputTypeE->addItem(tr("Integer (Base 10)")); inputTypeE->addItem(tr("Hex (Base 16)")); setCurrentKeyInput(0); /*signals&slots*/ connect(inputTypeE, SIGNAL(currentIndexChanged(int)), this, SLOT(setCurrentKeyInput(int))); connect(binaryE, SIGNAL(textEdited(QString)), this, SLOT(fillAndColorKeyInput(QString))); connect(decimalE, SIGNAL(textEdited(QString)), this, SLOT(fillAndColorKeyInput(QString))); connect(hexE, SIGNAL(textEdited(QString)), this, SLOT(fillAndColorKeyInput(QString))); connect(clearButton, SIGNAL(clicked()), this, SLOT(clearBoxes())); }
void ExprParamElement::adjustForSearchType(ExprSearchType type) { // record which search type is active searchType = type; QRegExp regExp("0|[1-9][0-9]*"); numValidator = new QRegExpValidator(regExp, this); QRegExp hexRegExp("[A-Fa-f0-9]*"); hexValidator = new QRegExpValidator(hexRegExp, this); // remove all elements QList<QWidget*> children = qFindChildren<QWidget*>(internalframe); QWidget* child; QLayout * lay_out = internalframe->layout(); while (!children.isEmpty()) { child = children.takeLast(); child->hide(); lay_out->removeWidget(child); delete child; } delete lay_out; QHBoxLayout* hbox = createLayout(); internalframe->setLayout(hbox); internalframe->setMinimumSize(320,26); if (isStringSearchExpression()) { // set up for default of a simple input field QLineEdit* lineEdit = new QLineEdit(internalframe); lineEdit->setMinimumSize(STR_FIELDS_MIN_WIDTH, FIELDS_MIN_HEIGHT); lineEdit->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); lineEdit->setObjectName("param1"); hbox->addWidget(lineEdit); hbox->addSpacing(9); QCheckBox* icCb = new QCheckBox(tr("ignore case"), internalframe); icCb->setObjectName("ignoreCaseCB"); icCb->setCheckState(Qt::Checked); // hex search specifics: hidden case sensitivity and hex validator if (searchType == HashSearch) { icCb->hide(); lineEdit->setValidator(hexValidator); } hbox->addWidget(icCb); hbox->addStretch(); } else if (searchType == DateSearch) { QDateEdit * dateEdit = new QDateEdit(QDate::currentDate(), internalframe); dateEdit->setMinimumSize(DATE_FIELDS_MIN_WIDTH, FIELDS_MIN_HEIGHT); dateEdit->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); dateEdit->setDisplayFormat(tr("dd.MM.yyyy")); dateEdit->setObjectName("param1"); dateEdit->setMinimumDate(QDate(1970, 1, 1)); dateEdit->setMaximumDate(QDate(2099, 12,31)); hbox->addWidget(dateEdit, Qt::AlignLeft); hbox->addStretch(); } else if (searchType == SizeSearch) { QLineEdit * lineEdit = new QLineEdit(internalframe); lineEdit->setMinimumSize(SIZE_FIELDS_MIN_WIDTH, FIELDS_MIN_HEIGHT); lineEdit->setMaximumSize(SIZE_FIELDS_MIN_WIDTH, FIELDS_MIN_HEIGHT); lineEdit->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); lineEdit->setObjectName("param1"); lineEdit->setValidator(numValidator); hbox->addWidget(lineEdit, Qt::AlignLeft); QComboBox * cb = new QComboBox(internalframe); cb->setObjectName("unitsCb1"); cb-> addItem(tr("KB"), QVariant(1024)); cb->addItem(tr("MB"), QVariant(1048576)); cb->addItem(tr("GB"), QVariant(1073741824)); hbox->addSpacing(9); internalframe->layout()->addWidget(cb); hbox->addStretch(); } /* POP Search not implemented else if (searchType == PopSearch) { QLineEdit * lineEdit = new QLineEdit(elem); lineEdit->setObjectName("param1"); lineEdit->setValidator(numValidator); elem->layout()->addWidget(lineEdit); }*/ hbox->invalidate(); internalframe->adjustSize(); internalframe->show(); this->adjustSize(); }