diff --git a/kmsearchpatternedit.cpp b/kmsearchpatternedit.cpp index 356549d33..28991ce97 100644 --- a/kmsearchpatternedit.cpp +++ b/kmsearchpatternedit.cpp @@ -14,6 +14,10 @@ #include #include +#include +#include +#include +#include static QStringList sFilterFieldList, sFilterFuncList; @@ -43,6 +47,15 @@ void KMSearchRuleWidget::initWidget() mRuleFunc = new QComboBox( false, this, "mRuleFunc" ); mRuleValue = new QLineEdit( this, "mRuleValue" ); + mRegExpEditDialog = KParts::ComponentFactory::createInstanceFromQuery("KRegExpEditor/KRegExpEditor", QString::null, this ); + if( mRegExpEditDialog ) + { + mRuleEditBut = new QPushButton( i18n("Edit"), this, "mRuleEditBut" ); + connect( mRuleEditBut, SIGNAL( clicked() ), this, SLOT( editRegExp())); + connect( mRuleFunc, SIGNAL( activated(int) ), this, SLOT( functionChanged(int) ) ); + functionChanged( mRuleFunc->currentItem() ); + } + mRuleFunc->insertStringList(sFilterFuncList); mRuleFunc->adjustSize(); @@ -57,6 +70,22 @@ void KMSearchRuleWidget::initWidget() this, SIGNAL(contentsChanged(const QString &)) ); } +void KMSearchRuleWidget::editRegExp() +{ + KRegExpEditorInterface *iface = dynamic_cast( mRegExpEditDialog ); + if( iface ) { + iface->setRegExp( mRuleValue->text() ); + if( mRegExpEditDialog->exec() == QDialog::Accepted ) + mRuleValue->setText( iface->regExp() ); + } +} + +void KMSearchRuleWidget::functionChanged( int which ) +{ + mRuleEditBut->setEnabled( which == 4 || which == 5 ); +} + + void KMSearchRuleWidget::setRule(KMSearchRule *aRule) { assert ( aRule ); diff --git a/kmsearchpatternedit.h b/kmsearchpatternedit.h index 065057c8c..6ff77ce70 100644 --- a/kmsearchpatternedit.h +++ b/kmsearchpatternedit.h @@ -75,6 +75,10 @@ protected: ComboBox. Returns the index if found or -1 if the search failed, */ int indexOfRuleField(const QString aName) const; +protected slots: + void editRegExp(); + void functionChanged( int which ); + private: void initWidget(); void initLists(bool headersOnly) const; @@ -82,6 +86,8 @@ private: QComboBox* mRuleField; QComboBox* mRuleFunc; QLineEdit* mRuleValue; + QPushButton* mRuleEditBut; + QDialog* mRegExpEditDialog; };