summaryrefslogtreecommitdiffstats
path: root/knode/knmainwidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'knode/knmainwidget.h')
-rw-r--r--knode/knmainwidget.h426
1 files changed, 426 insertions, 0 deletions
diff --git a/knode/knmainwidget.h b/knode/knmainwidget.h
new file mode 100644
index 000000000..2b3660bd7
--- /dev/null
+++ b/knode/knmainwidget.h
@@ -0,0 +1,426 @@
+/*
+ KNode, the KDE newsreader
+ Copyright (c) 2003 Zack Rusin <zack@kde.org>
+ Copyright (c) 2004-2005 Volker Krause <volker.krause@rwth-aachen.de>
+
+ 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.
+ 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, US
+*/
+#ifndef KNMAINWIDGET_H
+#define KNMAINWIDGET_H
+
+#include "knodeiface.h"
+
+#include <kdockwidget.h>
+#include <kdialogbase.h>
+#include "resource.h"
+
+#include <qglobal.h>
+#include <kdepimmacros.h>
+
+class QListViewItem;
+
+class KURL;
+class KAccel;
+class KAction;
+class KToggleAction;
+class KSelectAction;
+class KRSqueezedTextLabel;
+class KLineEdit;
+class KXMLGUIClient;
+
+class KNHeaderView;
+class KNCollectionView;
+class KNCollectionViewItem;
+class KNProgress;
+class KNConfigManager;
+class KNAccountManager;
+class KNGroupManager;
+class KNFolderManager;
+class KNArticleManager;
+class KNArticleFactory;
+class KNFilterManager;
+class KNScoringManager;
+class KNMemoryManager;
+class KNFilterSelectAction;
+class KNNetAccess;
+namespace Kpgp {
+ class Module;
+}
+namespace KNode {
+ class ArticleWidget;
+}
+class KNArticle;
+class KNLocalArticle;
+class KNRemoteArticle;
+class KActionCollection;
+
+class KDE_EXPORT KNMainWidget : public KDockArea, virtual public KNodeIface
+{
+ Q_OBJECT
+public:
+ KNMainWidget( KXMLGUIClient *client, bool detachable, QWidget* parent, const char* name );
+ ~KNMainWidget();
+
+ /** exit */
+ bool queryClose();
+ void prepareShutdown();
+
+ //GUI
+ void setStatusMsg(const QString& = QString::null, int id=SB_MAIN);
+ void setStatusHelpMsg(const QString& text);
+ void updateCaption();
+ void setCursorBusy(bool b=true);
+ void blockUI(bool b=true);
+ void disableAccels(bool b=true);
+ /** processEvents with some blocking */
+ void secureProcessEvents();
+
+ /** useful default value */
+ virtual QSize sizeHint() const;
+
+ /** handle URL given as command-line argument */
+ void openURL(const KURL &url);
+
+ /** update fonts and colors */
+ void configChanged();
+
+ /** access to GUI-elements */
+ KNCollectionView* collectionView()const { return c_olView; }
+ KNHeaderView* headerView()const { return h_drView; }
+ KNode::ArticleWidget* articleViewer() const { return mArticleViewer; }
+ KRSqueezedTextLabel* statusBarLabelGroup() const { return s_tatusGroup; }
+ KRSqueezedTextLabel* statusBarLabelFilter() const { return s_tatusFilter; }
+ public: //The dcop interface
+ // Implementation of KNodeIface
+ /* Navigation */
+ // Move to the next article
+ virtual void nextArticle();
+ // Move to the previous article
+ virtual void previousArticle();
+ // Move to the next unread article
+ virtual void nextUnreadArticle();
+ // Move to the next unread thread
+ virtual void nextUnreadThread();
+ // Move to the next group
+ virtual void nextGroup();
+ // Move to the previous group
+ virtual void previousGroup();
+
+ /* Group options */
+ // Open the editor to post a new article in the selected group
+ virtual void postArticle();
+ // Fetch the new headers in the selected groups
+ virtual void fetchHeadersInCurrentGroup();
+ // Expire the articles in the current group
+ virtual void expireArticlesInCurrentGroup();
+ // Mark all the articles in the current group as read
+ virtual void markAllAsRead();
+ // Mark all the articles in the current group as unread
+ virtual void markAllAsUnread();
+
+ /* Header view */
+ // Mark the current article as read
+ virtual void markAsRead();
+ // Mark the current article as unread
+ virtual void markAsUnread();
+ // Mark the current thread as read
+ virtual void markThreadAsRead();
+ // Mark the current thread as unread
+ virtual void markThreadAsUnread();
+
+ /* Articles */
+
+ // Send the pending articles
+ virtual void sendPendingMessages();
+ // Delete the current article
+ virtual void deleteArticle();
+ // Send the current article
+ virtual void sendNow();
+ // Edit the current article
+ virtual void editArticle();
+ /// Fetch all the new article headers
+ virtual void fetchHeaders();
+ /// Expire articles in all groups
+ virtual void expireArticles();
+
+ /* Kontact integration */
+ /// Process command-line options
+ virtual bool handleCommandLine();
+
+ //end dcop interface
+signals:
+ void signalCaptionChangeRequest( const QString& );
+
+protected:
+
+ KActionCollection* actionCollection() const;
+ KXMLGUIFactory *factory() const;
+
+ void initActions();
+ void initStatusBar();
+
+ /** checks if run for the first time, sets some global defaults (email configuration) */
+ bool firstStart();
+
+ void readOptions();
+ void saveOptions();
+
+ bool requestShutdown();
+
+ virtual void showEvent(QShowEvent *);
+
+ /** update appearance */
+ virtual void fontChange( const QFont & );
+ virtual void paletteChange ( const QPalette & );
+
+ bool eventFilter(QObject *, QEvent *);
+
+ // convenience methods...
+ void getSelectedArticles( QValueList<KNArticle*> &l );
+ void getSelectedArticles( QValueList<KNRemoteArticle*> &l );
+ void getSelectedThreads( QValueList<KNRemoteArticle*> &l );
+ void getSelectedArticles( QValueList<KNLocalArticle*> &l );
+ void closeCurrentThread();
+
+ //GUI
+ KAccel *a_ccel;
+ KNProgress *p_rogBar;
+ KNode::ArticleWidget *mArticleViewer;
+ KNCollectionView *c_olView;
+ KNHeaderView *h_drView;
+ KDockWidget *c_olDock, *h_drDock, *a_rtDock;
+ bool b_lockui;
+ KToolBar *q_uicksearch;
+ QLineEdit *s_earchLineEdit;
+
+ //Core
+ KNConfigManager *c_fgManager;
+ KNNetAccess *n_etAccess;
+ KNAccountManager *a_ccManager;
+ KNGroupManager *g_rpManager;
+ KNArticleManager *a_rtManager;
+ KNArticleFactory *a_rtFactory;
+ KNFolderManager *f_olManager;
+ KNFilterManager *f_ilManager;
+ KNScoringManager *s_coreManager;
+ KNMemoryManager *m_emManager;
+ Kpgp::Module *p_gp;
+
+protected slots:
+ //listview slots
+ void slotArticleSelected(QListViewItem*);
+ void slotArticleSelectionChanged();
+ void slotCollectionSelected(QListViewItem*);
+ void slotCollectionRenamed(QListViewItem*);
+ void slotCollectionViewDrop(QDropEvent* e, KNCollectionViewItem* after);
+ void slotArticleRMB(KListView*, QListViewItem *i, const QPoint &p);
+ void slotCollectionRMB(KListView*, QListViewItem *i, const QPoint &p);
+ /** Open selected article in own composer/reader window */
+ void slotOpenArticle(QListViewItem *item);
+ void slotHdrViewSortingChanged(int i);
+
+ //network slots
+ void slotNetworkActive(bool b);
+
+ //dock widget slots
+ void slotCheckDockWidgetStatus();
+ void slotGroupDockHidden();
+ void slotHeaderDockHidden();
+ void slotArticleDockHidden();
+ void slotDockWidgetFocusChangeRequest(QWidget *w);
+
+ //---------------------------------- <Actions> ----------------------------------
+
+protected:
+
+ //navigation
+ KAction *a_ctNavNextArt,
+ *a_ctNavPrevArt,
+ *a_ctNavNextUnreadArt,
+ *a_ctNavNextUnreadThread,
+ *a_ctNavNextGroup,
+ *a_ctNavPrevGroup,
+ *a_ctNavReadThrough;
+
+ //collection-view - accounts
+ KAction *a_ctAccProperties,
+ *a_ctAccRename,
+ *a_ctAccSubscribe,
+ *a_ctAccExpireAll,
+ *a_ctAccGetNewHdrs,
+ *a_ctAccGetNewHdrsAll,
+ *a_ctAccDelete,
+ *a_ctAccPostNewArticle;
+
+ //collection-view - groups
+ KAction *a_ctGrpProperties,
+ *a_ctGrpRename,
+ *a_ctGrpGetNewHdrs,
+ *a_ctGrpExpire,
+ *a_ctGrpReorganize,
+ *a_ctGrpUnsubscribe,
+ *a_ctGrpSetAllRead,
+ *a_ctGrpSetAllUnread,
+ *a_ctGrpSetUnread;
+
+ //collection-view - folder
+ KAction *a_ctFolNew,
+ *a_ctFolNewChild,
+ *a_ctFolDelete,
+ *a_ctFolRename,
+ *a_ctFolCompact,
+ *a_ctFolCompactAll,
+ *a_ctFolEmpty,
+ *a_ctFolMboxImport,
+ *a_ctFolMboxExport;
+
+ //header-view - list-handling
+ KSelectAction *a_ctArtSortHeaders;
+ KNFilterSelectAction *a_ctArtFilter;
+ KAction *a_ctArtSortHeadersKeyb,
+ *a_ctArtFilterKeyb,
+ *a_ctArtSearch,
+ *a_ctArtRefreshList,
+ *a_ctArtCollapseAll,
+ *a_ctArtExpandAll,
+ *a_ctArtToggleThread;
+ KToggleAction *a_ctArtToggleShowThreads;
+
+ //header-view - remote articles
+ KAction *a_ctArtSetArtRead,
+ *a_ctArtSetArtUnread,
+ *a_ctArtSetThreadRead,
+ *a_ctArtSetThreadUnread,
+ *a_ctArtOpenNewWindow;
+
+ // scoring
+ KAction *a_ctScoresEdit,
+ *a_ctReScore,
+ *a_ctScoreLower,
+ *a_ctScoreRaise,
+ *a_ctArtToggleIgnored,
+ *a_ctArtToggleWatched;
+
+ //header-view local articles
+ KAction *a_ctArtSendOutbox,
+ *a_ctArtDelete,
+ *a_ctArtSendNow,
+ *a_ctArtEdit;
+
+ //network
+ KAction *a_ctNetCancel;
+
+ KAction *a_ctFetchArticleWithID;
+
+ // settings menu
+ KToggleAction *a_ctToggleGroupView,
+ *a_ctToggleHeaderView,
+ *a_ctToggleArticleViewer,
+ *a_ctToggleQuickSearch;
+ KAction *a_ctSwitchToGroupView,
+ *a_ctSwitchToHeaderView,
+ *a_ctSwitchToArticleViewer;
+
+protected slots:
+ void slotNavNextUnreadArt();
+ void slotNavNextUnreadThread();
+ void slotNavReadThrough();
+
+ void slotAccProperties();
+ void slotAccRename();
+ void slotAccSubscribe();
+ void slotAccExpireAll();
+ void slotAccGetNewHdrs();
+ void slotAccGetNewHdrsAll();
+ void slotAccDelete();
+ void slotAccPostNewArticle();
+
+ void slotGrpProperties();
+ void slotGrpRename();
+ void slotGrpGetNewHdrs();
+ void slotGrpExpire();
+ void slotGrpReorganize();
+ void slotGrpUnsubscribe();
+ void slotGrpSetAllRead();
+ void slotGrpSetAllUnread();
+ void slotGrpSetUnread();
+
+ void slotFolNew();
+ void slotFolNewChild();
+ void slotFolDelete();
+ void slotFolRename();
+ void slotFolCompact();
+ void slotFolCompactAll();
+ void slotFolEmpty();
+ void slotFolMBoxImport();
+ void slotFolMBoxExport();
+
+ void slotArtSortHeaders(int i);
+ void slotArtSortHeadersKeyb();
+ void slotArtSearch();
+ void slotArtRefreshList();
+ void slotArtCollapseAll();
+ void slotArtExpandAll();
+ void slotArtToggleThread();
+ void slotArtToggleShowThreads();
+
+ void slotArtSetArtRead();
+ void slotArtSetArtUnread();
+ void slotArtSetThreadRead();
+ void slotArtSetThreadUnread();
+
+ void slotScoreEdit();
+ void slotReScore();
+ void slotScoreLower();
+ void slotScoreRaise();
+ void slotArtToggleIgnored();
+ void slotArtToggleWatched();
+
+ void slotArtOpenNewWindow();
+ void slotArtSendOutbox();
+ void slotArtDelete();
+ void slotArtSendNow();
+ void slotArtEdit();
+
+ void slotNetCancel();
+
+ void slotFetchArticleWithID();
+
+ void slotToggleGroupView();
+ void slotToggleHeaderView();
+ void slotToggleArticleViewer();
+ void slotToggleQuickSearch();
+ void slotSwitchToGroupView();
+ void slotSwitchToHeaderView();
+ void slotSwitchToArticleViewer();
+ void slotSettings();
+
+ //--------------------------- </Actions> -----------------------------
+
+private:
+ KRSqueezedTextLabel *s_tatusGroup; // widget used in the statusBar() for the group status
+ KRSqueezedTextLabel *s_tatusFilter;
+ KXMLGUIClient *m_GUIClient;
+};
+
+
+class FetchArticleIdDlg : public KDialogBase
+{
+ Q_OBJECT
+public:
+ FetchArticleIdDlg(QWidget *parent, const char */*name*/ );
+ QString messageId() const;
+
+protected slots:
+ void slotTextChanged(const QString & );
+protected:
+ KLineEdit *edit;
+};
+
+#endif