[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