Subversion Repositories spk

Rev

Rev 177 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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; }
176 cycrow 9
	Utils::String	sName;
1 cycrow 10
	char   *sData;
11
	long    lSize;
12
	bool	bOn;
176 cycrow 13
	Utils::String  sScriptName;
14
	Utils::String  sScriptVersion;
15
	Utils::String  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
 
177 cycrow 41
	SMultiSpkFile *addFileEntry(const Utils::String &filename);
42
	bool addFile(SMultiSpkFile *file);
43
	bool addFile(const Utils::String &file, bool on = true);
44
	bool addFileNow(const Utils::String &file, bool = true );
45
	bool removeFile ( int id );
46
	bool removeFile(const SMultiSpkFile *ms);
47
	bool removeFile(const Utils::String &file);
48
	bool markRemoveFile ( int id );
49
	bool markRemoveFile ( SMultiSpkFile *ms );
50
	bool markRemoveFile(const Utils::String &file);
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 );
177 cycrow 59
	bool readAllPackages(const Utils::String &filename, int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL ) { _sFilename = filename; return readAllPackages(type, addToList); }
60
	bool readAllPackages(int type = SPKREAD_NODATA, CLinkList<CBaseFile> *addToList = NULL );
1 cycrow 61
	bool ReadSpk ( SMultiSpkFile *ms, int type = SPKREAD_NODATA );
62
 
177 cycrow 63
	const SMultiSpkFile *findFile (const Utils::String &name) const;
1 cycrow 64
 
177 cycrow 65
	bool extractAll(const Utils::String &dir);
66
	bool extractData(SMultiSpkFile *ms);
67
	bool extractFile(const SMultiSpkFile *ms, const Utils::String &dir);
68
	bool extractFile(const Utils::String &filename, const Utils::String &dir);
69
	bool splitMulti(const Utils::String &filename, const Utils::String &destdir);
1 cycrow 70
 
177 cycrow 71
	bool writeFile(const Utils::String &filename, CProgressInfo *progress = NULL);
1 cycrow 72
 
177 cycrow 73
	void setName(const Utils::String &n) { _sName = n; m_bChanged = true; }
74
	void setSelection ( bool on ) { m_SHeader.bSelection = on; m_bChanged = true; }
75
	void setCompression ( int c ) { m_SHeader.iCompression = c; m_bChanged = true; }
76
	void setFilename(const Utils::String &s) { _sFilename = s; }
77
	void setChanged(bool b) { m_bChanged = b; }
1 cycrow 78
 
177 cycrow 79
	const Utils::String name() const { return _sName; }
80
	const Utils::String& filename() const { return _sFilename; }
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);
91
	SMultiSpkFile *findPackage(const Utils::String &name, const Utils::String &author);
1 cycrow 92
	void RemovePackages();
93
 
177 cycrow 94
protected:
95
	Utils::String _createData() const;
96
	bool _parseHeader(const Utils::String &header);
97
	bool _parseValueLine(const Utils::String &line);
98
	void _readValues(const Utils::String &values);
1 cycrow 99
 
100
private:
101
	CLinkList<SMultiSpkFile> m_lFiles;
176 cycrow 102
	Utils::String _sName, _sFilename;
1 cycrow 103
 
104
	SMultiHeader m_SHeader;
105
	bool		m_bChanged;
106
};
107
 
108
#endif //__MUTLISPKFILE_H__