kmail
importjob.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef IMPORTJOB_H
00020 #define IMPORTJOB_H
00021
00022 #include <kurl.h>
00023
00024 #include <qobject.h>
00025 #include <qvaluelist.h>
00026 #include <qptrlist.h>
00027
00028 #include <sys/types.h>
00029
00030 class QWidget;
00031 class KArchive;
00032 class KArchiveDirectory;
00033 class KArchiveFile;
00034 class KMFolder;
00035 class KMMessage;
00036
00037 namespace KPIM
00038 {
00039 class ProgressItem;
00040 }
00041
00042 namespace KMail
00043 {
00044 class FolderJob;
00045
00052 class ImportJob : public QObject
00053 {
00054 Q_OBJECT
00055
00056 public:
00057
00058 explicit ImportJob( QWidget *parentWidget = 0 );
00059 ~ImportJob();
00060 void start();
00061 void setFile( const KURL &archiveFile );
00062 void setRootFolder( KMFolder *rootFolder );
00063
00064 private slots:
00065
00066 void importNextMessage();
00067 void cancelJob();
00068 void messagePutResult( KMail::FolderJob *job );
00069
00070 private:
00071
00072 struct Folder
00073 {
00074 KMFolder *parent;
00075 const KArchiveDirectory *archiveDir;
00076 };
00077
00078 struct Messages
00079 {
00080 KMFolder *parent;
00081 QPtrList<KArchiveFile> files;
00082 };
00083
00084 void finish();
00085 void abort( const QString &errorMessage );
00086 void queueFolders();
00087 void importNextDirectory();
00088 KMFolder* createSubFolder( KMFolder *parent, const QString &folderName, mode_t permissions );
00089 KMFolder* getOrCreateSubFolder( KMFolder *parentFolder, const QString &subFolderName,
00090 mode_t subFolderPermissions );
00091 void enqueueMessages( const KArchiveDirectory *dir, KMFolder *folder );
00092 void messageAdded();
00093
00094 KArchive *mArchive;
00095
00096
00097
00098 KMFolder *mRootFolder;
00099
00100 QWidget *mParentWidget;
00101 KURL mArchiveFile;
00102 int mNumberOfImportedMessages;
00103
00104
00105
00106 QValueList<Folder> mQueuedDirectories;
00107
00108
00109 QValueList<Messages> mQueuedMessages;
00110
00111
00112 KMFolder *mCurrentFolder;
00113
00114
00115 KMMessage *mCurrentMessage;
00116
00117
00118 KArchiveFile *mCurrentMessageFile;
00119
00120 KPIM::ProgressItem *mProgressItem;
00121 bool mAborted;
00122 };
00123
00124 }
00125
00126 #endif
|