Initial MediaImagePathDialog implementation
authorMikko Keinänen <mikko.keinanen@gmail.com>
Sat, 29 May 2010 21:56:02 +0000 (00:56 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Sat, 29 May 2010 21:56:02 +0000 (00:56 +0300)
src/db/databasemanager.cpp
src/db/databasemanager.h
src/db/dbfilepath.cpp
src/db/dbfilepath.h
src/db/dbmediatype.cpp
src/db/dbmediatype.h
src/db/dbplatform.cpp
src/db/dbplatform.h
src/dialogs/mediaimagepathdialog.cpp
src/dialogs/mediaimagepathdialog.h

index 9b75560..b3103af 100644 (file)
@@ -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)
index d6afc6c..77ad360 100644 (file)
@@ -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;
index 99eef74..ae29386 100644 (file)
 // You should have received a copy of the GNU General Public License
 // along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
 
-#include <QSqlTableModel>
+#include <QSqlRelationalTableModel>
 #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;
 }
index 15cc630..3ceded3 100644 (file)
@@ -41,7 +41,6 @@ private:
            FilePath_PlatformId = 4,
            FilePath_MediaTypeId = 5,
            FilePath_LastScanned = 6 };
-    static const QString DB_TABLE_NAME_FILEPATH;
 };
 
 #endif // DBFILEPATH_H
index 6268853..f06f7bd 100644 (file)
@@ -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)
 {
index 3f2e045..72ab9a9 100644 (file)
 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();
 
 };
 
index f708544..bd7ae54 100644 (file)
@@ -23,7 +23,6 @@
 #include <QDebug>
 #include "dbplatform.h"
 
-const QString DbPlatform::DB_TABLE_NAME_PLATFORM = QString("platform");
 
 DbPlatform::DbPlatform(QObject *parent) : DatabaseManager(parent)
 {
index 859c444..06f5f2c 100644 (file)
@@ -41,7 +41,6 @@ private:
         Platform_Id = 0,
         Platform_Name = 1,
         Platform_Filename = 2 };
-    static const QString DB_TABLE_NAME_PLATFORM;
     virtual QSqlTableModel* getData();
 };
 
index 71abb18..88ecf18 100644 (file)
@@ -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()
index 3d4c3a2..34769cb 100644 (file)
@@ -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();