[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