We have a working relationship between DbObjectDialog and NameDialog
authorMikko Keinänen <mikko.keinanen@gmail.com>
Wed, 19 May 2010 20:57:10 +0000 (23:57 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Wed, 19 May 2010 20:57:10 +0000 (23:57 +0300)
(and descendant classes).

src/dialogs/dbobjectdialog.cpp
src/dialogs/dbobjectdialog.h
src/dialogs/namedialog.cpp
src/dialogs/namedialog.h
src/dialogs/platformdialog.cpp
src/dialogs/platformdialog.h

index 496e83e..8654a63 100644 (file)
@@ -19,7 +19,7 @@ DbObjectDialog::DbObjectDialog(QWidget *parent)
     buttonBox->addButton(deleteButton, QDialogButtonBox::ActionRole);
     // nameDialog will be created on request
     
-    connectSignals();
+    //connectSignals();
     layout();
 } 
 
@@ -37,6 +37,7 @@ void DbObjectDialog::connectSignals()
     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
@@ -86,3 +87,8 @@ void DbObjectDialog::disableSelection()
 {
     setButtonsEnabled(false);
 }
+
+void DbObjectDialog::updateData()
+{
+    updateList();
+}
index d70143c..cf45166 100644 (file)
@@ -26,6 +26,7 @@ class DbObjectDialog : public EmuFrontDialog
        //void enableEditButton();
        //void enableDeleteButton();
        void listObjectClicked(const QModelIndex &);
+    virtual void updateData();
     void updateList() const;
 
     protected:
@@ -36,6 +37,7 @@ class DbObjectDialog : public EmuFrontDialog
     DatabaseManager *dbManager;
     QTableView *objectList;
     EmuFrontObject *dbObject;
+    void connectSignals();
 
     private:
        QDialogButtonBox *buttonBox;
@@ -44,7 +46,6 @@ class DbObjectDialog : public EmuFrontDialog
        QPushButton *deleteButton;
 
        void setButtonsEnabled(bool);
-       void connectSignals();
        void layout();
        void disableSelection();
 };
index 27921bd..2dd0c35 100644 (file)
@@ -64,4 +64,10 @@ void NameDialog::enableSaveButton(const QString &text)
     //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;
+}
index 115a882..be76708 100644 (file)
@@ -17,6 +17,7 @@ class NameDialog : public EmuFrontDialog
 public:
     NameDialog(QWidget *parent = 0, EmuFrontObject * = 0);
     ~NameDialog();
+    void setDataObject(EmuFrontObject *);
 
 signals:
     void dataObjectUpdated();
index 930f466..1265df1 100644 (file)
@@ -14,13 +14,15 @@ PlatformDialog::PlatformDialog(QWidget *parent)
     : 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()
@@ -31,12 +33,14 @@ 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();
@@ -45,3 +49,13 @@ void PlatformDialog::addObject()
 void PlatformDialog::editObject()
 {
 }
+
+void PlatformDialog::updateData()
+{
+    // update data model
+    if (!dbObject) return;
+    QMessageBox::information(this, "Test", "We have a " + dbObject->getName());
+
+    // refresh...
+    DbObjectDialog::updateData();
+}
index e827b99..9b2b074 100644 (file)
@@ -14,6 +14,9 @@ class PlatformDialog : public DbObjectDialog
        virtual int deleteObject();
        virtual void addObject();
        virtual void editObject();
+
+    private slots:
+    virtual void updateData();
        
         //PlatformNameDialog *nameDialog;
 };