kmfoldertree.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
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
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
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
This file is part of the documentation for kmail Library Version 3.2.2.