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 
00004    Moved from ktar.h by Roberto Teixeira <maragato@kde.org>
00005 
00006    This library is free software; you can redistribute it and/or
00007    modify it under the terms of the GNU Library General Public
00008    License version 2 as published by the Free Software Foundation.
00009 
00010    This library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Library General Public License for more details.
00014 
00015    You should have received a copy of the GNU Library General Public License
00016    along with this library; see the file COPYING.LIB.  If not, write to
00017    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00018    Boston, MA 02111-1307, USA.
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; // TODO use Q_LONG in KDE-4.0
00259     int size() const; // TODO use Q_LONG in KDE-4.0
00263     void setSize( int s ) { m_size = s; }
00264 
00269     virtual QByteArray data() const;
00270 
00278     QIODevice *device() const; // TODO make virtual
00279 
00283     virtual bool isFile() const { return true; }
00284 
00289     void copyTo(const QString& dest) const;
00290 
00291 private:
00292     int m_pos; // TODO use Q_LONG in KDE-4.0
00293     int m_size; // TODO use Q_LONG in KDE-4.0
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
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.4.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 27 22:15:29 2005 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001