37 #include "keyfiltermanager.h"
38 #include "tdeconfigbasedkeyfilter.h"
40 #include "cryptobackendfactory.h"
42 #include <tdeconfig.h>
44 #include <tqapplication.h>
46 #include <tqstringlist.h>
47 #include <tqvaluevector.h>
54 void operator()( T * item ) {
delete item; }
58 struct Kleo::KeyFilterManager::Private {
60 std::for_each( filters.begin(), filters.end(), Delete<KeyFilter>() );
64 TQValueVector<KeyFilter*> filters;
67 Kleo::KeyFilterManager * Kleo::KeyFilterManager::mSelf = 0;
69 Kleo::KeyFilterManager::KeyFilterManager( TQObject * parent,
const char * name )
70 : TQObject( parent, name ), d( 0 )
76 connect( tqApp, TQ_SIGNAL(aboutToQuit()), TQ_SLOT(deleteLater()) );
80 Kleo::KeyFilterManager::~KeyFilterManager() {
87 Kleo::KeyFilterManager * Kleo::KeyFilterManager::instance() {
89 mSelf =
new Kleo::KeyFilterManager();
93 const Kleo::KeyFilter * Kleo::KeyFilterManager::filterMatching(
const GpgME::Key & key )
const {
94 for ( TQValueVector<KeyFilter*>::const_iterator it = d->filters.begin() ; it != d->filters.end() ; ++it )
95 if ( (*it)->matches( key ) )
101 return left->specificity() > right->specificity();
104 void Kleo::KeyFilterManager::reload() {
107 TDEConfig * config = Kleo::CryptoBackendFactory::instance()->configObject();
110 const TQStringList groups = config->groupList().grep( TQRegExp(
"^Key Filter #\\d+$" ) );
111 for ( TQStringList::const_iterator it = groups.begin() ; it != groups.end() ; ++it ) {
112 const TDEConfigGroup cfg( config, *it );
113 d->filters.push_back(
new TDEConfigBasedKeyFilter( cfg ) );
115 std::stable_sort( d->filters.begin(), d->filters.end(), by_increasing_specificity );
118 #include "keyfiltermanager.moc"