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;
35 #include <QtCore/QDebug>
37 using namespace Akonadi;
39 class Akonadi::MessageModel::Private
59 << QLatin1String(
"text/uri-list")
60 << QLatin1String(
"message/rfc822");
65 if ( collection().isValid()
66 && !collection().contentMimeTypes().contains( QLatin1String(
"message/rfc822") )
67 && collection().contentMimeTypes() != QStringList( QLatin1String(
"inode/directory") ) )
70 return ItemModel::rowCount();
75 if ( collection().isValid()
76 && !collection().contentMimeTypes().contains( QLatin1String(
"message/rfc822") )
77 && collection().contentMimeTypes() != QStringList( QLatin1String(
"inode/directory") ) )
80 if ( !parent.isValid() )
88 if ( !index.isValid() )
93 if ( !collection().contentMimeTypes().contains( QLatin1String(
"message/rfc822") ) ) {
94 if ( role == Qt::DisplayRole )
95 return i18nc(
"@label",
"This model can only handle email folders. The current collection holds mimetypes: %1",
96 collection().contentMimeTypes().join( QLatin1String(
",") ) );
101 Item item = itemForIndex( index );
102 if ( !item.hasPayload<MessagePtr>() )
104 MessagePtr msg = item.payload<MessagePtr>();
105 if ( role == Qt::DisplayRole ) {
106 switch ( index.column() ) {
108 return msg->subject()->asUnicodeString();
110 return msg->from()->asUnicodeString();
112 return msg->to()->asUnicodeString();
114 return KGlobal::locale()->formatDateTime( msg->date()->dateTime().toLocalZone(), KLocale::FancyLongDate );
116 if ( item.size() == 0 )
117 return i18nc(
"@label No size available",
"-" );
119 return KGlobal::locale()->formatByteSize( item.size() );
123 }
else if ( role == Qt::EditRole ) {
124 switch ( index.column() ) {
126 return msg->subject()->asUnicodeString();
128 return msg->from()->asUnicodeString();
130 return msg->to()->asUnicodeString();
132 return msg->date()->dateTime().dateTime();
139 return ItemModel::data( index, role );
145 if ( collection().isValid()
146 && !collection().contentMimeTypes().contains( QLatin1String(
"message/rfc822") )
147 && collection().contentMimeTypes() != QStringList( QLatin1String(
"inode/directory") ) )
150 if ( orientation == Qt::Horizontal && role == Qt::DisplayRole ) {
153 return i18nc(
"@title:column, message (e.g. email) subject",
"Subject" );
155 return i18nc(
"@title:column, sender of message (e.g. email)",
"Sender" );
157 return i18nc(
"@title:column, receiver of message (e.g. email)",
"Receiver" );
159 return i18nc(
"@title:column, message (e.g. email) timestamp",
"Date" );
161 return i18nc(
"@title:column, message (e.g. email) size",
"Size" );
166 return ItemModel::headerData( section, orientation, role );