1 |
cycrow |
1 |
#ifndef __MUTLISPKFILE_H__
|
|
|
2 |
#define __MUTLISPKFILE_H__
|
|
|
3 |
|
|
|
4 |
#include "SpkFile.h"
|
|
|
5 |
|
|
|
6 |
typedef struct SPKEXPORT SMultiSpkFile
|
|
|
7 |
{
|
177 |
cycrow |
8 |
SMultiSpkFile() : bOn(false), iPos(0), pFile(nullptr) { iType = 0; bRemove = false; sData = 0; lSize = 0; }
|
219 |
cycrow |
9 |
Utils::WString sName;
|
1 |
cycrow |
10 |
char *sData;
|
|
|
11 |
long lSize;
|
|
|
12 |
bool bOn;
|
219 |
cycrow |
13 |
Utils::WString sScriptName;
|
|
|
14 |
Utils::WString sScriptVersion;
|
|
|
15 |
Utils::WString sScriptAuthor;
|
1 |
cycrow |
16 |
CBaseFile *pFile;
|
|
|
17 |
int iType;
|
|
|
18 |
int iPos;
|
|
|
19 |
bool bRemove;
|
|
|
20 |
} SMultiSpkFile;
|
|
|
21 |
|
|
|
22 |
typedef struct SPKEXPORT SMultiHeader
|
|
|
23 |
{
|
177 |
cycrow |
24 |
SMultiHeader() : fVersion(0.0f), iCompression(0), lUncomprLen(0), lComprLen(0), bSelection(false) { }
|
1 |
cycrow |
25 |
float fVersion;
|
|
|
26 |
int iCompression;
|
|
|
27 |
long lUncomprLen;
|
|
|
28 |
long lComprLen;
|
|
|
29 |
bool bSelection;
|
|
|
30 |
} SMultiHeader;
|
|
|
31 |
|
|
|
32 |
class SPKEXPORT CMultiSpkFile
|
|
|
33 |
{
|
|
|
34 |
public:
|
177 |
cycrow |
35 |
CMultiSpkFile ()
|
1 |
cycrow |
36 |
{
|
|
|
37 |
m_bChanged = false;
|
|
|
38 |
}
|
|
|
39 |
~CMultiSpkFile ();
|
|
|
40 |
|
219 |
cycrow |
41 |
SMultiSpkFile *addFileEntry(const Utils::WString &filename);
|
177 |
cycrow |
42 |
bool addFile(SMultiSpkFile *file);
|
219 |
cycrow |
43 |
bool addFile(const Utils::WString &file, bool on = true);
|
|
|
44 |
bool addFileNow(const Utils::WString &file, bool = true );
|
177 |
cycrow |
45 |
bool removeFile ( int id );
|
|
|
46 |
bool removeFile(const SMultiSpkFile *ms);
|
219 |
cycrow |
47 |
bool removeFile(const Utils::WString &file);
|
177 |
cycrow |
48 |
bool markRemoveFile ( int id );
|
|
|
49 |
bool markRemoveFile ( SMultiSpkFile *ms );
|
219 |
cycrow |
50 |
bool markRemoveFile(const Utils::WString &file);
|
177 |
cycrow |
51 |
void markRemoveAll();
|
1 |
cycrow |
52 |
|
|
|
53 |
void ClearFiles ();
|
|
|
54 |
void CreatePackage(SMultiSpkFile *p);
|
|
|
55 |
|
197 |
cycrow |
56 |
bool readFile(const Utils::WString &filename, bool = true );
|
1 |
cycrow |
57 |
bool ReadAllFilesToMemory (CProgressInfo *progress = NULL);
|
|
|
58 |
bool ReadFileToMemory ( SMultiSpkFile *ms );
|
219 |
cycrow |
59 |
bool readAllPackages(const Utils::WString &filename, int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL ) { _sFilename = filename; return readAllPackages(type, addToList); }
|
177 |
cycrow |
60 |
bool readAllPackages(int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL );
|
1 |
cycrow |
61 |
bool ReadSpk ( SMultiSpkFile *ms, int type = SPKREAD_NODATA );
|
|
|
62 |
|
219 |
cycrow |
63 |
const SMultiSpkFile *findFile (const Utils::WString &name) const;
|
1 |
cycrow |
64 |
|
219 |
cycrow |
65 |
bool extractAll(const Utils::WString &dir);
|
177 |
cycrow |
66 |
bool extractData(SMultiSpkFile *ms);
|
219 |
cycrow |
67 |
bool extractFile(const SMultiSpkFile *ms, const Utils::WString &dir);
|
|
|
68 |
bool extractFile(const Utils::WString &filename, const Utils::WString &dir);
|
|
|
69 |
bool splitMulti(const Utils::WString &filename, const Utils::WString &destdir);
|
1 |
cycrow |
70 |
|
219 |
cycrow |
71 |
bool writeFile(const Utils::WString &filename, CProgressInfo *progress = NULL);
|
1 |
cycrow |
72 |
|
219 |
cycrow |
73 |
void setName(const Utils::WString &n) { _sName = n; m_bChanged = true; }
|
177 |
cycrow |
74 |
void setSelection ( bool on ) { m_SHeader.bSelection = on; m_bChanged = true; }
|
|
|
75 |
void setCompression ( int c ) { m_SHeader.iCompression = c; m_bChanged = true; }
|
219 |
cycrow |
76 |
void setFilename(const Utils::WString &s) { _sFilename = s; }
|
177 |
cycrow |
77 |
void setChanged(bool b) { m_bChanged = b; }
|
1 |
cycrow |
78 |
|
219 |
cycrow |
79 |
const Utils::WString name() const { return _sName; }
|
|
|
80 |
const Utils::WString& filename() const { return _sFilename; }
|
177 |
cycrow |
81 |
bool isSelection() const { return m_SHeader.bSelection; }
|
|
|
82 |
bool isChanged() const { return m_bChanged; }
|
|
|
83 |
|
|
|
84 |
size_t numFiles() const { return m_lFiles.size(); }
|
1 |
cycrow |
85 |
unsigned long GetFileSize();
|
|
|
86 |
unsigned int GetAvailableFiles();
|
|
|
87 |
CLinkList<SMultiSpkFile> *GetFileList () { return &m_lFiles; }
|
|
|
88 |
|
|
|
89 |
void UpdatedPackage(CBaseFile *p);
|
177 |
cycrow |
90 |
SMultiSpkFile *findPackage(CBaseFile *p);
|
219 |
cycrow |
91 |
SMultiSpkFile *findPackage(const Utils::WString &name, const Utils::WString &author);
|
1 |
cycrow |
92 |
void RemovePackages();
|
|
|
93 |
|
177 |
cycrow |
94 |
protected:
|
219 |
cycrow |
95 |
Utils::WString _createData() const;
|
|
|
96 |
bool _parseHeader(const Utils::WString &header);
|
|
|
97 |
bool _parseValueLine(const Utils::WString &line);
|
|
|
98 |
void _readValues(const Utils::WString &values);
|
1 |
cycrow |
99 |
|
|
|
100 |
private:
|
|
|
101 |
CLinkList<SMultiSpkFile> m_lFiles;
|
219 |
cycrow |
102 |
Utils::WString _sName, _sFilename;
|
1 |
cycrow |
103 |
|
|
|
104 |
SMultiHeader m_SHeader;
|
|
|
105 |
bool m_bChanged;
|
|
|
106 |
};
|
|
|
107 |
|
|
|
108 |
#endif //__MUTLISPKFILE_H__
|