diff options
| author | 2010-12-29 05:54:56 +0000 | |
|---|---|---|
| committer | 2010-12-29 05:54:56 +0000 | |
| commit | 548a0fb60fb1672b5041c02e120a0b878b5436fb (patch) | |
| tree | df424a6d81fc802e5a4e5d7c8237f342c3a31117 /src | |
| parent | setLastError() is protected... (diff) | |
| download | KVIrc-548a0fb60fb1672b5041c02e120a0b878b5436fb.tar.gz KVIrc-548a0fb60fb1672b5041c02e120a0b878b5436fb.tar.bz2 KVIrc-548a0fb60fb1672b5041c02e120a0b878b5436fb.zip | |
Don't expose package writer internals
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5257 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvilib/file/KviPackageIOEngine.h | 5 | ||||
| -rw-r--r-- | src/kvilib/file/KviPackageReader.cpp | 10 | ||||
| -rw-r--r-- | src/kvilib/file/KviPackageWriter.cpp | 74 | ||||
| -rw-r--r-- | src/kvilib/file/KviPackageWriter.h | 40 |
4 files changed, 77 insertions, 52 deletions
diff --git a/src/kvilib/file/KviPackageIOEngine.h b/src/kvilib/file/KviPackageIOEngine.h index 2c1818666..1bba81aec 100644 --- a/src/kvilib/file/KviPackageIOEngine.h +++ b/src/kvilib/file/KviPackageIOEngine.h @@ -64,12 +64,15 @@ public: * \brief Destroys the object */ virtual ~KviPackageIOEngine(); -protected: + +private: + QString m_szLastError; KviPointerHashTable<QString,QString> * m_pStringInfoFields; KviPointerHashTable<QString,QByteArray> * m_pBinaryInfoFields; QProgressDialog * m_pProgressDialog; QLabel * m_pProgressDialogLabel; + public: /** * \brief Returns the last error diff --git a/src/kvilib/file/KviPackageReader.cpp b/src/kvilib/file/KviPackageReader.cpp index b0f8dcd98..fce88a2cb 100644 --- a/src/kvilib/file/KviPackageReader.cpp +++ b/src/kvilib/file/KviPackageReader.cpp @@ -87,8 +87,8 @@ bool KviPackageReader::readHeaderInternal(KviFile * pFile,const QString &) if(!pFile->load(uCount)) return writeError(); - m_pStringInfoFields->clear(); - m_pBinaryInfoFields->clear(); + stringInfoFields()->clear(); + binaryInfoFields()->clear(); kvi_u32_t uIdx = 0; while(uIdx < uCount) @@ -105,7 +105,7 @@ bool KviPackageReader::readHeaderInternal(KviFile * pFile,const QString &) { QString szValue; if(!pFile->load(szValue))return readError(); - m_pStringInfoFields->replace(szKey,new QString(szValue)); + stringInfoFields()->replace(szKey,new QString(szValue)); } break; case KVI_PACKAGE_INFOFIELD_TYPE_BINARYBUFFER: @@ -116,7 +116,7 @@ bool KviPackageReader::readHeaderInternal(KviFile * pFile,const QString &) delete pbValue; return readError(); } - m_pBinaryInfoFields->replace(szKey,pbValue); + binaryInfoFields()->replace(szKey,pbValue); } break; default: @@ -374,7 +374,7 @@ bool KviPackageReader::unpackFile(KviFile * pFile,const QString &szUnpackPath) bool KviPackageReader::getStringInfoField(const QString &szName,QString &szBuffer) { - QString * pVal = m_pStringInfoFields->find(szName); + QString * pVal = stringInfoFields()->find(szName); if(!pVal) return false; szBuffer = *pVal; diff --git a/src/kvilib/file/KviPackageWriter.cpp b/src/kvilib/file/KviPackageWriter.cpp index 48fb1851e..d6700bed3 100644 --- a/src/kvilib/file/KviPackageWriter.cpp +++ b/src/kvilib/file/KviPackageWriter.cpp @@ -27,6 +27,8 @@ #include "KviFile.h" #include "KviFileUtils.h" #include "KviLocale.h" +#include "KviPointerList.h" + #include "kvi_inttypes.h" #include <QDir> @@ -40,26 +42,48 @@ // +class KviPackageWriterDataField +{ +public: + kvi_u32_t m_uType; + // output length of the field + kvi_u32_t m_uWrittenFieldLength; + // data fields for the File KviPackageWriterDataFieldType + bool m_bFileAllowCompression; + QString m_szFileLocalName; + QString m_szFileTargetName; +}; + +class KviPackageWriterPrivate +{ +public: + KviPointerList<KviPackageWriterDataField> * pDataFields; + int iCurrentProgress; +}; + + KviPackageWriter::KviPackageWriter() : KviPackageIOEngine() { - m_pDataFields = new KviPointerList<DataField>(); - m_pDataFields->setAutoDelete(true); + m_p = new KviPackageWriterPrivate(); + m_p->pDataFields = new KviPointerList<KviPackageWriterDataField>(); + m_p->pDataFields->setAutoDelete(true); } KviPackageWriter::~KviPackageWriter() { - delete m_pDataFields; + delete m_p->pDataFields; + delete m_p; } void KviPackageWriter::addInfoField(const QString &szName,const QString &szValue) { - m_pStringInfoFields->replace(szName,new QString(szValue)); + stringInfoFields()->replace(szName,new QString(szValue)); } void KviPackageWriter::addInfoField(const QString &szName,QByteArray * pValue) { - m_pBinaryInfoFields->replace(szName,pValue); + binaryInfoFields()->replace(szName,pValue); } bool KviPackageWriter::addFile(const QString &szLocalFileName,const QString &szTargetFileName,kvi_u32_t uAddFileFlags) @@ -79,12 +103,12 @@ bool KviPackageWriter::addFileInternal(const QFileInfo * fi,const QString &szLoc return true; // do NOT add a symlink } - DataField * f = new DataField(); + KviPackageWriterDataField * f = new KviPackageWriterDataField(); f->m_uType = KVI_PACKAGE_DATAFIELD_TYPE_FILE; f->m_bFileAllowCompression = !(uAddFileFlags & NoCompression); f->m_szFileLocalName = szLocalFileName; f->m_szFileTargetName = szTargetFileName; - m_pDataFields->append(f); + m_p->pDataFields->append(f); return true; } @@ -138,11 +162,11 @@ bool KviPackageWriter::addDirectory(const QString &szLocalDirectoryName,const QS #define BUFFER_SIZE 32768 -bool KviPackageWriter::packFile(KviFile * pFile,DataField * pDataField) +bool KviPackageWriter::packFile(KviFile * pFile,KviPackageWriterDataField * pDataField) { QString szProgressText; KviQString::sprintf(szProgressText,__tr2qs("Packaging file %Q"),&(pDataField->m_szFileLocalName)); - if(!updateProgress(m_iCurrentProgress,szProgressText)) + if(!updateProgress(m_p->iCurrentProgress,szProgressText)) return false; // aborted @@ -252,7 +276,7 @@ bool KviPackageWriter::packFile(KviFile * pFile,DataField * pDataField) QString szTmp; KviQString::sprintf(szTmp,QString(" (%d of %d bytes)"),zstr.total_in,uSize); QString szPrg = szProgressText + szTmp; - if(!updateProgress(m_iCurrentProgress,szPrg)) + if(!updateProgress(m_p->iCurrentProgress,szPrg)) return false; // aborted } } @@ -320,7 +344,7 @@ bool KviPackageWriter::packFile(KviFile * pFile,DataField * pDataField) QString szTmp; KviQString::sprintf(szTmp,QString(" (%d of %d bytes)"),iTotalFileSize,uSize); QString szPrg = szProgressText + szTmp; - if(!updateProgress(m_iCurrentProgress,szPrg)) + if(!updateProgress(m_p->iCurrentProgress,szPrg)) return false; // aborted } pDataField->m_uWrittenFieldLength += iReaded; @@ -338,11 +362,11 @@ bool KviPackageWriter::packFile(KviFile * pFile,DataField * pDataField) bool KviPackageWriter::pack(const QString &szFileName,kvi_u32_t uPackFlags) { - m_iCurrentProgress = 0; + m_p->iCurrentProgress = 0; if(!(uPackFlags & NoProgressDialog)) { showProgressDialog(__tr2qs("Creating package..."),100); - updateProgress(m_iCurrentProgress,__tr2qs("Writing package header")); + updateProgress(m_p->iCurrentProgress,__tr2qs("Writing package header")); } bool bRet = packInternal(szFileName,uPackFlags); @@ -385,16 +409,16 @@ bool KviPackageWriter::packInternal(const QString &szFileName,kvi_u32_t) // write PackageInfo // InfoFieldCount - kvi_u32_t uCount = m_pStringInfoFields->count() + m_pBinaryInfoFields->count(); + kvi_u32_t uCount = stringInfoFields()->count() + binaryInfoFields()->count(); if(!f.save(uCount)) return writeError(); - m_iCurrentProgress = 5; - if(!updateProgress(m_iCurrentProgress,__tr2qs("Writing informational fields"))) + m_p->iCurrentProgress = 5; + if(!updateProgress(m_p->iCurrentProgress,__tr2qs("Writing informational fields"))) return false; // aborted // InfoFields (string) - KviPointerHashTableIterator<QString,QString> it(*m_pStringInfoFields); + KviPointerHashTableIterator<QString,QString> it(*stringInfoFields()); while(QString * s = it.current()) { if(!f.save(it.currentKey())) @@ -408,7 +432,7 @@ bool KviPackageWriter::packInternal(const QString &szFileName,kvi_u32_t) } // InfoFields (binary) - KviPointerHashTableIterator<QString,QByteArray> it2(*m_pBinaryInfoFields); + KviPointerHashTableIterator<QString,QByteArray> it2(*binaryInfoFields()); while(QByteArray * b = it2.current()) { if(!f.save(it2.currentKey())) @@ -421,22 +445,22 @@ bool KviPackageWriter::packInternal(const QString &szFileName,kvi_u32_t) ++it2; } - m_iCurrentProgress = 10; - if(!updateProgress(m_iCurrentProgress,__tr2qs("Writing package data"))) + m_p->iCurrentProgress = 10; + if(!updateProgress(m_p->iCurrentProgress,__tr2qs("Writing package data"))) return false; // aborted // write PackageData int iIdx = 0; - for(DataField * pDataField = m_pDataFields->first();pDataField;pDataField = m_pDataFields->next()) + for(KviPackageWriterDataField * pDataField = m_p->pDataFields->first();pDataField;pDataField = m_p->pDataFields->next()) { - kvi_u32_t uDataFieldType = pDataField->m_uType; - if(!f.save(uDataFieldType))return writeError(); + kvi_u32_t uKviPackageWriterDataFieldType = pDataField->m_uType; + if(!f.save(uKviPackageWriterDataFieldType))return writeError(); kvi_file_offset_t savedLenOffset = f.pos(); // here we will store the length of the field once it's written - if(!f.save(uDataFieldType))return writeError(); + if(!f.save(uKviPackageWriterDataFieldType))return writeError(); - m_iCurrentProgress = 10 + ((90 * iIdx) / m_pDataFields->count()); + m_p->iCurrentProgress = 10 + ((90 * iIdx) / m_p->pDataFields->count()); switch(pDataField->m_uType) { diff --git a/src/kvilib/file/KviPackageWriter.h b/src/kvilib/file/KviPackageWriter.h index 88fcf3cf4..bf82dd1a9 100644 --- a/src/kvilib/file/KviPackageWriter.h +++ b/src/kvilib/file/KviPackageWriter.h @@ -33,7 +33,6 @@ #include "kvi_settings.h" #include "KviQString.h" -#include "KviPointerList.h" #include "KviPackageIOEngine.h" #include <QByteArray> @@ -41,6 +40,10 @@ class QFileInfo; class KviFile; +class KviPackageWriterPrivate; +class KviPackageWriterDataField; + + /** * \class KviPackageWriter * \brief This class is used to create KVIrc package files. @@ -51,6 +54,7 @@ class KviFile; class KVILIB_API KviPackageWriter : public KviPackageIOEngine { public: + /** * \brief Creates the package writer object * \return KviPackageWriter @@ -61,30 +65,21 @@ public: * \brief Destroys the object */ virtual ~KviPackageWriter(); -protected: + +private: + /** - * \class DataField - * \brief This class holds the data for the fields + * Hidden private data */ - class DataField - { - public: - kvi_u32_t m_uType; - // output length of the field - kvi_u32_t m_uWrittenFieldLength; - // data fields for the File DataFieldType - bool m_bFileAllowCompression; - QString m_szFileLocalName; - QString m_szFileTargetName; - }; + KviPackageWriterPrivate * m_p; - KviPointerList<DataField> * m_pDataFields; - int m_iCurrentProgress; public: + /** * \enum AddFileFlags */ - enum AddFileFlags { + enum AddFileFlags + { NoCompression = 1, /**< If you don't want to compress the file */ FollowSymLinks = 2 /**< If you want to follow the symlinks */ }; @@ -92,7 +87,8 @@ public: /** * \enum PackFlags */ - enum PackFlags { + enum PackFlags + { NoProgressDialog = 1 /**< If you want to avoid the progress dialog */ }; @@ -147,6 +143,7 @@ public: * \return bool */ bool pack(const QString & szFileName, kvi_u32_t uPackFlags = 0); + private: /** * \brief Attempts to pack everything and store it as the specified file. @@ -166,7 +163,7 @@ private: * \param pDataField The data field for the package * \return bool */ - bool packFile(KviFile * pFile, DataField * pDataField); + bool packFile(KviFile * pFile, KviPackageWriterDataField * pDataField); /** * \brief Adds a file to the package. @@ -179,7 +176,8 @@ private: * \return bool */ bool addFileInternal(const QFileInfo * fi, const QString & szLocalFileName, const QString & szTargetFileName, kvi_u32_t uAddFileFlags = 0); -}; + +}; // class KviPackageWriter |
