[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim
From: Tobias Koenig <tokoe () kde ! org>
Date: 2010-12-09 12:29:27
Message-ID: 20101209122927.40128AC8A5 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1204884 by tokoe:
Move the link/getLink methods to MessageCore::Util to
make them accessible from other mail components as well.
M +7 -32 messagecomposer/messagefactory.cpp
M +0 -2 messagecomposer/messagefactory.h
M +0 -2 messagecomposer/messagehelper.h
M +49 -0 messagecore/messagehelpers.cpp
M +21 -4 messagecore/messagehelpers.h
--- trunk/KDE/kdepim/messagecomposer/messagefactory.cpp #1204883:1204884
@@ -33,6 +33,7 @@
#include <kmime/kmime_dateformatter.h>
#include <KPIMUtils/Email>
#include <messagecore/mailinglist.h>
+#include <messagecore/messagehelpers.h>
#include <messagecore/stringutil.h>
#include "messagehelper.h"
#include "templateparser/templateparser.h"
@@ -287,7 +288,7 @@
applyCharset( msg );
- link( msg, m_id, Akonadi::MessageStatus::statusReplied() );
+ MessageCore::Util::addLinkInformation( msg, m_id, \
Akonadi::MessageStatus::statusReplied() ); if ( m_parentFolderId > 0 ) {
KMime::Headers::Generic *header = new KMime::Headers::Generic( "X-KMail-Fcc", \
msg.get(), QString::number( m_parentFolderId ), "utf-8" ); msg->setHeader( header );
@@ -369,7 +370,7 @@
applyCharset( msg );
- link( msg, m_id, Akonadi::MessageStatus::statusForwarded() );
+ MessageCore::Util::addLinkInformation( msg, m_id, \
Akonadi::MessageStatus::statusForwarded() ); msg->assemble();
return msg;
}
@@ -419,13 +420,13 @@
#else
kDebug() << "AKONADI PORT: Disabled code in " << Q_FUNC_INFO;
#endif
- link( fwdMsg, m_origId, Akonadi::MessageStatus::statusForwarded() );
+ MessageCore::Util::addLinkInformation( fwdMsg, m_origId, \
Akonadi::MessageStatus::statusForwarded() ); attachments << msgPart;
}
applyCharset( msg );
- link( msg, m_id, Akonadi::MessageStatus::statusForwarded() );
+ MessageCore::Util::addLinkInformation( msg, m_id, \
Akonadi::MessageStatus::statusForwarded() ); // msg->assemble();
return QPair< KMime::Message::Ptr, QList< KMime::Content* > >( msg, QList< \
KMime::Content* >() << attachments ); }
@@ -518,7 +519,7 @@
msg->setHeader( header );
msg->assemble();
- link( msg, m_id, Akonadi::MessageStatus::statusForwarded() );
+ MessageCore::Util::addLinkInformation( msg, m_id, \
Akonadi::MessageStatus::statusForwarded() ); return msg;
}
@@ -675,7 +676,7 @@
part->fromUnicodeString( QString::fromLatin1( fMsg->encodedContent() ) );
part->assemble();
- link( fMsg, m_origId, Akonadi::MessageStatus::statusForwarded() );
+ MessageCore::Util::addLinkInformation( fMsg, m_origId, \
Akonadi::MessageStatus::statusForwarded() ); digest->addContent( part );
}
digest->assemble();
@@ -822,33 +823,7 @@
return false;
}
-void MessageFactory::link( const KMime::Message::Ptr &msg, Akonadi::Item::Id id, \
const Akonadi::MessageStatus& aStatus )
-{
- Q_ASSERT( aStatus.isReplied() || aStatus.isForwarded() || aStatus.isDeleted() );
- QString message = msg->headerByType( "X-KMail-Link-Message" ) ? msg->headerByType( \
"X-KMail-Link-Message" )->asUnicodeString() : QString();
- if ( !message.isEmpty() )
- message += QChar::fromLatin1(',');
- QString type = msg->headerByType( "X-KMail-Link-Type" ) ? msg->headerByType( \
"X-KMail-Link-Type" )->asUnicodeString(): QString();
- if ( !type.isEmpty() )
- type += QChar::fromLatin1(',');
-
- message += QString::number( id );
- if ( aStatus.isReplied() )
- type += QString::fromLatin1("reply");
- else if ( aStatus.isForwarded() )
- type += QString::fromLatin1("forward");
- else if ( aStatus.isDeleted() )
- type += QString::fromLatin1("deleted");
-
- KMime::Headers::Generic *header = new KMime::Headers::Generic( \
"X-KMail-Link-Message", msg.get(), message, QString::fromLatin1("utf-8").toLatin1() \
);
- msg->setHeader( header );
-
- header = new KMime::Headers::Generic( "X-KMail-Link-Type", msg.get(), type, \
QString::fromLatin1("utf-8").toLatin1() );
- msg->setHeader( header );
-}
-
-
uint MessageFactory::identityUoid( const KMime::Message::Ptr &msg )
{
QString idString;
--- trunk/KDE/kdepim/messagecomposer/messagefactory.h #1204883:1204884
@@ -237,8 +237,6 @@
*/
static bool MDNMDNUnknownOption( KMime::Message::Ptr msg );
- static void link( const KMime::Message::Ptr &msg, Akonadi::Item::Id id, const \
Akonadi::MessageStatus& aStatus );
-
private:
/** @return the UOID of the identity for this message.
Searches the "x-kmail-identity" header and if that fails,
--- trunk/KDE/kdepim/messagecomposer/messagehelper.h #1204883:1204884
@@ -123,8 +123,6 @@
QList<Nepomuk::Tag> tagList(const Akonadi::Item &msg);
void setTagList( const Akonadi::Item &msg, const QList<Nepomuk::Tag> &tags );
#endif
-
- void link( const KMime::Message::Ptr &msg, const Akonadi::Item & item,const \
Akonadi::MessageStatus& aStatus ); }
--- trunk/KDE/kdepim/messagecore/messagehelpers.cpp #1204883:1204884
@@ -59,3 +59,52 @@
return messageId;
}
+
+void MessageCore::Util::addLinkInformation( const KMime::Message::Ptr &msg, \
Akonadi::Item::Id id, const Akonadi::MessageStatus &status ) +{
+ Q_ASSERT( status.isReplied() || status.isForwarded() || status.isDeleted() );
+
+ QString message = msg->headerByType( "X-KMail-Link-Message" ) ? msg->headerByType( \
"X-KMail-Link-Message" )->asUnicodeString() : QString(); + if ( !message.isEmpty() )
+ message += QChar::fromLatin1( ',' );
+
+ QString type = msg->headerByType( "X-KMail-Link-Type" ) ? msg->headerByType( \
"X-KMail-Link-Type" )->asUnicodeString(): QString(); + if ( !type.isEmpty() )
+ type += QChar::fromLatin1( ',' );
+
+ message += QString::number( id );
+ if ( status.isReplied() )
+ type += QLatin1String( "reply" );
+ else if ( status.isForwarded() )
+ type += QLatin1String( "forward" );
+
+ KMime::Headers::Generic *header = new KMime::Headers::Generic( \
"X-KMail-Link-Message", msg.get(), message, "utf-8" ); + msg->setHeader( header );
+
+ header = new KMime::Headers::Generic( "X-KMail-Link-Type", msg.get(), type, \
"utf-8" ); + msg->setHeader( header );
+}
+
+bool MessageCore::Util::getLinkInformation( const KMime::Message::Ptr &msg, \
Akonadi::Item::Id &id, Akonadi::MessageStatus &status ) +{
+ id = -1;
+ status = Akonadi::MessageStatus();
+
+ if ( !msg->headerByType( "X-KMail-Link-Message" ) || !msg->headerByType( \
"X-KMail-Link-Type" ) ) + return false;
+
+ const QStringList messages = msg->headerByType( "X-KMail-Link-Message" \
)->asUnicodeString().split( QLatin1Char( ',' ), QString::SkipEmptyParts ); + const \
QStringList types = msg->headerByType( "X-KMail-Link-Type" \
)->asUnicodeString().split( QLatin1Char( ',' ), QString::SkipEmptyParts ); + if ( \
messages.isEmpty() || types.isEmpty() ) + return false;
+
+ id = messages.first().toLongLong();
+
+ const QString type = types.first();
+ if ( type == QLatin1String( "reply" ) )
+ status.setReplied();
+ else if ( type == QLatin1String( "forward" ) )
+ status.setForwarded();
+
+ return true;
+}
--- trunk/KDE/kdepim/messagecore/messagehelpers.h #1204883:1204884
@@ -22,13 +22,11 @@
#include "messagecore_export.h"
+#include <akonadi/item.h>
+#include <akonadi/kmime/messagestatus.h>
#include <boost/shared_ptr.hpp>
#include <KMime/Message>
-namespace Akonadi {
-class Item;
-}
-
namespace MessageCore {
namespace Util {
@@ -52,6 +50,25 @@
* Get the message id as a string from the @p message.
*/
MESSAGECORE_EXPORT QString messageId( const KMime::Message::Ptr &message );
+
+ /**
+ * Adds private headers to the given @p message that links it to the original \
message. + *
+ * @param message The message to add the link information to.
+ * @param id The item id of the original message.
+ * @param status The status (replied or forwarded) that links the message to the \
original message. + */
+ MESSAGECORE_EXPORT void addLinkInformation( const KMime::Message::Ptr &message, \
Akonadi::Item::Id item, const Akonadi::MessageStatus &status ); +
+ /**
+ * Reads the private headers of the given @p message to extract link information \
to its original message. + *
+ * @param message The message to read the link information from.
+ * @param id Will contain the item id of the original message.
+ * @param status Will contain the status (replied or forwarded) that linked the \
message to the original message. + * @returns Whether the mail contains valid link \
information or not. + */
+ MESSAGECORE_EXPORT bool getLinkInformation( const KMime::Message::Ptr &message, \
Akonadi::Item::Id &id, Akonadi::MessageStatus &status ); }
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic