Subversion Repositories spk

Rev

Rev 183 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#pragma once

#include "lists.h"
#include "Utils/WStringList.h"
#include "enums.h"

class C_File;
class CBaseFile;
class CProgressInfo;

namespace SPK {

class COriginalFiles
{
private:
        CLinkList<C_File>               _lFiles;

        Utils::WString                  _sDir;

public:
        COriginalFiles(const Utils::WString &dir);
        ~COriginalFiles(void);

        int count() const;
        bool isOriginal(C_File *f) const;

        void installed(CBaseFile *package);
        void backup(CBaseFile *package, Utils::WStringList *errors);
        bool backupFile(C_File *f, Utils::WStringList *errors);
        bool doBackup(C_File *f, Utils::WStringList *errors);
        int  restoreAll(CProgressInfo *info, int files, int max);
        bool restoreFile(C_File *f, Utils::WStringList *errors);

        void parse(const Utils::WString &data);
        void update(bool bForce, const CLinkList<C_File> *pFiles);
        bool writeData(Utils::WStringList &lines);

        void reset();

private:
        void _storeOverride(C_File *f);
        void _storeFiles(FileType filetype, const Utils::WString &searchPath, const CLinkList<C_File> *pFiles);
        void _add(FileType filetype, const Utils::WString &filename, const Utils::WString &searchPath, const CLinkList<C_File> *pFiles);
        C_File *_getFile(C_File *file) const;
};

}