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
|