DbObjectDialog::~DbObjectDialog()
{
- // no need to explicitically delete widgets within a parented layout
+ // no need to explicitly delete widgets within a parented layout
// they are automatically parented and will be deleted
- // dbManager is also parented and will be implicitically deleted
+ // dbManager is also parented and will be implicitly deleted
// this must be deleted in an implementing class
//delete dbObject;
+ // hiddenColumn QList will be deleted implicitly, since it
+ // implements implicit data sharing
}
void DbObjectDialog::connectSignals()
{
- qDebug() << "DbObjectDialog connecting signals";
connect(buttonBox, SIGNAL(accepted()), this, SLOT(close()));
connect(objectList, SIGNAL(clicked(const QModelIndex &)),
this, SLOT(listObjectClicked(const QModelIndex &)));
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);
- nameDialog->setDataObject(dbObject);
+ try {
+ dbObject = dbManager->getDataObjectFromModel(&index); // throws EmuFrontException
+ } catch (EmuFrontException &e) {
+ errorMessage->showMessage(e.what());
+ return;
+ }
activateNameDialog();
+ nameDialog->setDataObject(dbObject);
}
bool DbObjectDialog::deleteItem()
{
+ qDebug() << "deleteItem called";
QModelIndex index = objectList->currentIndex();
if (!index.isValid()) return false;
try
{
- EmuFrontObject *ob = dbManager->getDataObjectFromModel(&index);
+ EmuFrontObject *ob = dbManager->getDataObjectFromModel(&index); // throws EmuFrontException
+
+ qDebug() << "Trying to delete " << ob->getName();
if (!ob)
{
{ return false; }
deleteCurrentObject();
- bool delOk = dbManager->deleteDataObjectFromModel(&index);
+ bool delOk = dbManager->deleteDataObject(ob->getId());
if (!delOk)
{
errorMessage->showMessage(tr("Deleting data object %1 failed!").arg(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()
+void DbObjectDialog::activateNameDialog(bool updateData)
{
if (!nameDialog) return;
nameDialog->show();
nameDialog->raise();
- nameDialog->updateData();
+ if (updateData)
+ nameDialog->updateData();
nameDialog->activateWindow();
}
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)
{
{
dbManager->resetModel();
}
+
+void DbObjectDialog::hideColumns()
+{
+ 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();
+}