karchive.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __karchive_h
00021 #define __karchive_h
00022
00023 #include <sys/stat.h>
00024 #include <sys/types.h>
00025
00026 #include <qdatetime.h>
00027 #include <qstring.h>
00028 #include <qstringlist.h>
00029 #include <qdict.h>
00030
00031 class KArchiveDirectory;
00032 class KArchiveFile;
00033
00038 class KArchive
00039 {
00040 protected:
00046 KArchive( QIODevice * dev );
00047
00048 public:
00049 virtual ~KArchive();
00050
00057 virtual bool open( int mode );
00058
00065 virtual void close();
00066
00070 bool isOpened() const { return m_open; }
00071
00075 int mode() const { return m_mode; }
00076
00080 QIODevice * device() const { return m_dev; }
00081
00086 const KArchiveDirectory* directory() const;
00087
00092 virtual bool writeDir( const QString& name, const QString& user, const QString& group ) = 0;
00093
00100 virtual bool writeFile( const QString& name, const QString& user, const QString& group, uint size, const char* data );
00101
00110 virtual bool prepareWriting( const QString& name, const QString& user, const QString& group, uint size ) = 0;
00111
00116 virtual bool doneWriting( uint size ) = 0;
00117
00118 protected:
00123 virtual bool openArchive( int mode ) = 0;
00124
00129 virtual bool closeArchive() = 0;
00130
00137 virtual KArchiveDirectory* rootDir();
00138
00143 KArchiveDirectory * findOrCreate( const QString & path );
00144
00148 void setDevice( QIODevice *dev );
00149
00153 void setRootDir( KArchiveDirectory *rootDir );
00154
00155 private:
00156 QIODevice * m_dev;
00157 bool m_open;
00158 char m_mode;
00159 protected:
00160 virtual void virtual_hook( int id, void* data );
00161 private:
00162 class KArchivePrivate;
00163 KArchivePrivate * d;
00164 };
00165
00172 class KArchiveEntry
00173 {
00174 public:
00175 KArchiveEntry( KArchive* archive, const QString& name, int access, int date,
00176 const QString& user, const QString& group,
00177 const QString &symlink );
00178
00179 virtual ~KArchiveEntry() { }
00180
00184 QDateTime datetime() const;
00185 int date() const { return m_date; }
00186
00190 QString name() const { return m_name; }
00195 mode_t permissions() const { return m_access; }
00199 QString user() const { return m_user; }
00203 QString group() const { return m_group; }
00204
00208 QString symlink() const { return m_symlink; }
00209
00213 virtual bool isFile() const { return false; }
00214
00218 virtual bool isDirectory() const { return false; }
00219
00220 protected:
00221 KArchive* archive() const { return m_archive; }
00222
00223 private:
00224 QString m_name;
00225 int m_date;
00226 mode_t m_access;
00227 QString m_user;
00228 QString m_group;
00229 QString m_symlink;
00230 KArchive* m_archive;
00231 protected:
00232 virtual void virtual_hook( int id, void* data );
00233 private:
00234 class KArchiveEntryPrivate* d;
00235 };
00236
00243 class KArchiveFile : public KArchiveEntry
00244 {
00245 public:
00246 KArchiveFile( KArchive* archive, const QString& name, int access, int date,
00247 const QString& user, const QString& group, const QString &symlink,
00248 int pos, int size );
00249
00250 virtual ~KArchiveFile() { }
00251
00255 int position() const;
00259 int size() const;
00263 void setSize( int s ) { m_size = s; }
00264
00269 virtual QByteArray data() const;
00270
00278 QIODevice *device() const;
00279
00283 virtual bool isFile() const { return true; }
00284
00289 void copyTo(const QString& dest) const;
00290
00291 private:
00292 int m_pos;
00293 int m_size;
00294 protected:
00295 virtual void virtual_hook( int id, void* data );
00296 private:
00297 class KArchiveFilePrivate* d;
00298 };
00299
00306 class KArchiveDirectory : public KArchiveEntry
00307 {
00308 public:
00309 KArchiveDirectory( KArchive* archive, const QString& name, int access, int date,
00310 const QString& user, const QString& group,
00311 const QString& symlink);
00312
00313 virtual ~KArchiveDirectory() { }
00314
00318 QStringList entries() const;
00324 KArchiveEntry* entry( QString name );
00325 const KArchiveEntry* entry( QString name ) const;
00326
00331 void addEntry( KArchiveEntry* );
00332
00336 virtual bool isDirectory() const { return true; }
00337
00344 void copyTo(const QString& dest, bool recursive = true) const;
00345
00346 private:
00347 QDict<KArchiveEntry> m_entries;
00348 protected:
00349 virtual void virtual_hook( int id, void* data );
00350 private:
00351 class KArchiveDirectoryPrivate* d;
00352 };
00353
00354 #endif
This file is part of the documentation for kdelibs Version 3.1.5.