[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/akonadi-ports/kdepim/messagelist
From:       Kevin Ottens <ervin () kde ! org>
Date:       2009-10-07 10:27:01
Message-ID: 1254911221.222035.9686.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1032235 by ervin:

Allow to retrieve the current message or item from Pane and Widget.

CCMAIL: montel@kde.org


 M  +23 -0     pane.cpp  
 M  +19 -1     pane.h  
 M  +28 -0     widget.cpp  
 M  +18 -0     widget.h  


--- branches/work/akonadi-ports/kdepim/messagelist/pane.cpp #1032234:1032235
@@ -66,6 +66,7 @@
 
 } // namespace MessageList
 
+using namespace Akonadi;
 using namespace MessageList;
 
 
@@ -413,4 +414,26 @@
   }
 }
 
+Item MessageList::Pane::currentItem() const
+{
+  Widget *w = static_cast<Widget*>( currentWidget() );
+
+  if ( w == 0 ) {
+    return Item();
+  }
+
+  return w->currentItem();
+}
+
+MessagePtr MessageList::Pane::currentMessage() const
+{
+  Widget *w = static_cast<Widget*>( currentWidget() );
+
+  if ( w == 0 ) {
+    return MessagePtr();
+  }
+
+  return w->currentMessage();
+}
+
 #include "pane.moc"
--- branches/work/akonadi-ports/kdepim/messagelist/pane.h #1032234:1032235
@@ -24,13 +24,18 @@
 #include <QtCore/QHash>
 #include <QtGui/QTabWidget>
 
+#include <boost/shared_ptr.hpp>
+#include <kmime/kmime_message.h>
+
+#include <messagelist/messagelist_export.h>
+
 class QAbstractItemModel;
 class QAbstractProxyModel;
 class QItemSelectionModel;
 class QItemSelection;
 class QToolButton;
 
-#include <messagelist/messagelist_export.h>
+typedef boost::shared_ptr<KMime::Message> MessagePtr;
 
 namespace KPIM
 {
@@ -64,6 +69,19 @@
   ~Pane();
 
   /**
+   * Returns the current message for the list as Akonadi::Item.
+   * May return an invalid Item if there is no current message or no current folder.
+   */
+  Akonadi::Item currentItem() const;
+
+  /**
+   * Returns the current message for the list as MessagePtr.
+   * May return 0 if there is no current message or no current folder.
+   */
+  MessagePtr currentMessage() const;
+
+
+  /**
    * Selects the next message item in the view.
    *
    * messageTypeFilter can be used to restrict the selection to only certain message types.
--- branches/work/akonadi-ports/kdepim/messagelist/widget.cpp #1032234:1032235
@@ -52,6 +52,7 @@
 
   Akonadi::Item::List selectionAsItems() const;
   Akonadi::Item itemForRow( int row ) const;
+  MessagePtr messageForRow( int row ) const;
 
   Widget * const q;
 
@@ -425,3 +426,30 @@
 {
   return static_cast<const StorageModel*>( q->storageModel() )->itemForRow( row );
 }
+
+MessagePtr Widget::Private::messageForRow( int row ) const
+{
+  return static_cast<const StorageModel*>( q->storageModel() )->messageForRow( row );
+}
+
+Item MessageList::Widget::currentItem() const
+{
+  Core::MessageItem *mi = view()->currentMessageItem();
+
+  if ( mi == 0 ) {
+    return Item();
+  }
+
+  return d->itemForRow( mi->currentModelIndexRow() );
+}
+
+MessagePtr MessageList::Widget::currentMessage() const
+{
+  Core::MessageItem *mi = view()->currentMessageItem();
+
+  if ( mi == 0 ) {
+    return MessagePtr();
+  }
+
+  return d->messageForRow( mi->currentModelIndexRow() );
+}
--- branches/work/akonadi-ports/kdepim/messagelist/widget.h #1032234:1032235
@@ -23,10 +23,15 @@
 
 #include <akonadi/item.h>
 
+#include <boost/shared_ptr.hpp>
+#include <kmime/kmime_message.h>
+
 #include <messagelist/messagelist_export.h>
 
 class QWidget;
 
+typedef boost::shared_ptr<KMime::Message> MessagePtr;
+
 namespace MessageList
 {
 
@@ -45,6 +50,19 @@
   ~Widget();
 
   /**
+   * Returns the current message for the list as Akonadi::Item.
+   * May return an invalid Item if there is no current message or no current folder.
+   */
+  Akonadi::Item currentItem() const;
+
+  /**
+   * Returns the current message for the list as MessagePtr.
+   * May return 0 if there is no current message or no current folder.
+   */
+  MessagePtr currentMessage() const;
+
+
+  /**
    * Returns true if this drag can be accepted by the underlying view
    */
   bool canAcceptDrag( const QDropEvent *e );
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic