/* 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 <tqglobal.h> #include <tdepimmacros.h> class TQListViewItem; 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, TQWidget* parent, const char* name ); ~KNMainWidget(); /** exit */ bool queryClose(); void prepareShutdown(); //GUI void setStatusMsg(const TQString& = TQString(), int id=SB_MAIN); void setStatusHelpMsg(const TQString& 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 TQSize 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 TQString& ); protected: KActionCollection* actionCollection() const; KXMLGUIFactory *factory() const; void initActions(); void iniStatusBar(); /** checks if run for the first time, sets some global defaults (email configuration) */ bool firstStart(); void readOptions(); void saveOptions(); bool requestShutdown(); virtual void showEvent(TQShowEvent *); /** update appearance */ virtual void fontChange( const TQFont & ); virtual void paletteChange ( const TQPalette & ); bool eventFilter(TQObject *, TQEvent *); // convenience methods... void getSelectedArticles( TQValueList<KNArticle*> &l ); void getSelectedArticles( TQValueList<KNRemoteArticle*> &l ); void getSelectedThreads( TQValueList<KNRemoteArticle*> &l ); void getSelectedArticles( TQValueList<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; TQLineEdit *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(TQListViewItem*); void slotArticleSelectionChanged(); void slotCollectionSelected(TQListViewItem*); void slotCollectionRenamed(TQListViewItem*); void slotCollectionViewDrop(TQDropEvent* e, KNCollectionViewItem* after); void slotArticleRMB(KListView*, TQListViewItem *i, const TQPoint &p); void slotCollectionRMB(KListView*, TQListViewItem *i, const TQPoint &p); /** Open selected article in own composer/reader window */ void slotOpenArticle(TQListViewItem *item); void slotHdrViewSortingChanged(int i); //network slots void slotNetworkActive(bool b); //dock widget slots void slotCheckDockWidgeStatus(); void slotGroupDockHidden(); void slotHeaderDockHidden(); void slotArticleDockHidden(); void slotDockWidgetFocusChangeRequest(TQWidget *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(TQWidget *parent, const char */*name*/ ); TQString messageId() const; protected slots: void slotTextChanged(const TQString & ); protected: KLineEdit *edit; }; #endif