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.
kshowmail/kshowmail/senderlistfilter.cpp

103 lines
2.6 KiB

//
// C++ Implementation: senderlistfilter
//
// Description:
//
//
// Author: Ulrich Weigelt <ulrich.weigelt@gmx.de>, (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;
}
}