feb42463c42db6c8bacfb228dba46e2d2f49203f
[emufront] / src / models / mediaimagemodel.cpp
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 #include "mediaimage.h"
23 #include "mediaimagemodel.h"
24 #include <QtSql>
25
26 MediaImageModel::MediaImageModel(QObject *parent) :
27     FileModel(parent)
28 {
29 }
30
31 /* Fetches a list of media images inside a media image container
32     with a given id */
33 QMap<QString, EmuFrontObject*> MediaImageModel::getMediaImages(int micId)
34 {
35     QMap<QString, EmuFrontObject*> list;
36     QSqlQuery  q;
37     q.prepare("SELECT file.id, file.name, file.size, file.checksum "
38         "FROM file INNER JOIN mediaimagecontainer_mediaimage "
39         "ON mediaimagecontainer_mediaimage.mediaimageid = file.id "
40         "WHERE mediaimagecontainer_mediaimage.mediaimagecontainerid = :micid ");
41     q.bindValue(":micid", micId);
42     q.exec();
43     QSqlRecord rec;
44     int id, size;
45     QString name, checksum;
46     MediaImage *mi = 0;
47     while(q.next()) {
48         // TODO: checks?
49         rec = q.record();
50         id = rec.value(MediaImageModel::File_Id).toInt();
51         name = rec.value(MediaImageModel::File_Name).toString();
52         checksum = rec.value(MediaImageModel::File_CheckSum).toString();
53         size = rec.value(MediaImageModel::File_FileSize).toInt();
54         list[checksum] = new MediaImage(id, name, checksum, size);
55     }
56     return list;
57 }