You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

118 lines
3.1 KiB

#ifndef __KMFOLDERTREE
#define __KMFOLDERTREE
#include <qwidget.h>
#include <qlistview.h>
//#include <ktablistbox.h>
#include "kmfolder.h"
// Fixme! A temporary dependency
#include "kmheaders.h" // For KMHeaderToFolderDrag & KMPaintInfo
class QDropEvent;
class QTimer;
class QPixmap;
class KMFolderTreeItem;
#define KMFolderTreeInherited QListView
class KMFolderTree : public QListView
{
Q_OBJECT
protected:
virtual void drawContentsOffset( QPainter * p, int ox, int oy,
int cx, int cy, int cw, int ch );
public:
KMFolderTree(QWidget *parent=0, const char *name=0);
virtual ~KMFolderTree();
// Save config options
void writeConfig();
// Get/refresh the folder tree
virtual void reload(void);
// Recusively add folders in a folder directory to a listview item.
virtual void addDirectory( KMFolderDir *fdir, QListViewItem* parent );
// Find index of given folder. Returns -1 if not found
virtual QListViewItem* indexOfFolder(const KMFolder*);
/** Read config options. */
virtual void readConfig(void);
signals:
/* The selected folder has changed */
void folderSelected(KMFolder*);
/* Messages have been dropped onto a folder */
void folderDrop(KMFolder*);
protected slots:
void doFolderSelected(QListViewItem*);
// void slotRMB(int, int);
/** called by the folder-manager when the list of folders changed */
void doFolderListChanged();
/** Updates the folder tree only if some folder lable has changed */
void refresh(KMFolder*);
/** Executes delayed update of folder tree */
void delayedUpdate();
/* Create a child folder */
void addChildFolder();
/* Open a folder */
void openFolder();
protected:
virtual void paintEmptyArea( QPainter * p, const QRect & rect );
// Updates the number of unread messages for all folders
virtual void updateUnreadAll( );
virtual void resizeEvent(QResizeEvent*);
// Read/Save open/close state indicator for an item in folderTree list view
bool readIsListViewItemOpen(KMFolderTreeItem *fti);
void writeIsListViewItemOpen(KMFolderTreeItem *fti);
KMFolderNodeList mList;
QTimer* mUpdateTimer;
static QPixmap *pixDir, *pixNode, *pixPlain, *pixFld, *pixFull, *pixIn,
*pixOut, *pixTr, *pixSent;
// We need out own root, otherwise the QListView will create its own
// root of type QListViewItem, hence no overriding paintBranches
// and no backing pixmap
QListViewItem *root;
//Drag and drop methods
void contentsDragEnterEvent( QDragEnterEvent *e );
void contentsDragMoveEvent( QDragMoveEvent *e );
void contentsDragLeaveEvent( QDragLeaveEvent *e );
void contentsDropEvent( QDropEvent *e );
//Drag and drop variables
QListViewItem *oldCurrent;
QListViewItem *dropItem;
QTimer autoopen_timer;
KMPaintInfo mPaintInfo;
// ########### The Trolls may move this Drag and drop stuff to QScrollView
private:
QTimer autoscroll_timer;
int autoscroll_time;
int autoscroll_accel;
public slots:
void startAutoScroll();
void stopAutoScroll();
protected slots:
void autoScroll();
void rightButtonPressed( QListViewItem *, const QPoint &, int);
};
#endif