From 8a710608f23dad1769dd1cead6245ad5de750770 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mikko=20Kein=C3=A4nen?= Date: Sun, 30 May 2010 00:56:02 +0300 Subject: [PATCH] Initial MediaImagePathDialog implementation --- src/db/databasemanager.cpp | 3 +++ src/db/databasemanager.h | 3 +++ src/db/dbfilepath.cpp | 15 +++++++++++++-- src/db/dbfilepath.h | 1 - src/db/dbmediatype.cpp | 2 -- src/db/dbmediatype.h | 9 ++++----- src/db/dbplatform.cpp | 1 - src/db/dbplatform.h | 1 - src/dialogs/mediaimagepathdialog.cpp | 9 +++++++++ src/dialogs/mediaimagepathdialog.h | 8 ++++++++ 10 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/db/databasemanager.cpp b/src/db/databasemanager.cpp index 9b75560..b3103af 100644 --- a/src/db/databasemanager.cpp +++ b/src/db/databasemanager.cpp @@ -29,6 +29,9 @@ const QString DatabaseManager::DB_FILENAME = QString("my.db.sqlite"); const QString DatabaseManager::DATABASE = QString("QSQLITE"); +const QString DatabaseManager::DB_TABLE_NAME_MEDIATYPE = QString("mediatype"); +const QString DatabaseManager::DB_TABLE_NAME_PLATFORM = QString("platform"); +const QString DatabaseManager::DB_TABLE_NAME_FILEPATH = QString("filepath"); DatabaseManager::DatabaseManager(QObject *parent) : QObject(parent) diff --git a/src/db/databasemanager.h b/src/db/databasemanager.h index d6afc6c..77ad360 100644 --- a/src/db/databasemanager.h +++ b/src/db/databasemanager.h @@ -53,6 +53,9 @@ protected: QSqlTableModel* sqlTableModel; //virtual QSqlTableModel* getDataModel() = 0; int countRows(QString tableName, QString columnName, int id) const; + static const QString DB_TABLE_NAME_FILEPATH; + static const QString DB_TABLE_NAME_MEDIATYPE; + static const QString DB_TABLE_NAME_PLATFORM; private: static const QString DB_FILENAME; diff --git a/src/db/dbfilepath.cpp b/src/db/dbfilepath.cpp index 99eef74..ae29386 100644 --- a/src/db/dbfilepath.cpp +++ b/src/db/dbfilepath.cpp @@ -17,13 +17,15 @@ // You should have received a copy of the GNU General Public License // along with Foobar. If not, see . -#include +#include #include "dbfilepath.h" #include "../dataobjects/filepathobject.h" DbFilePath::DbFilePath(QObject *parent) : DatabaseManager(parent) { + sqlTableModel = getData(); } + QSqlTableModel* DbFilePath::getDataModel() { return sqlTableModel; @@ -57,6 +59,15 @@ bool DbFilePath::deleteDataObjectFromModel(QModelIndex *index) QSqlTableModel* DbFilePath::getData() { - QSqlTableModel *model = new QSqlTableModel(this); + QSqlRelationalTableModel *model = new QSqlRelationalTableModel(this); + model->setTable(DB_TABLE_NAME_FILEPATH); + model->setRelation(FilePath_PlatformId, + QSqlRelation(DB_TABLE_NAME_PLATFORM, "id", "name")); + model->setRelation(FilePath_MediaTypeId, + QSqlRelation(DB_TABLE_NAME_MEDIATYPE, "id", "name")); + model->setSort(FilePath_Name, Qt::AscendingOrder); + model->setHeaderData(FilePath_MediaTypeId, Qt::Horizontal, tr("Media type")); + model->setHeaderData(FilePath_PlatformId, Qt::Horizontal, tr("Platform")); + model->select(); return model; } diff --git a/src/db/dbfilepath.h b/src/db/dbfilepath.h index 15cc630..3ceded3 100644 --- a/src/db/dbfilepath.h +++ b/src/db/dbfilepath.h @@ -41,7 +41,6 @@ private: FilePath_PlatformId = 4, FilePath_MediaTypeId = 5, FilePath_LastScanned = 6 }; - static const QString DB_TABLE_NAME_FILEPATH; }; #endif // DBFILEPATH_H diff --git a/src/db/dbmediatype.cpp b/src/db/dbmediatype.cpp index 6268853..f06f7bd 100644 --- a/src/db/dbmediatype.cpp +++ b/src/db/dbmediatype.cpp @@ -24,8 +24,6 @@ #include "dbmediatype.h" #include "../dataobjects/mediatype.h" -const QString DbMediaType::DB_TABLE_NAME_MEDIATYPE = QString("mediatype"); - DbMediaType::DbMediaType(QObject *parent) : DatabaseManager(parent) { diff --git a/src/db/dbmediatype.h b/src/db/dbmediatype.h index 3f2e045..72ab9a9 100644 --- a/src/db/dbmediatype.h +++ b/src/db/dbmediatype.h @@ -25,21 +25,20 @@ class DbMediaType : public DatabaseManager { public: - DbMediaType(QObject*); + DbMediaType(QObject *); virtual QSqlTableModel* getDataModel(); virtual EmuFrontObject* getDataObjectFromModel(QModelIndex*); virtual bool updateDataObjectToModel(const EmuFrontObject*); virtual bool insertDataObjectToModel(const EmuFrontObject*); virtual bool deleteDataObjectFromModel(QModelIndex*); virtual int countDataObjectRefs(int) const; - -private: enum { MediaType_Id = 0, MediaType_Name = 1, MediaType_Filename = 2 }; - static const QString DB_TABLE_NAME_MEDIATYPE; - virtual QSqlTableModel* getData(); + +private: + virtual QSqlTableModel* getData(); }; diff --git a/src/db/dbplatform.cpp b/src/db/dbplatform.cpp index f708544..bd7ae54 100644 --- a/src/db/dbplatform.cpp +++ b/src/db/dbplatform.cpp @@ -23,7 +23,6 @@ #include #include "dbplatform.h" -const QString DbPlatform::DB_TABLE_NAME_PLATFORM = QString("platform"); DbPlatform::DbPlatform(QObject *parent) : DatabaseManager(parent) { diff --git a/src/db/dbplatform.h b/src/db/dbplatform.h index 859c444..06f5f2c 100644 --- a/src/db/dbplatform.h +++ b/src/db/dbplatform.h @@ -41,7 +41,6 @@ private: Platform_Id = 0, Platform_Name = 1, Platform_Filename = 2 }; - static const QString DB_TABLE_NAME_PLATFORM; virtual QSqlTableModel* getData(); }; diff --git a/src/dialogs/mediaimagepathdialog.cpp b/src/dialogs/mediaimagepathdialog.cpp index 71abb18..88ecf18 100644 --- a/src/dialogs/mediaimagepathdialog.cpp +++ b/src/dialogs/mediaimagepathdialog.cpp @@ -33,6 +33,12 @@ MediaImagePathDialog::MediaImagePathDialog(QWidget *parent, EmuFrontObject *efOb connectSignals(); } +MediaImagePathDialog::~MediaImagePathDialog() +{ + delete mediaTypeComBox; + delete platformModel; +} + void MediaImagePathDialog::connectSignals() { } @@ -49,6 +55,9 @@ void MediaImagePathDialog::initWidgets() void MediaImagePathDialog::populateMediaTypeComBox() { + dbMediaType = new DbMediaType(this); + mediaTypeComBox->setModel(dbMediaType->getDataModel()); + mediaTypeComBox->setModelColumn(DbMediaType::MediaType_Name); } void MediaImagePathDialog::populatePlatformComBox() diff --git a/src/dialogs/mediaimagepathdialog.h b/src/dialogs/mediaimagepathdialog.h index 3d4c3a2..34769cb 100644 --- a/src/dialogs/mediaimagepathdialog.h +++ b/src/dialogs/mediaimagepathdialog.h @@ -26,6 +26,9 @@ class QDialogButtonBox; class QComboBox; class QLabel; class QPushButton; +class QSqlTableModel; +class DbMediaType; +class DbPlatform; class MediaImagePathDialog : public DataObjectEditDialog { @@ -33,6 +36,7 @@ class MediaImagePathDialog : public DataObjectEditDialog public: MediaImagePathDialog(QWidget *parent, EmuFrontObject*); + ~MediaImagePathDialog(); virtual void setDataObject(EmuFrontObject *); protected slots: @@ -45,6 +49,10 @@ private: QComboBox *platformComBox; QLabel *filePathLabel; QPushButton *filePathButton; + QSqlTableModel *mediaTypeModel; + QSqlTableModel *platformModel; + DbMediaType *dbMediaType; + DbPlatform *dbPlatform; void initWidgets(); void layout(); -- 1.7.9.5