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 Wed Jul 28 23:58:01 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003