edit dialog.
void DbObjectDialog::addObject()
{
+ setUIEnabled(false);
if (!nameDialog) initEditDialog();
deleteCurrentObject();
dbObject = createObject();
}
updateList();
objectList->setFocus();
+ setUIEnabled(true);
}
catch(EmuFrontException e)
{
deleteButton->setEnabled(enabled);
}
+void DbObjectDialog::setUIEnabled(bool enabled)
+{
+ buttonBox->setEnabled(enabled);
+ objectList->setEnabled(enabled);
+}
+
void DbObjectDialog::disableSelection()
{
- setButtonsEnabled(false);
+ setUIEnabled(false);
+ //setButtonsEnabled(false);
}
void DbObjectDialog::activateNameDialog(bool updateData)
void DbObjectDialog::updateReject()
{
+ addButton->setEnabled(true);
+ setUIEnabled(true);
// we don't want to keep this in memory
deleteCurrentObject();
}
deleteCurrentObject();
dbObject = 0;
updateList();
+ setUIEnabled(true);
}
+/* Implementation specific delete must be used!
void DbObjectDialog::deleteCurrentObject()
{
delete dbObject;
-}
+}*/
bool DbObjectDialog::confirmDelete(QString name, int numRefs)
{
protected:
// implementation specific, deletes current data object from memory
- virtual void deleteCurrentObject();
+ virtual void deleteCurrentObject() = 0;
virtual void initEditDialog() = 0;
virtual EmuFrontObject* createObject() = 0;
void initDataTable();
void editObject();
void activateNameDialog(bool updateData = true);
bool confirmDelete(QString name, int numRefs);
- void setButtonsEnabled(bool);
+ void setButtonsEnabled(bool);
+ void setUIEnabled(bool);
void layout();
void disableSelection();
QPushButton *editButton;
if (!ob) return;
qDebug() << "Updating Setup edit dialog data object to "
<< ob->getName() << ".";
- if (efObject) delete efObject;
+ if (efObject)
+ 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->getPlatform()) setSelectedPlatform(sup->getPlatform());
void SetupMainDialog::initEditDialog()
{
- if (nameDialog) delete nameDialog;
+ if (nameDialog) delete dynamic_cast<SetupEditDialog*>(nameDialog);
nameDialog = new SetupEditDialog(this, dynamic_cast<Setup*>(dbObject));
}