75 lines
2.0 KiB
C++
75 lines
2.0 KiB
C++
#ifndef FILEMANAGER_H
|
|
#define FILEMANAGER_H
|
|
|
|
#include <QString>
|
|
#include <QDir>
|
|
#include <QFile>
|
|
#include <QStandardPaths>
|
|
#include <QCoreApplication>
|
|
|
|
class FileManager
|
|
{
|
|
public:
|
|
// Типы файлов/папок
|
|
enum FileType {
|
|
Sounds,
|
|
Images,
|
|
Styles,
|
|
Voices,
|
|
Fonts,
|
|
Temp,
|
|
Backups,
|
|
Exports,
|
|
Logs,
|
|
Cache,
|
|
WebServerImages,
|
|
WebServerSounds,
|
|
Icons,
|
|
SystemStyles
|
|
};
|
|
|
|
// Режим копирования
|
|
enum CopyMode {
|
|
CopyIfNotExists, // Копировать только если не существует
|
|
CopyAlways, // Всегда копировать (перезаписывать)
|
|
CopyWithNewName // Копировать с новым именем (если существует)
|
|
};
|
|
|
|
static FileManager& instance();
|
|
|
|
// Основные пути
|
|
QString systemPath() const;
|
|
QString userDataPath() const;
|
|
|
|
// Получение путей
|
|
QString getPath(FileType type, const QString& subPath = "") const;
|
|
QString getFullPath(FileType type, const QString& fileName) const;
|
|
|
|
// Копирование файлов
|
|
bool copyToUserData(const QString& sourceFile, FileType type,
|
|
CopyMode mode = CopyIfNotExists,
|
|
QString* newFileName = nullptr);
|
|
|
|
// Проверка существования
|
|
bool existsInUserData(FileType type, const QString& fileName) const;
|
|
|
|
// Инициализация структуры папок
|
|
void initializeFolderStructure();
|
|
|
|
// Получение относительного пути для веб-сервера
|
|
QString getWebPath(FileType type, const QString& fileName) const;
|
|
|
|
|
|
|
|
private:
|
|
FileManager();
|
|
~FileManager() = default;
|
|
FileManager(const FileManager&) = delete;
|
|
FileManager& operator=(const FileManager&) = delete;
|
|
|
|
QString m_systemPath;
|
|
QString m_userDataPath;
|
|
};
|
|
|
|
#endif // FILEMANAGER_H
|