svcore
1.9
|
00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ 00002 00003 /* 00004 Sonic Visualiser 00005 An audio file viewer and annotation editor. 00006 Centre for Digital Music, Queen Mary, University of London. 00007 This file copyright 2006 Chris Cannam. 00008 00009 This program is free software; you can redistribute it and/or 00010 modify it under the terms of the GNU General Public License as 00011 published by the Free Software Foundation; either version 2 of the 00012 License, or (at your option) any later version. See the file 00013 COPYING included with this distribution for more information. 00014 */ 00015 00016 #ifndef _BZIP_FILE_DEVICE_H_ 00017 #define _BZIP_FILE_DEVICE_H_ 00018 00019 #include <QIODevice> 00020 00021 #include <bzlib.h> 00022 00023 class BZipFileDevice : public QIODevice 00024 { 00025 Q_OBJECT 00026 00027 public: 00028 BZipFileDevice(QString fileName); 00029 virtual ~BZipFileDevice(); 00030 00031 virtual bool open(OpenMode mode); 00032 virtual void close(); 00033 00034 virtual bool isOK() const; 00035 00036 virtual bool isSequential() const { return true; } 00037 00038 protected: 00039 virtual qint64 readData(char *data, qint64 maxSize); 00040 virtual qint64 writeData(const char *data, qint64 maxSize); 00041 00042 QString m_fileName; 00043 00044 FILE *m_file; 00045 BZFILE *m_bzFile; 00046 bool m_atEnd; 00047 bool m_ok; 00048 }; 00049 00050 #endif