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

List:       kde-commits
Subject:    KDE/kdepim/nepomuk_email_feeder
From:       Volker Krause <vkrause () kde ! org>
Date:       2009-11-05 15:32:50
Message-ID: 1257435170.739462.8130.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1045244 by vkrause:

Create one index per encryption key, when using encrypted indexes. Seems
to work, ie. we get one Nepomuk database per key, not actually encrypted
yet of course, that's next.


 M  +31 -4     messageanalyzer.cpp  
 M  +7 -0      messageanalyzer.h  


--- trunk/KDE/kdepim/nepomuk_email_feeder/messageanalyzer.cpp #1045243:1045244
@@ -30,6 +30,8 @@
 
 #include <messagecore/messagestatus.h>
 #include <messageviewer/objecttreeparser.h>
+#include <messageviewer/nodehelper.h>
+#include <messageviewer/partmetadata.h>
 
 #include <akonadi/item.h>
 
@@ -42,6 +44,8 @@
 #include <Nepomuk/Variant>
 #include <Nepomuk/Tag>
 
+#include <Soprano/Client/DBusClient>
+#include <Soprano/Client/DBusModel>
 #include <Soprano/Model>
 #include <Soprano/QueryResultIterator>
 #include <Soprano/Vocabulary/NAO>
@@ -53,7 +57,9 @@
   m_email( item.url(), graphUri ),
   m_graphUri( graphUri ),
   m_mainBodyPart( 0 ),
-  m_otp( 0 )
+  m_nodeHelper( new MessageViewer::NodeHelper ),
+  m_otp( 0 ),
+  m_mainModel( 0 )
 {
   NepomukFeederAgentBase::setParent( m_email, item );
   m_email.addProperty( Soprano::Vocabulary::NAO::hasSymbol(), Soprano::LiteralValue( \
"internet-mail" ) ); @@ -64,8 +70,8 @@
 
   if ( !msg->body().isEmpty() || !msg->contents().isEmpty() ) {
 
-    if ( Settings::self()->indexEncryptedContent() /* TODO != Settings::NoIndexing \
                */ == Settings::CleartextIndex ) {
-      m_otp = new MessageViewer::ObjectTreeParser( this );
+    if ( Settings::self()->indexEncryptedContent() != Settings::NoIndexing ) {
+      m_otp = new MessageViewer::ObjectTreeParser( this, m_nodeHelper );
       m_otp->setAllowAsync( true );
       m_otp->parseObjectTree( msg.get() );
     }
@@ -135,6 +141,23 @@
 
 void MessageAnalyzer::processPart(KMime::Content* content)
 {
+  bool resetModel = false;
+  if ( Settings::self()->indexEncryptedContent() == Settings::EncryptedIndex && \
!m_mainModel ) { +    const MessageViewer::PartMetaData metaData = \
m_nodeHelper->partMetaData( content ); +    kDebug() << content << \
metaData.isEncrypted << metaData.keyId; +    if ( metaData.isEncrypted && \
!metaData.keyId.isEmpty() ) { +      Soprano::Client::DBusClient dbusClient( \
"org.kde.nepomuk.services.nepomukstorage" ); +      Soprano::Model* cryptoModel = \
dbusClient.createModel( metaData.keyId ); +      if ( cryptoModel ) {
+        m_mainModel = Nepomuk::ResourceManager::instance()->mainModel();
+        Nepomuk::ResourceManager::instance()->setOverrideMainModel( cryptoModel );
+        resetModel = true;
+      } else {
+        kWarning() << "Could not obtain cryto index model";
+      }
+    }
+  }
+
   // multipart -> recurse
   if ( content->contentType()->isMultipart() ) {
     if ( content->contentType()->isSubtype( "encrypted" ) && \
Settings::self()->indexEncryptedContent() == Settings::NoIndexing ) @@ -146,7 +169,6 \
@@  
   // plain text main body part, we already dealt with that
   else if ( content == m_mainBodyPart ) {
-    return;
   }
 
   // non plain text main body part, let strigi figure out what to do about that
@@ -173,6 +195,11 @@
     m_email.addAttachment( attachment );
     m_parent->indexData( attachmentUrl, content->decodedContent(), \
m_item.modificationTime() );  }
+
+  if ( resetModel ) {
+    Nepomuk::ResourceManager::instance()->setOverrideMainModel( 0 );
+    m_mainModel = 0;
+  }
 }
 
 QList< NepomukFast::Contact > MessageAnalyzer::extractContactsFromMailboxes(const \
                KMime::Types::Mailbox::List& mbs, const QUrl&graphUri )
--- trunk/KDE/kdepim/nepomuk_email_feeder/messageanalyzer.h #1045243:1045244
@@ -35,7 +35,12 @@
 #include <KDE/KUrl>
 #include <QtCore/QObject>
 
+namespace Soprano {
+class Model;
+}
+
 namespace MessageViewer {
+class NodeHelper;
 class ObjectTreeParser;
 }
 
@@ -77,7 +82,9 @@
     NepomukFast::Email m_email;
     QUrl m_graphUri;
     KMime::Content *m_mainBodyPart;
+    MessageViewer::NodeHelper *m_nodeHelper;
     MessageViewer::ObjectTreeParser *m_otp;
+    Soprano::Model* m_mainModel;
 };
 
 #endif


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

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