summaryrefslogtreecommitdiffstats
path: root/akregator/src/articlelistview.h
diff options
context:
space:
mode:
Diffstat (limited to 'akregator/src/articlelistview.h')
-rw-r--r--akregator/src/articlelistview.h137
1 files changed, 137 insertions, 0 deletions
diff --git a/akregator/src/articlelistview.h b/akregator/src/articlelistview.h
new file mode 100644
index 000000000..7b8ec08e9
--- /dev/null
+++ b/akregator/src/articlelistview.h
@@ -0,0 +1,137 @@
+/*
+ This file is part of Akregator.
+
+ Copyright (C) 2004 Stanislav Karchebny <Stanislav.Karchebny@kdemail.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ As a special exception, permission is given to link this program
+ with any edition of Qt, and distribute the resulting executable,
+ without including the source code for Qt in the source distribution.
+*/
+#ifndef AKREGATORARTICLELISTVIEW_H
+#define AKREGATORARTICLELISTVIEW_H
+
+#include <klistview.h>
+
+class QKeyEvent;
+class QDragObject;
+template <class T> class QValueList;
+
+namespace Akregator
+{
+ class Article;
+ class TreeNode;
+
+ namespace Filters
+ {
+ class ArticleMatcher;
+ }
+
+ class ArticleListView : public KListView
+ {
+ Q_OBJECT
+ public:
+ ArticleListView(QWidget *parent = 0, const char *name = 0);
+ virtual ~ArticleListView();
+
+ /** returns the current article, or a null article if there is none */
+ Article currentArticle() const;
+
+ /** returns a list of currently selected articles */
+ QValueList<Article> selectedArticles() const;
+
+ enum Columns { itemTitle, feedTitle, pubDate };
+
+ public slots:
+
+ /** show article list of tree node @c node (also connects to the notification signals of the node) */
+ void slotShowNode(TreeNode* node);
+
+ /** clears the list and disconnects from the observed node (if any) */
+ void slotClear();
+
+ /** sets text filter and status filter
+ @param textFilter filters text
+ @param statusFilter filters status (read, unread, new) */
+ void slotSetFilter(const Akregator::Filters::ArticleMatcher& textFilter, const Akregator::Filters::ArticleMatcher& statusFilter);
+
+ /** selects previous article in list view, first article if no article was selected */
+ void slotPreviousArticle();
+
+ /** selects next article in list view, first article if no article was selected */
+ void slotNextArticle();
+
+ /** selects previous unread article in list view, first unread article if no article was selected */
+ void slotPreviousUnreadArticle();
+
+ /** selects next unread article in list view, first unread article if no article was selected */
+ void slotNextUnreadArticle();
+
+ signals:
+ void signalArticleChosen(const Article& article);
+ void signalDoubleClicked(const Article&, const QPoint&, int);
+ //void signalContextMenu(KListView*, ArticleItem*, const QPoint&);
+ void signalMouseButtonPressed(int, const Article&, const QPoint &, int);
+
+ protected:
+ /** reimplemented for kmail-like behaviour */
+ virtual void keyPressEvent(QKeyEvent* e);
+
+ /** applies text filter and status filter by setting visibility
+ of items accordingly */
+ virtual void applyFilters();
+
+ /**
+ * @return count of visible articles, used for info boxes
+ */
+ int visibleArticles();
+
+ /** Paints infobox for filtering and stuff
+ */
+ void paintInfoBox(const QString &message);
+
+ virtual void viewportPaintEvent(QPaintEvent *e);
+
+ void connectToNode(TreeNode* node);
+ void disconnectFromNode(TreeNode* node);
+
+ virtual QDragObject *dragObject();
+
+ protected slots:
+
+ void slotArticlesAdded(TreeNode* node, const QValueList<Article>& list);
+ void slotArticlesUpdated(TreeNode* node, const QValueList<Article>& list);
+ void slotArticlesRemoved(TreeNode* node, const QValueList<Article>& list);
+
+ virtual void slotCurrentChanged(QListViewItem* item);
+ virtual void slotSelectionChanged();
+ virtual void slotDoubleClicked(QListViewItem* item, const QPoint& p, int i);
+ virtual void slotContextMenu(KListView* list, QListViewItem* item, const QPoint& p);
+ virtual void slotMouseButtonPressed(int, QListViewItem *, const QPoint &, int);
+
+ public: // compat with KDE-3.x assertions, remove for KDE 4
+ // private:
+ class ArticleListViewPrivate;
+ ArticleListViewPrivate* d;
+
+ friend class ColumnLayoutVisitor;
+ class ColumnLayoutVisitor;
+
+ class ArticleItem;
+ };
+}
+
+#endif