/* * * $Id: sourceheader 511311 2006-02-19 14:51:05Z trueg $ * Copyright (C) 2006 Sebastian Trueg * * This file is part of the K3b project. * Copyright (C) 1998-2007 Sebastian Trueg * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * See the file "COPYING" for the exact licensing terms. */ #ifndef _K3B_FILE_SPLITTER_H_ #define _K3B_FILE_SPLITTER_H_ #include #include #include #include /** * QFile replacement which splits * big files according to the underlying file system's * maximum file size. * * The filename will be changed to include a counter * if the file has to be splitted like so: * *
 * filename.iso
 * filename.iso.001
 * filename.iso.002
 * ...
 * 
*/ class LIBK3B_EXPORT K3bFileSplitter : public QIODevice { public: K3bFileSplitter(); K3bFileSplitter( const QString& filename ); ~K3bFileSplitter(); /** * Set the maximum file size. If this is set to 0 * (the default) the max filesize is determined based on * the filesystem type. * * Be aware that setName will reset the max file size. */ void setMaxFileSize( KIO::filesize_t size ); const QString& name() const; void setName( const QString& filename ); virtual bool open( int mode ); virtual void close(); /** * File descriptor to read from and write to. * Not implemented yet! */ int handle() const; virtual void flush(); /** * Not implemented */ virtual Offset size() const; /** * Not implemented */ virtual Offset at() const; /** * Not implemented */ virtual bool at( Offset ); virtual bool atEnd() const; virtual Q_LONG readBlock( char *data, Q_ULONG maxlen ); virtual Q_LONG writeBlock( const char *data, Q_ULONG len ); virtual int getch(); virtual int putch( int ); virtual int ungetch( int ); /** * Deletes all the splitted files. * Caution: Does remove all files that fit the naming scheme without any * additional checks. */ void remove(); private: class Private; Private* d; }; #endif