00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "filtercriteriawidget.h"
00019 #include <kmimetype.h>
00020
00021 FilterCriteriaWidget::FilterCriteriaWidget( QWidget *parent )
00022 : QWidget( parent )
00023 {
00024
00025
00026 setObjectName( FILTER_CRITERIA_WIDGET_NAME );
00027
00028
00029 QVBoxLayout* layMain = new QVBoxLayout();
00030 this->setLayout( layMain );
00031
00032
00033 QHBoxLayout* layLine1 = new QHBoxLayout();
00034 QHBoxLayout* layLine2 = new QHBoxLayout();
00035 layMain->addLayout( layLine1 );
00036 layMain->addLayout( layLine2 );
00037
00038
00039 cmbSource = new KComboBox( this );
00040 cmbSource->insertItem( ID_COMBO_SOURCE_FROM, i18nc( "@item:inlistbox the sender of the mail", "From" ) );
00041 cmbSource->insertItem( ID_COMBO_SOURCE_TO, i18nc( "@item:inlistbox The addressee of the mail", "To" ) );
00042 cmbSource->insertItem( ID_COMBO_SOURCE_SIZE, i18nc( "@item:inlistbox the mail subject", "Size (Bytes)" ) );
00043 cmbSource->insertItem( ID_COMBO_SOURCE_SUBJECT, i18nc( "@item:inlistbox the mail subject", "Subject" ) );
00044 cmbSource->insertItem( ID_COMBO_SOURCE_HEADER, i18nc( "@item:inlistbox the mail header", "Header" ) );
00045 cmbSource->insertItem( ID_COMBO_SOURCE_ACCOUNT, i18nc( "@item:inlistbox the account which contains this mail", "Account" ) );
00046 layLine1->addWidget( cmbSource );
00047 connect( cmbSource, SIGNAL( activated( int ) ), this, SLOT( slotSetWidgets() ) );
00048
00049 switch( DEFAULT_FILTER_CRITERIA_SOURCE )
00050 {
00051 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_FROM : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_FROM ); break;
00052 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_TO : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_TO ); break;
00053 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SIZE : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_SIZE ); break;
00054 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SUBJECT : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_SUBJECT ); break;
00055 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_HEADER : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_HEADER ); break;
00056 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_ACCOUNT : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_ACCOUNT ); break;
00057 default : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_FROM ); break;
00058 }
00059
00060
00061 cmbConditionText = new KComboBox( this );
00062 cmbConditionText->insertItem( ID_COMBO_COND_TEXT_CONTAINS, i18n( "contains" ) );
00063 cmbConditionText->insertItem( ID_COMBO_COND_TEXT_NOT_CONTAINS, i18n( "does not contain" ) );
00064 cmbConditionText->insertItem( ID_COMBO_COND_TEXT_EQUALS, i18n( "equals" ) );
00065 cmbConditionText->insertItem( ID_COMBO_COND_TEXT_NOT_EQUALS, i18n( "does not equal" ) );
00066 cmbConditionText->insertItem( ID_COMBO_COND_TEXT_REGEXPR, i18n( "matches regular expression" ) );
00067 cmbConditionText->insertItem( ID_COMBO_COND_TEXT_NOT_REGEXPR, i18n( "does not match reg. expr." ) );
00068 layLine1->addWidget( cmbConditionText );
00069 connect( cmbConditionText, SIGNAL( activated( int ) ), this, SLOT( slotSetWidgets() ) );
00070
00071 switch( DEFAULT_FILTER_CRITERIA_COND_TEXT )
00072 {
00073 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_CONTAINS : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_CONTAINS );break;
00074 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_CONTAINS : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_CONTAINS );break;
00075 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_EQUALS : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_EQUALS );break;
00076 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_EQUALS : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_EQUALS );break;
00077 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_REGEXPR : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_REGEXPR );break;
00078 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_REGEXPR : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_REGEXPR );break;
00079 default : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_CONTAINS ); break;
00080 }
00081
00082
00083 cmbConditionTextList = new KComboBox( this );
00084 cmbConditionTextList->insertItem( ID_COMBO_COND_TEXT_CONTAINS, i18n( "some line contains" ) );
00085 cmbConditionTextList->insertItem( ID_COMBO_COND_TEXT_NOT_CONTAINS, i18n( "no line contains" ) );
00086 cmbConditionTextList->insertItem( ID_COMBO_COND_TEXT_EQUALS, i18n( "some line equals" ) );
00087 cmbConditionTextList->insertItem( ID_COMBO_COND_TEXT_NOT_EQUALS, i18n( "no line equals" ) );
00088 cmbConditionTextList->insertItem( ID_COMBO_COND_TEXT_REGEXPR, i18n( "some line matches reg. expr." ) );
00089 cmbConditionTextList->insertItem( ID_COMBO_COND_TEXT_NOT_REGEXPR, i18n( "no line matches reg. expr." ) );
00090 layLine1->addWidget( cmbConditionTextList );
00091 connect( cmbConditionTextList, SIGNAL( activated( int ) ), this, SLOT( slotSetWidgets() ) );
00092
00093 switch( DEFAULT_FILTER_CRITERIA_COND_TEXT )
00094 {
00095 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_CONTAINS : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_CONTAINS );break;
00096 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_CONTAINS : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_CONTAINS );break;
00097 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_EQUALS : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_EQUALS );break;
00098 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_EQUALS : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_EQUALS );break;
00099 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_REGEXPR : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_REGEXPR );break;
00100 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_REGEXPR : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_REGEXPR );break;
00101 default : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_CONTAINS ); break;
00102 }
00103
00104 cmbConditionNum = new KComboBox( this );
00105 cmbConditionNum->insertItem( ID_COMBO_COND_NUM_EQUAL, i18n( "is equal to" ) );
00106 cmbConditionNum->insertItem( ID_COMBO_COND_NUM_NOT_EQUAL, i18n( "is not equal to" ) );
00107 cmbConditionNum->insertItem( ID_COMBO_COND_NUM_GREATER, i18n( "is greater than" ) );
00108 cmbConditionNum->insertItem( ID_COMBO_COND_NUM_GREATER_EQUAL, i18n( "is greater than or equal to" ) );
00109 cmbConditionNum->insertItem( ID_COMBO_COND_NUM_LESS, i18n( "is less than" ) );
00110 cmbConditionNum->insertItem( ID_COMBO_COND_NUM_LESS_EQUAL, i18n( "is less than or equal to" ) );
00111 layLine1->addWidget( cmbConditionNum );
00112
00113 switch( DEFAULT_FILTER_CRITERIA_COND_NUM )
00114 {
00115 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_EQUAL : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_EQUAL ); break;
00116 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_NOT_EQUAL : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_NOT_EQUAL ); break;
00117 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_GREATER : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_GREATER ); break;
00118 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_GREATER_EQUAL : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_GREATER_EQUAL ); break;
00119 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_LESS : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_LESS ); break;
00120 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_LESS_EQUAL : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_LESS_EQUAL ); break;
00121 default : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_EQUAL ); break;
00122 }
00123
00124
00125 txtCompValueText = new KLineEdit( this );
00126 txtCompValueText->setMinimumWidth( WIDTH_FILTER_TEXT_VALUE_LINE );
00127 layLine1->addWidget( txtCompValueText );
00128
00129 spbCompValueNum = new KIntNumInput( DEFAULT_FILTER_CRITERIA_SIZE, this, 10 );
00130 spbCompValueNum->setMinimum( 0 );
00131 spbCompValueNum->setSuffix( " Bytes" );
00132 layLine1->addWidget( spbCompValueNum );
00133
00134
00135 btnOpenRegExpEditor = new KPushButton( KGuiItem( "", "tools-wizard", "Edit Regular Expression" ), this );
00136 layLine1->addWidget( btnOpenRegExpEditor );
00137 connect( btnOpenRegExpEditor, SIGNAL( clicked() ), this, SLOT( slotOpenRegExpEditor() ) );
00138
00139
00140 kRegExpEditorAvailable = !KServiceTypeTrader::self()->query( "KRegExpEditor/KRegExpEditor" ).isEmpty();
00141
00142
00143 chkCaseSensitive = new QCheckBox( i18n( "Case sensitive" ), this );
00144 chkCaseSensitive->setChecked( DEFAULT_FILTER_CRITERIA_CASE_SENSITIVE );
00145 layLine2->addWidget( chkCaseSensitive );
00146
00147
00148 layMain->addWidget( new KSeparator( this ) );
00149
00150
00151 slotSetWidgets();
00152 }
00153
00154
00155 FilterCriteriaWidget::~FilterCriteriaWidget()
00156 {
00157 }
00158
00159 void FilterCriteriaWidget::slotSetWidgets( )
00160 {
00161 switch( cmbSource->currentIndex() )
00162 {
00163 case ID_COMBO_SOURCE_FROM : cmbConditionNum->setHidden( true );
00164 spbCompValueNum->setHidden( true );
00165 cmbConditionText->setHidden( false );
00166 txtCompValueText->setHidden( false );
00167 chkCaseSensitive->setHidden( false );
00168 cmbConditionTextList->setHidden( true );
00169 break;
00170 case ID_COMBO_SOURCE_TO : cmbConditionNum->setHidden( true );
00171 spbCompValueNum->setHidden( true );
00172 cmbConditionText->setHidden( false );
00173 txtCompValueText->setHidden( false );
00174 chkCaseSensitive->setHidden( false );
00175 cmbConditionTextList->setHidden( true );
00176 break;
00177 case ID_COMBO_SOURCE_SIZE : cmbConditionNum->setHidden( false );
00178 spbCompValueNum->setHidden( false );
00179 cmbConditionText->setHidden( true );
00180 txtCompValueText->setHidden( true );
00181 chkCaseSensitive->setHidden( true );
00182 cmbConditionTextList->setHidden( true );
00183 break;
00184 case ID_COMBO_SOURCE_SUBJECT : cmbConditionNum->setHidden( true );
00185 spbCompValueNum->setHidden( true );
00186 cmbConditionText->setHidden( false );
00187 txtCompValueText->setHidden( false );
00188 chkCaseSensitive->setHidden( false );
00189 cmbConditionTextList->setHidden( true );
00190 break;
00191 case ID_COMBO_SOURCE_HEADER : cmbConditionNum->setHidden( true );
00192 spbCompValueNum->setHidden( true );
00193 cmbConditionText->setHidden( true );
00194 txtCompValueText->setHidden( false );
00195 chkCaseSensitive->setHidden( false );
00196 cmbConditionTextList->setHidden( false );
00197 break;
00198 case ID_COMBO_SOURCE_ACCOUNT : cmbConditionNum->setHidden( true );
00199 spbCompValueNum->setHidden( true );
00200 cmbConditionText->setHidden( false );
00201 txtCompValueText->setHidden( false );
00202 chkCaseSensitive->setHidden( false );
00203 cmbConditionTextList->setHidden( true );
00204 break;
00205 default: cmbConditionNum->setHidden( true );
00206 spbCompValueNum->setHidden( true );
00207 cmbConditionText->setHidden( false );
00208 txtCompValueText->setHidden( false );
00209 chkCaseSensitive->setHidden( false );
00210 cmbConditionTextList->setHidden( true );
00211 break;
00212 }
00213
00214
00215 if( ( !cmbConditionText->isHidden() && ( cmbConditionText->currentIndex() == ID_COMBO_COND_TEXT_REGEXPR || cmbConditionText->currentIndex() == ID_COMBO_COND_TEXT_NOT_REGEXPR ) ) ||
00216 ( !cmbConditionTextList->isHidden() && ( cmbConditionTextList->currentIndex() == ID_COMBO_COND_TEXT_REGEXPR || cmbConditionTextList->currentIndex() == ID_COMBO_COND_TEXT_NOT_REGEXPR ) ) )
00217 {
00218 if( kRegExpEditorAvailable )
00219 btnOpenRegExpEditor->setHidden( false );
00220
00221
00222 chkCaseSensitive->setHidden( true );
00223 }
00224 else
00225 {
00226 btnOpenRegExpEditor->setHidden( true );
00227 }
00228 }
00229
00230 void FilterCriteriaWidget::slotOpenRegExpEditor( )
00231 {
00232 QDialog* editorDialog = KServiceTypeTrader::createInstanceFromQuery<QDialog>( "KRegExpEditor/KRegExpEditor" );
00233
00234 if( editorDialog != NULL )
00235 {
00236
00237 KRegExpEditorInterface* editor = qobject_cast< KRegExpEditorInterface* >( editorDialog );
00238 if( editor == NULL )
00239 {
00240 KMessageBox::error( this, i18n( "The Regular Expression Editor could not be initialized." ) );
00241 return;
00242 }
00243
00244
00245 editor->setRegExp( txtCompValueText->text() );
00246
00247
00248 if( editorDialog->exec() == QDialog::Accepted )
00249 txtCompValueText->setText( editor->regExp() );
00250
00251
00252 delete editorDialog;
00253 }
00254 else
00255 KMessageBox::error( this, i18n( "The Regular Expression Editor is not available." ) );
00256
00257 }
00258
00259 void FilterCriteriaWidget::setNumCriteria( int source, int condition, uint value )
00260 {
00261
00262 switch( source )
00263 {
00264 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SIZE : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_SIZE ); break;
00265 default : kdError() << "FilterCriteriaWidget::setNumCriteria: invalid source parameter." << endl;
00266 return;
00267 }
00268
00269
00270 slotSetWidgets();
00271
00272
00273 switch( condition )
00274 {
00275 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_EQUAL : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_EQUAL ); break;
00276 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_NOT_EQUAL : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_NOT_EQUAL ); break;
00277 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_GREATER : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_GREATER ); break;
00278 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_GREATER_EQUAL : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_GREATER_EQUAL ); break;
00279 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_LESS : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_LESS ); break;
00280 case CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_LESS_EQUAL : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_LESS_EQUAL ); break;
00281 default : cmbConditionNum->setCurrentIndex( ID_COMBO_COND_NUM_EQUAL ); break;
00282 }
00283
00284
00285 spbCompValueNum->setValue( value );
00286
00287
00288 slotSetWidgets();
00289 }
00290
00291 void FilterCriteriaWidget::setTextCriteria( int source, int condition, QString value, bool cs )
00292 {
00293
00294 switch( source )
00295 {
00296 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_FROM : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_FROM ); break;
00297 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_TO : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_TO ); break;
00298 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SUBJECT : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_SUBJECT ); break;
00299 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_ACCOUNT : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_ACCOUNT ); break;
00300 default : kdError() << "FilterCriteriaWidget::setTextCriteria: invalid source parameter." << endl;
00301 return;
00302 }
00303
00304
00305 switch( condition )
00306 {
00307 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_CONTAINS : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_CONTAINS );break;
00308 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_CONTAINS : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_CONTAINS );break;
00309 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_EQUALS : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_EQUALS );break;
00310 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_EQUALS : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_EQUALS );break;
00311 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_REGEXPR : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_REGEXPR );break;
00312 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_REGEXPR : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_REGEXPR );break;
00313 default : cmbConditionText->setCurrentIndex( ID_COMBO_COND_TEXT_CONTAINS ); break;
00314 }
00315
00316
00317 txtCompValueText->setText( value );
00318
00319
00320 chkCaseSensitive->setChecked( cs );
00321
00322
00323 slotSetWidgets();
00324
00325 }
00326
00327 void FilterCriteriaWidget::setTextListCriteria( int source, int condition, QString value, bool cs )
00328 {
00329
00330 switch( source )
00331 {
00332 case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_HEADER : cmbSource->setCurrentIndex( ID_COMBO_SOURCE_HEADER ); break;
00333 default : kdError() << "FilterCriteriaWidget::setTextListCriteria: invalid source parameter." << endl;
00334 return;
00335 }
00336
00337
00338 switch( condition )
00339 {
00340 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_CONTAINS : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_CONTAINS );break;
00341 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_CONTAINS : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_CONTAINS );break;
00342 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_EQUALS : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_EQUALS );break;
00343 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_EQUALS : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_EQUALS );break;
00344 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_REGEXPR : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_REGEXPR );break;
00345 case CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_REGEXPR : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_NOT_REGEXPR );break;
00346 default : cmbConditionTextList->setCurrentIndex( ID_COMBO_COND_TEXT_CONTAINS ); break;
00347 }
00348
00349
00350 txtCompValueText->setText( value );
00351
00352
00353 chkCaseSensitive->setChecked( cs );
00354
00355
00356 slotSetWidgets();
00357
00358 }
00359
00360 FilterCriteria_Type FilterCriteriaWidget::getValues()
00361 {
00362 FilterCriteria_Type crit;
00363
00364 switch( cmbSource->currentIndex() )
00365 {
00366 case ID_COMBO_SOURCE_FROM : crit.source = CONFIG_VALUE_FILTER_CRITERIA_SOURCE_FROM; break;
00367 case ID_COMBO_SOURCE_TO : crit.source = CONFIG_VALUE_FILTER_CRITERIA_SOURCE_TO; break;
00368 case ID_COMBO_SOURCE_SIZE : crit.source = CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SIZE; break;
00369 case ID_COMBO_SOURCE_SUBJECT : crit.source = CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SUBJECT; break;
00370 case ID_COMBO_SOURCE_HEADER : crit.source = CONFIG_VALUE_FILTER_CRITERIA_SOURCE_HEADER; break;
00371 case ID_COMBO_SOURCE_ACCOUNT : crit.source = CONFIG_VALUE_FILTER_CRITERIA_SOURCE_ACCOUNT; break;
00372 default : crit.source = 99; break;
00373 }
00374
00375 if( crit.source == CONFIG_VALUE_FILTER_CRITERIA_SOURCE_FROM ||
00376 crit.source == CONFIG_VALUE_FILTER_CRITERIA_SOURCE_TO ||
00377 crit.source == CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SUBJECT ||
00378 crit.source == CONFIG_VALUE_FILTER_CRITERIA_SOURCE_ACCOUNT )
00379 {
00380 switch( cmbConditionText->currentIndex() )
00381 {
00382 case ID_COMBO_COND_TEXT_CONTAINS : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_CONTAINS; break;
00383 case ID_COMBO_COND_TEXT_NOT_CONTAINS : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_CONTAINS; break;
00384 case ID_COMBO_COND_TEXT_EQUALS : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_EQUALS; break;
00385 case ID_COMBO_COND_TEXT_NOT_EQUALS : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_EQUALS; break;
00386 case ID_COMBO_COND_TEXT_REGEXPR : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_REGEXPR; break;
00387 case ID_COMBO_COND_TEXT_NOT_REGEXPR : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_REGEXPR; break;
00388 default : crit.condition = 99; break;
00389 }
00390 } else if( crit.source == CONFIG_VALUE_FILTER_CRITERIA_SOURCE_HEADER )
00391 {
00392 switch( cmbConditionTextList->currentIndex() )
00393 {
00394 case ID_COMBO_COND_TEXT_CONTAINS : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_CONTAINS; break;
00395 case ID_COMBO_COND_TEXT_NOT_CONTAINS : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_CONTAINS; break;
00396 case ID_COMBO_COND_TEXT_EQUALS : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_EQUALS; break;
00397 case ID_COMBO_COND_TEXT_NOT_EQUALS : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_EQUALS; break;
00398 case ID_COMBO_COND_TEXT_REGEXPR : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_REGEXPR; break;
00399 case ID_COMBO_COND_TEXT_NOT_REGEXPR : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_REGEXPR; break;
00400 default : crit.condition = 99; break;
00401 }
00402 } else if ( crit.source == CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SIZE )
00403 {
00404 switch( cmbConditionNum->currentIndex() )
00405 {
00406 case ID_COMBO_COND_NUM_EQUAL : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_EQUAL; break;
00407 case ID_COMBO_COND_NUM_NOT_EQUAL : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_NOT_EQUAL; break;
00408 case ID_COMBO_COND_NUM_GREATER : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_GREATER; break;
00409 case ID_COMBO_COND_NUM_GREATER_EQUAL : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_GREATER_EQUAL; break;
00410 case ID_COMBO_COND_NUM_LESS : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_LESS; break;
00411 case ID_COMBO_COND_NUM_LESS_EQUAL : crit.condition = CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_LESS_EQUAL; break;
00412 default : crit.condition = 99;
00413 }
00414 } else
00415 crit.condition = 99;
00416
00417 crit.txtValue = txtCompValueText->text();
00418 crit.numValue = spbCompValueNum->value();
00419 crit.cs = chkCaseSensitive->isChecked();
00420
00421 return crit;
00422 }
00423
00424
00425 #include "filtercriteriawidget.moc"