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

List:       kde-commits
Subject:    KDE/kdepim/views/conversationview
From:       Aron Boström <c02ab () efd ! lth ! se>
Date:       2006-07-11 23:27:59
Message-ID: 1152660479.938205.6800.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 561362 by bostrom:

SoC.
A cool feature: checking the QCheckBox "Only unread" makes the proxy filter out \
already read conversations, so only unread conversations are shown.



 M  +1 -1      conversation.h  
 M  +9 -2      conversationview.cpp  
 M  +2 -0      conversationview.h  
 M  +4 -2      conversationwidget.cpp  
 M  +2 -2      conversationwidget.h  
 M  +18 -0     folderproxymodel.cpp  
 M  +8 -0      folderproxymodel.h  
 M  +6 -0      searchline.cpp  
 M  +6 -0      searchline.h  


--- trunk/KDE/kdepim/views/conversationview/conversation.h #561361:561362
@@ -31,7 +31,7 @@
 
 class Conversation : QObject
 {
-	Q_OBJECT
+  Q_OBJECT
 public:
   Conversation(QStringList &manyMe, QString *conversationTitle = 0, QObject *parent \
= 0) : QObject(parent), title(*conversationTitle), listOfMe(manyMe) {}  int count() \
                const;
--- trunk/KDE/kdepim/views/conversationview/conversationview.cpp #561361:561362
@@ -20,13 +20,13 @@
 
 #include <QHeaderView>
 #include <QSortFilterProxyModel>
+#include <QtDebug>
 
 #include "conversationview.h"
 #include "conversationdelegate.h"
 #include "folderproxymodel.h"
 
-ConversationView::ConversationView(FolderProxyModel *model, QWidget *parent)
- : QTreeView(parent)
+ConversationView::ConversationView(FolderProxyModel *model, QWidget *parent) : \
QTreeView(parent), m_model(model)  {
   setRootIsDecorated(false);
   setSortingEnabled(true);
@@ -39,6 +39,8 @@
   header()->setSortIndicatorShown(true);
   header()->setClickable(true);
   header()->resizeSection(0, 185);
+  m_model->setDynamicSortFilter(true);
+
 //  QObject::connect(header(), SIGNAL(sectionClicked(int)), this, \
SLOT(swapSort(int)));  }
 
@@ -52,6 +54,11 @@
   cDelegate->setWidth(width);
 }
 
+void ConversationView::toggleFilterUnread()
+{
+  qDebug() << "View reached.";
+  m_model->toggleFilterUnread();
+}
 // void ConversationView::swapSort(int column)
 // {
 //   cDelegate->pmodel->sort(column, Qt::DescendingOrder);
--- trunk/KDE/kdepim/views/conversationview/conversationview.h #561361:561362
@@ -34,9 +34,11 @@
 
 public slots:
   void updateWidth(int width, int /*nouse*/ = 0);
+  void toggleFilterUnread();
 //   void swapSort(int column);
 
 private:
+  FolderProxyModel *m_model;
   ConversationDelegate *cDelegate;
 };
 
--- trunk/KDE/kdepim/views/conversationview/conversationwidget.cpp #561361:561362
@@ -20,7 +20,7 @@
 
 #include "conversationwidget.h"
 
-ConversationWidget::ConversationWidget(ConversationView *conversationView, QWidget \
*parent) : QWidget(parent), view(conversationView) \
+ConversationWidget::ConversationWidget(ConversationView *view, QWidget *parent) : \
QWidget(parent), m_view(view)  {
   searchLine = new SearchLine;
   layout = new QGridLayout;
@@ -28,8 +28,10 @@
   layout->setSpacing(0);
   layout->setMargin(0);
   layout->addWidget(searchLine);
-  layout->addWidget(conversationView);
+  layout->addWidget(view);
 
+  connect(searchLine, SIGNAL(unreadToggled()), view, SLOT(toggleFilterUnread()));
+
   setLayout(layout);
 }
 
--- trunk/KDE/kdepim/views/conversationview/conversationwidget.h #561361:561362
@@ -31,11 +31,11 @@
 {
   Q_OBJECT
 public:
-  ConversationWidget(ConversationView *conversationView, QWidget *parent = 0);
+  ConversationWidget(ConversationView *view, QWidget *parent = 0);
   ~ConversationWidget();
 
 private:
-  ConversationView *view;
+  ConversationView *m_view;
   QGridLayout *layout;
   SearchLine *searchLine;
 };
--- trunk/KDE/kdepim/views/conversationview/folderproxymodel.cpp #561361:561362
@@ -18,6 +18,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
+#include <QtDebug>
+
 #include "folderproxymodel.h"
 
 int FolderProxyModel::rowCount(const QModelIndex &/*parent*/) const
@@ -45,4 +47,20 @@
   return sourceModel->conversation(mapToSource(index).row());
 }
 
+void FolderProxyModel::toggleFilterUnread()
+{
+  qDebug() << "Proxy reached!";
+  filterUnread = !filterUnread;
+  qDebug() << "filterUnread: " << filterUnread;
+  clear();
+}
+
+bool FolderProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex \
&sourceParent) const +{
+  qDebug() << "row: " << sourceRow << ", filterUnreadStatus: " << (filterUnread ? \
sourceModel->conversation(sourceRow)->isUnread() : true); +  return \
(sourceModel->conversation(sourceRow)->authors().contains(filterRegExp()) +    || \
sourceModel->conversation(sourceRow)->conversationTitle().contains(filterRegExp())) + \
&& (filterUnread ? sourceModel->conversation(sourceRow)->isUnread() : true); +}
+
 #include "folderproxymodel.moc"
--- trunk/KDE/kdepim/views/conversationview/folderproxymodel.h #561361:561362
@@ -37,6 +37,7 @@
   FolderProxyModel(FolderModel *model, QObject *parent = 0) : \
QSortFilterProxyModel(parent), sourceModel(model)   {
     setSourceModel(model);
+    filterUnread = false;
   }
 
   int rowCount(const QModelIndex &parent = QModelIndex()) const;
@@ -45,8 +46,15 @@
   QVariant headerData(int section, Qt::Orientation orientation, int role = \
Qt::DisplayRole) const;  Conversation* conversation(const QModelIndex &index) const;
 
+public slots:
+  void toggleFilterUnread();
+
+protected:
+  bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
+
 private:
   FolderModel* sourceModel;
+  bool filterUnread;
 };
 
 #endif
--- trunk/KDE/kdepim/views/conversationview/searchline.cpp #561361:561362
@@ -44,6 +44,7 @@
   unread->setBuddy(checkBox);
 
   connect(clearButton, SIGNAL(clicked()), searchLine, SLOT(clear()));
+  connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(m_emitUnreadChanged()));
 
   QHBoxLayout* layout = new QHBoxLayout( this );
   layout->setMargin(0);
@@ -62,4 +63,9 @@
   delete searchLine;
 }
 
+void SearchLine::m_emitUnreadChanged()
+{
+  emit unreadToggled();
+}
+
 #include "searchline.moc"
--- trunk/KDE/kdepim/views/conversationview/searchline.h #561361:561362
@@ -32,6 +32,12 @@
   SearchLine(QWidget *parent = 0);
   ~SearchLine();
 
+signals:
+  void unreadToggled();
+
+private slots:
+  void m_emitUnreadChanged();
+
 private:
   QToolButton *clearButton;
   KLineEdit *searchLine;


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

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