kmail Library API Documentation

kmfoldertree.h

00001 /* This file is part of the KDE libraries
00002 
00003    This library is free software; you can redistribute it and/or
00004    modify it under the terms of the GNU Library General Public
00005    License version 2 as published by the Free Software Foundation.
00006 
00007    This library is distributed in the hope that it will be useful,
00008    but WITHOUT ANY WARRANTY; without even the implied warranty of
00009    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00010    Library General Public License for more details.
00011 
00012    You should have received a copy of the GNU Library General Public License
00013    along with this library; see the file COPYING.LIB.  If not, write to
00014    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00015    Boston, MA 02111-1307, USA.
00016 */
00017 #ifndef __KMFOLDERTREE
00018 #define __KMFOLDERTREE
00019 
00020 #include "kmheaders.h"
00021 #include "kmfolder.h"
00022 
00023 #include <klocale.h>
00024 #include <kpopupmenu.h>
00025 #include <kfoldertree.h>
00026 #include <kiconloader.h>
00027 
00028 #include <qwidget.h>
00029 #include <qtimer.h>
00030 #include <qheader.h>
00031 
00032 class QDropEvent;
00033 class QPixmap;
00034 class QPainter;
00035 class KMFolderImap;
00036 class KMFolderTree;
00037 class KMMainWidget;
00038 class KMAccount;
00039 template <typename T> class QGuardedPtr;
00040 
00041 class KMFolderTreeItem : public QObject, public KFolderTreeItem
00042 
00043 {
00044   Q_OBJECT
00045 public:
00047   KMFolderTreeItem( KFolderTree *parent, const QString & name,
00048                     KFolderTreeItem::Protocol protocol=KFolderTreeItem::NONE );
00049 
00051   KMFolderTreeItem( KFolderTree *parent, const QString & name,
00052                     KMFolder* folder );
00053 
00055   KMFolderTreeItem( KFolderTreeItem* parent, const QString & name,
00056                     KMFolder* folder );
00057   virtual ~KMFolderTreeItem();
00058 
00059   QPixmap normalIcon(int size=16) const;
00060   QPixmap unreadIcon(int size=16) const;
00061 
00063   KMFolder* folder() { return mFolder; }
00064   QListViewItem* parent() { return KFolderTreeItem::parent(); }
00065 
00068   bool adjustUnreadCount();
00069 
00071   virtual bool acceptDrag(QDropEvent* ) const;
00072 
00073 signals:
00075   void iconChanged( KMFolderTreeItem * );
00077   void nameChanged( KMFolderTreeItem * );
00078   
00079 public slots:
00080   void properties();
00081   void slotRepaint();
00082   void slotNameChanged() { emit nameChanged( this ); }
00083 
00084 
00085 protected:
00086   void init();
00087   KMFolder* mFolder;
00088 };
00089 
00090 //==========================================================================
00091 
00092 class KMFolderTree : public KFolderTree
00093 {
00094   Q_OBJECT
00095 
00096 public:
00097   KMFolderTree( KMMainWidget *mainWidget, QWidget *parent=0,
00098         const char *name=0 );
00099 
00101   void writeConfig();
00102 
00104   virtual void reload(bool openFolders = false);
00105 
00107   virtual void addDirectory( KMFolderDir *fdir, KMFolderTreeItem* parent );
00108 
00110   virtual QListViewItem* indexOfFolder(const KMFolder*);
00111 
00113   virtual void createFolderList(QStringList * str,
00114     QValueList<QGuardedPtr<KMFolder> > * folders);
00115 
00117   void createImapFolderList(KMFolderImap *folder, QStringList *names,
00118     QStringList *urls, QStringList *mimeTypes);
00119 
00121   virtual void readConfig(void);
00122 
00124   void readColorConfig(void);
00125 
00127   void cleanupConfigFile();
00128 
00130   void nextUnreadFolder(bool confirm);
00131 
00133   bool checkUnreadFolder(KMFolderTreeItem* ftl, bool confirm);
00134 
00135   KMFolder *currentFolder() const;
00136 
00137   enum ColumnMode {unread=15, total=16};
00138 
00140   void toggleColumn(int column, bool openFolders = false);
00141 
00142 signals:
00144   void folderSelected(KMFolder*);
00145 
00147   void folderSelectedUnread( KMFolder * );
00148 
00150   void folderDrop(KMFolder*);
00151 
00153   void folderDropCopy(KMFolder*);
00154 
00156   void columnsChanged();
00157   
00159   void iconChanged( KMFolderTreeItem * );
00160   
00162   void nameChanged( KMFolderTreeItem * );
00163   
00164 public slots:
00166   void nextUnreadFolder();
00167 
00169   void prevUnreadFolder();
00170 
00172   void incCurrentFolder();
00173 
00175   void decCurrentFolder();
00176 
00178   void selectCurrentFolder();
00179 
00181   void delayedUpdate();
00182 
00184   void slotAccountRemoved(KMAccount*);
00185 
00187   void doFolderSelected(QListViewItem*);
00188 
00190   void startAutoScroll();
00191   void stopAutoScroll();
00192 
00193 protected slots:
00194   //  void slotRMB(int, int);
00196   void doFolderListChanged();
00197 
00199   void slotFolderRemoved(KMFolder *);
00200 
00202   void refresh();
00203 
00205   void refresh(KMFolder* folder, bool doUpdate);
00206 
00208   void addChildFolder();
00209 
00211   void openFolder();
00212 
00214   void slotFolderExpanded( QListViewItem * item );
00215 
00217   void slotFolderCollapsed( QListViewItem * item );
00218 
00220   void slotRenameFolder( QListViewItem * item, int col, const QString& text);
00221 
00223   void slotUpdateCounts(KMFolder * folder);
00224   void slotUpdateCounts(KMFolderImap * folder, bool success = true);
00225   void slotUpdateOneCount();
00226 
00228   void slotToggleUnreadColumn();
00229   void slotToggleTotalColumn();
00230 
00231   void autoScroll();
00232 
00233   void slotContextMenuRequested( QListViewItem *, const QPoint & );
00234 
00236   void slotCheckMail();
00237 
00238 protected:
00240   virtual bool event(QEvent *e);
00241 
00242   virtual void contentsMouseReleaseEvent(QMouseEvent* me);
00243 
00244   virtual void paintEmptyArea( QPainter * p, const QRect & rect );
00245 
00247   virtual void updateUnreadAll( );
00248 
00249   virtual void resizeEvent(QResizeEvent*);
00250 
00252   bool readIsListViewItemOpen(KMFolderTreeItem *fti);
00253   void writeIsListViewItemOpen(KMFolderTreeItem *fti);
00254 
00255   QTimer mUpdateTimer;
00256 
00258   void contentsDragEnterEvent( QDragEnterEvent *e );
00259   void contentsDragMoveEvent( QDragMoveEvent *e );
00260   void contentsDragLeaveEvent( QDragLeaveEvent *e );
00261   void contentsDropEvent( QDropEvent *e );
00262 
00264   QListViewItem *oldCurrent, *oldSelected;
00265   QListViewItem *dropItem;
00266   KMFolderTreeItem *mLastItem;
00267   QTimer autoopen_timer;
00268 
00269   // filter some rmb-events
00270   bool eventFilter(QObject*, QEvent*);
00271 
00273   void prepareItem( KMFolderTreeItem* );
00274 
00276   void connectSignals();
00277 
00278 private:
00279   QTimer autoscroll_timer;
00280   int autoscroll_time;
00281   int autoscroll_accel;
00282 
00284   QListViewItemIterator mUpdateIterator;
00285 
00287   KPopupMenu* mPopup;
00288   int mUnreadPop;
00289   int mTotalPop;
00290 
00292   bool mShowPopupAfterDnD;
00293   KMMainWidget *mMainWidget;
00294 };
00295 
00296 #endif
KDE Logo
This file is part of the documentation for kmail Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat May 1 11:37:28 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003