#include <QObject>
#include <QSqlDatabase>
+#include "../exceptions/emufrontexception.h"
class QSqlError;
class QFile;
-class QSqlTableModel;
+class QSqlQueryModel;
+class QModelIndex;
+class EmuFrontObject;
class DatabaseManager : public QObject
{
DatabaseManager(QObject *parent = 0);
~DatabaseManager();
- virtual QSqlTableModel* getDataModel() = 0;
+ QSqlQueryModel* getDataModel();
+ EmuFrontObject* getDataObjectFromModel(QModelIndex*);
+ EmuFrontObject* getDataObject(int id);
+ virtual bool updateDataObjectToModel(const EmuFrontObject*) = 0;
+ virtual bool insertDataObjectToModel(const EmuFrontObject*) = 0;
+ virtual bool deleteDataObjectFromModel(QModelIndex*) = 0;
+ virtual int countDataObjectRefs(int id) const = 0;
static bool openDB();
- static bool deleteDB();
- static bool dbExists();
- static bool createDB();
- void resetModel() const;
+ void resetModel();
+ enum {
+ Filetype_MediaImageContainer = 0,
+ Filetype_Screenshot = 1,
+ Filetype_PlatformIcon = 2,
+ Filetype_MediaTypeIcon = 3 };
protected:
- QSqlTableModel *sqlTableModel;
+ QSqlQueryModel* sqlTableModel;
+ virtual EmuFrontObject* recordToDataObject(const QSqlRecord* ) = 0;
+ virtual void filterById(int id) = 0;
+ virtual void clearFilters() = 0;
+ int countRows(QString tableName, QString columnName, int id) const;
+ static const QString DB_TABLE_NAME_FILE;
+ static const QString DB_TABLE_NAME_FILEPATH;
+ static const QString DB_TABLE_NAME_MEDIATYPE;
+ static const QString DB_TABLE_NAME_PLATFORM;
+ static const QString DB_TABLE_NAME_SETUP;
private:
static const QString DB_FILENAME;
- virtual QSqlTableModel* getData() = 0;
+ static const QString DATABASE;
+ virtual QSqlQueryModel* getData() = 0;
static QString getDbPath();
};