Subversion Repositories spk

Rev

Rev 105 | Rev 183 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#pragma once

#include "lists.h"
#include "Utils/String.h"
#include "StringList.h"
#include "enums.h"

class C_File;
class CBaseFile;
class CProgressInfo;

namespace SPK {

class COriginalFiles
{
private:
        CLinkList<C_File>               _lFiles;

        Utils::String                   _sDir;

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

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

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

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

        void reset();

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

}