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()));
+ connect(nameDialog, SIGNAL(dialogClosed()), this, SLOT(enableUi()));
}
void DbObjectDialog::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()
{
- if (!nameDialog) initEditDialog();
+ setUIEnabled(false);
+ 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);
+ try {
+ dbObject = dbManager->getDataObjectFromModel(&index); // throws EmuFrontException
+ } catch (EmuFrontException &e) {
+ errorMessage->showMessage(e.what());
+ return;
+ }
activateNameDialog();
nameDialog->setDataObject(dbObject);
}
if (!index.isValid()) return false;
try
{
- EmuFrontObject *ob = dbManager->getDataObjectFromModel(&index);
+ EmuFrontObject *ob = dbManager->getDataObjectFromModel(&index); // throws EmuFrontException
qDebug() << "Trying to delete " << ob->getName();
}
updateList();
objectList->setFocus();
+ setUIEnabled(true);
}
catch(EmuFrontException e)
{
{
if (!dbManager) return;
dbManager->resetModel();
+ objectList->resizeColumnsToContents();
}
void DbObjectDialog::addButtonClicked()
return;
}
+void DbObjectDialog::enableUi()
+{
+ setUIEnabled(true);
+}
+
void DbObjectDialog::setButtonsEnabled(bool enabled)
{
+ addButton->setEnabled(enabled);
editButton->setEnabled(enabled);
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();
}
void DbObjectDialog::updateData()
{
- qDebug() << "DbObjectDialog::updateData()";
// update data model
if (!dbObject) return;
-
// if data object id > -1 we are updating the data otherwise we are inserting new data
if (dbObject->getId() > -1) updateDb(dbObject);
else insertDb(dbObject);
deleteCurrentObject();
dbObject = 0;
updateList();
+ setUIEnabled(true);
}
+/* Implementation specific delete must be used!
void DbObjectDialog::deleteCurrentObject()
{
delete dbObject;
-}
+}*/
bool DbObjectDialog::confirmDelete(QString name, int numRefs)
{
foreach(int c, hiddenColumns)
objectList->hideColumn(c);
}
+
+/* Enables UI. Deletes nameDialog object and current data object */
+void DbObjectDialog::closeEvent(QCloseEvent *ev)
+{
+ qDebug() << "DbObjectDialog closing!";
+ setUIEnabled(true);
+ cleanUp();
+}