quickmod/FuseMounter/database.h

101 lines
2.1 KiB
C++

#ifndef DATABASE_H
#define DATABASE_H
#include <QObject>
#include <QFileSystemWatcher>
#include <QSqlDatabase>
class ModEntry : public QObject
{
Q_OBJECT
public:
int m_id;
QString m_archivePath;
QString m_installedPath;
QString m_lpath;
QStringList m_lparts;
ModEntry() : m_id{0} {}
/*
ModEntry(const ModEntry &other)
: QObject()
{
m_id = other.m_id;
m_archivePath = other.m_archivePath;
m_installedPath = other.m_installedPath;
}
ModEntry &operator=(const ModEntry &other)
{
m_id = other.m_id;
m_archivePath = other.m_archivePath;
m_installedPath = other.m_installedPath;
return *this;
}
*/
};
class ModLibrary : public QObject
{
Q_OBJECT
public:
int m_id;
QString m_filename;
QList<ModEntry *> m_entries;
ModLibrary() : m_id{0} {}
~ModLibrary() {
for( ModEntry *ent : m_entries )
ent->deleteLater();
}
/*
ModLibrary(const ModLibrary &other)
: QObject()
{
m_id = other.m_id;
m_filename = other.m_filename;
m_entries = other.m_entries;
}
ModLibrary &operator=(const ModLibrary &other)
{
m_id = other.m_id;
m_filename = other.m_filename;
m_entries = other.m_entries;
return *this;
}
friend bool operator<(const ModLibrary &a, const ModLibrary &b)
{
return a.m_id < b.m_id;
}
*/
};
class Database : public QObject
{
Q_OBJECT
bool m_open;
QSqlDatabase m_database;
QStringList m_overrides;
public:
explicit Database(QObject *parent = nullptr);
//~Database();
void setDatabase(QSqlDatabase &db);
bool open(const QString &dbpath);
void readOverrides();
QList<ModLibrary *> archiveList(int profileId);
QStringList proxyList(int profileId);
QList<ModEntry *> modManifest(int id);
bool isProxyOverride(const QString &filepath);
bool registerProxyOverride(const QString &filepath);
bool unregisterProxyOverride(const QString &filepath);
};
#endif // DATABASE_H