• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

messagelist

  • sources
  • kde-4.12
  • kdepim
  • messagelist
  • core
messageitem.cpp
Go to the documentation of this file.
1 
2 /******************************************************************************
3  *
4  * Copyright 2008 Szymon Tomasz Stefanek <pragma@kvirc.net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  *******************************************************************************/
21 
22 #include "messageitem.h"
23 #include "messageitem_p.h"
24 
25 #include "messagetag.h"
26 #include "messagecore/widgets/annotationdialog.h"
27 #include "core/callbacknepomukresourceretriever.h"
28 #include "theme.h"
29 
30 #include <akonadi/item.h>
31 
32 #include <Nepomuk2/Resource>
33 #include <Nepomuk2/Tag>
34 #include <Nepomuk2/Variant>
35 #include <nepomuk2/nmo.h>
36 #include <nepomuk2/resourcemanager.h>
37 #include <Soprano/Vocabulary/NAO>
38 #include <KIconLoader>
39 
40 using namespace MessageList::Core;
41 
42 K_GLOBAL_STATIC( MessageList::CallbackNepomukResourceRetriever, s_nepomukRetriever )
43 
44 class MessageItem::Tag::Private
45 {
46 public:
47  Private()
48  :mPriority( 0 ) //Initialize it
49  {
50 
51  }
52  QPixmap mPixmap;
53  QString mName;
54  QString mId;
55  QColor mTextColor;
56  QColor mBackgroundColor;
57  QFont mFont;
58  QString mFontKey;
59  int mPriority;
60 };
61 
62 MessageItem::Tag::Tag( const QPixmap &pix, const QString &tagName, const QString &tagId )
63  : d( new Private )
64 {
65  d->mPixmap = pix;
66  d->mName = tagName;
67  d->mId = tagId;
68 }
69 
70 MessageItem::Tag::~Tag()
71 {
72  delete d;
73 }
74 
75 QPixmap MessageItem::Tag::pixmap() const
76 {
77  return d->mPixmap;
78 }
79 
80 QString MessageItem::Tag::name() const
81 {
82  return d->mName;
83 }
84 
85 QString MessageItem::Tag::id() const
86 {
87  return d->mId;
88 }
89 
90 QColor MessageItem::Tag::textColor() const
91 {
92  return d->mTextColor;
93 }
94 
95 QColor MessageItem::Tag::backgroundColor() const
96 {
97  return d->mBackgroundColor;
98 }
99 
100 QFont MessageItem::Tag::font() const
101 {
102  return d->mFont;
103 }
104 
105 int MessageItem::Tag::priority() const
106 {
107  return d->mPriority;
108 }
109 
110 void MessageItem::Tag::setTextColor( const QColor &textColor )
111 {
112  d->mTextColor = textColor;
113 }
114 
115 void MessageItem::Tag::setBackgroundColor( const QColor &backgroundColor )
116 {
117  d->mBackgroundColor = backgroundColor;
118 }
119 
120 void MessageItem::Tag::setFont( const QFont &font )
121 {
122  d->mFont = font;
123 }
124 
125 void MessageItem::Tag::setPriority( int priority )
126 {
127  d->mPriority = priority;
128 }
129 
130 
131 class MessageItemPrivateSettings
132 {
133 public:
134  QColor mColorUnreadMessage;
135  QColor mColorImportantMessage;
136  QColor mColorToDoMessage;
137  QFont mFont;
138  QFont mFontUnreadMessage;
139  QFont mFontImportantMessage;
140  QFont mFontToDoMessage;
141  QString mFontKey;
142  QString mFontUnreadMessageKey;
143  QString mFontImportantMessageKey;
144  QString mFontToDoMessageKey;
145 };
146 
147 K_GLOBAL_STATIC(MessageItemPrivateSettings, s_settings)
148 
149 MessageItemPrivate::MessageItemPrivate( MessageItem* qq )
150  : ItemPrivate( qq ),
151  mThreadingStatus( MessageItem::ParentMissing ),
152  mEncryptionState( MessageItem::NotEncrypted ),
153  mSignatureState( MessageItem::NotSigned ),
154  mAboutToBeRemoved( false ),
155  mSubjectIsPrefixed( false ),
156  mAnnotationStateChecked( false ),
157  mHasAnnotation( false ),
158  mTagList( 0 )
159 {
160 }
161 
162 MessageItemPrivate::~MessageItemPrivate()
163 {
164  s_nepomukRetriever->cancelCallbackRequest( mAkonadiItem.url() );
165  invalidateTagCache();
166 }
167 
168 void MessageItemPrivate::invalidateTagCache()
169 {
170  if ( mTagList ) {
171  qDeleteAll( *mTagList );
172  delete mTagList;
173  mTagList = 0;
174  }
175 }
176 
177 void MessageItemPrivate::invalidateAnnotationCache()
178 {
179  mAnnotationStateChecked = false;
180 }
181 
182 const MessageItem::Tag* MessageItemPrivate::bestTag() const
183 {
184  const MessageItem::Tag *best = 0;
185  foreach( const MessageItem::Tag* tag, getTagList() ) {
186  if ( !best || tag->priority() < best->priority() )
187  best = tag;
188  }
189  return best;
190 }
191 
192 void MessageItemPrivate::fillTagList( const Nepomuk2::Resource &resource ) const
193 {
194  Q_ASSERT( !mTagList );
195  mTagList = new QList<MessageItem::Tag*>;
196 
197  // TODO: The tag pointers here could be shared between all items, there really is no point in
198  // creating them for each item that has tags
199 
200  const QList< Nepomuk2::Tag > nepomukTagList = resource.tags();
201  if ( !nepomukTagList.isEmpty() ) {
202  foreach( const Nepomuk2::Tag &nepomukTag, nepomukTagList ) {
203  QString symbol = QLatin1String( "mail-tagged" );
204  if ( !nepomukTag.genericIcon().isEmpty() ) {
205  symbol = nepomukTag.genericIcon();
206  }
207  MessageItem::Tag *messageListTag =
208  new MessageItem::Tag( SmallIcon( symbol ),
209  nepomukTag.label(), nepomukTag.uri().toString() );
210  if ( nepomukTag.hasProperty( Vocabulary::MessageTag::textColor() ) ) {
211  const QString name = nepomukTag.property( Vocabulary::MessageTag::textColor() ).toString();
212  messageListTag->setTextColor( QColor( name ) );
213  }
214  if ( nepomukTag.hasProperty( Vocabulary::MessageTag::backgroundColor() ) ) {
215  const QString name = nepomukTag.property( Vocabulary::MessageTag::backgroundColor() ).toString();
216  messageListTag->setBackgroundColor( QColor( name ) );
217  }
218  if ( nepomukTag.hasProperty( Vocabulary::MessageTag::priority() ) ) {
219  messageListTag->setPriority( nepomukTag.property( Vocabulary::MessageTag::priority() ).toInt() );
220  }
221  else
222  messageListTag->setPriority( 0xFFFF );
223 
224  if ( nepomukTag.hasProperty( Vocabulary::MessageTag::font() ) ) {
225  const QString fontName = nepomukTag.property( Vocabulary::MessageTag::font() ).toString();
226  QFont font;
227  font.fromString( fontName );
228  messageListTag->setFont( font );
229  }
230 
231  mTagList->append( messageListTag );
232  }
233  }
234 }
235 
236 QList<MessageItem::Tag*> MessageItemPrivate::getTagList() const
237 {
238  if ( !mTagList ) {
239  s_nepomukRetriever->requestResource( const_cast<MessageItemPrivate*>(this), mAkonadiItem.url() );
240  return QList<MessageItem::Tag*>();
241  }
242 
243  return *mTagList;
244 }
245 
246 bool MessageItemPrivate::tagListInitialized() const
247 {
248  return mTagList != 0;
249 }
250 
251 void MessageItemPrivate::resourceReceived(const Nepomuk2::Resource& resource)
252 {
253  if ( !mTagList )
254  fillTagList( resource );
255 
256  if ( resource.hasProperty( QUrl( Soprano::Vocabulary::NAO::description().toString() ) ) ) {
257  mHasAnnotation = !resource.description().isEmpty();
258  } else {
259  mHasAnnotation = false;
260  }
261 
262  mAnnotationStateChecked = true;
263 }
264 
265 
266 MessageItem::MessageItem()
267  : Item( Message, new MessageItemPrivate( this ) ), ModelInvariantIndex()
268 {
269 }
270 
271 MessageItem::MessageItem ( MessageItemPrivate* dd )
272  : Item ( Message, dd ), ModelInvariantIndex()
273 {
274 }
275 
276 MessageItem::~MessageItem()
277 {
278 }
279 
280 QList< MessageItem::Tag * > MessageItem::tagList() const
281 {
282  Q_D( const MessageItem );
283  return d->getTagList();
284 }
285 
286 bool MessageItem::hasAnnotation() const
287 {
288  Q_D( const MessageItem );
289  if ( d->mAnnotationStateChecked )
290  return d->mHasAnnotation;
291 
292  s_nepomukRetriever->requestResource( const_cast<MessageItemPrivate*>(d), d->mAkonadiItem.url() );
293  return false;
294 }
295 
296 QString MessageItem::annotation() const
297 {
298  Q_D( const MessageItem );
299  if ( hasAnnotation() ) {
300  kDebug();
301  Nepomuk2::Resource resource( d->mAkonadiItem.url() );
302  return resource.description();
303  }
304  else
305  return QString();
306 }
307 
308 void MessageItem::editAnnotation()
309 {
310  if( !Nepomuk2::ResourceManager::instance()->initialized() )
311  return;
312  Q_D( MessageItem );
313  if ( d->mAnnotationDialog.data() )
314  return;
315  d->mAnnotationDialog = new MessageCore::AnnotationEditDialog( d->mAkonadiItem.url() );
316  d->mAnnotationDialog.data()->setAttribute( Qt::WA_DeleteOnClose );
317  if ( d->mAnnotationDialog.data()->exec() )
318  // invalidate the cached mHasAnnotation value
319  d->mAnnotationStateChecked = false;
320 }
321 
322 const MessageItem::Tag * MessageItemPrivate::findTagInternal( const QString &szTagId ) const
323 {
324  foreach( const MessageItem::Tag *tag, getTagList() ) {
325  if ( tag->id() == szTagId )
326  return tag;
327  }
328  return 0;
329 }
330 
331 const MessageItem::Tag *MessageItem::findTag( const QString &szTagId ) const
332 {
333  Q_D( const MessageItem );
334  return d->findTagInternal( szTagId );
335 }
336 
337 QString MessageItem::tagListDescription() const
338 {
339  QString ret;
340 
341  foreach( const Tag *tag, tagList() ) {
342  if ( !ret.isEmpty() )
343  ret += QLatin1String( ", " );
344  ret += tag->name();
345  }
346 
347  return ret;
348 }
349 
350 void MessageItem::invalidateTagCache()
351 {
352  Q_D( MessageItem );
353  d->invalidateTagCache();
354 }
355 
356 void MessageItem::invalidateAnnotationCache()
357 {
358  Q_D( MessageItem );
359  d->invalidateAnnotationCache();
360 }
361 
362 QColor MessageItem::textColor() const
363 {
364  Q_D( const MessageItem );
365  const Tag *bestTag = d->bestTag();
366  if ( bestTag != 0 && bestTag->textColor().isValid() ) {
367  return bestTag->textColor();
368  }
369  QColor clr;
370  Akonadi::MessageStatus messageStatus = status();
371  if ( !messageStatus.isRead() ) {
372  clr = s_settings->mColorUnreadMessage;
373  } else if ( messageStatus.isImportant() ) {
374  clr = s_settings->mColorImportantMessage;
375  } else if ( messageStatus.isToAct() ) {
376  clr = s_settings->mColorToDoMessage;
377  }
378 
379  return clr;
380 }
381 
382 QColor MessageItem::backgroundColor() const
383 {
384  Q_D( const MessageItem );
385  const Tag *bestTag = d->bestTag();
386  if ( bestTag ) {
387  return bestTag->backgroundColor();
388  } else {
389  return QColor();
390  }
391 }
392 
393 QFont MessageItem::font() const
394 {
395  Q_D( const MessageItem );
396  // for performance reasons we don't want font retrieval to trigger
397  // full tags loading, as the font is used for geometry calculation
398  // and thus this method called for each item
399  if ( d->tagListInitialized() ) {
400  const Tag *bestTag = d->bestTag();
401  if ( bestTag && bestTag->font() != QFont() ) {
402  return bestTag->font();
403  }
404  }
405 
406  QFont font;
407 
408  // from KDE3: "important" overrides "new" overrides "unread" overrides "todo"
409  Akonadi::MessageStatus messageStatus = status();
410  if ( messageStatus.isImportant() ) {
411  font = s_settings->mFontImportantMessage;
412  } else if ( !messageStatus.isRead() ) {
413  font = s_settings->mFontUnreadMessage;
414  } else if ( messageStatus.isToAct() ) {
415  font = s_settings->mFontToDoMessage;
416  } else {
417  font = s_settings->mFont;
418  }
419 
420  return font;
421 }
422 
423 QString MessageItem::fontKey() const
424 {
425  Q_D( const MessageItem );
426 
427  // for performance reasons we don't want font retrieval to trigger
428  // full tags loading, as the font is used for geometry calculation
429  // and thus this method called for each item
430  if ( d->tagListInitialized() ) {
431  const Tag *bestTag = d->bestTag();
432  if ( bestTag && bestTag->font() != QFont() ) {
433  return bestTag->font().key();
434  }
435  }
436 
437  // from KDE3: "important" overrides "new" overrides "unread" overrides "todo"
438  Akonadi::MessageStatus messageStatus = status();
439  if ( messageStatus.isImportant() ) {
440  return s_settings->mFontImportantMessageKey;
441  } else if ( !messageStatus.isRead() ) {
442  return s_settings->mFontUnreadMessageKey;
443  } else if ( messageStatus.isToAct() ) {
444  return s_settings->mFontToDoMessageKey;
445  } else {
446  return s_settings->mFontKey;
447  }
448 
449 }
450 
451 
452 MessageItem::SignatureState MessageItem::signatureState() const
453 {
454  Q_D( const MessageItem );
455  return d->mSignatureState;
456 }
457 
458 void MessageItem::setSignatureState( SignatureState state )
459 {
460  Q_D( MessageItem );
461  d->mSignatureState = state;
462 }
463 
464 MessageItem::EncryptionState MessageItem::encryptionState() const
465 {
466  Q_D( const MessageItem );
467  return d->mEncryptionState;
468 }
469 
470 void MessageItem::setEncryptionState( EncryptionState state )
471 {
472  Q_D( MessageItem );
473  d->mEncryptionState = state;
474 }
475 
476 QByteArray MessageItem::messageIdMD5() const
477 {
478  Q_D( const MessageItem );
479  return d->mMessageIdMD5;
480 }
481 
482 void MessageItem::setMessageIdMD5( const QByteArray &md5 )
483 {
484  Q_D( MessageItem );
485  d->mMessageIdMD5 = md5;
486 }
487 
488 QByteArray MessageItem::inReplyToIdMD5() const
489 {
490  Q_D( const MessageItem );
491  return d->mInReplyToIdMD5;
492 }
493 
494 void MessageItem::setInReplyToIdMD5( const QByteArray& md5 )
495 {
496  Q_D( MessageItem );
497  d->mInReplyToIdMD5 = md5;
498 }
499 
500 QByteArray MessageItem::referencesIdMD5() const
501 {
502  Q_D( const MessageItem );
503  return d->mReferencesIdMD5;
504 }
505 
506 void MessageItem::setReferencesIdMD5( const QByteArray& md5 )
507 {
508  Q_D( MessageItem );
509  d->mReferencesIdMD5 = md5;
510 }
511 
512 void MessageItem::setSubjectIsPrefixed( bool subjectIsPrefixed )
513 {
514  Q_D( MessageItem );
515  d->mSubjectIsPrefixed = subjectIsPrefixed;
516 }
517 
518 bool MessageItem::subjectIsPrefixed() const
519 {
520  Q_D( const MessageItem );
521  return d->mSubjectIsPrefixed;
522 }
523 
524 QByteArray MessageItem::strippedSubjectMD5() const
525 {
526  Q_D( const MessageItem );
527  return d->mStrippedSubjectMD5;
528 }
529 
530 void MessageItem::setStrippedSubjectMD5( const QByteArray& md5 )
531 {
532  Q_D( MessageItem );
533  d->mStrippedSubjectMD5 = md5;
534 }
535 
536 bool MessageItem::aboutToBeRemoved() const
537 {
538  Q_D( const MessageItem );
539  return d->mAboutToBeRemoved;
540 }
541 
542 void MessageItem::setAboutToBeRemoved( bool aboutToBeRemoved )
543 {
544  Q_D( MessageItem );
545  d->mAboutToBeRemoved = aboutToBeRemoved;
546 }
547 
548 MessageItem::ThreadingStatus MessageItem::threadingStatus() const
549 {
550  Q_D( const MessageItem );
551  return d->mThreadingStatus;
552 }
553 
554 void MessageItem::setThreadingStatus( ThreadingStatus threadingStatus )
555 {
556  Q_D( MessageItem );
557  d->mThreadingStatus = threadingStatus;
558 }
559 
560 unsigned long MessageItem::uniqueId() const
561 {
562  Q_D( const MessageItem );
563  return d->mAkonadiItem.id();
564 }
565 
566 Akonadi::Item MessageList::Core::MessageItem::akonadiItem() const
567 {
568  Q_D( const MessageItem );
569  return d->mAkonadiItem;
570 }
571 
572 void MessageList::Core::MessageItem::setAkonadiItem(const Akonadi::Item& item)
573 {
574  Q_D( MessageItem );
575  d->mAkonadiItem = item;
576 }
577 
578 MessageItem * MessageItem::topmostMessage()
579 {
580  if ( !parent() )
581  return this;
582  if ( parent()->type() == Item::Message )
583  return static_cast< MessageItem * >( parent() )->topmostMessage();
584  return this;
585 }
586 
587 QString MessageItem::accessibleTextForField(Theme::ContentItem::Type field)
588 {
589  switch (field) {
590  case Theme::ContentItem::Subject:
591  return d_ptr->mSubject;
592  case Theme::ContentItem::Sender:
593  return d_ptr->mSender;
594  case Theme::ContentItem::Receiver:
595  return d_ptr->mReceiver;
596  case Theme::ContentItem::SenderOrReceiver:
597  return senderOrReceiver();
598  case Theme::ContentItem::Date:
599  return formattedDate();
600  case Theme::ContentItem::Size:
601  return formattedSize();
602  case Theme::ContentItem::RepliedStateIcon:
603  return status().isReplied() ? i18nc( "Status of an item", "Replied" ) : QString();
604  case Theme::ContentItem::ReadStateIcon:
605  return status().isRead() ? i18nc( "Status of an item", "Read" ) : i18nc( "Status of an item", "Unread" );
606  case Theme::ContentItem::CombinedReadRepliedStateIcon:
607  return accessibleTextForField( Theme::ContentItem::ReadStateIcon ) + accessibleTextForField( Theme::ContentItem::RepliedStateIcon );
608  default:
609  return QString();
610  }
611 }
612 
613 
614 QString MessageItem::accessibleText( const Theme* theme, int columnIndex )
615 {
616  QStringList rowsTexts;
617 
618  Q_FOREACH( Theme::Row *row, theme->column(columnIndex)->messageRows() ) {
619  QStringList leftStrings;
620  QStringList rightStrings;
621  Q_FOREACH( Theme::ContentItem *contentItem, row->leftItems() ) {
622  leftStrings.append( accessibleTextForField( contentItem->type() ) );
623  }
624 
625  Q_FOREACH( Theme::ContentItem *contentItem, row->rightItems() ) {
626  rightStrings.insert( rightStrings.begin(), accessibleTextForField( contentItem->type() ) );
627  }
628 
629  rowsTexts.append( ( leftStrings + rightStrings ).join( QLatin1String( " " ) ) );
630  }
631 
632  return rowsTexts.join( QLatin1String(" ") );
633 }
634 
635 void MessageItem::subTreeToList( QList< MessageItem * > &list )
636 {
637  list.append( this );
638  QList< Item * > * childList = childItems();
639  if ( !childList )
640  return;
641  QList< Item * >::ConstIterator end( childList->constEnd() );
642  for ( QList< Item * >::ConstIterator it = childList->constBegin(); it != end; ++it )
643  {
644  Q_ASSERT( ( *it )->type() == Item::Message );
645  static_cast< MessageItem * >( *it )->subTreeToList( list );
646  }
647 }
648 
649 void MessageItem::setUnreadMessageColor( const QColor &color )
650 {
651  s_settings->mColorUnreadMessage = color;
652 }
653 
654 
655 void MessageItem::setImportantMessageColor( const QColor &color )
656 {
657  s_settings->mColorImportantMessage = color;
658 }
659 
660 
661 void MessageItem::setToDoMessageColor( const QColor &color )
662 {
663  s_settings->mColorToDoMessage = color;
664 }
665 
666 
667 void MessageItem::setGeneralFont( const QFont &font )
668 {
669  s_settings->mFont = font;
670  s_settings->mFontKey = font.key();
671 }
672 
673 void MessageItem::setUnreadMessageFont( const QFont &font )
674 {
675  s_settings->mFontUnreadMessage = font;
676  s_settings->mFontUnreadMessageKey = font.key();
677 }
678 
679 void MessageItem::setImportantMessageFont( const QFont &font )
680 {
681  s_settings->mFontImportantMessage = font;
682  s_settings->mFontImportantMessageKey = font.key();
683 }
684 
685 void MessageItem::setToDoMessageFont( const QFont &font )
686 {
687  s_settings->mFontToDoMessage = font;
688  s_settings->mFontToDoMessageKey = font.key();
689 }
690 
691 FakeItemPrivate::FakeItemPrivate( FakeItem *qq ) : MessageItemPrivate( qq )
692 {
693 }
694 
695 FakeItem::FakeItem()
696  : MessageItem( new FakeItemPrivate( this ) )
697 {
698 }
699 
700 FakeItem::~FakeItem()
701 {
702 }
703 
704 QList< MessageItem::Tag * > FakeItem::tagList() const
705 {
706  Q_D( const FakeItem );
707  return d->mFakeTags;
708 }
709 
710 void FakeItem::setFakeTags( const QList< MessageItem::Tag* > &tagList )
711 {
712  Q_D( FakeItem );
713  d->mFakeTags = tagList;
714 }
715 
716 bool FakeItem::hasAnnotation() const
717 {
718  return true;
719 }
720 
721 
MessageList::Core::Theme::ContentItem
The ContentItem class defines a content item inside a Row.
Definition: theme.h:73
MessageList::Core::MessageItem::Tag::Tag
Tag(const QPixmap &pix, const QString &tagName, const QString &tagId)
Definition: messageitem.cpp:62
MessageList::Core::FakeItem::setFakeTags
void setFakeTags(const QList< Tag * > &tagList)
Sets a list of fake tags for this item.
Definition: messageitem.cpp:710
MessageList::Core::MessageItem::Tag::pixmap
QPixmap pixmap() const
Definition: messageitem.cpp:75
messageitem_p.h
MessageList::Core::Theme::ContentItem::ReadStateIcon
The icon that displays the unread/read state (never disabled)
Definition: theme.h:154
MessageList::Core::MessageItem::Tag::font
QFont font() const
Definition: messageitem.cpp:100
MessageList::Core::MessageItem::annotation
QString annotation() const
Returns the annotation of the message, given that hasAnnotation() is true.
Definition: messageitem.cpp:296
MessageList::Core::MessageItem::Tag::setBackgroundColor
void setBackgroundColor(const QColor &backgroundColor)
Definition: messageitem.cpp:115
MessageList::Core::MessageItem::EncryptionState
EncryptionState
Definition: messageitem.h:84
MessageList::Core::MessageItem::setUnreadMessageColor
static void setUnreadMessageColor(const QColor &color)
Definition: messageitem.cpp:649
MessageList::Core::MessageItem
Definition: messageitem.h:50
MessageList::Core::Theme::Row::rightItems
const QList< ContentItem * > & rightItems() const
Returns the list of right aligned items for this row.
Definition: theme.h:512
MessageList::Core::MessageItem::setThreadingStatus
void setThreadingStatus(ThreadingStatus threadingStatus)
Definition: messageitem.cpp:554
MessageList::Core::MessageItem::subTreeToList
void subTreeToList(QList< MessageItem * > &list)
Appends the whole subtree originating at this item to the specified list.
Definition: messageitem.cpp:635
MessageList::Core::Item::senderOrReceiver
const QString & senderOrReceiver() const
Returns the sender or the receiver, depending on the underlying StorageModel settings.
Definition: item.cpp:462
MessageList::Core::MessageItem::Tag::backgroundColor
QColor backgroundColor() const
Definition: messageitem.cpp:95
MessageList::Core::Theme::ContentItem::CombinedReadRepliedStateIcon
The combined icon that displays the unread/read/replied/forwarded state (never disabled) ...
Definition: theme.h:210
MessageList::Core::MessageItem::topmostMessage
MessageItem * topmostMessage()
Definition: messageitem.cpp:578
MessageList::Core::MessageItem::Tag::setTextColor
void setTextColor(const QColor &textColor)
Definition: messageitem.cpp:110
MessageList::Core::MessageItem::setImportantMessageColor
static void setImportantMessageColor(const QColor &color)
Definition: messageitem.cpp:655
MessageList::Core::MessageItem::Tag::setPriority
void setPriority(int priority)
Definition: messageitem.cpp:125
MessageList::Core::MessageItemPrivate
Definition: messageitem_p.h:33
MessageList::Core::FakeItem::hasAnnotation
virtual bool hasAnnotation() const
Reimplemented to always return true.
Definition: messageitem.cpp:716
MessageList::Core::ItemPrivate::mReceiver
QString mReceiver
The receiver of the message (or group receiver)
Definition: item_p.h:244
MessageList::Core::Theme::Row
The Row class defines a row of items inside a Column.
Definition: theme.h:466
callbacknepomukresourceretriever.h
MessageList::Core::MessageItem::setStrippedSubjectMD5
void setStrippedSubjectMD5(const QByteArray &md5)
Definition: messageitem.cpp:530
MessageList::Core::MessageItem::Tag::priority
int priority() const
Definition: messageitem.cpp:105
MessageList::Core::MessageItem::encryptionState
EncryptionState encryptionState() const
Definition: messageitem.cpp:464
MessageList::Core::MessageItem::setAboutToBeRemoved
void setAboutToBeRemoved(bool aboutToBeRemoved)
Definition: messageitem.cpp:542
MessageList::Core::Item::formattedSize
QString formattedSize() const
A string with a text rappresentation of size().
Definition: item.cpp:255
MessageList::Core::ItemPrivate
Definition: item_p.h:41
MessageList::Core::MessageItem::setMessageIdMD5
void setMessageIdMD5(const QByteArray &md5)
Definition: messageitem.cpp:482
MessageList::Core::MessageItem::setAkonadiItem
void setAkonadiItem(const Akonadi::Item &item)
Definition: messageitem.cpp:572
theme.h
MessageList::Core::MessageItemPrivate::getTagList
QList< MessageItem::Tag * > getTagList() const
Returns the list of tags. This is calculated on demand and cached in mTagList.
Definition: messageitem.cpp:236
MessageList::Core::MessageItem::fontKey
QString fontKey() const
Definition: messageitem.cpp:423
MessageList::Core::Theme::ContentItem::Sender
From: strip, always.
Definition: theme.h:142
MessageList::Core::FakeItemPrivate
Definition: messageitem_p.h:89
MessageList::Core::MessageItem::ParentMissing
this message might belong to a thread but its parent is actually missing
Definition: messageitem.h:80
MessageList::Core::FakeItem::~FakeItem
~FakeItem()
Definition: messageitem.cpp:700
MessageList::Core::MessageItem::setToDoMessageFont
static void setToDoMessageFont(const QFont &font)
Definition: messageitem.cpp:685
MessageList::Core::MessageItem::editAnnotation
void editAnnotation()
Shows a dialog to edit or delete the annotation.
Definition: messageitem.cpp:308
MessageList::Core::MessageItem::font
QFont font() const
Definition: messageitem.cpp:393
MessageList::Core::MessageItem::Tag::textColor
QColor textColor() const
Definition: messageitem.cpp:90
MessageList::Core::Theme::Column::messageRows
const QList< Row * > & messageRows() const
Returns the list of rows visible in this column for a MessageItem.
Definition: theme.h:773
MessageList::Core::Theme::ContentItem::RepliedStateIcon
The icon that displays the replied/forwarded state (may be disabled)
Definition: theme.h:162
MessageList::Core::MessageItem::setInReplyToIdMD5
void setInReplyToIdMD5(const QByteArray &md5)
Definition: messageitem.cpp:494
MessageList::Core::MessageItem::uniqueId
unsigned long uniqueId() const
Definition: messageitem.cpp:560
MessageList::Core::MessageItemPrivate::bestTag
const MessageItem::Tag * bestTag() const
Returns the tag with the highest priority, or 0 if there are no tags.
Definition: messageitem.cpp:182
MessageList::Core::Item::type
Type type() const
Returns the type of this item.
Definition: item.cpp:298
MessageList::Core::FakeItem::tagList
virtual QList< Tag * > tagList() const
Reimplemented to return the fake tag list.
Definition: messageitem.cpp:704
MessageList::Core::MessageItem::hasAnnotation
virtual bool hasAnnotation() const
Returns true if this message has an annotation.
Definition: messageitem.cpp:286
MessageList::Core::MessageItem::akonadiItem
Akonadi::Item akonadiItem() const
Definition: messageitem.cpp:566
messageitem.h
MessageList::Core::MessageItem::strippedSubjectMD5
QByteArray strippedSubjectMD5() const
Definition: messageitem.cpp:524
MessageList::Core::MessageItem::Tag::name
QString name() const
Definition: messageitem.cpp:80
MessageList::Core::Theme::ContentItem::type
Type type() const
Returns the type of this content item.
Definition: theme.h:264
MessageList::Core::Theme::ContentItem::Subject
Display the subject of the message item.
Definition: theme.h:130
MessageList::Core::MessageItem::setEncryptionState
void setEncryptionState(EncryptionState state)
Definition: messageitem.cpp:470
MessageList::Core::MessageItem::messageIdMD5
QByteArray messageIdMD5() const
Definition: messageitem.cpp:476
MessageList::Core::MessageItem::Tag::id
QString id() const
Definition: messageitem.cpp:85
MessageList::Core::MessageItem::aboutToBeRemoved
bool aboutToBeRemoved() const
Definition: messageitem.cpp:536
MessageList::Core::MessageItem::findTag
const Tag * findTag(const QString &szTagId) const
Returns Tag associated to this message that has the specified id or 0 if no such tag exists...
Definition: messageitem.cpp:331
MessageList::Core::MessageItem::signatureState
SignatureState signatureState() const
Definition: messageitem.cpp:452
MessageList::Core::MessageItem::tagListDescription
QString tagListDescription() const
Definition: messageitem.cpp:337
MessageList::Core::MessageItem::setReferencesIdMD5
void setReferencesIdMD5(const QByteArray &md5)
Definition: messageitem.cpp:506
MessageList::Core::MessageItem::textColor
QColor textColor() const
Definition: messageitem.cpp:362
MessageList::Core::MessageItem::MessageItem
MessageItem()
Definition: messageitem.cpp:266
MessageList::Core::MessageItemPrivate::tagListInitialized
bool tagListInitialized() const
Definition: messageitem.cpp:246
MessageList::Core::Theme::ContentItem::Date
Formatted date time of the message/group.
Definition: theme.h:134
MessageList::Core::Theme::Row::leftItems
const QList< ContentItem * > & leftItems() const
Returns the list of left aligned items for this row.
Definition: theme.h:481
MessageList::Core::Theme::ContentItem::Type
Type
The available ContentItem types.
Definition: theme.h:125
MessageList::Core::Theme::ContentItem::Receiver
To: strip, always.
Definition: theme.h:146
MessageList::Core::MessageItem::setSignatureState
void setSignatureState(SignatureState state)
Definition: messageitem.cpp:458
MessageList::Core::MessageItem::invalidateTagCache
void invalidateTagCache()
Deletes all cached tags.
Definition: messageitem.cpp:350
MessageList::Core::Theme::ContentItem::Size
Formatted size of the message.
Definition: theme.h:150
MessageList::Core::Item::formattedDate
QString formattedDate() const
A string with a text rappresentation of date() obtained via Manager.
Definition: item.cpp:260
MessageList::Core::Item::Message
This item is a MessageItem.
Definition: item.h:64
MessageList::CallbackNepomukResourceRetriever
Specialized version of the AsyncNepomukResourceRetriever that can deal with non-QObject receivers...
Definition: callbacknepomukresourceretriever.h:32
MessageList::Core::Theme::ContentItem::SenderOrReceiver
From: or To: strip, depending on the folder settings.
Definition: theme.h:138
MessageList::Core::Item
A single item of the MessageList tree managed by MessageList::Model.
Definition: item.h:52
MessageList::Core::FakeItem
A message item that can have a fake tag list and a fake annotation.
Definition: messageitem.h:218
MessageList::Core::Item::childItems
QList< Item * > * childItems() const
Return the list of child items.
Definition: item.cpp:70
MessageList::Core::MessageItem::threadingStatus
ThreadingStatus threadingStatus() const
Definition: messageitem.cpp:548
MessageList::Core::MessageItem::setSubjectIsPrefixed
void setSubjectIsPrefixed(bool subjectIsPrefixed)
Definition: messageitem.cpp:512
MessageList::Core::MessageItem::NotSigned
Definition: messageitem.h:94
MessageList::Core::MessageItem::SignatureState
SignatureState
Definition: messageitem.h:92
MessageList::Core::MessageItem::backgroundColor
QColor backgroundColor() const
Definition: messageitem.cpp:382
MessageList::Core::MessageItem::setUnreadMessageFont
static void setUnreadMessageFont(const QFont &font)
Definition: messageitem.cpp:673
MessageList::Core::MessageItemPrivate::invalidateAnnotationCache
void invalidateAnnotationCache()
Deletes the cache of the annotation.
Definition: messageitem.cpp:177
MessageList::Core::MessageItem::tagList
virtual QList< Tag * > tagList() const
Returns the list of tags for this item.
Definition: messageitem.cpp:280
MessageList::Core::MessageItemPrivate::findTagInternal
const MessageItem::Tag * findTagInternal(const QString &szTagId) const
Linear search in the list of tags.
Definition: messageitem.cpp:322
MessageList::Core::MessageItem::setImportantMessageFont
static void setImportantMessageFont(const QFont &font)
Definition: messageitem.cpp:679
MessageList::Core::MessageItem::setToDoMessageColor
static void setToDoMessageColor(const QColor &color)
Definition: messageitem.cpp:661
MessageList::Core::MessageItemPrivate::~MessageItemPrivate
~MessageItemPrivate()
Definition: messageitem.cpp:162
MessageList::Core::MessageItemPrivate::resourceReceived
void resourceReceived(const Nepomuk2::Resource &resource)
Callback for async Nepomuk resource retrieval.
Definition: messageitem.cpp:251
MessageList::Core::MessageItem::subjectIsPrefixed
bool subjectIsPrefixed() const
Definition: messageitem.cpp:518
MessageList::Core::MessageItem::~MessageItem
virtual ~MessageItem()
Definition: messageitem.cpp:276
MessageList::Core::MessageItem::accessibleText
QString accessibleText(const MessageList::Core::Theme *theme, int columnIndex)
Definition: messageitem.cpp:614
MessageList::Core::ItemPrivate::mSubject
QString mSubject
The subject of the message (or group subject)
Definition: item_p.h:246
MessageList::Core::Item::d_ptr
ItemPrivate *const d_ptr
Definition: item.h:399
MessageList::Core::Theme::column
Column * column(int idx) const
Returns a pointer to the column at the specified index or 0 if there is no such column.
Definition: theme.h:946
MessageList::Core::FakeItemPrivate::FakeItemPrivate
FakeItemPrivate(FakeItem *qq)
Definition: messageitem.cpp:691
MessageList::Core::MessageItem::Tag::~Tag
~Tag()
Definition: messageitem.cpp:70
MessageList::Core::FakeItem::FakeItem
FakeItem()
Definition: messageitem.cpp:695
MessageList::Core::Item::status
const Akonadi::MessageStatus & status() const
Returns the status associated to this Item.
Definition: item.cpp:402
MessageList::Core::MessageItem::NotEncrypted
Definition: messageitem.h:86
MessageList::Core::Theme
The Theme class defines the visual appearance of the MessageList.
Definition: theme.h:65
MessageList::Core::MessageItem::setGeneralFont
static void setGeneralFont(const QFont &font)
Definition: messageitem.cpp:667
MessageList::Core::MessageItemPrivate::invalidateTagCache
void invalidateTagCache()
Deletes the internal list of tags.
Definition: messageitem.cpp:168
MessageList::Core::Item::parent
Item * parent() const
Returns the parent Item in the tree, or 0 if this item isn't attached to the tree.
Definition: item.cpp:392
MessageList::Core::ModelInvariantIndex
An invariant index that can be ALWAYS used to reference an item inside a QAbstractItemModel.
Definition: modelinvariantindex.h:44
MessageList::Core::MessageItem::Tag
Definition: messageitem.h:53
MessageList::Core::MessageItem::Tag::setFont
void setFont(const QFont &font)
Definition: messageitem.cpp:120
MessageList::Core::MessageItem::referencesIdMD5
QByteArray referencesIdMD5() const
Definition: messageitem.cpp:500
MessageList::Core::MessageItem::inReplyToIdMD5
QByteArray inReplyToIdMD5() const
Definition: messageitem.cpp:488
MessageList::Core::MessageItem::ThreadingStatus
ThreadingStatus
Definition: messageitem.h:76
MessageList::Core::MessageItem::invalidateAnnotationCache
void invalidateAnnotationCache()
Same as invalidateTagCache(), only for the annotation.
Definition: messageitem.cpp:356
MessageList::Core::ItemPrivate::mSender
QString mSender
The sender of the message (or group sender)
Definition: item_p.h:243
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:55:32 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

messagelist

Skip menu "messagelist"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal