• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • kdepim
  • Sitemap
  • Contact Us
 

kmail

kmfoldertree.h

Go to the documentation of this file.
00001 /* -*- mode: C++ -*-
00002    This file is part of the KDE libraries
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License version 2 as published by the Free Software Foundation.
00007 
00008    This library is distributed in the hope that it will be useful,
00009    but WITHOUT ANY WARRANTY; without even the implied warranty of
00010    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011    Library General Public License for more details.
00012 
00013    You should have received a copy of the GNU Library General Public License
00014    along with this library; see the file COPYING.LIB.  If not, write to
00015    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00016    Boston, MA 02110-1301, USA.
00017 */
00018 #ifndef __KMFOLDERTREE
00019 #define __KMFOLDERTREE
00020 
00021 #include "kmail_export.h"
00022 #include "foldertreebase.h"
00023 
00024 #include <klocale.h>
00025 
00026 #include <QWidget>
00027 #include <QTimer>
00028 #include <q3header.h>
00029 #include <QPixmap>
00030 #include <QDragLeaveEvent>
00031 #include <QEvent>
00032 #include <QDragMoveEvent>
00033 #include <QDropEvent>
00034 #include <QList>
00035 #include <QResizeEvent>
00036 #include <QDragEnterEvent>
00037 #include <QMouseEvent>
00038 #include <Q3DragObject>
00039 #include <QPointer>
00040 
00041 class QDropEvent;
00042 class QPixmap;
00043 class QMenu;
00044 class KMenu;
00045 class KMFolder;
00046 class KMFolderDir;
00047 class KMFolderImap;
00048 class KMFolderTree;
00049 class KMAccount;
00050 // duplication from kmcommands.h, to avoid the include
00051 typedef QMap<QAction*,KMFolder*> KMMenuToFolder;
00052 template <typename T> class QPointer;
00053 
00054 using KPIM::KFolderTree;
00055 using KPIM::KFolderTreeItem;
00056 
00057 class KMAIL_EXPORT KMFolderTreeItem : public QObject, public KFolderTreeItem
00058 {
00059   Q_OBJECT
00060 public:
00062   KMFolderTreeItem( KFolderTree *parent, const QString & name,
00063                     KFolderTreeItem::Protocol protocol=KFolderTreeItem::NONE );
00064 
00066   KMFolderTreeItem( KFolderTree *parent, const QString & name,
00067                     KMFolder* folder );
00068 
00070   KMFolderTreeItem( KFolderTreeItem* parent, const QString & name,
00071                     KMFolder* folder );
00072   virtual ~KMFolderTreeItem();
00073 
00074   QPixmap normalIcon( int size ) const;
00075   QPixmap unreadIcon( int size ) const;
00076 
00077   void setNeedsRepaint( bool value ) { mNeedsRepaint = value; }
00078   bool needsRepaint() const { return mNeedsRepaint; }
00079 
00081   KMFolder* folder() const { return mFolder; }
00082   Q3ListViewItem* parent() const { return KFolderTreeItem::parent(); }
00083 
00086   void adjustUnreadCount( int newUnreadCount );
00087 
00089   virtual bool acceptDrag(QDropEvent* e) const;
00090 
00091 signals:
00093   void iconChanged( KMFolderTreeItem * );
00095   void nameChanged( KMFolderTreeItem * );
00096 
00097 public slots:
00098   void properties();
00099   void assignShortcut();
00100   void slotShowExpiryProperties();
00101   void slotIconsChanged();
00102   void slotNameChanged();
00103   void slotNoContentChanged();
00104   void updateCount();
00105 
00106 protected:
00107   void init();
00108   KMFolder* mFolder;
00110   virtual bool useTopLevelIcon() const { return depth() == 0; }
00112   virtual int iconSize() const { return 16; }
00113 
00114 private:
00115   bool mNeedsRepaint;
00116 };
00117 
00118 //==========================================================================
00119 
00120 class KMFolderTree : public KMail::FolderTreeBase
00121 {
00122   Q_OBJECT
00123 
00124 public:
00125   explicit KMFolderTree( KMMainWidget *mainWidget, QWidget *parent=0,
00126              const char *name=0 );
00127 
00129   void writeConfig();
00130 
00132   virtual void addDirectory( KMFolderDir *fdir, KMFolderTreeItem* parent );
00133 
00135   void createFolderList( QStringList *str,
00136                          QList<QPointer<KMFolder> > *folders,
00137                          bool localFolders=true,
00138                          bool imapFolders=true,
00139                          bool dimapFolders=true,
00140                          bool searchFolders=false,
00141                          bool includeNoContent=true,
00142                          bool includeNoChildren=true );
00143 
00145   virtual void readConfig(void);
00146 
00148   void cleanupConfigFile();
00149 
00151   void nextUnreadFolder(bool confirm);
00152 
00154   bool checkUnreadFolder(KMFolderTreeItem* ftl, bool confirm);
00155 
00156   KMFolder *currentFolder() const;
00157 
00158   QList<QPointer<KMFolder> > selectedFolders();
00159 
00160   enum ColumnMode {unread=15, total=16, foldersize=17};
00161 
00163   void toggleColumn(int column, bool openFolders = false);
00164 
00167   virtual void updatePopup() const;
00168 
00170   void showFolder( KMFolder* );
00171 
00173   enum MenuAction {
00174     CopyMessage,
00175     MoveMessage,
00176     CopyFolder,
00177     MoveFolder
00178   };
00179 
00181   void folderToPopupMenu( MenuAction action, QObject *receiver, KMMenuToFolder *,
00182       QMenu *menu, Q3ListViewItem *start = 0 );
00183 
00184 signals:
00186   void folderSelected(KMFolder*);
00187 
00189   void folderSelectedUnread( KMFolder * );
00190 
00192   void columnsChanged();
00193 
00195   void iconChanged( KMFolderTreeItem * );
00196 
00198   void nameChanged( KMFolderTreeItem * );
00199 
00200 public slots:
00202   virtual void reload(bool openFolders = false);
00203 
00205   void nextUnreadFolder();
00206 
00208   void prevUnreadFolder();
00209 
00211   void incCurrentFolder();
00212 
00214   void decCurrentFolder();
00215 
00217   void selectCurrentFolder();
00218 
00220   void delayedUpdate();
00221 
00223   void slotAccountRemoved(KMAccount*);
00224 
00226   void doFolderSelected(Q3ListViewItem *qlvi, bool keepSelection = false);
00227 
00233   void slotResetFolderList( Q3ListViewItem* item = 0, bool startList = true );
00234 
00236   void addChildFolder( KMFolder *folder = 0, QWidget * parent = 0 );
00237 
00239   void copyFolder();
00240 
00242   void cutFolder();
00243 
00245   void pasteFolder();
00246 
00248   void delayedReload();
00249 
00250 protected slots:
00251   //  void slotRMB(int, int);
00253   void doFolderListChanged();
00254 
00256   void slotFolderRemoved(KMFolder *);
00257 
00259   void slotFolderMoveOrCopyOperationFinished();
00260 
00262   void refresh();
00263 
00265   void openFolder();
00266 
00268   void slotFolderExpanded( Q3ListViewItem * item );
00269 
00271   void slotFolderCollapsed( Q3ListViewItem * item );
00272 
00274   void slotRenameFolder( Q3ListViewItem * item, int col, const QString& text);
00275 
00277   void slotUpdateCountsDelayed(KMFolder * folder);
00278   void slotUpdateCountTimeout();
00279   void slotUpdateOneCount();
00280 
00282   void slotToggleUnreadColumn();
00283   void slotToggleTotalColumn();
00284   void slotToggleSizeColumn();
00285 
00286   void slotContextMenuRequested( Q3ListViewItem *, const QPoint & );
00287 
00289   void slotCheckMail();
00290 
00291   void slotNewMessageToMailingList();
00292 
00294   virtual void moveSelectedToFolder( QAction* act );
00296   virtual void copySelectedToFolder( QAction* act );
00297 
00299   void updateCopyActions();
00300 
00301 protected:
00302   virtual void contentsMousePressEvent( QMouseEvent *e );
00303   virtual void contentsMouseReleaseEvent(QMouseEvent* me);
00304 
00306   virtual void updateUnreadAll( );
00307 
00308   virtual void resizeEvent(QResizeEvent*);
00309 
00311   bool readIsListViewItemOpen(KMFolderTreeItem *fti);
00312   void writeIsListViewItemOpen(KMFolderTreeItem *fti);
00313 
00314   QTimer mUpdateTimer;
00315 
00317   void contentsDragEnterEvent( QDragEnterEvent *e );
00318   void contentsDragMoveEvent( QDragMoveEvent *e );
00319   void contentsDragLeaveEvent( QDragLeaveEvent *e );
00320   void contentsDropEvent( QDropEvent *e );
00321   virtual Q3DragObject* dragObject();
00322 
00324   Q3ListViewItem *oldCurrent, *oldSelected;
00325   Q3ListViewItem *dropItem;
00326   QPointer<KMFolderTreeItem> mLastItem;
00327   QTimer autoopen_timer;
00328 
00329   // filter some rmb-events
00330   bool eventFilter(QObject*, QEvent*);
00331 
00333   void prepareItem( KMFolderTreeItem* );
00334 
00336   void connectSignals();
00337 
00339   void moveOrCopyFolder( QList<QPointer<KMFolder> > sources, KMFolder* destination, bool move=false );
00340 
00341 private slots:
00342   void slotAddToFavorites();
00343   void slotUnhideLocalInbox();
00344 
00345 private:
00347   Q3ListViewItemIterator mUpdateIterator;
00348 
00350   KMenu* mPopup;
00351   QAction *mUnreadAction,*mTotalAction, *mSizeAction;
00352 
00353   bool mReloading;
00354   QList<QPointer<KMFolder> > mCopySourceFolders;
00355   bool mCutFolder;
00356 
00357   QTimer *mUpdateCountTimer;
00358   QMap<QString,KMFolder*> mFolderToUpdateCount;
00359 
00361   KMMenuToFolder mMenuToFolder;
00362 };
00363 
00364 #endif

kmail

Skip menu "kmail"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdepim

Skip menu "kdepim"
  • akonadi
  •   clients
  •   kabc
  •   kcal
  •   kcm
  • akregator
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt
  • kdgantt1
  • kjots
  • kleopatra
  • kmail
  • kmobiletools
  • knode
  • knotes
  • kontact
  • kontactinterfaces
  • korganizer
  •   korgac
  • kpilot
  • ktimetracker
  • libkdepim
  • libkholidays
  • libkleo
  • libkpgp
  • maildir
Generated for kdepim by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal