Imported more functionality from old db classes to new models.
[emufront] / src / models / mediaimagecontainermodel.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 MEDIAIMAGECONTAINERMODEL_H
23 #define MEDIAIMAGECONTAINERMODEL_H
24
25 #include "filemodel.h"
26
27 class MediaImage;
28 class MediaImageContainer;
29 class FilePathObject;
30
31 class MediaImageContainerModel : public FileModel
32 {
33     Q_OBJECT
34 public:
35     MediaImageContainerModel(QObject *parent = 0);
36     void filterBySetup(int setupId);
37     void storeContainers(QList<MediaImageContainer*>, FilePathObject*);
38     bool removeFromFilePath(int filePathId) const;
39     enum {
40         MIC_FileId,
41         MIC_FileName,
42         MIC_FileCheckSum,
43         MIC_FileSize,
44         MIC_FilePathId,
45         MIC_FilePathName,
46         MIC_SetupId,
47         MIC_PlatformId,
48         MIC_PlatformName,
49         MIC_MediaTypeId,
50         MIC_MediaTypeName
51     };
52
53 protected:
54     virtual void refresh();
55     virtual QString constructSelect(QString where = "") const;
56     // Implemented for EmuFrontQueryModel:
57     virtual EmuFrontObject* recordToDataObject(const QSqlRecord* );
58     virtual QString constructFilterById(int id) const;
59 private:
60     int storeMediaImageContainer(EmuFrontObject *efo);
61     void linkMediaImagesWithContainer(int, QList<EmuFrontObject*>);
62     bool linkMediaImageContainerToPath(const MediaImageContainer*) const;
63     bool linkMediaImageToMediaImageContainer(const MediaImage*, int micId) const;
64 };
65
66 #endif // MEDIAIMAGECONTAINERMODEL_H