00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __KMFOLDERTREE
00019 #define __KMFOLDERTREE
00020
00021 #include "foldertreebase.h"
00022
00023 #include <klocale.h>
00024 #include <kdepimmacros.h>
00025
00026 #include <tqguardedptr.h>
00027 #include <tqwidget.h>
00028 #include <tqtimer.h>
00029 #include <tqheader.h>
00030
00031 class TQDropEvent;
00032 class TQPixmap;
00033 class TQPainter;
00034 class TQPopupMenu;
00035 class KPopupMenu;
00036 class KMFolder;
00037 class KMFolderDir;
00038 class KMFolderImap;
00039 class KMFolderTree;
00040 class KMAccount;
00041
00042 typedef TQMap<int,KMFolder*> KMMenuToFolder;
00043 template <typename T> class TQGuardedPtr;
00044
00045 class KDE_EXPORT KMFolderTreeItem : public TQObject, public KFolderTreeItem
00046 {
00047 Q_OBJECT
00048 TQ_OBJECT
00049 public:
00051 KMFolderTreeItem( KFolderTree *parent, const TQString & name,
00052 KFolderTreeItem::Protocol protocol=KFolderTreeItem::NONE );
00053
00055 KMFolderTreeItem( KFolderTree *parent, const TQString & name,
00056 KMFolder* folder );
00057
00059 KMFolderTreeItem( KFolderTreeItem* parent, const TQString & name,
00060 KMFolder* folder );
00061 virtual ~KMFolderTreeItem();
00062
00063 TQPixmap normalIcon( int size ) const;
00064 TQPixmap unreadIcon( int size ) const;
00065
00066 void setNeedsRepaint( bool value ) { mNeedsRepaint = value; }
00067 bool needsRepaint() const { return mNeedsRepaint; }
00068
00070 KMFolder* folder() const { return mFolder; }
00071 TQListViewItem* parent() const { return KFolderTreeItem::parent(); }
00072
00075 void adjustUnreadCount( int newUnreadCount );
00076
00078 virtual bool acceptDrag(TQDropEvent* e) const;
00079
00080 signals:
00082 void iconChanged( KMFolderTreeItem * );
00084 void nameChanged( KMFolderTreeItem * );
00085
00086 public slots:
00087 void properties();
00088 void assignShortcut();
00089 void slotShowExpiryProperties();
00090 void slotIconsChanged();
00091 void slotNameChanged();
00092 void slotNoContentChanged();
00093 void updateCount();
00094
00095 protected:
00096 void init();
00097 KMFolder* mFolder;
00099 virtual bool useTopLevelIcon() const { return depth() == 0; }
00101 virtual int iconSize() const { return 16; }
00102
00103 private:
00104 bool mNeedsRepaint;
00105 };
00106
00107
00108
00109 class KMFolderTree : public KMail::FolderTreeBase
00110 {
00111 Q_OBJECT
00112 TQ_OBJECT
00113
00114 public:
00115 KMFolderTree( KMMainWidget *mainWidget, TQWidget *parent=0,
00116 const char *name=0 );
00117
00119 void writeConfig();
00120
00122 virtual void addDirectory( KMFolderDir *fdir, KMFolderTreeItem* parent );
00123
00125 void createFolderList( TQStringList *str,
00126 TQValueList<TQGuardedPtr<KMFolder> > *folders,
00127 bool localFolders=true,
00128 bool imapFolders=true,
00129 bool dimapFolders=true,
00130 bool searchFolders=false,
00131 bool includeNoContent=true,
00132 bool includeNoChildren=true );
00133
00135 virtual void readConfig(void);
00136
00138 void cleanupConfigFile();
00139
00141 void nextUnreadFolder(bool confirm);
00142
00144 bool checkUnreadFolder(KMFolderTreeItem* ftl, bool confirm);
00145
00146 KMFolder *currentFolder() const;
00147
00148 TQValueList<TQGuardedPtr<KMFolder> > selectedFolders();
00149
00150 enum ColumnMode {unread=15, total=16, foldersize=17};
00151
00153 void toggleColumn(int column, bool openFolders = false);
00154
00157 virtual void updatePopup() const;
00158
00160 void showFolder( KMFolder* );
00161
00163 enum MenuAction {
00164 CopyMessage,
00165 MoveMessage,
00166 CopyFolder,
00167 MoveFolder
00168 };
00169
00171 void folderToPopupMenu( MenuAction action, TQObject *receiver, KMMenuToFolder *,
00172 TQPopupMenu *menu, TQListViewItem *start = 0 );
00173
00174 signals:
00176 void folderSelected(KMFolder*);
00177
00179 void folderSelectedUnread( KMFolder * );
00180
00182 void syncStateChanged();
00183
00185 void columnsChanged();
00186
00188 void iconChanged( KMFolderTreeItem * );
00189
00191 void nameChanged( KMFolderTreeItem * );
00192
00193 public slots:
00195 virtual void reload(bool openFolders = false);
00196
00198 void nextUnreadFolder();
00199
00201 void prevUnreadFolder();
00202
00204 void incCurrentFolder();
00205
00207 void decCurrentFolder();
00208
00210 void selectCurrentFolder();
00211
00213 void delayedUpdate();
00214
00216 void slotAccountRemoved(KMAccount*);
00217
00219 void doFolderSelected(TQListViewItem *qlvi, bool keepSelection = false);
00220
00226 void slotResetFolderList( TQListViewItem* item = 0, bool startList = true );
00227
00229 void addChildFolder( KMFolder *folder = 0, TQWidget * parent = 0 );
00230
00232 void copyFolder();
00233
00235 void cutFolder();
00236
00238 void pasteFolder();
00239
00241 void delayedReload();
00242
00243 protected slots:
00244
00246 void doFolderListChanged();
00247
00249 void slotFolderRemoved(KMFolder *);
00250
00252 void slotFolderMoveOrCopyOperationFinished();
00253
00255 void refresh();
00256
00258 void openFolder();
00259
00261 void slotFolderExpanded( TQListViewItem * item );
00262
00264 void slotFolderCollapsed( TQListViewItem * item );
00265
00267 void slotRenameFolder( TQListViewItem * item, int col, const TQString& text);
00268
00270 void slotUpdateCountsDelayed(KMFolder * folder);
00271 void slotUpdateCountTimeout();
00272 void slotUpdateOneCount();
00273
00275 void slotToggleUnreadColumn();
00276 void slotToggleTotalColumn();
00277 void slotToggleSizeColumn();
00278
00279 void slotContextMenuRequested( TQListViewItem *, const TQPoint & );
00280
00282 void slotCheckMail();
00283
00284 void slotNewMessageToMailingList();
00285
00287 virtual void moveSelectedToFolder( int menuId );
00289 virtual void copySelectedToFolder( int menuId );
00290
00292 void updateCopyActions();
00293
00294 void slotSyncStateChanged();
00295
00296 protected:
00297 virtual void contentsMousePressEvent( TQMouseEvent *e );
00298 virtual void contentsMouseReleaseEvent(TQMouseEvent* me);
00299
00301 virtual void updateUnreadAll( );
00302
00303 virtual void resizeEvent(TQResizeEvent*);
00304
00306 bool readIsListViewItemOpen(KMFolderTreeItem *fti);
00307 void writeIsListViewItemOpen(KMFolderTreeItem *fti);
00308
00309 TQTimer mUpdateTimer;
00310
00312 void contentsDragEnterEvent( TQDragEnterEvent *e );
00313 void contentsDragMoveEvent( TQDragMoveEvent *e );
00314 void contentsDragLeaveEvent( TQDragLeaveEvent *e );
00315 void contentsDropEvent( TQDropEvent *e );
00316 virtual TQDragObject* dragObject();
00317
00319 TQListViewItem *oldCurrent, *oldSelected;
00320 TQListViewItem *dropItem;
00321 KMFolderTreeItem *mLastItem;
00322 TQTimer autoopen_timer;
00323
00324
00325 bool eventFilter(TQObject*, TQEvent*);
00326
00328 void prepareItem( KMFolderTreeItem* );
00329
00331 void connectSignals();
00332
00334 void moveOrCopyFolder( TQValueList<TQGuardedPtr<KMFolder> > sources, KMFolder* destination, bool move=false );
00335
00336 private slots:
00337 void slotAddToFavorites();
00338 void slotUnhideLocalInbox();
00339
00340 private:
00342 TQListViewItemIterator mUpdateIterator;
00343
00345 KPopupMenu* mPopup;
00346 int mUnreadPop;
00347 int mTotalPop;
00348 int mSizePop;
00349
00350 bool mReloading;
00351 TQValueList<TQGuardedPtr<KMFolder> > mCopySourceFolders;
00352 bool mCutFolder;
00353
00354 TQTimer *mUpdateCountTimer;
00355 TQMap<TQString,KMFolder*> mFolderToUpdateCount;
00356
00358 KMMenuToFolder mMenuToFolder;
00359 };
00360
00361 #endif