kio Library API Documentation

karchive.h

00001 /* This file is part of the KDE libraries 00002 Copyright (C) 2000 David Faure <faure@kde.org> 00003 Copyright (C) 2003 Leo Savernik <l.savernik@aon.at> 00004 00005 Moved from ktar.h by Roberto Teixeira <maragato@kde.org> 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Library General Public 00009 License version 2 as published by the Free Software Foundation. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Library General Public License for more details. 00015 00016 You should have received a copy of the GNU Library General Public License 00017 along with this library; see the file COPYING.LIB. If not, write to 00018 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00019 Boston, MA 02111-1307, USA. 00020 */ 00021 #ifndef __karchive_h 00022 #define __karchive_h 00023 00024 #include <sys/stat.h> 00025 #include <sys/types.h> 00026 00027 #include <qdatetime.h> 00028 #include <qstring.h> 00029 #include <qstringlist.h> 00030 #include <qdict.h> 00031 00032 class KArchiveDirectory; 00033 class KArchiveFile; 00034 00040 class KArchive 00041 { 00042 protected: 00048 KArchive( QIODevice * dev ); 00049 00050 public: 00051 virtual ~KArchive(); 00052 00059 virtual bool open( int mode ); 00060 00067 virtual void close(); 00068 00073 bool isOpened() const { return m_open; } 00074 00080 int mode() const { return m_mode; } 00081 00086 QIODevice * device() const { return m_dev; } 00087 00093 const KArchiveDirectory* directory() const; 00094 00105 bool addLocalFile( const QString& fileName, const QString& destName ); 00106 00118 bool addLocalDirectory( const QString& path, const QString& destName ); 00119 00131 virtual bool writeDir( const QString& name, const QString& user, const QString& group ) = 0; 00132 00150 bool writeDir( const QString& name, const QString& user, const QString& group, 00151 mode_t perm, time_t atime, time_t mtime, time_t ctime ); 00152 00167 bool writeSymLink(const QString &name, const QString &target, 00168 const QString &user, const QString &group, 00169 mode_t perm, time_t atime, time_t mtime, time_t ctime); 00170 00184 virtual bool writeFile( const QString& name, const QString& user, const QString& group, uint size, const char* data ); 00185 00207 bool writeFile( const QString& name, const QString& user, const QString& group, 00208 uint size, mode_t perm, time_t atime, time_t mtime, 00209 time_t ctime, const char* data ); 00210 00225 virtual bool prepareWriting( const QString& name, const QString& user, const QString& group, uint size ) = 0; 00226 00248 bool prepareWriting( const QString& name, const QString& user, 00249 const QString& group, uint size, mode_t perm, 00250 time_t atime, time_t mtime, time_t ctime ); 00251 00256 bool writeData( const char* data, uint size ); 00257 00263 virtual bool doneWriting( uint size ) = 0; 00264 00265 protected: 00271 virtual bool openArchive( int mode ) = 0; 00272 00277 virtual bool closeArchive() = 0; 00278 00286 virtual KArchiveDirectory* rootDir(); 00287 00294 KArchiveDirectory * findOrCreate( const QString & path ); 00295 00299 void setDevice( QIODevice *dev ); 00300 00304 void setRootDir( KArchiveDirectory *rootDir ); 00305 00306 private: 00307 QIODevice * m_dev; 00308 bool m_open; 00309 char m_mode; 00310 protected: 00311 virtual void virtual_hook( int id, void* data ); 00312 /* @internal for virtual_hook */ 00313 enum { VIRTUAL_WRITE_DATA = 1, VIRTUAL_WRITE_SYMLINK, VIRTUAL_WRITE_DIR, 00314 VIRTUAL_WRITE_FILE, VIRTUAL_PREPARE_WRITING }; 00315 bool prepareWriting_impl( const QString& name, const QString& user, 00316 const QString& group, uint size, mode_t perm, 00317 time_t atime, time_t mtime, time_t ctime ); 00318 struct PrepareWritingParams { 00319 const QString *name; 00320 const QString *user; 00321 const QString *group; 00322 uint size; 00323 mode_t perm; 00324 time_t atime, mtime, ctime; 00325 bool retval; 00326 }; 00327 bool writeFile_impl( const QString& name, const QString& user, 00328 const QString& group, uint size, mode_t perm, 00329 time_t atime, time_t mtime, time_t ctime, 00330 const char* data ); 00331 struct WriteFileParams { 00332 const QString *name; 00333 const QString *user; 00334 const QString *group; 00335 uint size; 00336 mode_t perm; 00337 time_t atime, mtime, ctime; 00338 const char *data; 00339 bool retval; 00340 }; 00341 bool writeDir_impl(const QString& name, const QString& user, 00342 const QString& group, mode_t perm, 00343 time_t atime, time_t mtime, time_t ctime); 00344 struct WriteDirParams { 00345 const QString *name; 00346 const QString *user; 00347 const QString *group; 00348 mode_t perm; 00349 time_t atime, mtime, ctime; 00350 bool retval; 00351 }; 00352 bool writeSymLink_impl(const QString &name, const QString &target, 00353 const QString &user, const QString &group, 00354 mode_t perm, time_t atime, time_t mtime, time_t ctime); 00355 struct WriteSymlinkParams { 00356 const QString *name; 00357 const QString *target; 00358 const QString *user; 00359 const QString *group; 00360 mode_t perm; 00361 time_t atime, mtime, ctime; 00362 bool retval; 00363 }; 00364 bool writeData_impl( const char* data, uint size ); 00365 struct WriteDataParams { 00366 const char* data; 00367 uint size; 00368 bool retval; 00369 }; 00370 private: 00371 class KArchivePrivate; 00372 KArchivePrivate * d; 00373 }; 00374 00382 class KArchiveEntry 00383 { 00384 public: 00395 KArchiveEntry( KArchive* archive, const QString& name, int access, int date, 00396 const QString& user, const QString& group, 00397 const QString &symlink ); 00398 00399 virtual ~KArchiveEntry() { } 00400 00405 QDateTime datetime() const; 00406 00411 int date() const { return m_date; } 00412 00417 QString name() const { return m_name; } 00423 mode_t permissions() const { return m_access; } 00428 QString user() const { return m_user; } 00433 QString group() const { return m_group; } 00434 00439 QString symlink() const { return m_symlink; } 00440 00445 virtual bool isFile() const { return false; } 00446 00451 virtual bool isDirectory() const { return false; } 00452 00453 protected: 00454 KArchive* archive() const { return m_archive; } 00455 00456 private: 00457 QString m_name; 00458 int m_date; 00459 mode_t m_access; 00460 QString m_user; 00461 QString m_group; 00462 QString m_symlink; 00463 KArchive* m_archive; 00464 protected: 00465 virtual void virtual_hook( int id, void* data ); 00466 private: 00467 class KArchiveEntryPrivate* d; 00468 }; 00469 00477 class KArchiveFile : public KArchiveEntry 00478 { 00479 public: 00492 KArchiveFile( KArchive* archive, const QString& name, int access, int date, 00493 const QString& user, const QString& group, const QString &symlink, 00494 int pos, int size ); 00495 00496 virtual ~KArchiveFile() { } 00497 00502 int position() const; // TODO use Q_LONG in KDE-4.0 00507 int size() const; // TODO use Q_LONG in KDE-4.0 00512 void setSize( int s ) { m_size = s; } 00513 00519 virtual QByteArray data() const; 00520 00529 QIODevice *device() const; // TODO make virtual 00530 00535 virtual bool isFile() const { return true; } 00536 00542 void copyTo(const QString& dest) const; 00543 00544 private: 00545 int m_pos; // TODO use Q_LONG in KDE-4.0 00546 int m_size; // TODO use Q_LONG in KDE-4.0 00547 protected: 00548 virtual void virtual_hook( int id, void* data ); 00549 private: 00550 class KArchiveFilePrivate* d; 00551 }; 00552 00560 class KArchiveDirectory : public KArchiveEntry 00561 { 00562 public: 00573 KArchiveDirectory( KArchive* archive, const QString& name, int access, int date, 00574 const QString& user, const QString& group, 00575 const QString& symlink); 00576 00577 virtual ~KArchiveDirectory() { } 00578 00583 QStringList entries() const; 00589 KArchiveEntry* entry( QString name ); 00595 const KArchiveEntry* entry( QString name ) const; 00596 00601 void addEntry( KArchiveEntry* ); 00602 00607 virtual bool isDirectory() const { return true; } 00608 00616 void copyTo(const QString& dest, bool recursive = true) const; 00617 00618 private: 00619 QDict<KArchiveEntry> m_entries; 00620 protected: 00621 virtual void virtual_hook( int id, void* data ); 00622 private: 00623 class KArchiveDirectoryPrivate* d; 00624 }; 00625 00626 #endif
KDE Logo
This file is part of the documentation for kio Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Oct 10 18:55:25 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003