[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