diff options
Diffstat (limited to 'src/libs/installer/lib7z_facade.h')
-rw-r--r-- | src/libs/installer/lib7z_facade.h | 261 |
1 files changed, 28 insertions, 233 deletions
diff --git a/src/libs/installer/lib7z_facade.h b/src/libs/installer/lib7z_facade.h index 1af879614..44c5f6cac 100644 --- a/src/libs/installer/lib7z_facade.h +++ b/src/libs/installer/lib7z_facade.h @@ -34,253 +34,48 @@ #define LIB7Z_FACADE_H #include "installer_global.h" +#include "errors.h" -#include <QCoreApplication> -#include <QDateTime> -#include <QFile> -#include <QPoint> -#include <QRunnable> -#include <QString> -#include <QVariant> -#include <QVector> - -#include "Common/MyWindows.h" - -#include <stdexcept> -#include <string> +#include <Common/MyWindows.h> +#include <7zip/UI/Console/PercentPrinter.h> QT_BEGIN_NAMESPACE -class QStringList; -template <typename T> class QVector; +class QFileDevice; QT_END_NAMESPACE -namespace Lib7z { - class INSTALLER_EXPORT SevenZipException : public std::runtime_error { - public: - explicit SevenZipException( const QString& msg ) : std::runtime_error( msg.toStdString() ), m_message( msg ) {} - explicit SevenZipException( const char* msg ) : std::runtime_error( msg ), m_message( QString::fromLocal8Bit( msg ) ) {} - explicit SevenZipException( const std::string& msg ) : std::runtime_error( msg ), m_message( QString::fromLocal8Bit( msg.c_str() ) ) {} - - ~SevenZipException() throw() {} - QString message() const { return m_message; } - private: - QString m_message; - }; - - class INSTALLER_EXPORT File { - public: - File(); - QVector<File> subtreeInPreorder() const; - - bool operator<( const File& other ) const; - bool operator==( const File& other ) const; - - QFile::Permissions permissions; - QString path; - QDateTime mtime; - quint64 uncompressedSize; - quint64 compressedSize; - bool isDirectory; - QVector<File> children; - QPoint archiveIndex; - }; - - class ExtractCallbackPrivate; - class ExtractCallbackImpl; - - class ExtractCallback { - friend class ::Lib7z::ExtractCallbackImpl; - public: - ExtractCallback(); - virtual ~ExtractCallback(); - - void setTarget(QFileDevice* archive); - void setTarget(const QString& dir ); - - protected: - /** - * Reimplement to prepare for file @p filename to be extracted, e.g. by renaming existing files. - * @return @p true if the preparation was successful and extraction can be continued. - * If @p false is returned, the extraction will be aborted. Default implementation returns @p true. - */ - virtual bool prepareForFile( const QString& filename ); - virtual void setCurrentFile( const QString& filename ); - virtual HRESULT setCompleted( quint64 completed, quint64 total ); +namespace Lib7z +{ + void INSTALLER_EXPORT initSevenZ(); + bool INSTALLER_EXPORT isSupportedArchive(QFileDevice *archive); + bool INSTALLER_EXPORT isSupportedArchive(const QString &archive); - public: //for internal use - const ExtractCallbackImpl* impl() const; - ExtractCallbackImpl* impl(); - - private: - ExtractCallbackPrivate* const d; - }; - - class UpdateCallbackPrivate; - class UpdateCallbackImpl; - - class UpdateCallback + class INSTALLER_EXPORT SevenZipException : public QInstaller::Error { - friend class ::Lib7z::UpdateCallbackImpl; public: - UpdateCallback(); - virtual ~UpdateCallback(); - - void setTarget(QFileDevice* archive); - void setSourcePaths(const QStringList& paths); - - virtual UpdateCallbackImpl* impl(); - - private: - UpdateCallbackPrivate* const d; - }; - - class OpenArchiveInfoCleaner : public QObject { - Q_OBJECT - public: - OpenArchiveInfoCleaner() {} - private Q_SLOTS: - void deviceDestroyed(QObject*); - }; - - /*! - Extracts the given File \a file from \a archive into output device \a out using the - provided extract callback \a callback. - - Throws Lib7z::SevenZipException on error. - */ - void INSTALLER_EXPORT extractFileFromArchive(QFileDevice* archive, const File& item, - QFileDevice* out, ExtractCallback* callback=0 ); - - /*! - Extracts the given File \a file from \a archive into target directory \a targetDirectory - using the provided extract callback \a callback. The output filename is deduced from the - \a file path name. - - Throws Lib7z::SevenZipException on error. - */ - void INSTALLER_EXPORT extractFileFromArchive(QFileDevice* archive, const File& item, - const QString& targetDirectory, ExtractCallback* callback = 0); - - /*! - Extracts the given \a archive content into target directory \a targetDirectory using the - provided extract callback \a callback. The output filenames are deduced from the \a archive - content. + explicit SevenZipException(const QString &msg) + : QInstaller::Error(msg) + {} - Throws Lib7z::SevenZipException on error. - */ - void INSTALLER_EXPORT extractArchive(QFileDevice* archive, const QString& targetDirectory, - ExtractCallback* callback = 0); - - /* - * @thows Lib7z::SevenZipException - */ - void INSTALLER_EXPORT createArchive(QFileDevice* archive, const QStringList& sourcePaths, - UpdateCallback* callback = 0 ); - - /* - * @throws Lib7z::SevenZipException - */ - QVector<File> INSTALLER_EXPORT listArchive(QFileDevice* archive); - - /* - * @throws Lib7z::SevenZipException - */ - bool INSTALLER_EXPORT isSupportedArchive(QFileDevice* archive); - - /* - * @throws Lib7z::SevenZipException - */ - bool INSTALLER_EXPORT isSupportedArchive(const QString& archive); - - enum Error { - NoError=0, - Failed=1, - UserDefinedError=128 + explicit SevenZipException(const char *msg) + : QInstaller::Error(QString::fromLocal8Bit(msg)) + {} }; - class ExtractCallbackJobImpl; - - class INSTALLER_EXPORT Job : public QObject, public QRunnable + class INSTALLER_EXPORT PercentPrinter : public CPercentPrinter { - friend class ::Lib7z::ExtractCallbackJobImpl; - Q_OBJECT - public: - - explicit Job( QObject* parent=0 ); - ~Job(); - void start(); - int error() const; - bool hasError() const; - QString errorString() const; - - /* reimp */ void run(); - - protected: - void emitResult(); - void setError( int code ); - void setErrorString( const QString& err ); - void emitProgress( qint64 completed, qint64 total ); - - Q_SIGNALS: - void finished( Lib7z::Job* job ); - void progress( qint64 completed, qint64 total ); - - private Q_SLOTS: - virtual void doStart() = 0; - - private: - class Private; - Private* const d; - }; - - class INSTALLER_EXPORT ListArchiveJob : public Job { - Q_OBJECT public: - - explicit ListArchiveJob( QObject* parent=0 ); - ~ListArchiveJob(); - - QFileDevice* archive() const; - void setArchive(QFileDevice* archive); - - QVector<File> index() const; - - private: - /* reimp */ void doStart(); - - private: - class Private; - Private* const d; - }; - - class INSTALLER_EXPORT ExtractItemJob : public Job { - Q_OBJECT - friend class ::Lib7z::ExtractCallback; - public: - - explicit ExtractItemJob( QObject* parent=0 ); - ~ExtractItemJob(); - - File item() const; - void setItem( const File& item ); - - QFileDevice* archive() const; - void setArchive(QFileDevice* archive); - - QString targetDirectory() const; - void setTargetDirectory( const QString& dir ); - - void setTarget(QFileDevice* dev); - - private: - /* reimp */ void doStart(); - - private: - class Private; - Private* const d; + PercentPrinter() : CPercentPrinter(1 << 16) { + OutStream = &g_StdOut; + } + + void PrintRatio() { CPercentPrinter::PrintRatio(); } + void ClosePrint() { CPercentPrinter::ClosePrint(); } + void RePrintRatio() { CPercentPrinter::RePrintRatio(); } + void PrintNewLine() { CPercentPrinter::PrintNewLine(); } + void PrintString(const char *s) { CPercentPrinter::PrintString(s); } + void PrintString(const wchar_t *s) { CPercentPrinter::PrintString(s); } }; - QByteArray INSTALLER_EXPORT formatKeyValuePairs( const QVariantList& l ); -} +} // namespace Lib7z #endif // LIB7Z_FACADE_H |