Initial implementation of setup editor. Some refactoring and bug hunting
authorMikko Keinänen <mikko.keinanen@gmail.com>
Wed, 9 Jun 2010 21:41:02 +0000 (00:41 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Wed, 9 Jun 2010 21:41:02 +0000 (00:41 +0300)
because of the previous refactorings.

26 files changed:
doc/uml-dialogs.dia [new file with mode: 0644]
src/dataobjects/setup.cpp
src/db/databasemanager.cpp
src/db/dbfilepath.cpp
src/db/dbmediatype.cpp
src/db/dbplatform.cpp
src/db/dbsetup.cpp
src/dialogs/dataobjecteditdialog.cpp
src/dialogs/dataobjecteditdialog.h
src/dialogs/dbobjectdialog.cpp
src/dialogs/dbobjectdialog.h
src/dialogs/mediaimagepathdialog.cpp
src/dialogs/mediaimagepathdialog.h
src/dialogs/mediaimagepathmaindialog.cpp
src/dialogs/mediaimagepathmaindialog.h
src/dialogs/mediatypedialog.cpp
src/dialogs/mediatypedialog.h
src/dialogs/namedialog.cpp
src/dialogs/namedialog.h
src/dialogs/platformdialog.cpp
src/dialogs/platformdialog.h
src/dialogs/setupeditdialog.cpp
src/dialogs/setupeditdialog.h
src/dialogs/setupmaindialog.cpp
src/dialogs/setupmaindialog.h
src/mainwindow.cpp

diff --git a/doc/uml-dialogs.dia b/doc/uml-dialogs.dia
new file mode 100644 (file)
index 0000000..924938f
Binary files /dev/null and b/doc/uml-dialogs.dia differ
index 3ebc820..279072e 100644 (file)
@@ -21,7 +21,7 @@
 #include "platform.h"
 #include "mediatype.h"
 
-Setup::Setup() : EmuFrontObject()
+Setup::Setup() : EmuFrontObject(), platform(0), mediaType(0)
 {
 }
 
@@ -29,9 +29,9 @@ Setup::Setup(int id, Platform *plf, MediaType *mt, QStringList fileTypeExtension
     : EmuFrontObject(id,
         QString("%1%2")
             .arg(plf ? plf->getName() : "")
-            .arg(mt ? mt->getName() : "")),
-        fileTypeExtensions(fileTypeExtensions)
-{
+            .arg(mt ? mt->getName() : "")), platform(plf), mediaType(mt),
+            fileTypeExtensions(fileTypeExtensions){
+
 }
 
 Setup::~Setup()
index 1c78356..eda8961 100644 (file)
@@ -48,6 +48,7 @@ DatabaseManager::~DatabaseManager()
 
 QSqlQueryModel* DatabaseManager::getDataModel()
 {
+    if (!sqlTableModel) sqlTableModel = getData();
     return sqlTableModel;
 }
 
index caf6c03..fe914b7 100644 (file)
@@ -27,7 +27,7 @@
 DbFilePath::DbFilePath(QObject *parent) : DbQueryModelManager(parent)
 {
     dbSetup = new DbSetup(this);
-    sqlTableModel = getData();
+    sqlTableModel = 0; //getData();
 }
 
 EmuFrontObject* DbFilePath::recordToDataObject(const QSqlRecord *rec) const
index a66de94..646a08c 100644 (file)
@@ -27,7 +27,8 @@
 
 DbMediaType::DbMediaType(QObject *parent) : DbTableModelManager(parent)
 {
-    sqlTableModel = getData();
+    qDebug() << "Creating Media type database manager";
+    sqlTableModel = 0; //getData();
 }
 
 EmuFrontObject* DbMediaType::recordToDataObject(const QSqlRecord *record) const
@@ -107,6 +108,7 @@ QSqlQueryModel* DbMediaType::getData()
     model->setSort(MediaType_Name, Qt::AscendingOrder);
     model->setHeaderData(MediaType_Name, Qt::Horizontal, tr("Name"));
     model->select();
+    qDebug() << "Created a data model for media type data";
     return model;
 }
 
index 753acd8..f5562b6 100644 (file)
@@ -26,7 +26,7 @@
 
 DbPlatform::DbPlatform(QObject *parent) : DbTableModelManager(parent)
 {
-    sqlTableModel = getData();
+    sqlTableModel = 0; //getData();
 }
 
 EmuFrontObject* DbPlatform::recordToDataObject(const QSqlRecord *record) const
index 6aa238a..23afef0 100644 (file)
@@ -31,7 +31,7 @@ DbSetup::DbSetup(QObject *parent) : DbQueryModelManager(parent)
 {
     dbPlatform = new DbPlatform(this);
     dbMediaType = new DbMediaType(this);
-    sqlTableModel = getData();
+    sqlTableModel = 0; //getData();
 }
 
 EmuFrontObject* DbSetup::recordToDataObject(const QSqlRecord *rec) const
index 2ac6bcf..ff89dc7 100644 (file)
@@ -21,6 +21,7 @@
 #include <QSqlQueryModel>
 #include <QSqlRecord>
 #include <QComboBox>
+#include <QDebug>
 #include "dataobjecteditdialog.h"
 
 DataObjectEditDialog::DataObjectEditDialog(QWidget *parent, EmuFrontObject *ob, Qt::Orientation orientation)
@@ -40,8 +41,10 @@ void DataObjectEditDialog::setSelected(QComboBox *cbox, const EmuFrontObject *ob
 {
     if (!ob) return;
     QSqlQueryModel *model = dynamic_cast<QSqlQueryModel*>(cbox->model());
-    for (int i = 0; i < model->rowCount(); ++i)
+    for (int i = 0; i < model->rowCount(); i++)
     {
+        qDebug() << "i: " << i << ", rowcount: " << model->rowCount();
+        qDebug() << ", object id:" << ob->getId();
         QSqlRecord rec = model->record(i);
         if (rec.value(idIndex) == ob->getId())
         {
@@ -50,3 +53,10 @@ void DataObjectEditDialog::setSelected(QComboBox *cbox, const EmuFrontObject *ob
         }
     }
 }
+
+void DataObjectEditDialog::rejectChanges()
+{
+    efObject = 0;
+    emit updateRejected();
+    close();
+}
index b5400e4..e2bf3eb 100644 (file)
@@ -46,7 +46,7 @@ protected:
 
 protected slots:
     virtual void acceptChanges() =0;
-    virtual void rejectChanges() =0;
+    virtual void rejectChanges();
 
 private:
     Qt::Orientation orientation;
index 1dfc9da..1b48c1c 100644 (file)
@@ -72,7 +72,7 @@ void DbObjectDialog::insertDb(const EmuFrontObject *ob) const
 
 void DbObjectDialog::addObject()
 {
-    if (!nameDialog) return;
+    if (!nameDialog) initEditDialog();
     deleteCurrentObject();
     dbObject = createObject();
     nameDialog->setDataObject(dbObject);
@@ -84,6 +84,7 @@ void DbObjectDialog::editObject()
     QModelIndex index = objectList->currentIndex();
     if (!index.isValid())
         return;
+    if (!nameDialog) initEditDialog();
     deleteCurrentObject();
     dbObject = dbManager->getDataObjectFromModel(&index);
     nameDialog->setDataObject(dbObject);
index 8be0a96..d615d83 100644 (file)
@@ -50,6 +50,7 @@ private slots:
 protected:
     // implementation specific, deletes current data object from memory
     virtual void deleteCurrentObject();
+    virtual void initEditDialog() = 0;
     virtual EmuFrontObject* createObject() = 0;
     void initDataTable();
     virtual void connectSignals();
index b479e1a..dfc236c 100644 (file)
@@ -24,8 +24,6 @@
 #include "../db/dbmediatype.h"
 #include "../db/dbsetup.h"
 #include "mediaimagepathdialog.h"
-//#include "../dataobjects/platform.h"
-//#include "../dataobjects/mediatype.h"
 #include "../dataobjects/filepathobject.h"
 
 MediaImagePathDialog::MediaImagePathDialog(QWidget *parent, EmuFrontObject *efObject)
@@ -33,8 +31,6 @@ MediaImagePathDialog::MediaImagePathDialog(QWidget *parent, EmuFrontObject *efOb
 {
     qDebug() << "Creating MediaImagePathDialog";
     initWidgets();
-    //populateMediaTypeComBox();
-    //populatePlatformComBox();
     dbPlatform = 0;
     dbMediaType = 0;
     connectSignals();
@@ -72,9 +68,7 @@ void MediaImagePathDialog::initWidgets()
     // these widgets will be automatically parented using layout components
     filePathLabel = new QLabel;
     filePathButton = new QPushButton(tr("&Browse filepath"));
-    /*mediaTypeComBox = new QComboBox;
-    platformComBox = new QComboBox;*/
-    setupComBox = new QComboBox;
+     setupComBox = new QComboBox;
 }
 
 void MediaImagePathDialog::populateSetupComBox()
@@ -85,29 +79,9 @@ void MediaImagePathDialog::populateSetupComBox()
     setupComBox->setModelColumn(DbSetup::Setup_Name);
 }
 
-/*void MediaImagePathDialog::populateMediaTypeComBox()
-{
-    qDebug() << "MediaImagePathDialog populating media types combo box";
-    dbMediaType = new DbMediaType(this);
-    mediaTypeComBox->setModel(dbMediaType->getDataModel());
-    mediaTypeComBox->setModelColumn(DbMediaType::MediaType_Name);
-}
-
-void MediaImagePathDialog::populatePlatformComBox()
-{
-    qDebug() << "MediaImagePathDialog populating platform combo box";
-    dbPlatform = new DbPlatform(this);
-    platformComBox->setModel(dbPlatform->getDataModel());
-    platformComBox->setModelColumn(DbPlatform::Platform_Name);
-}*/
-
 void MediaImagePathDialog::layout()
 {
     qDebug() << "MediaImagePathDialog setting layout";
-   /*QLabel *platformLabel = new QLabel(tr("&Platform"));
-   platformLabel->setBuddy(platformComBox);
-   QLabel *mediaTypeLabel = new QLabel(tr("Media&Type"));
-   mediaTypeLabel->setBuddy(mediaTypeComBox);*/
    QLabel *setupLabel = new QLabel(tr("&Set up"));
    setupLabel->setBuddy(setupComBox);
 
@@ -136,8 +110,6 @@ void MediaImagePathDialog::setDataObject(EmuFrontObject *ob)
     QString fpath = fpo->getName();
     filePathLabel->setText(fpath);
     if (fpo->getSetup()) setSelectedSetup(fpo->getSetup());
-    /*if (fpo->getPlatform()) setSelectedPlatform(fpo->getPlatform());
-    if (fpo->getMediaType()) setSelectedMediaType(fpo->getMediaType());*/
 }
 
 void MediaImagePathDialog::setSelectedSetup(const Setup *sup)
@@ -145,17 +117,6 @@ void MediaImagePathDialog::setSelectedSetup(const Setup *sup)
     setSelected(setupComBox, sup, DbSetup::Setup_Id);
 }
 
-/*void MediaImagePathDialog::setSelectedPlatform(const Platform *plf)
-{
-    setSelected(platformComBox, plf, DbPlatform::Platform_Id);
-}
-
-void MediaImagePathDialog::setSelectedMediaType(const MediaType *plf)
-{
-    setSelected(mediaTypeComBox, plf, DbMediaType::MediaType_Id);
-}*/
-
-
 Setup* MediaImagePathDialog::getSelectedSetup()
 {
     if (!dbPlatform) dbPlatform = new DbPlatform(this);
@@ -189,49 +150,6 @@ Setup* MediaImagePathDialog::getSelectedSetup()
     else qDebug() << "Record missing";
     return sup;
 }
-/*Platform* MediaImagePathDialog::getSelectedPlatform() const
-{
-    qDebug() << "MediaImagePathDialog Selecting platform";
-    Platform *plf = 0;
-    int index = platformComBox->currentIndex();
-    qDebug() << "Current index " << index;
-    if (index < 0) return plf;
-    QSqlTableModel* platformModel = dynamic_cast<QSqlTableModel*>(platformComBox->model());
-    if (!platformModel)
-    {
-        qDebug() << "Data model missing";
-        return plf;
-    }
-    QSqlRecord rec = platformModel->record(index);
-    if (!rec.isEmpty())
-    {
-        qDebug() << "We have a record";
-        plf = new Platform(rec.value(DbPlatform::Platform_Id).toInt(),
-        rec.value(DbPlatform::Platform_Name).toString(),
-        rec.value(DbPlatform::Platform_Filename).toString());
-    }
-    else qDebug() << "Record missing";
-    return plf;
-}
-
-MediaType* MediaImagePathDialog::getSelectedMediaType() const
-{
-    MediaType *mt = 0;
-    int index = mediaTypeComBox->currentIndex();
-    if (index < 0) return mt;
-    QSqlTableModel* mediaTypeModel = dynamic_cast<QSqlTableModel*>(mediaTypeComBox->model());
-    if (!mediaTypeModel)
-    {
-        qDebug("Media type data model missing");
-        return mt;
-    }
-    QSqlRecord rec = mediaTypeModel->record(index);
-    if (!rec.isEmpty())
-        mt = new MediaType(rec.value(DbMediaType::MediaType_Id).toInt(),
-                           rec.value(DbMediaType::MediaType_Name).toString(),
-                           rec.value(DbMediaType::MediaType_Filename).toString());
-    return mt;
-}*/
 
 void MediaImagePathDialog::acceptChanges()
 {
@@ -244,20 +162,6 @@ void MediaImagePathDialog::acceptChanges()
         return;
     }
     qDebug() << "Setup selected " << sup->getName();
-    /*Platform *plf = getSelectedPlatform();
-    if (!plf)
-    {
-        QMessageBox::information(this, tr("Platform"), tr("Platform not selected"), QMessageBox::Ok);
-        return;
-    }
-    qDebug() << "Platform selected " << plf->getName();
-    MediaType *mt = getSelectedMediaType();
-    if (!mt)
-    {
-        QMessageBox::information(this, tr("Media type"), tr("Media type was not selected"), QMessageBox::Ok);
-        return;
-    }
-    qDebug() << "Media type selected " << mt->getName();*/
     QString filePath = filePathLabel->text();
     if (filePath.isEmpty())
     {
@@ -271,28 +175,8 @@ void MediaImagePathDialog::acceptChanges()
         delete tmp;
         fpo->setSetup(sup);
     }
-    /*Platform *ptmp = fpo->getPlatform();
-    if (plf != ptmp)
-    {
-        delete ptmp;
-        fpo->setPlatform(plf);
-    }
-    MediaType *mtmp = fpo->getMediaType();
-    if (mt != mtmp)
-    {
-        delete mtmp;
-        fpo->setMediaType(mt);
-    }*/
     fpo->setName(filePath);
     emit dataObjectUpdated();
     efObject = 0;
     close();
 }
-
-void MediaImagePathDialog::rejectChanges()
-{
-    // we don't delete the data object here
-    efObject = 0;
-    emit updateRejected();
-    close();
-}
index ec9e75a..cc0fa4c 100644 (file)
@@ -31,8 +31,6 @@ class DbSetup;
 class Setup;
 class DbMediaType;
 class DbPlatform;
-/* class MediaType;
-class Platform;*/
 
 class MediaImagePathDialog : public DataObjectEditDialog
 {
@@ -45,12 +43,9 @@ public:
 
 protected slots:
     virtual void acceptChanges();
-    virtual void rejectChanges();
     void browseFilePath();
 
 private:
-    //QComboBox *mediaTypeComBox;
-    //QComboBox *platformComBox;
     QComboBox *setupComBox;
     QLabel *filePathLabel;
     QPushButton *filePathButton;
@@ -62,15 +57,8 @@ private:
     void layout();
     void connectSignals();
     void populateSetupComBox();
-    //void populateMediaTypeComBox();
-    //void populatePlatformComBox();
     void setSelectedSetup(const Setup *);
-    //void setSelectedMediaType(const MediaType *);
-    //void setSelectedPlatform(const Platform *);
     Setup* getSelectedSetup();
-    //Platform* getSelectedPlatform() const;
-    //MediaType* getSelectedMediaType() const;
-
 };
 
 #endif // MEDIAIMAGEPATHDIALOG_H
index 707594e..680426d 100644 (file)
@@ -31,8 +31,6 @@ MediaImagePathMainDialog::MediaImagePathMainDialog(QWidget *parent)
 {
     qDebug() << "MediaImagePathMainDialog";
     setWindowTitle(tr("Set media image paths"));
-    qDebug() << "Creating MediaImagePathDialog";
-    nameDialog = new MediaImagePathDialog(this, dynamic_cast<FilePathObject*>(dbObject));
     qDebug() << "Creating DbFilePath";
     dbManager = new DbFilePath(this);
     qDebug() << "Initializing data table";
@@ -52,6 +50,12 @@ void MediaImagePathMainDialog::connectSignals()
     connect(scanButton, SIGNAL(clicked()), this, SLOT(beginScanFilePath()));
 }
 
+void MediaImagePathMainDialog::initEditDialog()
+{
+    qDebug() << "Creating MediaImagePathDialog";
+    nameDialog = new MediaImagePathDialog(this, dynamic_cast<FilePathObject*>(dbObject));
+}
+
 void MediaImagePathMainDialog::beginScanFilePath()
 {
     qDebug() << "Scan file path requested";
index a7f5d64..2d2f870 100644 (file)
@@ -31,6 +31,7 @@ public:
     ~MediaImagePathMainDialog();
 
 protected:
+    virtual void initEditDialog();
     virtual void deleteCurrentObject();
     virtual EmuFrontObject* createObject();
     virtual void connectSignals();
index caae733..e1bad78 100644 (file)
@@ -30,8 +30,6 @@ MediaTypeDialog::MediaTypeDialog(QWidget* parent)
     :DbObjectDialog(parent)
 {
     setWindowTitle(tr("Set media types"));
-    //nameDialog = 0;
-    nameDialog = new MediaTypeNameDialog(this, dynamic_cast<MediaType*>(dbObject));
     dbManager = new DbMediaType(this);
     initDataTable();
 
@@ -45,6 +43,11 @@ MediaTypeDialog::~MediaTypeDialog()
     deleteCurrentObject();
 }
 
+void MediaTypeDialog::initEditDialog()
+{
+    nameDialog = new MediaTypeNameDialog(this, dynamic_cast<MediaType*>(dbObject));
+}
+
 EmuFrontObject* MediaTypeDialog::createObject()
 {
     return new MediaType;
index 63d4824..c9cc467 100644 (file)
@@ -33,6 +33,7 @@ public:
 protected:
     virtual void deleteCurrentObject();
     virtual EmuFrontObject* createObject();
+    virtual void initEditDialog();
 };
 
 #endif // MEDIATYPEDIALOG_H
index c0c8bbf..215116a 100644 (file)
@@ -63,13 +63,6 @@ void NameDialog::layout()
        setLayout(mainLayout);
 }
 
-void NameDialog::rejectChanges()
-{
-    efObject = 0;
-    emit updateRejected();
-    close();
-}
-
 void NameDialog::acceptChanges()
 {
     if (nameEdit->text() == 0 || nameEdit->text().trimmed().isEmpty())
index 8167e7e..ff05459 100644 (file)
@@ -38,12 +38,11 @@ public:
 
 protected slots:
     virtual void acceptChanges();
-    virtual void rejectChanges();
     void enableSaveButton(const QString &);
 
 protected:
     virtual void setDataObject(QString name) =0;
-       QLabel *nameLabel;
+    QLabel *nameLabel;
        QLineEdit *nameEdit;
 
 private:
index edb64d6..0c69bb4 100644 (file)
@@ -27,7 +27,6 @@ PlatformDialog::PlatformDialog(QWidget *parent)
     : DbObjectDialog(parent)
 {
     setWindowTitle(tr("Set emulated platforms"));
-    nameDialog = new PlatformNameDialog(this, dynamic_cast<Platform*>(dbObject));
     dbManager = new DbPlatform(this);
     initDataTable();
     
@@ -41,6 +40,11 @@ PlatformDialog::~PlatformDialog()
     deleteCurrentObject();
 }
 
+void PlatformDialog::initEditDialog()
+{
+    nameDialog = new PlatformNameDialog(this, dynamic_cast<Platform*>(dbObject));
+}
+
 EmuFrontObject* PlatformDialog::createObject()
 {
     qDebug() << "PlatformDialog creating a Platform object.";
index 9f6e7f6..1ec7e2e 100644 (file)
@@ -33,6 +33,7 @@ public:
 protected:
     virtual void deleteCurrentObject();
     virtual EmuFrontObject* createObject();
+    virtual void initEditDialog();
 };
 
 #endif
index 562f9c7..90f0ac0 100644 (file)
 // along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
 
 #include <QtGui>
+#include <QSqlTableModel>
+#include <QSqlRecord>
 #include "setupeditdialog.h"
 #include "../widgets/stringlistwidget.h"
 #include "../db/dbmediatype.h"
 #include "../db/dbplatform.h"
 #include "../db/dbsetup.h"
 
-
 SetupEditDialog::SetupEditDialog(QWidget *parent, EmuFrontObject* obj)
     : DataObjectEditDialog(parent, obj)
 {
+    dbSetup = 0; //new DbSetup(this);
+    dbPlatform = 0; //new DbPlatform(this);
+    dbMediaType = 0; //new DbMediaType(this);
+    initWidgets();
+    qDebug() << "Connecting signals";
+    connectSignals();
+    layout();
+}
+
+void SetupEditDialog::initWidgets()
+{
     mediaTypeComBox = new QComboBox;
     platformComBox = new QComboBox;
-    dbSetup = new DbSetup(this);
-    dbPlatform = new DbPlatform(this);
-    dbMediaType = new DbMediaType(this);
     supportedFileTypesList = new StringListWidget;
+    populateMediaTypeComBox();
+    populatePlatformComBox();
 }
 
-void SetupEditDialog::acceptChanges()
+void SetupEditDialog::populateMediaTypeComBox()
+{
+    qDebug() << "populating media types combo box";
+    if (!dbMediaType) dbMediaType = new DbMediaType(this);
+    qDebug() << "media type database manager created";
+    QSqlQueryModel *model = dbMediaType->getDataModel();
+    if (!model) return;
+    qDebug() << "We have a media type data model";
+    mediaTypeComBox->setModel(model);
+    mediaTypeComBox->setModelColumn(DbMediaType::MediaType_Name);
+}
+
+void SetupEditDialog::populatePlatformComBox()
 {
+    qDebug() << "populating platform combo box";
+    if (!dbPlatform) dbPlatform = new DbPlatform(this);
+    QSqlQueryModel *model = dbPlatform->getDataModel();
+    if (!model) return;
+    platformComBox->setModel(model);
+    platformComBox->setModelColumn(DbPlatform::Platform_Name);
+    qDebug() << "platform combo box populated";
 }
 
-void SetupEditDialog::rejectChanges()
+void SetupEditDialog::layout()
 {
+    qDebug() << "SetupEditDialog::layout";
+   QLabel *platformLabel = new QLabel(tr("&Platform"));
+   platformLabel->setBuddy(platformComBox);
+   QLabel *mediaTypeLabel = new QLabel(tr("Media&Type"));
+   mediaTypeLabel->setBuddy(mediaTypeComBox);
+   QGridLayout *gridLayout = new QGridLayout;
+   gridLayout->addWidget(platformLabel, 0, 0);
+   gridLayout->addWidget(platformComBox, 0, 1);
+   gridLayout->addWidget(mediaTypeLabel, 1, 0);
+   gridLayout->addWidget(mediaTypeComBox, 1, 1);
+   QVBoxLayout *mainLayout = new QVBoxLayout;
+   mainLayout->addLayout(gridLayout);
+   mainLayout->addWidget(buttonBox);
+   setLayout(mainLayout);
+    qDebug() << "SetupEditDialog::layout done";
+
+   setWindowTitle(tr("Edit setup"));
+}
+
+void SetupEditDialog::acceptChanges()
+{
+    Setup *sup = dynamic_cast<Setup*>(efObject);
+    Platform *plf = getSelectedPlatform();
+    if (!plf)
+    {
+        QMessageBox::information(this, tr("Platform"), tr("Platform not selected"), QMessageBox::Ok);
+        return;
+    }
+    qDebug() << "Platform selected " << plf->getName();
+    MediaType *mt = getSelectedMediaType();
+    if (!mt)
+    {
+        QMessageBox::information(this, tr("Media type"), tr("Media type was not selected"), QMessageBox::Ok);
+        return;
+    }
+    qDebug() << "Media type selected " << mt->getName();
+
+
+    Platform *ptmp = sup->getPlatform();
+    if (plf != ptmp)
+    {
+        delete ptmp;
+        sup->setPlatform(plf);
+    }
+    MediaType *mtmp = sup->getMediaType();
+    if (mt != mtmp)
+    {
+        delete mtmp;
+        sup->setMediaType(mt);
+    }
+    sup->setSupportedFileTypeExtensions(supportedFileTypesList->getItems());
+    emit dataObjectUpdated();
+    efObject = 0;
+    close();
 }
 
 void SetupEditDialog::setDataObject(EmuFrontObject *ob)
 {
+    if (!ob) return;
+    efObject = ob;
+    Setup *sup= dynamic_cast<Setup*>(ob);
+    if (sup->getPlatform()) setSelectedPlatform(sup->getPlatform());
+    if (sup->getMediaType()) setSelectedMediaType(sup->getMediaType());
+    supportedFileTypesList->setItems(sup->getSupportedFileTypeExtensions());
+}
+
+void SetupEditDialog::setSelectedPlatform(const Platform *plf)
+{
+    setSelected(platformComBox, plf, DbPlatform::Platform_Id);
+}
+
+void SetupEditDialog::setSelectedMediaType(const MediaType *plf)
+{
+    setSelected(mediaTypeComBox, plf, DbMediaType::MediaType_Id);
+}
+
+Platform* SetupEditDialog::getSelectedPlatform() const
+{
+    qDebug() << "MediaImagePathDialog Selecting platform";
+    Platform *plf = 0;
+    int index = platformComBox->currentIndex();
+    qDebug() << "Current index " << index;
+    if (index < 0) return plf;
+    QSqlTableModel* platformModel = dynamic_cast<QSqlTableModel*>(platformComBox->model());
+    if (!platformModel)
+    {
+        qDebug() << "Data model missing";
+        return plf;
+    }
+    QSqlRecord rec = platformModel->record(index);
+    if (!rec.isEmpty())
+    {
+        qDebug() << "We have a record";
+        plf = new Platform(rec.value(DbPlatform::Platform_Id).toInt(),
+        rec.value(DbPlatform::Platform_Name).toString(),
+        rec.value(DbPlatform::Platform_Filename).toString());
+    }
+    else qDebug() << "Record missing";
+    return plf;
+}
+
+MediaType* SetupEditDialog::getSelectedMediaType() const
+{
+    MediaType *mt = 0;
+    int index = mediaTypeComBox->currentIndex();
+    if (index < 0) return mt;
+    QSqlTableModel* mediaTypeModel = dynamic_cast<QSqlTableModel*>(mediaTypeComBox->model());
+    if (!mediaTypeModel)
+    {
+        qDebug("Media type data model missing");
+        return mt;
+    }
+    QSqlRecord rec = mediaTypeModel->record(index);
+    if (!rec.isEmpty())
+        mt = new MediaType(rec.value(DbMediaType::MediaType_Id).toInt(),
+                           rec.value(DbMediaType::MediaType_Name).toString(),
+                           rec.value(DbMediaType::MediaType_Filename).toString());
+    return mt;
 }
index ce5c7ac..f7594a2 100644 (file)
@@ -27,6 +27,8 @@ class DbSetup;
 class DbMediaType;
 class DbPlatform;
 class StringListWidget;
+class MediaType;
+class Platform;
 
 class SetupEditDialog : public DataObjectEditDialog
 {
@@ -39,7 +41,6 @@ public:
 
 protected slots:
     virtual void acceptChanges();
-    virtual void rejectChanges();
 
 private:
     QComboBox *mediaTypeComBox;
@@ -48,6 +49,15 @@ private:
     DbPlatform *dbPlatform;
     DbMediaType *dbMediaType;
     StringListWidget *supportedFileTypesList;
+
+    void initWidgets();
+    void layout();
+    void populateMediaTypeComBox();
+    void populatePlatformComBox();
+    void setSelectedMediaType(const MediaType*);
+    void setSelectedPlatform(const Platform*);
+    MediaType* getSelectedMediaType() const;
+    Platform* getSelectedPlatform() const;
 };
 
 #endif // SETUPEDITDIALOG_H
index 3bc0b76..110237c 100644 (file)
 
 #include <QtGui>
 #include "setupmaindialog.h"
+#include "setupeditdialog.h"
 #include "../db/dbsetup.h"
 
 SetupMainDialog::SetupMainDialog(QWidget *parent)
     : DbObjectDialog(parent)
 {
+    qDebug() << "Creating setup main dialog.";
     setWindowTitle(tr("Setups"));
-    //nameDialog = new SetupEditor(this, dynamic_cast<Setup*>(dbObject));
+    qDebug() << "Creating setup db manager";
     dbManager = new DbSetup(this);
+    qDebug() << "Initializing data table";
     initDataTable();
+    qDebug() << "Connecting signals";
     connectSignals();
 }
 
@@ -36,6 +40,12 @@ SetupMainDialog::~SetupMainDialog()
     deleteCurrentObject();
 }
 
+void SetupMainDialog::initEditDialog()
+{
+    qDebug() << "Creating setup edit dialog.";
+    nameDialog = new SetupEditDialog(this, dynamic_cast<Setup*>(dbObject));
+}
+
 void SetupMainDialog::deleteCurrentObject()
 {
    delete dynamic_cast<Setup*>(dbObject);
index 733cef5..27d2698 100644 (file)
@@ -33,8 +33,7 @@ public:
 protected:
     virtual void deleteCurrentObject();
     virtual EmuFrontObject* createObject();
-    //virtual void connectSignals();
-
+    virtual void initEditDialog();
 };
 
 #endif // SETUPMAINDIALOG_H
index 8dd333f..a0b26fd 100644 (file)
@@ -35,6 +35,7 @@ MainWindow::MainWindow()
     platformDialog = 0;
     mediaTypeDialog = 0;
     mediaImagePathDialog = 0;
+    setupMainDialog = 0;
 }
 
 void MainWindow::createActions()
@@ -94,6 +95,7 @@ void MainWindow::configureSetups()
 {
     if (!setupMainDialog)
     {
+        qDebug() << "MainWindow: Creating a setup main dialog.";
         setupMainDialog = new SetupMainDialog(this);
     }
     activateDialog(setupMainDialog);