Imported needed functionality from (soon) deprecated database
[emufront] / src / models / emufrontquerymodel.h
1 /*
2 ** EmuFront
3 ** Copyright 2010 Mikko Keinänen
4 **
5 ** This file is part of EmuFront.
6 **
7 **
8 ** EmuFront is free software: you can redistribute it and/or modify
9 ** it under the terms of the GNU General Public License version 2 as published by
10 ** the Free Software Foundation and appearing in the file gpl.txt included in the
11 ** packaging of this file.
12 **
13 ** EmuFront is distributed in the hope that it will be useful,
14 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 ** GNU General Public License for more details.
17 **
18 ** You should have received a copy of the GNU General Public License
19 ** along with EmuFront.  If not, see <http://www.gnu.org/licenses/>.
20 */#ifndef EMUFRONTQUERYMODEL_H
21 #define EMUFRONTQUERYMODEL_H
22
23 #include <QSqlQueryModel>
24
25 class EmuFrontObject;
26 class Platform;
27 class MediaType;
28
29 class EmuFrontQueryModel : public QSqlQueryModel
30 {
31     Q_OBJECT
32
33 public:
34     EmuFrontQueryModel(QObject *parent = 0);
35     EmuFrontObject* getDataObject(int id);
36     EmuFrontObject* getDataObject(const QModelIndex &index);
37     EmuFrontObject* getObject(int row) const;
38     static int getCurrentTimeStamp();
39
40 protected:
41     QString tableName;
42     QList<int> editableColumns;
43     void filterDataObjects(QList<QString> filter);
44     QString constructWhereByFilters(QList<QString> filters);
45     EmuFrontObject* getDataObject(QString filter);
46     virtual void filterById(int id);
47     void clearFilters();
48     virtual EmuFrontObject* recordToDataObject(const QSqlRecord* ) = 0;
49     virtual QString constructFilterById(int id) const = 0;
50     virtual QString constructSelect(QString whereClause = "") const = 0;
51
52 private:
53     EmuFrontObject* getFilteredDataObject();
54 };
55
56 #endif // EMUFRONTQUERYMODEL_H