QString ExprParamElement::getStrSearchValue() { if (!isStringSearchExpression()) return ""; QLineEdit * lineEdit = qFindChild<QLineEdit*>(internalframe, "param1"); return lineEdit->displayText(); }
QString ExprConditionElement::toString() { if (isStringSearchExpression()) { return GuiExprElement::strConditionStrMap[cb->currentIndex()]; } return GuiExprElement::relConditionStrMap[cb->currentIndex()]; }
QString ExprConditionElement::toString() { QString str = ""; if (isStringSearchExpression()) { str = (*GuiExprElement::strConditionStrMap)[cb->currentIndex()]; } else { str = (*GuiExprElement::relConditionStrMap)[cb->currentIndex()]; } return str; }
QString ExprParamElement::toString() { QString str = ""; if (isStringSearchExpression()) { str = QString("\"") + getStrSearchValue() + QString("\""); // we don't bother with case if hash search if (searchType != HashSearch) { str += (ignoreCase() ? QString(" (ignore case)") : QString(" (case sensitive)")); } } else { if (searchType == DateSearch) { QDateEdit * dateEdit = qFindChild<QDateEdit *> (internalframe, "param1"); str = dateEdit->text(); if (inRangedConfig) { str += QString(" ") + tr("to") + QString(" "); dateEdit = qFindChild<QDateEdit *> (internalframe, "param2"); str += dateEdit->text(); } } else if (searchType == SizeSearch) { QLineEdit * lineEditSize = qFindChild<QLineEdit*>(internalframe, "param1"); str = ("" == lineEditSize->text()) ? "0" : lineEditSize->text(); QComboBox * cb = qFindChild<QComboBox*> (internalframe, "unitsCb1"); str += QString(" ") + cb->itemText(cb->currentIndex()); if (inRangedConfig) { str += QString(" ") + tr("to") + QString(" "); lineEditSize = qFindChild<QLineEdit*>(internalframe, "param2"); str += ("" == lineEditSize->text()) ? "0" : lineEditSize->text(); cb = qFindChild<QComboBox*> (internalframe, "unitsCb2"); str += QString(" ") + cb->itemText(cb->currentIndex()); } } } return str; }
Expression* ExpressionWidget::getRsExpression() { Expression * expr; std::list<std::string> wordList; int lowVal = 0; int highVal = 0; if (isStringSearchExpression()) { QString txt = exprParamElem->getStrSearchValue(); QStringList words = txt.split(" ", QString::SkipEmptyParts); for (int i = 0; i < words.size(); ++i) wordList.push_back(words.at(i).toStdString()); } else if (inRangedConfig){ // correct for reversed ranges to be nice to the user lowVal = exprParamElem->getIntLowValue(); highVal = exprParamElem->getIntHighValue(); if (lowVal >highVal) { lowVal = lowVal^highVal; highVal = lowVal^highVal; lowVal = lowVal^highVal; } } switch (searchType) { case NameSearch: expr = new NameExpression(exprCondElem->getStringOperator(), wordList, exprParamElem->ignoreCase()); break; case PathSearch: expr = new PathExpression(exprCondElem->getStringOperator(), wordList, exprParamElem->ignoreCase()); break; case ExtSearch: expr = new ExtExpression(exprCondElem->getStringOperator(), wordList, exprParamElem->ignoreCase()); break; case HashSearch: expr = new HashExpression(exprCondElem->getStringOperator(), wordList); break; case DateSearch: if (inRangedConfig) { expr = new DateExpression(exprCondElem->getRelOperator(), lowVal, highVal); } else { expr = new DateExpression(exprCondElem->getRelOperator(), exprParamElem->getIntValue()); } break; case PopSearch: if (inRangedConfig) { expr = new DateExpression(exprCondElem->getRelOperator(), lowVal, highVal); } else { expr = new DateExpression(exprCondElem->getRelOperator(), exprParamElem->getIntValue()); } break; case SizeSearch: if (inRangedConfig) { expr = new SizeExpression(exprCondElem->getRelOperator(), lowVal, highVal); } else { expr = new SizeExpression(exprCondElem->getRelOperator(), exprParamElem->getIntValue()); } break; }; return expr; }
bool ExprParamElement::ignoreCase() { return (isStringSearchExpression() && (qFindChild<QCheckBox*>(internalframe, "ignoreCaseCB")) ->checkState()==Qt::Checked); }
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(); }
Expression* ExpressionWidget::getRsExpression() { Expression * expr = NULL; std::list<std::string> wordList; uint64_t lowVal = 0; uint64_t highVal = 0; if (isStringSearchExpression()) { QString txt = exprParamElem->getStrSearchValue(); QStringList words = txt.split(" ", QString::SkipEmptyParts); for (int i = 0; i < words.size(); ++i) wordList.push_back(words.at(i).toUtf8().constData()); } else if (inRangedConfig){ // correct for reversed ranges to be nice to the user lowVal = exprParamElem->getIntLowValue(); highVal = exprParamElem->getIntHighValue(); if (lowVal >highVal) { lowVal = lowVal^highVal; // csoler: wow, that is some style! highVal = lowVal^highVal; lowVal = lowVal^highVal; } } switch (searchType) { case NameSearch: expr = new NameExpression(exprCondElem->getStringOperator(), wordList, exprParamElem->ignoreCase()); break; case PathSearch: expr = new PathExpression(exprCondElem->getStringOperator(), wordList, exprParamElem->ignoreCase()); break; case ExtSearch: expr = new ExtExpression(exprCondElem->getStringOperator(), wordList, exprParamElem->ignoreCase()); break; case HashSearch: expr = new HashExpression(exprCondElem->getStringOperator(), wordList); break; case DateSearch: if (inRangedConfig) { expr = new DateExpression(exprCondElem->getRelOperator(), checkedConversion(lowVal), checkedConversion(highVal)); } else { expr = new DateExpression(exprCondElem->getRelOperator(), checkedConversion(exprParamElem->getIntValue())); } break; case PopSearch: if (inRangedConfig) { expr = new DateExpression(exprCondElem->getRelOperator(), checkedConversion(lowVal), checkedConversion(highVal)); } else { expr = new DateExpression(exprCondElem->getRelOperator(), checkedConversion(exprParamElem->getIntValue())); } break; case SizeSearch: if (inRangedConfig) { if(lowVal >= (uint64_t)(1024*1024*1024) || highVal >= (uint64_t)(1024*1024*1024)) expr = new SizeExpressionMB(exprCondElem->getRelOperator(), (int)(lowVal / (1024*1024)), (int)(highVal / (1024*1024))); else expr = new SizeExpression(exprCondElem->getRelOperator(), lowVal, highVal); } else { uint64_t s = exprParamElem->getIntValue() ; if(s >= (uint64_t)(1024*1024*1024)) expr = new SizeExpressionMB(exprCondElem->getRelOperator(), (int)(s/(1024*1024))) ; else expr = new SizeExpression(exprCondElem->getRelOperator(), (int)s) ; } break; }; return expr; }