void DataObjectEditDialog::closeEvent(QCloseEvent *ev)
{
+ qDebug() << "Emitting dialog closed";
emit dialogClosed();
ev->accept();
}
DataObjectEditDialog(QWidget *parent, EmuFrontObject *ob, Qt::Orientation orientation = Qt::Horizontal);
virtual void setDataObject(EmuFrontObject *) = 0;
virtual void updateData();
- virtual void closeEvent(QCloseEvent *);
protected:
virtual void connectSignals();
EmuFrontObject *efObject;
QDialogButtonBox *buttonBox;
void setSelected(QComboBox*, const EmuFrontObject*, int idIndex);
+ virtual void closeEvent(QCloseEvent *);
signals:
void updateRejected();
connect(editButton, SIGNAL(clicked()), this, SLOT(editButtonClicked()));
connect(addButton, SIGNAL(clicked()), this, SLOT(addButtonClicked()));
connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteButtonClicked()));
+}
+
+void DbObjectDialog::connectNameDialogSignals()
+{
connect(nameDialog, SIGNAL(dataObjectUpdated()), this, SLOT(updateData()));
connect(nameDialog, SIGNAL(updateRejected()), this, SLOT(updateReject()));
connect(nameDialog, SIGNAL(test()), this, SLOT(testSlot()));
errorMessage->showMessage(tr("Inserting data object %1 failed.").arg(ob->getName()));
}
+void DbObjectDialog::createEditDialog()
+{
+ initEditDialog();
+ // call this from implementing classes:
+ //connectNameDialogSignals();
+}
+
void DbObjectDialog::addObject()
{
setUIEnabled(false);
- if (!nameDialog) initEditDialog();
+ if (!nameDialog) {
+ createEditDialog();
+ }
deleteCurrentObject();
dbObject = createObject();
nameDialog->setDataObject(dbObject);
QModelIndex index = objectList->currentIndex();
if (!index.isValid())
return;
- if (!nameDialog) initEditDialog();
+ if (!nameDialog) {
+ createEditDialog();
+ }
deleteCurrentObject();
dbObject = dbManager->getDataObjectFromModel(&index);
activateNameDialog();
foreach(int c, hiddenColumns)
objectList->hideColumn(c);
}
+
+void DbObjectDialog::closeEvent(QCloseEvent *ev)
+{
+ qDebug() << "DbObjectDialog closing!";
+ setUIEnabled(true);
+ cleanUp();
+}
+
protected:
// implementation specific, deletes current data object from memory
virtual void deleteCurrentObject() = 0;
+ virtual void cleanUp() = 0;
virtual void initEditDialog() = 0;
virtual EmuFrontObject* createObject() = 0;
+ virtual void closeEvent(QCloseEvent *);
void initDataTable();
virtual void connectSignals();
+ virtual void connectNameDialogSignals();
DataObjectEditDialog *nameDialog;
EmuFrontObject *dbObject;
DatabaseManager *dbManager;
void setUIEnabled(bool);
void layout();
void disableSelection();
+ void createEditDialog();
QPushButton *editButton;
QPushButton *addButton;
QPushButton *deleteButton;
{
nameDialog = new ExecutableEditDialog(
this, dynamic_cast<Executable*>(dbObject));
+ connectNameDialogSignals();
}
void ExecutableMainDialog::deleteCurrentObject()
{
- delete dynamic_cast<Executable*>(dbObject);
- dbObject = 0;
+ if (dbObject) {
+ Executable *exe = dynamic_cast<Executable*>(dbObject);
+ if (exe) delete exe;
+ else qDebug() << "Failed deleting Executable";
+ dbObject = 0;
+ }
+}
+
+void ExecutableMainDialog::cleanUp()
+{
+ deleteCurrentObject();
+ if (nameDialog) {
+ ExecutableEditDialog *pnd =
+ dynamic_cast<ExecutableEditDialog *>(nameDialog);
+ if (pnd) delete pnd;
+ else qDebug() << "Failed to delete PlatformNameDialog";
+ nameDialog = 0;
+ }
}
EmuFrontObject* ExecutableMainDialog::createObject()
protected:
virtual void deleteCurrentObject();
+ virtual void cleanUp();
virtual EmuFrontObject* createObject();
virtual void initEditDialog();
void MediaImagePathMainDialog::initEditDialog()
{
nameDialog = new MediaImagePathDialog(this, dynamic_cast<FilePathObject*>(dbObject));
+ connectNameDialogSignals();
}
void MediaImagePathMainDialog::beginScanFilePath()
void MediaImagePathMainDialog::deleteCurrentObject()
{
- delete dynamic_cast<FilePathObject*>(dbObject);
- dbObject = 0;
+ if (dbObject) {
+ FilePathObject* fpo = dynamic_cast<FilePathObject*>(dbObject);
+ if (fpo) delete fpo;
+ else qDebug() << "Failed deleteing FilePathObject";
+ dbObject = 0;
+ }
+}
+
+void MediaImagePathMainDialog::cleanUp()
+{
+ deleteCurrentObject();
+ if (nameDialog) {
+ MediaImagePathDialog *pnd =
+ dynamic_cast<MediaImagePathDialog*>(nameDialog);
+ if (pnd) delete pnd;
+ else qDebug() << "Failed to delete MediaImagePathDialog";
+ nameDialog = 0;
+ }
}
virtual void deleteCurrentObject();
virtual EmuFrontObject* createObject();
virtual void connectSignals();
+ virtual void cleanUp();
private slots:
void beginScanFilePath();
void MediaTypeDialog::initEditDialog()
{
nameDialog = new MediaTypeNameDialog(this, dynamic_cast<MediaType*>(dbObject));
+ connectNameDialogSignals();
}
EmuFrontObject* MediaTypeDialog::createObject()
delete dynamic_cast<MediaType*>(dbObject);
dbObject = 0;
}
+
+void MediaTypeDialog::cleanUp()
+{
+ deleteCurrentObject();
+ if (nameDialog) {
+ MediaTypeNameDialog *pnd =
+ dynamic_cast<MediaTypeNameDialog*>(nameDialog);
+ if (pnd) delete pnd;
+ else qDebug() << "Failed to delete MediaTypeNameDialog";
+ nameDialog = 0;
+ }
+}
protected:
virtual void deleteCurrentObject();
+ virtual void cleanUp();
virtual EmuFrontObject* createObject();
virtual void initEditDialog();
};
void PlatformDialog::initEditDialog()
{
nameDialog = new PlatformNameDialog(this, dynamic_cast<Platform*>(dbObject));
+ connectNameDialogSignals();
}
EmuFrontObject* PlatformDialog::createObject()
void PlatformDialog::deleteCurrentObject()
{
- qDebug() << "PlatformDialog deleting a Platform object.";
- delete dynamic_cast<Platform*>(dbObject);
- dbObject = 0;
+ if (dbObject) {
+ qDebug() << "PlatformDialog deleting a Platform object.";
+ Platform *plf = dynamic_cast<Platform*>(dbObject);
+ if (plf) delete plf;
+ else qDebug() << "Failed deleting Platform";
+ dbObject = 0;
+ }
+}
+
+void PlatformDialog::cleanUp()
+{
+ deleteCurrentObject();
+ if (nameDialog) {
+ PlatformNameDialog *pnd =
+ dynamic_cast<PlatformNameDialog*>(nameDialog);
+ if (pnd) delete pnd;
+ else qDebug() << "Failed to delete PlatformNameDialog";
+ nameDialog = 0;
+ }
}
protected:
virtual void deleteCurrentObject();
+ virtual void cleanUp();
virtual EmuFrontObject* createObject();
virtual void initEditDialog();
};
sup->setSupportedFileTypeExtensions(supportedFileTypesList->getItems());
change = true;
}
+ // TODO: the second time around this signal is not received!
if (change) emit dataObjectUpdated();
efObject = 0;
close();
delete dynamic_cast<Setup*>(efObject); // TODO: caused crash if another instance of setupeditdialog was created and new instance destroyed object being referenced in another existing dialog.
efObject = ob;
Setup *sup= dynamic_cast<Setup*>(ob);
+ if (!sup) {
+ qDebug() << "Failed casting to Setup";
+ return;
+ }
if (sup->getPlatform()) setSelectedPlatform(sup->getPlatform());
if (sup->getMediaType()) setSelectedMediaType(sup->getMediaType());
supportedFileTypesList->setItems(sup->getSupportedFileTypeExtensions());
void SetupMainDialog::initEditDialog()
{
- if (nameDialog) delete dynamic_cast<SetupEditDialog*>(nameDialog);
+ if (nameDialog) {
+ SetupEditDialog *sed =
+ dynamic_cast<SetupEditDialog*>(nameDialog);
+ if (sed) delete sed;
+ else qDebug() << "Failed to delete SetupEditDialog!";
+ }
nameDialog = new SetupEditDialog(this, dynamic_cast<Setup*>(dbObject));
+ connectNameDialogSignals();
}
void SetupMainDialog::deleteCurrentObject()
{
- delete dynamic_cast<Setup*>(dbObject);
- dbObject = 0;
+ if (dbObject) {
+ Setup *sup = dynamic_cast<Setup*>(dbObject);
+ if (sup)
+ delete sup;
+ else
+ qDebug() << "Failed to delete Setup data objec data object.";
+ dbObject = 0;
+ }
}
EmuFrontObject* SetupMainDialog::createObject()
{
return new Setup;
}
+
+void SetupMainDialog::cleanUp()
+{
+ deleteCurrentObject();
+ if (nameDialog) {
+ SetupEditDialog *sed =
+ dynamic_cast<SetupEditDialog*>(nameDialog);
+ if (sed) delete sed;
+ else qDebug() << "Failed to delete SetupEditDialog!";
+ nameDialog = 0;
+ }
+}
protected:
virtual void deleteCurrentObject();
+ virtual void cleanUp();
virtual EmuFrontObject* createObject();
virtual void initEditDialog();
};