mirror of
https://github.com/MultiMC/MultiMC5.git
synced 2024-12-27 03:14:49 +00:00
d884f849d6
Redone the instance action toolbar: * Removed all the dead actions * Change icon and Rename are now morphed into a header * Added button for opening the config folder Implemented support for loose files and folders as legacy jar mods Added texture pack support
126 lines
4.8 KiB
C++
126 lines
4.8 KiB
C++
#ifndef JLCOMPRESSFOLDER_H_
|
|
#define JLCOMPRESSFOLDER_H_
|
|
|
|
#include "quazip.h"
|
|
#include "quazipfile.h"
|
|
#include "quazipfileinfo.h"
|
|
#include <QString>
|
|
#include <QDir>
|
|
#include <QFileInfo>
|
|
#include <QFile>
|
|
|
|
/// Utility class for typical operations.
|
|
/**
|
|
This class contains a number of useful static functions to perform
|
|
simple operations, such as mass ZIP packing or extraction.
|
|
*/
|
|
class QUAZIP_EXPORT JlCompress {
|
|
private:
|
|
/// Remove some files.
|
|
/**
|
|
\param listFile The list of files to remove.
|
|
\return true if success, false otherwise.
|
|
*/
|
|
static bool removeFile(QStringList listFile);
|
|
public:
|
|
/// Compress a single file.
|
|
/**
|
|
\param zip Opened zip to compress the file to.
|
|
\param fileName The full path to the source file.
|
|
\param fileDest The full name of the file inside the archive.
|
|
\return true if success, false otherwise.
|
|
*/
|
|
static bool compressFile(QuaZip* zip, QString fileName, QString fileDest);
|
|
/// Compress a subdirectory.
|
|
/**
|
|
\param parentZip Opened zip containing the parent directory.
|
|
\param dir The full path to the directory to pack.
|
|
\param parentDir The full path to the directory corresponding to
|
|
the root of the ZIP.
|
|
\param recursive Whether to pack sub-directories as well or only
|
|
files.
|
|
\return true if success, false otherwise.
|
|
*/
|
|
static bool compressSubDir( QuaZip* parentZip, QString dir, QString parentDir, bool recursive, QSet< QString >& added );
|
|
/// Extract a single file.
|
|
/**
|
|
\param zip The opened zip archive to extract from.
|
|
\param fileName The full name of the file to extract.
|
|
\param fileDest The full path to the destination file.
|
|
\return true if success, false otherwise.
|
|
*/
|
|
static bool extractFile(QuaZip* zip, QString fileName, QString fileDest);
|
|
|
|
/// copy data from inFile to outFile
|
|
static bool copyData(QIODevice &inFile, QIODevice &outFile);
|
|
/// Compress a single file.
|
|
/**
|
|
\param fileCompressed The name of the archive.
|
|
\param file The file to compress.
|
|
\return true if success, false otherwise.
|
|
*/
|
|
static bool compressFile(QString fileCompressed, QString file);
|
|
/// Compress a list of files.
|
|
/**
|
|
\param fileCompressed The name of the archive.
|
|
\param files The file list to compress.
|
|
\return true if success, false otherwise.
|
|
*/
|
|
static bool compressFiles(QString fileCompressed, QStringList files);
|
|
/// Compress a whole directory.
|
|
/**
|
|
\param fileCompressed The name of the archive.
|
|
\param dir The directory to compress.
|
|
\param recursive Whether to pack the subdirectories as well, or
|
|
just regular files.
|
|
\return true if success, false otherwise.
|
|
*/
|
|
static bool compressDir(QString fileCompressed, QString dir = QString(), bool recursive = true);
|
|
|
|
public:
|
|
/// Extract a single file.
|
|
/**
|
|
\param fileCompressed The name of the archive.
|
|
\param fileName The file to extract.
|
|
\param fileDest The destination file, assumed to be identical to
|
|
\a file if left empty.
|
|
\return The list of the full paths of the files extracted, empty on failure.
|
|
*/
|
|
static QString extractFile(QString fileCompressed, QString fileName, QString fileDest = QString());
|
|
/// Extract a list of files.
|
|
/**
|
|
\param fileCompressed The name of the archive.
|
|
\param files The file list to extract.
|
|
\param dir The directory to put the files to, the current
|
|
directory if left empty.
|
|
\return The list of the full paths of the files extracted, empty on failure.
|
|
*/
|
|
static QStringList extractFiles(QString fileCompressed, QStringList files, QString dir = QString());
|
|
/// Extract a whole archive.
|
|
/**
|
|
\param fileCompressed The name of the archive.
|
|
\param dir The directory to extract to, the current directory if
|
|
left empty.
|
|
\return The list of the full paths of the files extracted, empty on failure.
|
|
*/
|
|
static QStringList extractDir(QString fileCompressed, QString dir = QString());
|
|
/// Extract a whole archive, with a list of exceptions (prefixes to ignore).
|
|
/**
|
|
\param fileCompressed The name of the archive.
|
|
\param dir The directory to extract to, the current directory if
|
|
left empty.
|
|
\param exceptions The list of exception prefixes
|
|
\return The list of the full paths of the files extracted, empty on failure.
|
|
*/
|
|
static QStringList extractWithExceptions(QString fileCompressed, QString dir, QStringList exceptions);
|
|
/// Get the file list.
|
|
/**
|
|
\return The list of the files in the archive, or, more precisely, the
|
|
list of the entries, including both files and directories if they
|
|
are present separately.
|
|
*/
|
|
static QStringList getFileList(QString fileCompressed);
|
|
};
|
|
|
|
#endif /* JLCOMPRESSFOLDER_H_ */
|