[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdepim/kmail
From:       Marc Mutz <Marc.Mutz () uni-bielefeld ! de>
Date:       2004-11-23 21:32:58
Message-ID: 20041123213258.3165F18DB7 () office ! kde ! org
[Download RAW message or body]

CVS commit by mutz: 

From KDE_3_3_BRANCH: Fix Aegypten issue #278: KMail looks up recipient key during \
autosave.


  M +11 -7     keyresolver.cpp   1.11
  M +12 -2     keyresolver.h   1.5


--- kdepim/kmail/keyresolver.h  #1.4:1.5
@@ -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<GpgME::Key>(), e ),
+          signPref( s ), format( f ), needKeys( true ) {}
       Item( const QString & a, const std::vector<GpgME::Key> & 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.10:1.11
@@ -251,7 +251,9 @@ void Kleo::KeyResolver::SigningPreferenc
 
 class Kleo::KeyResolver::EncryptionPreferenceCounter : public \
std::unary_function<Item,void> { +  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 ),
@@ -286,4 +288,6 @@ private:
 
 void Kleo::KeyResolver::EncryptionPreferenceCounter::operator()( Item & item ) {
+  if ( item.needKeys )
+    item.keys = _this->getEncryptionKeys( item.address, true );
   if ( item.keys.empty() ) {
     ++mNoKey;
@@ -703,5 +707,5 @@ std::vector<Kleo::KeyResolver::Item> 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,
@@ -760,5 +764,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 ); @@ -778,5 +782,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
@@ -819,5 +823,5 @@ Kpgp::Result Kleo::KeyResolver::resolveE
 
   for ( std::vector<Item>::iterator it = d->mPrimaryEncryptionKeys.begin() ; it != \
                d->mPrimaryEncryptionKeys.end() ; ++it ) {
-    if ( !it->keys.empty() )
+    if ( !it->needKeys )
       continue;
     it->keys = getEncryptionKeys( it->address, false );
@@ -832,5 +836,5 @@ Kpgp::Result Kleo::KeyResolver::resolveE
 
   for ( std::vector<Item>::iterator it = d->mSecondaryEncryptionKeys.begin() ; it != \
                d->mSecondaryEncryptionKeys.end() ; ++it ) {
-    if ( !it->keys.empty() )
+    if ( !it->needKeys )
       continue;
     it->keys = getEncryptionKeys( it->address, false );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic