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 #include <kdelibs_export.h> 00033 00034 class KArchiveDirectory; 00035 class KArchiveFile; 00036 00042 class KIO_EXPORT KArchive 00043 { 00044 protected: 00050 KArchive( QIODevice * dev ); 00051 00052 public: 00053 virtual ~KArchive(); 00054 00061 virtual bool open( int mode ); 00062 00069 virtual void close(); 00070 00075 bool isOpened() const { return m_open; } 00076 00082 int mode() const { return m_mode; } 00083 00088 QIODevice * device() const { return m_dev; } 00089 00095 const KArchiveDirectory* directory() const; 00096 00107 bool addLocalFile( const QString& fileName, const QString& destName ); 00108 00120 bool addLocalDirectory( const QString& path, const QString& destName ); 00121 00133 virtual bool writeDir( const QString& name, const QString& user, const QString& group ) = 0; 00134 00152 bool writeDir( const QString& name, const QString& user, const QString& group, 00153 mode_t perm, time_t atime, time_t mtime, time_t ctime ); 00154 00169 bool writeSymLink(const QString &name, const QString &target, 00170 const QString &user, const QString &group, 00171 mode_t perm, time_t atime, time_t mtime, time_t ctime); 00172 00186 virtual bool writeFile( const QString& name, const QString& user, const QString& group, uint size, const char* data ); 00187 00209 bool writeFile( const QString& name, const QString& user, const QString& group, 00210 uint size, mode_t perm, time_t atime, time_t mtime, 00211 time_t ctime, const char* data ); 00212 00227 virtual bool prepareWriting( const QString& name, const QString& user, const QString& group, uint size ) = 0; 00228 00250 bool prepareWriting( const QString& name, const QString& user, 00251 const QString& group, uint size, mode_t perm, 00252 time_t atime, time_t mtime, time_t ctime ); 00253 00258 bool writeData( const char* data, uint size ); 00259 00265 virtual bool doneWriting( uint size ) = 0; 00266 00267 protected: 00273 virtual bool openArchive( int mode ) = 0; 00274 00279 virtual bool closeArchive() = 0; 00280 00288 virtual KArchiveDirectory* rootDir(); 00289 00296 KArchiveDirectory * findOrCreate( const QString & path ); 00297 00301 void setDevice( QIODevice *dev ); 00302 00306 void setRootDir( KArchiveDirectory *rootDir ); 00307 00308 private: 00309 QIODevice * m_dev; 00310 bool m_open; 00311 char m_mode; 00312 protected: 00313 virtual void virtual_hook( int id, void* data ); 00314 /* @internal for virtual_hook */ 00315 enum { VIRTUAL_WRITE_DATA = 1, VIRTUAL_WRITE_SYMLINK, VIRTUAL_WRITE_DIR, 00316 VIRTUAL_WRITE_FILE, VIRTUAL_PREPARE_WRITING }; 00317 bool prepareWriting_impl( const QString& name, const QString& user, 00318 const QString& group, uint size, mode_t perm, 00319 time_t atime, time_t mtime, time_t ctime ); 00320 struct PrepareWritingParams { 00321 const QString *name; 00322 const QString *user; 00323 const QString *group; 00324 uint size; 00325 mode_t perm; 00326 time_t atime, mtime, ctime; 00327 bool retval; 00328 }; 00329 bool writeFile_impl( const QString& name, const QString& user, 00330 const QString& group, uint size, mode_t perm, 00331 time_t atime, time_t mtime, time_t ctime, 00332 const char* data ); 00333 struct WriteFileParams { 00334 const QString *name; 00335 const QString *user; 00336 const QString *group; 00337 uint size; 00338 mode_t perm; 00339 time_t atime, mtime, ctime; 00340 const char *data; 00341 bool retval; 00342 }; 00343 bool writeDir_impl(const QString& name, const QString& user, 00344 const QString& group, mode_t perm, 00345 time_t atime, time_t mtime, time_t ctime); 00346 struct WriteDirParams { 00347 const QString *name; 00348 const QString *user; 00349 const QString *group; 00350 mode_t perm; 00351 time_t atime, mtime, ctime; 00352 bool retval; 00353 }; 00354 bool writeSymLink_impl(const QString &name, const QString &target, 00355 const QString &user, const QString &group, 00356 mode_t perm, time_t atime, time_t mtime, time_t ctime); 00357 struct WriteSymlinkParams { 00358 const QString *name; 00359 const QString *target; 00360 const QString *user; 00361 const QString *group; 00362 mode_t perm; 00363 time_t atime, mtime, ctime; 00364 bool retval; 00365 }; 00366 bool writeData_impl( const char* data, uint size ); 00367 struct WriteDataParams { 00368 const char* data; 00369 uint size; 00370 bool retval; 00371 }; 00372 private: 00373 class KArchivePrivate; 00374 KArchivePrivate * d; 00375 }; 00376 00384 class KIO_EXPORT KArchiveEntry 00385 { 00386 public: 00397 KArchiveEntry( KArchive* archive, const QString& name, int access, int date, 00398 const QString& user, const QString& group, 00399 const QString &symlink ); 00400 00401 virtual ~KArchiveEntry() { } 00402 00407 QDateTime datetime() const; 00408 00413 int date() const { return m_date; } 00414 00419 QString name() const { return m_name; } 00425 mode_t permissions() const { return m_access; } 00430 QString user() const { return m_user; } 00435 QString group() const { return m_group; } 00436 00441 QString symlink() const { return m_symlink; } 00442 00447 virtual bool isFile() const { return false; } 00448 00453 virtual bool isDirectory() const { return false; } 00454 00455 protected: 00456 KArchive* archive() const { return m_archive; } 00457 00458 private: 00459 QString m_name; 00460 int m_date; 00461 mode_t m_access; 00462 QString m_user; 00463 QString m_group; 00464 QString m_symlink; 00465 KArchive* m_archive; 00466 protected: 00467 virtual void virtual_hook( int id, void* data ); 00468 private: 00469 class KArchiveEntryPrivate* d; 00470 }; 00471 00479 class KIO_EXPORT KArchiveFile : public KArchiveEntry 00480 { 00481 public: 00494 KArchiveFile( KArchive* archive, const QString& name, int access, int date, 00495 const QString& user, const QString& group, const QString &symlink, 00496 int pos, int size ); 00497 00498 virtual ~KArchiveFile() { } 00499 00504 int position() const; // TODO use Q_LONG in KDE-4.0 00509 int size() const; // TODO use Q_LONG in KDE-4.0 00514 void setSize( int s ) { m_size = s; } 00515 00521 virtual QByteArray data() const; 00522 00531 QIODevice *device() const; // TODO make virtual 00532 00537 virtual bool isFile() const { return true; } 00538 00544 void copyTo(const QString& dest) const; 00545 00546 private: 00547 int m_pos; // TODO use Q_LONG in KDE-4.0 00548 int m_size; // TODO use Q_LONG in KDE-4.0 00549 protected: 00550 virtual void virtual_hook( int id, void* data ); 00551 private: 00552 class KArchiveFilePrivate* d; 00553 }; 00554 00562 class KIO_EXPORT KArchiveDirectory : public KArchiveEntry 00563 { 00564 public: 00575 KArchiveDirectory( KArchive* archive, const QString& name, int access, int date, 00576 const QString& user, const QString& group, 00577 const QString& symlink); 00578 00579 virtual ~KArchiveDirectory() { } 00580 00585 QStringList entries() const; 00591 KArchiveEntry* entry( QString name ); 00597 const KArchiveEntry* entry( QString name ) const; 00598 00603 void addEntry( KArchiveEntry* ); 00604 00609 virtual bool isDirectory() const { return true; } 00610 00618 void copyTo(const QString& dest, bool recursive = true) const; 00619 00620 private: 00621 QDict<KArchiveEntry> m_entries; 00622 protected: 00623 virtual void virtual_hook( int id, void* data ); 00624 private: 00625 class KArchiveDirectoryPrivate* d; 00626 }; 00627 00628 #endif
KDE Logo
This file is part of the documentation for kio Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 23:09:05 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003