because of the previous refactorings.
#include "platform.h"
#include "mediatype.h"
-Setup::Setup() : EmuFrontObject()
+Setup::Setup() : EmuFrontObject(), platform(0), mediaType(0)
{
}
: 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()
QSqlQueryModel* DatabaseManager::getDataModel()
{
+ if (!sqlTableModel) sqlTableModel = getData();
return sqlTableModel;
}
DbFilePath::DbFilePath(QObject *parent) : DbQueryModelManager(parent)
{
dbSetup = new DbSetup(this);
- sqlTableModel = getData();
+ sqlTableModel = 0; //getData();
}
EmuFrontObject* DbFilePath::recordToDataObject(const QSqlRecord *rec) const
DbMediaType::DbMediaType(QObject *parent) : DbTableModelManager(parent)
{
- sqlTableModel = getData();
+ qDebug() << "Creating Media type database manager";
+ sqlTableModel = 0; //getData();
}
EmuFrontObject* DbMediaType::recordToDataObject(const QSqlRecord *record) const
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;
}
DbPlatform::DbPlatform(QObject *parent) : DbTableModelManager(parent)
{
- sqlTableModel = getData();
+ sqlTableModel = 0; //getData();
}
EmuFrontObject* DbPlatform::recordToDataObject(const QSqlRecord *record) const
{
dbPlatform = new DbPlatform(this);
dbMediaType = new DbMediaType(this);
- sqlTableModel = getData();
+ sqlTableModel = 0; //getData();
}
EmuFrontObject* DbSetup::recordToDataObject(const QSqlRecord *rec) const
#include <QSqlQueryModel>
#include <QSqlRecord>
#include <QComboBox>
+#include <QDebug>
#include "dataobjecteditdialog.h"
DataObjectEditDialog::DataObjectEditDialog(QWidget *parent, EmuFrontObject *ob, Qt::Orientation orientation)
{
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())
{
}
}
}
+
+void DataObjectEditDialog::rejectChanges()
+{
+ efObject = 0;
+ emit updateRejected();
+ close();
+}
protected slots:
virtual void acceptChanges() =0;
- virtual void rejectChanges() =0;
+ virtual void rejectChanges();
private:
Qt::Orientation orientation;
void DbObjectDialog::addObject()
{
- if (!nameDialog) return;
+ if (!nameDialog) initEditDialog();
deleteCurrentObject();
dbObject = createObject();
nameDialog->setDataObject(dbObject);
QModelIndex index = objectList->currentIndex();
if (!index.isValid())
return;
+ if (!nameDialog) initEditDialog();
deleteCurrentObject();
dbObject = dbManager->getDataObjectFromModel(&index);
nameDialog->setDataObject(dbObject);
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();
#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)
{
qDebug() << "Creating MediaImagePathDialog";
initWidgets();
- //populateMediaTypeComBox();
- //populatePlatformComBox();
dbPlatform = 0;
dbMediaType = 0;
connectSignals();
// 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()
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);
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)
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);
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()
{
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())
{
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();
-}
class Setup;
class DbMediaType;
class DbPlatform;
-/* class MediaType;
-class Platform;*/
class MediaImagePathDialog : public DataObjectEditDialog
{
protected slots:
virtual void acceptChanges();
- virtual void rejectChanges();
void browseFilePath();
private:
- //QComboBox *mediaTypeComBox;
- //QComboBox *platformComBox;
QComboBox *setupComBox;
QLabel *filePathLabel;
QPushButton *filePathButton;
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
{
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";
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";
~MediaImagePathMainDialog();
protected:
+ virtual void initEditDialog();
virtual void deleteCurrentObject();
virtual EmuFrontObject* createObject();
virtual void connectSignals();
:DbObjectDialog(parent)
{
setWindowTitle(tr("Set media types"));
- //nameDialog = 0;
- nameDialog = new MediaTypeNameDialog(this, dynamic_cast<MediaType*>(dbObject));
dbManager = new DbMediaType(this);
initDataTable();
deleteCurrentObject();
}
+void MediaTypeDialog::initEditDialog()
+{
+ nameDialog = new MediaTypeNameDialog(this, dynamic_cast<MediaType*>(dbObject));
+}
+
EmuFrontObject* MediaTypeDialog::createObject()
{
return new MediaType;
protected:
virtual void deleteCurrentObject();
virtual EmuFrontObject* createObject();
+ virtual void initEditDialog();
};
#endif // MEDIATYPEDIALOG_H
setLayout(mainLayout);
}
-void NameDialog::rejectChanges()
-{
- efObject = 0;
- emit updateRejected();
- close();
-}
-
void NameDialog::acceptChanges()
{
if (nameEdit->text() == 0 || nameEdit->text().trimmed().isEmpty())
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:
: DbObjectDialog(parent)
{
setWindowTitle(tr("Set emulated platforms"));
- nameDialog = new PlatformNameDialog(this, dynamic_cast<Platform*>(dbObject));
dbManager = new DbPlatform(this);
initDataTable();
deleteCurrentObject();
}
+void PlatformDialog::initEditDialog()
+{
+ nameDialog = new PlatformNameDialog(this, dynamic_cast<Platform*>(dbObject));
+}
+
EmuFrontObject* PlatformDialog::createObject()
{
qDebug() << "PlatformDialog creating a Platform object.";
protected:
virtual void deleteCurrentObject();
virtual EmuFrontObject* createObject();
+ virtual void initEditDialog();
};
#endif
// 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;
}
class DbMediaType;
class DbPlatform;
class StringListWidget;
+class MediaType;
+class Platform;
class SetupEditDialog : public DataObjectEditDialog
{
protected slots:
virtual void acceptChanges();
- virtual void rejectChanges();
private:
QComboBox *mediaTypeComBox;
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
#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();
}
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);
protected:
virtual void deleteCurrentObject();
virtual EmuFrontObject* createObject();
- //virtual void connectSignals();
-
+ virtual void initEditDialog();
};
#endif // SETUPMAINDIALOG_H
platformDialog = 0;
mediaTypeDialog = 0;
mediaImagePathDialog = 0;
+ setupMainDialog = 0;
}
void MainWindow::createActions()
{
if (!setupMainDialog)
{
+ qDebug() << "MainWindow: Creating a setup main dialog.";
setupMainDialog = new SetupMainDialog(this);
}
activateDialog(setupMainDialog);