You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
452 lines
20 KiB
452 lines
20 KiB
//
|
|
// C++ Implementation: filtersetupdialog
|
|
//
|
|
// Description:
|
|
//
|
|
//
|
|
// Author: Ulrich Weigelt <ulrich.weigelt@gmx.de>, (C) 2007
|
|
//
|
|
// Copyright: See COPYING file that comes with this distribution
|
|
//
|
|
//
|
|
#include "filtersetupdialog.h"
|
|
|
|
FilterSetupDialog::FilterSetupDialog( TQWidget* parent, FilterSetupItem* item )
|
|
: KDialogBase( parent, "FilterSetupDialog", true, TQString::null, Ok|Cancel, Ok, true )
|
|
{
|
|
//save pointer to account and view
|
|
filter = item;
|
|
|
|
//set caption
|
|
if( item != NULL )
|
|
if( item->getName() == DEFAULT_FILTER_NAME )
|
|
setCaption( i18n( "New filter" ) );
|
|
else
|
|
setCaption( i18n( "Edit filter" ) );
|
|
|
|
//create main widget and layout
|
|
TQWidget* pgMain = new TQWidget( this );
|
|
setMainWidget( pgMain );
|
|
TQVBoxLayout* layMain = new TQVBoxLayout( pgMain, 0, spacingHint() );
|
|
|
|
//create filter name widgets
|
|
TQHBoxLayout* layName = new TQHBoxLayout( layMain, spacingHint() );
|
|
TQLabel* lblName = new TQLabel( i18n( "Name:" ), pgMain, "lblName" );
|
|
layName->addWidget( lblName );
|
|
txtName = new KLineEdit( pgMain, "txtName" );
|
|
layName->addWidget( txtName );
|
|
|
|
//create group boxes and layouts for rules and action
|
|
TQGroupBox* gboxCriteria = new TQGroupBox( 0, TQt::Horizontal, i18n( "Filter Criterias" ), pgMain, "gboxCriteria" );
|
|
TQVBoxLayout* layCriteria = new TQVBoxLayout( gboxCriteria->layout(), spacingHint() );
|
|
layMain->addWidget( gboxCriteria );
|
|
|
|
TQGroupBox* gboxAction = new TQGroupBox( 0, TQt::Horizontal, i18n( "Filter Action" ), pgMain, "gboxAction" );
|
|
TQHBoxLayout* layAction = new TQHBoxLayout( gboxAction->layout(), spacingHint() );
|
|
layMain->addWidget( gboxAction );
|
|
|
|
//radio buttons to select the kind of linkage between filter criterias
|
|
TQHBoxLayout* layLinkage = new TQHBoxLayout( layCriteria, spacingHint(), "layLinkage" );
|
|
grpLinkage = new TQButtonGroup( NULL, "grpLinkage" );
|
|
|
|
TQRadioButton* btnMatchAll = new TQRadioButton( i18n( "Match all of the following" ), gboxCriteria, "btnMatchAll" );
|
|
TQRadioButton* btnMatchAny = new TQRadioButton( i18n( "Match any of the following" ), gboxCriteria, "btnMatchAny" );
|
|
grpLinkage->insert( btnMatchAll, ID_BUTTON_LINKAGE_MATCH_ALL );
|
|
grpLinkage->insert( btnMatchAny, ID_BUTTON_LINKAGE_MATCH_ANY );
|
|
layLinkage->addWidget( btnMatchAll );
|
|
layLinkage->addWidget( btnMatchAny );
|
|
|
|
switch( DEFAULT_FILTER_CRITERIA_LINKAGE )
|
|
{
|
|
case CONFIG_VALUE_FILTER_CRITERIA_LINKAGE_MATCH_ALL : grpLinkage->setButton( ID_BUTTON_LINKAGE_MATCH_ALL ); break;
|
|
case CONFIG_VALUE_FILTER_CRITERIA_LINKAGE_MATCH_ANY : grpLinkage->setButton( ID_BUTTON_LINKAGE_MATCH_ANY ); break;
|
|
default : grpLinkage->setButton( ID_BUTTON_LINKAGE_MATCH_ALL ); break;
|
|
}
|
|
|
|
//this widget holds one or more criterias (class FilterCriteriaWidget)
|
|
wdgCriteriasHolding = new TQWidget( gboxCriteria, "gboxCriteria" );
|
|
layCriteriasHolding = new TQVBoxLayout( wdgCriteriasHolding, 0, spacingHint(), "layCriteriasHolding" );
|
|
layCriteria->addWidget( wdgCriteriasHolding );
|
|
|
|
//buttons to add or remove criterias
|
|
TQHBoxLayout* layButtons = new TQHBoxLayout( layCriteria, spacingHint(), "layButtons" );
|
|
btnAddCriteria = new KPushButton( KGuiItem( i18n( "More" ), "button_more", i18n( "Add a further criteria." ) ), gboxCriteria, "btnAddCriteria" );
|
|
btnRemoveCriteria = new KPushButton( KGuiItem( i18n( "Fewer" ), "button_fewer", i18n( "Remove the last criteria." ) ), gboxCriteria, "btnRemoveCriteria" );
|
|
btnAddCriteria->setSizePolicy( TQSizePolicy::Maximum, TQSizePolicy::Fixed );
|
|
btnRemoveCriteria->setSizePolicy( TQSizePolicy::Maximum, TQSizePolicy::Fixed );
|
|
layButtons->addWidget( btnAddCriteria );
|
|
layButtons->addWidget( btnRemoveCriteria );
|
|
layButtons->addStretch();
|
|
connect( btnAddCriteria, TQ_SIGNAL( clicked() ), this, TQ_SLOT( slotAddCriteriaWidget() ) );
|
|
connect( btnRemoveCriteria, TQ_SIGNAL( clicked() ), this, TQ_SLOT( slotRemoveCriteriaWidget() ) );
|
|
|
|
//create combobox to select action
|
|
cmbAction = new KComboBox( gboxAction, "cmbAction" );
|
|
layAction->addWidget( cmbAction );
|
|
TQToolTip::add( cmbAction, i18n( "Choose the action for all mails which are filtered by this filter." ) );
|
|
connect( cmbAction, TQ_SIGNAL( activated( int ) ), this, TQ_SLOT( slotActionChanged( int ) ) );
|
|
|
|
//insert items
|
|
cmbAction->insertItem( i18n( "Show" ), ID_COMBO_FILTER_ACTION_PASS );
|
|
cmbAction->insertItem( i18n( "Delete" ), ID_COMBO_FILTER_ACTION_DELETE );
|
|
cmbAction->insertItem( i18n( "Mark" ), ID_COMBO_FILTER_ACTION_MARK );
|
|
cmbAction->insertItem( i18n( "Move" ), ID_COMBO_FILTER_ACTION_MOVE );
|
|
cmbAction->insertItem( i18n( "Spamcheck" ), ID_COMBO_FILTER_ACTION_SPAMCHECK );
|
|
cmbAction->insertItem( i18n( "Ignore" ), ID_COMBO_FILTER_ACTION_IGNORE );
|
|
|
|
//create edit line to defined the mailbox for move
|
|
txtMailbox = new KLineEdit( gboxAction );
|
|
layAction->addWidget( txtMailbox );
|
|
|
|
//create wizard button to configure mailbox
|
|
btnMailboxWizard= new KPushButton( KGuiItem( TQString::null, "wizard" ), gboxAction );
|
|
layAction->addWidget( btnMailboxWizard );
|
|
TQToolTip::add( btnMailboxWizard, i18n( "Choose the mailbox" ) );
|
|
connect( btnMailboxWizard, TQ_SIGNAL( clicked() ), this, TQ_SLOT( slotOpenMailBoxWizard() ) );
|
|
|
|
//set default action
|
|
switch( DEFAULT_FILTER_ACTION )
|
|
{
|
|
case CONFIG_VALUE_FILTER_ACTION_PASS : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_PASS ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_DELETE : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_DELETE ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_MARK : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_MARK ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_MOVE : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_MOVE ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_SPAMCHECK : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_SPAMCHECK ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_IGNORE : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_IGNORE ); break;
|
|
}
|
|
|
|
//enable or disable action widgets
|
|
slotActionChanged( cmbAction->currentItem() );
|
|
|
|
//this adds a first empty criteria widget at the dialog if the given setup item pointer is null
|
|
//(this means we want to create a new filter)
|
|
if( item == NULL )
|
|
{
|
|
slotAddCriteriaWidget();
|
|
}
|
|
|
|
//write values of the given filter into the dialog items
|
|
if( filter != NULL )
|
|
fillDialog();
|
|
}
|
|
|
|
|
|
FilterSetupDialog::~FilterSetupDialog()
|
|
{
|
|
}
|
|
|
|
void FilterSetupDialog::fillDialog( )
|
|
{
|
|
//check for valid pointer to the setup item
|
|
if( filter == NULL )
|
|
{
|
|
kdError() << "FilterSetupDialog::fillDialog: The given pointer to the filter setup item is NULL." << endl;
|
|
return;
|
|
}
|
|
|
|
//set filter name
|
|
txtName->setText( filter->getName() );
|
|
|
|
//set linkage
|
|
switch( filter->getCriteriaLinkage() )
|
|
{
|
|
case CONFIG_VALUE_FILTER_CRITERIA_LINKAGE_MATCH_ALL : grpLinkage->setButton( ID_BUTTON_LINKAGE_MATCH_ALL ); break;
|
|
case CONFIG_VALUE_FILTER_CRITERIA_LINKAGE_MATCH_ANY : grpLinkage->setButton( ID_BUTTON_LINKAGE_MATCH_ANY ); break;
|
|
default : kdError() << "FilterSetupDialog::fillDialog: The Filter Setup Item of filter " << filter->getName() << " has returned an invalid linkage value. Set default value." << endl;
|
|
switch( DEFAULT_FILTER_CRITERIA_LINKAGE )
|
|
{
|
|
case CONFIG_VALUE_FILTER_CRITERIA_LINKAGE_MATCH_ALL : grpLinkage->setButton( ID_BUTTON_LINKAGE_MATCH_ALL ); break;
|
|
case CONFIG_VALUE_FILTER_CRITERIA_LINKAGE_MATCH_ANY : grpLinkage->setButton( ID_BUTTON_LINKAGE_MATCH_ANY ); break;
|
|
default: kdError() << "FilterSetupDialog::fillDialog: The default value DEFAULT_FILTER_CRITERIA_LINKAGE in constants.h is also invalid. Set linkage to ALL." << endl;
|
|
grpLinkage->setButton( ID_BUTTON_LINKAGE_MATCH_ALL );
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
|
|
//set criterias
|
|
FilterCriteriaList_Type criteriaList = filter->getCriteriaList();
|
|
|
|
if( !criteriaList.empty() )
|
|
{
|
|
FilterCriteriaList_Type::iterator it;
|
|
for( it = criteriaList.begin(); it != criteriaList.end(); ++it )
|
|
{
|
|
//get source and condition
|
|
int source = (*it).source;
|
|
int condition = (*it).condition;
|
|
|
|
//depend on the source we add a numeric or text criteria
|
|
switch( source )
|
|
{
|
|
case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_FROM :
|
|
case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_TO :
|
|
case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SUBJECT :
|
|
case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_HEADER :
|
|
case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_ACCOUNT : addCriteriaWidget( source, condition, (*it).txtValue, (*it).cs ); break;
|
|
|
|
case CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SIZE : addCriteriaWidget( source, condition, (*it).numValue ); break;
|
|
default : kdError() << "FilterSetupDialog::fillDialog: The Filter Setup Item of filter " << filter->getName() << " has returned an invalid criteria. Add an empty criteria." << endl;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
//just add a empty criteria widget
|
|
slotAddCriteriaWidget();
|
|
|
|
|
|
//set action
|
|
switch( filter->getAction() )
|
|
{
|
|
case CONFIG_VALUE_FILTER_ACTION_PASS : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_PASS ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_DELETE : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_DELETE ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_MARK : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_MARK ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_MOVE : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_MOVE ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_IGNORE : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_IGNORE ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_SPAMCHECK : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_SPAMCHECK ); break;
|
|
default : kdError() << "FilterSetupDialog:: fillDialog: The Filter Setup Item of filter " << filter->getName() << " has returned an invalid action value. Set default value." << endl;
|
|
switch( DEFAULT_FILTER_ACTION )
|
|
{
|
|
case CONFIG_VALUE_FILTER_ACTION_PASS : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_PASS ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_DELETE : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_DELETE ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_MARK : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_MARK ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_MOVE : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_MOVE ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_IGNORE : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_IGNORE ); break;
|
|
case CONFIG_VALUE_FILTER_ACTION_SPAMCHECK : cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_SPAMCHECK ); break;
|
|
default: kdError() << "FilterSetupDialog::fillDialog: The default value DEFAULT_FILTER_ACTION in constants.h is also invalid. Set action to PASS." << endl;
|
|
cmbAction->setCurrentItem( ID_COMBO_FILTER_ACTION_PASS );
|
|
break;
|
|
}
|
|
}
|
|
|
|
//set mailbox name if action is MOVE
|
|
if( filter->getAction() == CONFIG_VALUE_FILTER_ACTION_MOVE )
|
|
txtMailbox->setText( filter->getMailBox() );
|
|
|
|
//enable or disable action widgets
|
|
slotActionChanged( cmbAction->currentItem() );
|
|
|
|
}
|
|
|
|
FilterCriteriaWidget* FilterSetupDialog::slotAddCriteriaWidget( )
|
|
{
|
|
//create a new widget
|
|
FilterCriteriaWidget* crit = new FilterCriteriaWidget( wdgCriteriasHolding );
|
|
crit->setHidden( false ); //the new widgets are hidden by default
|
|
|
|
//insert it into the layout
|
|
layCriteriasHolding->addWidget( crit );
|
|
|
|
//hide remove button if necessary
|
|
const TQObjectList* critList = wdgCriteriasHolding->children();
|
|
|
|
if( critList != NULL )
|
|
{
|
|
if( critList->count() <= 2 )
|
|
btnRemoveCriteria->setEnabled( false );
|
|
else
|
|
btnRemoveCriteria->setEnabled( true );
|
|
}
|
|
|
|
|
|
|
|
return crit;
|
|
}
|
|
|
|
void FilterSetupDialog::slotRemoveCriteriaWidget( )
|
|
{
|
|
//get a list of all criteria widgets
|
|
const TQObjectList* critList = wdgCriteriasHolding->children();
|
|
|
|
//return, if the pointer to the list is invalid
|
|
if( critList == NULL )
|
|
{
|
|
kdError() << "FilterSetupDialog::slotRemoveCriteriaWidget: No object found in the criteria widget holding." << endl;;
|
|
return;
|
|
}
|
|
|
|
//return, if the holding widget doesn't contain a criteria widget
|
|
//the count of children has to be greater than 2, because the layout is the first child
|
|
//and one criteria must always be present.
|
|
if( critList->count() <= 2 ) return;
|
|
|
|
//get iterator
|
|
TQObjectListIterator it( *critList );
|
|
|
|
//get last child
|
|
TQObject* obj = it.toLast();
|
|
|
|
//remove last child
|
|
if( obj->isA( "FilterCriteriaWidget" ) )
|
|
{
|
|
((TQWidget*)obj)->setHidden( true );
|
|
layCriteriasHolding->remove( (TQWidget*)obj );
|
|
wdgCriteriasHolding->removeChild( obj );
|
|
}
|
|
else
|
|
kdError() << "FilterSetupDialog::slotRemoveCriteriaWidget: the last object of the criteria widget holding is not a criteria widget." << endl;
|
|
|
|
//hide remove button if necessary
|
|
if( critList->count() <= 2 )
|
|
btnRemoveCriteria->setEnabled( false );
|
|
else
|
|
btnRemoveCriteria->setEnabled( true );
|
|
|
|
}
|
|
|
|
void FilterSetupDialog::addCriteriaWidget( int source, int condition, uint value )
|
|
{
|
|
//check source and condition
|
|
if( source != CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SIZE )
|
|
{
|
|
kdError() << "FilterSetupDialog::addCriteriaWidget: invalid source parameter." << endl;
|
|
return;
|
|
}
|
|
|
|
if( condition != CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_EQUAL &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_NOT_EQUAL &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_GREATER &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_GREATER_EQUAL &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_LESS &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_NUM_LESS_EQUAL )
|
|
{
|
|
kdError() << "FilterSetupDialog::addCriteriaWidget: invalid condition parameter." << endl;
|
|
return;
|
|
}
|
|
|
|
//create widget
|
|
FilterCriteriaWidget* crit = slotAddCriteriaWidget();
|
|
|
|
//set values
|
|
crit->setNumCriteria( source, condition, value );
|
|
}
|
|
|
|
void FilterSetupDialog::addCriteriaWidget( int source, int condition, TQString value, bool cs )
|
|
{
|
|
//check source and condition
|
|
if( source != CONFIG_VALUE_FILTER_CRITERIA_SOURCE_FROM &&
|
|
source != CONFIG_VALUE_FILTER_CRITERIA_SOURCE_TO &&
|
|
source != CONFIG_VALUE_FILTER_CRITERIA_SOURCE_SUBJECT &&
|
|
source != CONFIG_VALUE_FILTER_CRITERIA_SOURCE_HEADER &&
|
|
source != CONFIG_VALUE_FILTER_CRITERIA_SOURCE_ACCOUNT )
|
|
{
|
|
kdError() << "FilterSetupDialog::addCriteriaWidget: invalid source parameter." << endl;
|
|
return;
|
|
}
|
|
|
|
if( condition != CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_CONTAINS &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_CONTAINS &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_EQUALS &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_EQUALS &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_REGEXPR &&
|
|
condition != CONFIG_VALUE_FILTER_CRITERIA_COND_TEXT_NOT_REGEXPR )
|
|
{
|
|
kdError() << "FilterSetupDialog::addCriteriaWidget: invalid condition parameter." << endl;
|
|
return;
|
|
}
|
|
|
|
//create widget
|
|
FilterCriteriaWidget* crit = slotAddCriteriaWidget();
|
|
|
|
//set values
|
|
crit->setTextCriteria( source, condition, value, cs );
|
|
|
|
}
|
|
|
|
void FilterSetupDialog::slotOk()
|
|
{
|
|
|
|
//here we write the settings back to the filter setup item
|
|
|
|
//filter name
|
|
filter->setName( txtName->text() );
|
|
|
|
//linkage
|
|
switch( grpLinkage->selectedId() )
|
|
{
|
|
case ID_BUTTON_LINKAGE_MATCH_ALL : filter->setCriteriaLinkage( CONFIG_VALUE_FILTER_CRITERIA_LINKAGE_MATCH_ALL ); break;
|
|
case ID_BUTTON_LINKAGE_MATCH_ANY : filter->setCriteriaLinkage( CONFIG_VALUE_FILTER_CRITERIA_LINKAGE_MATCH_ANY ); break;
|
|
default : kdDebug() << "FilterSetupDialog::slotOk: Invalid linkage value. Set default value." << endl;
|
|
filter->setCriteriaLinkage( DEFAULT_FILTER_CRITERIA_LINKAGE ); break;
|
|
}
|
|
|
|
//action
|
|
switch( cmbAction->currentItem() )
|
|
{
|
|
case ID_COMBO_FILTER_ACTION_PASS : filter->setAction( CONFIG_VALUE_FILTER_ACTION_PASS ); break;
|
|
case ID_COMBO_FILTER_ACTION_DELETE : filter->setAction( CONFIG_VALUE_FILTER_ACTION_DELETE ); break;
|
|
case ID_COMBO_FILTER_ACTION_MARK : filter->setAction( CONFIG_VALUE_FILTER_ACTION_MARK ); break;
|
|
case ID_COMBO_FILTER_ACTION_MOVE : filter->setAction( CONFIG_VALUE_FILTER_ACTION_MOVE ); break;
|
|
case ID_COMBO_FILTER_ACTION_IGNORE : filter->setAction( CONFIG_VALUE_FILTER_ACTION_IGNORE ); break;
|
|
case ID_COMBO_FILTER_ACTION_SPAMCHECK : filter->setAction( CONFIG_VALUE_FILTER_ACTION_SPAMCHECK ); break;
|
|
default : kdDebug() << "FilterSetupDialog::slotOk: Invalid action value. Set default value." << endl;
|
|
filter->setAction( DEFAULT_FILTER_ACTION ); break;
|
|
}
|
|
|
|
//mailbox name if action is MOVE
|
|
if( cmbAction->currentItem() == ID_COMBO_FILTER_ACTION_MOVE )
|
|
filter->setMailBox( txtMailbox->text() );
|
|
|
|
//criteria widgets
|
|
|
|
//get list of all children of the criterias holding widget
|
|
const TQObjectList* children = wdgCriteriasHolding->children();
|
|
|
|
//get iterator of the list
|
|
TQObjectListIterator it( *children );
|
|
|
|
TQObject* obj; //current child object
|
|
FilterCriteriaList_Type critList; //list of criterias; will be give to the filter setup item
|
|
|
|
//iterate over the children list
|
|
while ( ( obj = it.current() ) != NULL )
|
|
{
|
|
//get next child
|
|
++it;
|
|
|
|
if( obj->isA( "FilterCriteriaWidget" ) ) //check for criteria object
|
|
{
|
|
//get the values of the criteria
|
|
FilterCriteria_Type crit = ( (FilterCriteriaWidget*)obj )->getValues();
|
|
|
|
//append the new criteria at the end of the criteria list
|
|
critList.push_back( crit );
|
|
}
|
|
}
|
|
|
|
//pass criteria list to filter setup item
|
|
filter->setCriteriaList( critList );
|
|
|
|
//call slot of super class to close the dialog
|
|
KDialogBase::slotOk();
|
|
}
|
|
|
|
void FilterSetupDialog::slotActionChanged( int index )
|
|
{
|
|
switch( index )
|
|
{
|
|
case ID_COMBO_FILTER_ACTION_MOVE : txtMailbox->setEnabled( true );
|
|
if( txtMailbox->text() == "" ) txtMailbox->setText( DEFAULT_FILTER_ACTION_MOVE_MAILBOX );
|
|
btnMailboxWizard->setHidden( false );
|
|
break;
|
|
default : txtMailbox->setEnabled( false );
|
|
btnMailboxWizard->setHidden( true );
|
|
break;
|
|
}
|
|
}
|
|
|
|
void FilterSetupDialog::slotOpenMailBoxWizard( )
|
|
{
|
|
MailBoxWizard wizard( this, "malboxwizard" );
|
|
wizard.setCaption( i18n( "Mailbox Select" ) );
|
|
int res = wizard.exec();
|
|
|
|
if( res == TQDialog::Accepted )
|
|
txtMailbox->setText( wizard.getPath() );
|
|
|
|
}
|
|
|
|
|
|
#include "filtersetupdialog.moc"
|