From kde-commits Tue Nov 23 21:30:53 2004 From: Marc Mutz Date: Tue, 23 Nov 2004 21:30:53 +0000 To: kde-commits Subject: KDE_3_3_BRANCH: kdepim/kmail Message-Id: <20041123213053.9AFFA18DAC () office ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=110124546016260 CVS commit by mutz: Fix Aegypten issue #278: KMail looks up recipient key during autosave. M +11 -7 keyresolver.cpp 1.7.2.4 M +12 -2 keyresolver.h 1.3.2.1 --- kdepim/kmail/keyresolver.h #1.3:1.3.2.1 @@ -139,13 +139,23 @@ namespace Kleo { struct Item : public KeyApprovalDialog::Item { - Item() : KeyApprovalDialog::Item() {} + Item() + : KeyApprovalDialog::Item(), + signPref( UnknownSigningPreference ), + format( AutoFormat ), + needKeys( true ) {} + Item( const QString & a, + EncryptionPreference e, SigningPreference s, + CryptoMessageFormat f ) + : KeyApprovalDialog::Item( a, std::vector(), e ), + signPref( s ), format( f ), needKeys( true ) {} Item( const QString & a, const std::vector & k, EncryptionPreference e, SigningPreference s, CryptoMessageFormat f ) : KeyApprovalDialog::Item( a, k, e ), - signPref( s ), format( f ) {} + signPref( s ), format( f ), needKeys( false ) {} SigningPreference signPref; CryptoMessageFormat format; + bool needKeys; }; --- kdepim/kmail/keyresolver.cpp #1.7.2.3:1.7.2.4 @@ -250,7 +250,9 @@ void Kleo::KeyResolver::SigningPreferenc class Kleo::KeyResolver::EncryptionPreferenceCounter : public std::unary_function { + const Kleo::KeyResolver * _this; public: - EncryptionPreferenceCounter( EncryptionPreference defaultPreference ) - : mDefaultPreference( defaultPreference ), + EncryptionPreferenceCounter( const Kleo::KeyResolver * kr, EncryptionPreference defaultPreference ) + : _this( kr ), + mDefaultPreference( defaultPreference ), mTotal( 0 ), mNoKey( 0 ), @@ -285,4 +287,6 @@ private: void Kleo::KeyResolver::EncryptionPreferenceCounter::operator()( Item & item ) { + if ( item.needKeys ) + item.keys = _this->getEncryptionKeys( item.address, true ); if ( item.keys.empty() ) { ++mNoKey; @@ -702,5 +706,5 @@ std::vector Kle ContactPreferences& pref = lookupContactPreferences( addr ); - items.push_back( Item( *it, getEncryptionKeys( *it, true ), + items.push_back( Item( *it, /*getEncryptionKeys( *it, true ),*/ pref.encryptionPreference, pref.signingPreference, @@ -759,5 +763,5 @@ Kleo::Action Kleo::KeyResolver::checkEnc return Impossible; - EncryptionPreferenceCounter count( mOpportunisticEncyption ? AskWheneverPossible : UnknownPreference ); + EncryptionPreferenceCounter count( this, mOpportunisticEncyption ? AskWheneverPossible : UnknownPreference ); count = std::for_each( d->mPrimaryEncryptionKeys.begin(), d->mPrimaryEncryptionKeys.end(), count ); @@ -777,5 +781,5 @@ Kleo::Action Kleo::KeyResolver::checkEnc std::for_each( d->mPrimaryEncryptionKeys.begin(), d->mPrimaryEncryptionKeys.end(), std::for_each( d->mSecondaryEncryptionKeys.begin(), d->mSecondaryEncryptionKeys.end(), - EncryptionPreferenceCounter( UnknownPreference ) ) ).numAlwaysAskForEncryption() ) + EncryptionPreferenceCounter( this, UnknownPreference ) ) ).numAlwaysAskForEncryption() ) return act; else @@ -818,5 +822,5 @@ Kpgp::Result Kleo::KeyResolver::resolveE for ( std::vector::iterator it = d->mPrimaryEncryptionKeys.begin() ; it != d->mPrimaryEncryptionKeys.end() ; ++it ) { - if ( !it->keys.empty() ) + if ( !it->needKeys ) continue; it->keys = getEncryptionKeys( it->address, false ); @@ -831,5 +835,5 @@ Kpgp::Result Kleo::KeyResolver::resolveE for ( std::vector::iterator it = d->mSecondaryEncryptionKeys.begin() ; it != d->mSecondaryEncryptionKeys.end() ; ++it ) { - if ( !it->keys.empty() ) + if ( !it->needKeys ) continue; it->keys = getEncryptionKeys( it->address, false );