// // C++ Implementation: senderlistfilter // // Description: // // // Author: Ulrich Weigelt , (C) 2007 // // Copyright: See COPYING file that comes with this distribution // // #include "senderlistfilter.h" SenderListFilter::SenderListFilter() { //get the application config object config = TDEApplication::kApplication()->config(); //load the setup load(); } SenderListFilter::~SenderListFilter() { } FilterAction_Type SenderListFilter::check( TQString sender ) const { //return with none action if the given string is empty if( sender.isEmpty() ) return FActNone; //check the whitelist first if( search( whitelist, sender ) ) return FActPass; //check blacklist if( search( blacklist, sender ) ) return blacklistAction; //this is the default return FActNone; } void SenderListFilter::load( ) { //set group config->setGroup( CONFIG_GROUP_FILTER ); //get lists blacklist = config->readListEntry( CONFIG_ENTRY_FILTER_BLACKLIST ); whitelist = config->readListEntry( CONFIG_ENTRY_FILTER_WHITELIST ); //get blacklist action switch( config->readNumEntry( CONFIG_ENTRY_FILTER_BLACKLIST_ACTION, DEFAULT_FILTER_BLACKLIST_ACTION ) ) { case CONFIG_VALUE_FILTER_BLACKLIST_ACTION_DELETE : blacklistAction = FActDelete; break; case CONFIG_VALUE_FILTER_BLACKLIST_ACTION_MARK : blacklistAction = FActMark; break; default : blacklistAction = FActMark; break; } } bool SenderListFilter::search( TQStringList list, TQString sender ) const { //return with FALSE if the list or the search string are empty if( list.isEmpty() || sender.isEmpty() ) return false; //iterate over the list to search for the sender bool found = false; for( TQStringList::Iterator it = list.begin(); it != list.end() && found == false; ++it ) { if( sender.contains( *it, false ) || (*it).contains( sender, false ) ) found = true; } return found; } void SenderListFilter::print( ) { kdDebug() << "Blacklist:" << endl; for( TQStringList::Iterator it = blacklist.begin(); it != blacklist.end(); ++it ) { kdDebug() << *it << endl; } switch( blacklistAction ) { case FActDelete : kdDebug() << "Blacklist Action: DELETE" << endl; break; case FActMark : kdDebug() << "Blacklist Action: MARK " << endl; break; default : kdDebug() << "Blacklist Action: Unknown" << endl; break; } kdDebug() << endl; kdDebug() << "Whitelist:" << endl; for( TQStringList::Iterator it = whitelist.begin(); it != whitelist.end(); ++it ) { kdDebug() << *it << endl; } }