aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2010-12-29 05:54:56 +0000
committerGravatar Szymon Tomasz Stefanek2010-12-29 05:54:56 +0000
commit548a0fb60fb1672b5041c02e120a0b878b5436fb (patch)
treedf424a6d81fc802e5a4e5d7c8237f342c3a31117 /src
parentsetLastError() is protected... (diff)
downloadKVIrc-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.h5
-rw-r--r--src/kvilib/file/KviPackageReader.cpp10
-rw-r--r--src/kvilib/file/KviPackageWriter.cpp74
-rw-r--r--src/kvilib/file/KviPackageWriter.h40
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