Modified the license text comment type.
[emufront] / src / db / databasemanager.h
index 94ef8ba..84705b5 100644 (file)
@@ -1,31 +1,32 @@
-// EmuFront
-// Copyright 2010 Mikko Keinänen
-//
-// This file is part of EmuFront.
-//
-//
-// EmuFront is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Foobar is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
-
-#ifndef DATABASEMANAGER_H
+/*
+** EmuFront
+** Copyright 2010 Mikko Keinänen
+**
+** This file is part of EmuFront.
+**
+**
+** EmuFront is free software: you can redistribute it and/or modify
+** it under the terms of the GNU General Public License version 2 as published by
+** the Free Software Foundation and appearing in the file gpl.txt included in the
+** packaging of this file.
+**
+** EmuFront is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with EmuFront.  If not, see <http://www.gnu.org/licenses/>.
+*/#ifndef DATABASEMANAGER_H
 #define DATABASEMANAGER_H
 
 #include <QObject>
 #include <QSqlDatabase>
+#include "emufrontexception.h"
 
 class QSqlError;
 class QFile;
-class QSqlTableModel;
+class QSqlQueryModel;
 class QModelIndex;
 class EmuFrontObject;
 
@@ -35,15 +36,18 @@ public:
        DatabaseManager(QObject *parent = 0);
        ~DatabaseManager();
 
-    virtual QSqlTableModel* getDataModel() = 0;
+    QSqlQueryModel* getDataModel(bool update = false);
     EmuFrontObject* getDataObjectFromModel(QModelIndex*);
-    EmuFrontObject* getDataObject(int id) const;
+    EmuFrontObject* getDataObject(int id);
+    EmuFrontObject* getDataObject(QString filter);
     virtual bool updateDataObjectToModel(const EmuFrontObject*) = 0;
-    virtual bool insertDataObjectToModel(const EmuFrontObject*) = 0;
+    virtual int insertDataObjectToModel(const EmuFrontObject*) = 0;
     virtual bool deleteDataObjectFromModel(QModelIndex*) = 0;
-    virtual int countDataObjectRefs(int id) const = 0;
+    virtual bool deleteDataObject(int id) const = 0;
+    int countDataObjectRefs(int id) const;
+    static int getCurrentTimeStamp();
     static bool openDB();
-    void resetModel() const;
+    void resetModel();
     enum {
         Filetype_MediaImageContainer = 0,
         Filetype_Screenshot = 1,
@@ -51,19 +55,28 @@ public:
         Filetype_MediaTypeIcon = 3 };
 
 protected:
-    QSqlTableModel* sqlTableModel;
-    //virtual QSqlTableModel* getDataModel() = 0;
-    virtual EmuFrontObject* recordToDataObject(const QSqlRecord* ) const = 0;
+    QSqlQueryModel* sqlTableModel;
+    virtual EmuFrontObject* recordToDataObject(const QSqlRecord* ) = 0;
+    virtual void filterById(int id) = 0;
+    virtual void filterDataObjects(QList<QString> filter) = 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;
+    static const QString DB_TABLE_MEDIAIMAGECONTAINER;
+    static const QString DB_TABLE_MEDIAIMAGECONTAINER_MEDIAIMAGE;
+    static const QString DB_TABLE_EXECUTABLE;
 
 private:
-       static const QString DB_FILENAME;
+    static const QString DB_FILENAME;
     static const QString DATABASE;
-    virtual QSqlTableModel* getData() = 0;
+    virtual QSqlQueryModel* getData() = 0;
     static QString getDbPath();
+    EmuFrontObject* getFilteredDataObject();
+    virtual QString getCountRefsSelect(int) const = 0;
 };
 
 #endif