Some models were still needed: FileModel and MediaImageModel extending
[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 */
21
22 #ifndef EMUFRONTQUERYMODEL_H
23 #define EMUFRONTQUERYMODEL_H
24
25 #include <QSqlQueryModel>
26
27 class EmuFrontObject;
28 class Platform;
29 class MediaType;
30
31 class EmuFrontQueryModel : public QSqlQueryModel
32 {
33     Q_OBJECT
34
35 public:
36     EmuFrontQueryModel(QObject *parent = 0);
37     EmuFrontObject* getDataObject(int id);
38     EmuFrontObject* getDataObject(const QModelIndex &index);
39     EmuFrontObject* getObject(int row);
40     static int getCurrentTimeStamp();
41
42 protected:
43     QString tableName;
44     QList<int> editableColumns;
45     void filterDataObjects(QList<QString> filter);
46     QString constructWhereByFilters(QList<QString> filters);
47     EmuFrontObject* getDataObject(QString filter);
48     virtual void filterById(int id);
49     void clearFilters();
50     virtual EmuFrontObject* recordToDataObject(const QSqlRecord* ) = 0;
51     virtual QString constructFilterById(int id) const = 0;
52     virtual QString constructSelect(QString whereClause = "") const = 0;
53
54 private:
55     EmuFrontObject* getFilteredDataObject();
56 };
57
58 #endif // EMUFRONTQUERYMODEL_H