#include "databasemanager.h"
#include <QObject>
#include <QSqlDatabase>
+#include <QSqlTableModel>
#include <QSqlError>
#include <QSqlQuery>
#include <QFile>
#include <iostream>
const QString DatabaseManager::DB_FILENAME = QString("my.db.sqlite");
-QSqlDatabase DatabaseManager::db = QSqlDatabase::addDatabase("QSQLITE");
+const QString DatabaseManager::DB_TABLE_NAME_PLATFORM = QString("platform");
+
+//QSqlDatabase DatabaseManager::db = QSqlDatabase::addDatabase("QSQLITE");
DatabaseManager::DatabaseManager(QObject *parent)
: QObject(parent)
bool DatabaseManager::openDB()
{
- if (DatabaseManager::db.databaseName().isEmpty())
- {
- DatabaseManager::db.setDatabaseName(DatabaseManager::getDbPath());
- }
- return DatabaseManager::db.open();
+ QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
+ db.setDatabaseName(DatabaseManager::getDbPath());
+ return db.open();
}
-QSqlError DatabaseManager::lastError()
+/*QSqlError DatabaseManager::lastError()
{
return db.lastError();
-}
+}*/
-bool DatabaseManager::deleteDB()
+/*bool DatabaseManager::deleteDB()
{
db.close();
return QFile::remove(getDbPath());
-}
+}*/
QString DatabaseManager::getDbPath()
{
* Check if database already exists.
* Returns false if doesn't or we don't have a connection.
*/
-bool DatabaseManager::dbExists() const
+bool DatabaseManager::dbExists()
{
- using namespace std;
- if (!db.isOpen())
- {
- cerr << "Database is not connected!" << endl;
- return false;
- }
QSqlQuery query;
- query.exec("SELECT name FROM sqlite_master WHERE name='person'");
- return query.next();
+ query.exec("SELECT name FROM sqlite_master WHERE name='" + DB_TABLE_NAME_PLATFORM + "'");
+ return query.next();
}
-bool DatabaseManager::createDB() const
+bool DatabaseManager::createDB()
{
bool ret = false;
- if (db.isOpen())
- {
+ /*if (db.isOpen())
+ {*/
QSqlQuery query;
+
ret = query.exec("create table platform "
"(id integer primary key, "
"name varchar(30), "
"(id integer primary key, "
"name varchar(30), "
"filename varchar(125))");*/
- }
+ //}
return ret;
}
{
int newId = -1;
bool ret = false;
- if (db.isOpen())
- {
+ /*if (db.isOpen())
+ {*/
//http://www.sqlite.org/autoinc.html
// NULL = is the keyword for the autoincrement to generate next value
QSqlQuery query;
QVariant var = query.lastInsertId();
if (var.isValid()) newId = var.toInt();
}
- }
+ //}
return newId;
}
-QString DatabaseManager::getPlatform(int id) const
+QString DatabaseManager::getPlatform(int id)
{
QString name;
QSqlQuery query(QString("select firstname, lastname from person where id = %1").arg(id));
- if (query.next())
+ if (query.next())
{
name.append(query.value(0).toString());
name.append(query.value(1).toString());
return name;
}
+QSqlTableModel* DatabaseManager::getPlatforms()
+{
+ QSqlTableModel *model = new QSqlTableModel(this);
+ model->setTable(DB_TABLE_NAME_PLATFORM);
+ model->setSort(Platform_Name, Qt::AscendingOrder);
+ model->setHeaderData(Platform_Name, Qt::Horizontal, tr("Name"));
+ model->select();
+ return model;
+}
class QSqlError;
class QFile;
+class QSqlTableModel;
class DatabaseManager : public QObject
{
DatabaseManager(QObject *parent = 0);
~DatabaseManager();
- static bool openDB();
- bool deleteDB();
- bool dbExists() const;
- QSqlError lastError();
- bool createDB() const;
- static int insertPlatform(QString name, QString filename = "");
- QString getPlatform(int id) const;
+ static bool openDB();
+ static bool deleteDB();
+ static bool dbExists();
+ static QSqlError lastError();
+ static bool createDB();
+ static int insertPlatform(QString name, QString filename = "");
+ static QString getPlatform(int id);
+ QSqlTableModel* getPlatforms();
private:
- static QSqlDatabase db;
+ //static QSqlDatabase db;
static const QString DB_FILENAME;
- static QString getDbPath();
+ static const QString DB_TABLE_NAME_PLATFORM;
+ static QString getDbPath();
+
+ enum {
+ Platform_Id = 0,
+ Platform_Name = 1,
+ Platform_Filename = 2
+ };
+
};
#endif
#include <QtGui>
#include "dbobjectdialog.h"
+#include "../db/databasemanager.h"
DbObjectDialog::DbObjectDialog(QWidget *parent)
: EmuFrontDialog(parent)
{
+ dbManager = new DatabaseManager(this);
editButton = new QPushButton(tr("&Edit"));
addButton = new QPushButton(tr("&Add"));
deleteButton = new QPushButton(tr("&Delete"));
- objectList = new QListView();
+ objectList = new QTableView(this);
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok, Qt::Vertical);
buttonBox->addButton(editButton, QDialogButtonBox::ActionRole);
buttonBox->addButton(addButton, QDialogButtonBox::ActionRole);
connect(editButton, SIGNAL(clicked()), this, SLOT(editButtonClicked()));
connect(addButton, SIGNAL(clicked()), this, SLOT(addButtonClicked()));
connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteButtonClicked()));
+ connect(nameDialog, SIGNAL(accepted()), this, SLOT(updateList()));
+}
+
+void DbObjectDialog::updateList() const
+{
+ // fetch items from database (virtual function for this)
+ // update the item list
}
void DbObjectDialog::addButtonClicked()
#include "emufrontdialog.h"
#include "namedialog.h"
+#include "../db/databasemanager.h"
class QPushButton;
class QModelIndex;
class QDialogButtonBox;
-class QListView;
+class QTableView;
class DbObjectDialog : public EmuFrontDialog
{
//void enableEditButton();
//void enableDeleteButton();
void listObjectClicked(const QModelIndex &);
+ void updateList() const;
protected:
virtual int deleteObject() =0;
virtual void addObject() =0;
virtual void editObject() =0;
- NameDialog *nameDialog;
-
+ NameDialog *nameDialog;
+ DatabaseManager *dbManager;
+ QTableView *objectList;
+
private:
QDialogButtonBox *buttonBox;
QPushButton *editButton;
QPushButton *addButton;
QPushButton *deleteButton;
- QListView *objectList;
void setButtonsEnabled(bool);
void connectSignals();
+#include <QtGui>
+#include <QAbstractItemView>
+#include <QSqlTableModel>
+
#include "platformdialog.h"
#include "platformnamedialog.h"
{
setWindowTitle(tr("Set emulated platforms"));
nameDialog = 0;
-
+
+ QSqlTableModel *model = dbManager->getPlatforms();
+ objectList->setModel(model);
+ objectList->setSelectionMode(QAbstractItemView::SingleSelection);
}
int PlatformDialog::deleteObject()
#include <QTextStream>
#include <iostream>
#include "mainwindow.h"
-//#include "db/databasemanager.h"
+#include "db/databasemanager.h"
//#include "dialogs/platformnamedialog.h"
int main(int argc, char *argv[])
QApplication app(argc, argv);
QTextStream cout(stdout, QIODevice::WriteOnly);
- /*DatabaseManager dbm;
- if (dbm.openDB())
- cout << " Database opened succesfully!" << endl;
+ if (DatabaseManager::openDB())
+ cout << " Database opened succesflly!" << endl;
else cout << " Database connection failed!" << endl;
- if (dbm.dbExists())
+ if (DatabaseManager::dbExists())
cout << " Database exists!" << endl;
else
{
cout << " Database is missing!" << endl;
- if (dbm.createDB())
+ if (DatabaseManager::createDB())
cout << " Database created succesfully!" << endl;
else {
cout << "Failed creating database!" << endl;
exit(1);
}
}
+ /*
if (dbm.insertPerson("Testi","Tapaus",1) > 0)
cout << "Database insert successfull!" << endl;