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