Added license information
[emufront] / src / db / databasemanager.cpp
1 // EmuFront
2 // Copyright Mikko Keinänen 2010
3 //
4 // This file is part of EmuFront.
5 //
6 //
7 // EmuFront is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // Foobar is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
19
20 #include "databasemanager.h"
21 #include <QObject>
22 #include <QSqlDatabase>
23 #include <QSqlTableModel>
24 #include <QSqlError>
25 #include <QSqlQuery>
26 #include <QFile>
27 #include <QDir>
28 #include <QVariant>
29 #include <iostream>
30
31 const QString DatabaseManager::DB_FILENAME = QString("my.db.sqlite");
32
33 DatabaseManager::DatabaseManager(QObject *parent)
34         : QObject(parent)
35 {}
36
37 DatabaseManager::~DatabaseManager()
38 {}
39
40 bool DatabaseManager::openDB()
41 {
42     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
43     db.setDatabaseName(DatabaseManager::getDbPath());
44     return db.open();
45 }
46
47 /*QSqlError DatabaseManager::lastError()
48 {
49         return db.lastError();
50 }*/
51
52 /*bool DatabaseManager::deleteDB()
53 {
54         db.close();
55         return QFile::remove(getDbPath());
56 }*/
57
58 QString DatabaseManager::getDbPath()
59 {
60         QString path;
61 #ifdef Q_OS_LINUX
62         path.append(QDir::home().path());
63         path.append(QDir::separator()).append(DB_FILENAME);
64 #else
65         path.append(DB_FILENAME);       
66 #endif
67         return path;
68 }
69
70 /**
71  * Check if database already exists.
72  * Returns false if doesn't or we don't have a connection.
73 */ 
74 bool DatabaseManager::dbExists()
75 {
76         QSqlQuery query;
77     query.exec("SELECT name FROM sqlite_master WHERE name='platform'");
78     return query.next();
79 }
80
81 bool DatabaseManager::createDB()
82 {
83         bool ret = false;
84     QSqlQuery query;
85
86     ret = query.exec("create table platform "
87                      "(id integer primary key, "
88                      "name varchar(30), "
89                      "filename varchar(125))");
90     /*ret = query.exec("create table media "
91                                                 "(id integer primary key, "
92                                                 "name varchar(30), "
93                                                 "filename varchar(125))");*/
94         return ret;
95 }
96
97 void DatabaseManager::resetModel()
98 {
99     if (!sqlTableModel) return;
100     sqlTableModel->setFilter("");
101     sqlTableModel->select();
102 }