(and descendant classes).
buttonBox->addButton(deleteButton, QDialogButtonBox::ActionRole);
// nameDialog will be created on request
- connectSignals();
+ //connectSignals();
layout();
}
connect(addButton, SIGNAL(clicked()), this, SLOT(addButtonClicked()));
//connect(deleteButton, SIGNAL(clicked()), this, SLOT(deleteButtonClicked()));
//connect(nameDialog, SIGNAL(accepted()), this, SLOT(updateList()));
+ connect(nameDialog, SIGNAL(dataObjectUpdated()), this, SLOT(updateData()));
}
void DbObjectDialog::updateList() const
{
setButtonsEnabled(false);
}
+
+void DbObjectDialog::updateData()
+{
+ updateList();
+}
//void enableEditButton();
//void enableDeleteButton();
void listObjectClicked(const QModelIndex &);
+ virtual void updateData();
void updateList() const;
protected:
DatabaseManager *dbManager;
QTableView *objectList;
EmuFrontObject *dbObject;
+ void connectSignals();
private:
QDialogButtonBox *buttonBox;
QPushButton *deleteButton;
void setButtonsEnabled(bool);
- void connectSignals();
void layout();
void disableSelection();
};
//saveButton->setEnabled(!text.isEmpty());
}
-
+void NameDialog::setDataObject(EmuFrontObject *ob)
+{
+ // delete efObject; -> we should not delete the previously referenced data object here, it may be still used in the parent widget
+ // the parent widget will take of destruction
+ // we'll just refresh the name dialog pointer to a new object
+ efObject = ob;
+}
public:
NameDialog(QWidget *parent = 0, EmuFrontObject * = 0);
~NameDialog();
+ void setDataObject(EmuFrontObject *);
signals:
void dataObjectUpdated();
: DbObjectDialog(parent)
{
setWindowTitle(tr("Set emulated platforms"));
- nameDialog = 0;
+ //nameDialog = 0;
+ nameDialog = new PlatformNameDialog(this, dynamic_cast<Platform*>(dbObject));
QSqlTableModel *model = dbManager->getPlatforms();
objectList->setModel(model);
objectList->setSelectionMode(QAbstractItemView::SingleSelection);
objectList->setColumnHidden(DatabaseManager::Platform_Id, true);
objectList->resizeColumnsToContents();
+ connectSignals();
}
int PlatformDialog::deleteObject()
void PlatformDialog::addObject()
{
cout << "PlaformDialog::addObject" << endl;
- if (!nameDialog)
+ /*if (!nameDialog)
{
if (!dbObject) dbObject = new Platform;
cout << "PlaformDialog::addObject: creating nameDialog..." << endl;
nameDialog = new PlatformNameDialog(this, dynamic_cast<Platform*>(dbObject));
- }
+ }*/
+ if (!dbObject) dbObject = new Platform;
+ nameDialog->setDataObject(dbObject);
nameDialog->show();
nameDialog->raise();
nameDialog->activateWindow();
void PlatformDialog::editObject()
{
}
+
+void PlatformDialog::updateData()
+{
+ // update data model
+ if (!dbObject) return;
+ QMessageBox::information(this, "Test", "We have a " + dbObject->getName());
+
+ // refresh...
+ DbObjectDialog::updateData();
+}
virtual int deleteObject();
virtual void addObject();
virtual void editObject();
+
+ private slots:
+ virtual void updateData();
//PlatformNameDialog *nameDialog;
};