20 #include "messagemodel.h"
21 #include "messageparts.h"
23 #include <akonadi/itemfetchscope.h>
24 #include <akonadi/monitor.h>
25 #include <akonadi/session.h>
27 #include <kmime/kmime_message.h>
28 #include <boost/shared_ptr.hpp>
29 typedef boost::shared_ptr<KMime::Message> MessagePtr;
34 #include <klocalizedstring.h>
36 #include <QtCore/QDebug>
38 using namespace Akonadi;
40 class Akonadi::MessageModel::Private
60 << QLatin1String(
"text/uri-list")
61 << QLatin1String(
"message/rfc822");
67 && !
collection().contentMimeTypes().contains( QLatin1String(
"message/rfc822") )
68 &&
collection().contentMimeTypes() != QStringList( QLatin1String(
"inode/directory") ) )
71 return ItemModel::rowCount();
77 && !
collection().contentMimeTypes().contains( QLatin1String(
"message/rfc822") )
78 &&
collection().contentMimeTypes() != QStringList( QLatin1String(
"inode/directory") ) )
81 if ( !parent.isValid() )
89 if ( !index.isValid() )
95 if ( role == Qt::DisplayRole )
96 return i18nc(
"@label",
"This model can only handle email folders. The current collection holds mimetypes: %1",
97 collection().contentMimeTypes().join( QLatin1String(
",") ) );
105 MessagePtr msg = item.
payload<MessagePtr>();
106 if ( role == Qt::DisplayRole ) {
107 switch ( index.column() ) {
109 return msg->subject()->asUnicodeString();
111 return msg->from()->asUnicodeString();
113 return msg->to()->asUnicodeString();
115 return KGlobal::locale()->formatDateTime( msg->date()->dateTime().toLocalZone(), KLocale::FancyLongDate );
117 if ( item.
size() == 0 )
118 return i18nc(
"@label No size available",
"-" );
120 return KGlobal::locale()->formatByteSize( item.
size() );
124 }
else if ( role == Qt::EditRole ) {
125 switch ( index.column() ) {
127 return msg->subject()->asUnicodeString();
129 return msg->from()->asUnicodeString();
131 return msg->to()->asUnicodeString();
133 return msg->date()->dateTime().dateTime();
140 return ItemModel::data( index, role );
147 && !
collection().contentMimeTypes().contains( QLatin1String(
"message/rfc822") )
148 &&
collection().contentMimeTypes() != QStringList( QLatin1String(
"inode/directory") ) )
151 if ( orientation == Qt::Horizontal && role == Qt::DisplayRole ) {
154 return i18nc(
"@title:column, message (e.g. email) subject",
"Subject" );
156 return i18nc(
"@title:column, sender of message (e.g. email)",
"Sender" );
158 return i18nc(
"@title:column, receiver of message (e.g. email)",
"Receiver" );
160 return i18nc(
"@title:column, message (e.g. email) timestamp",
"Date" );
162 return i18nc(
"@title:column, message (e.g. email) size",
"Size" );
167 return ItemModel::headerData( section, orientation, role );