Combo boxes were not properly updated when editing an object [fixed].
authorMikko Keinänen <mikko.keinanen@gmail.com>
Mon, 25 Oct 2010 22:58:47 +0000 (01:58 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Mon, 25 Oct 2010 22:58:47 +0000 (01:58 +0300)
src/dialogs/dbobjectdialog.cpp
src/dialogs/dbobjectdialog.h
src/dialogs/setupeditdialog.cpp
src/widgets/efcombobox.cpp

index 4304bc0..75afef5 100644 (file)
@@ -93,8 +93,8 @@ void DbObjectDialog::editObject()
     if (!nameDialog) initEditDialog();
     deleteCurrentObject();
     dbObject = dbManager->getDataObjectFromModel(&index);
-    nameDialog->setDataObject(dbObject);
     activateNameDialog();
+    nameDialog->setDataObject(dbObject);
 }
 
 bool DbObjectDialog::deleteItem()
@@ -209,12 +209,13 @@ void DbObjectDialog::disableSelection()
     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();
 }
 
index 01b834e..92e0021 100644 (file)
@@ -68,7 +68,7 @@ private:
     void insertDb(const EmuFrontObject*) const;
     void updateDb(const EmuFrontObject*) const;
     void editObject();
-    void activateNameDialog();
+    void activateNameDialog(bool updateData = true);
     bool confirmDelete(QString name, int numRefs);
        void setButtonsEnabled(bool);
     void layout();
index c35042b..e36cd45 100644 (file)
@@ -106,7 +106,9 @@ void SetupEditDialog::acceptChanges()
 void SetupEditDialog::setDataObject(EmuFrontObject *ob)
 {
     if (!ob) return;
-    qDebug() << "Updating data object with " << ob->getName() << ".";
+    qDebug() << "Updating Setup edit dialog data object to "
+        << ob->getName() << ".";
+    if (efObject) delete efObject;
     efObject = ob;
     Setup *sup= dynamic_cast<Setup*>(ob);
     if (sup->getPlatform()) setSelectedPlatform(sup->getPlatform());
index 9246b8e..72791fe 100644 (file)
 #include <QSqlQueryModel>
 #include <QSqlRecord>
 #include <QDebug>
+#include <QAbstractItemView>
 
 EFComboBox::EFComboBox(DatabaseManager *dbMan, QWidget *parent)
     : QComboBox(parent), dbManager(dbMan)
 {
     if (!dbManager)
         throw new EmuFrontException("Database manager is not available!");
+    setSizeAdjustPolicy(QComboBox::AdjustToContents);
     updateDataModel();
 }
 
@@ -79,14 +81,12 @@ void EFComboBox::setSelected(const EmuFrontObject *efo)
     for (int i = 0; i < qmodel->rowCount(); i++){
         QSqlRecord rec = qmodel->record(i);
         int id = rec.value(dataModelIndex_id).toInt();
-        qDebug() << "Checking record with id " << rec.value(dataModelIndex_id)
-            << " and name " << rec.value(dataModelIndex_name);
         if (id == efo->getId()){
-            qDebug() << "Found!";
+            QModelIndex ind = qmodel->index(i, 0);
+            //view()->selectionModel()->select(ind, QItemSelectionModel::Select);
+            view()->setCurrentIndex(ind);
             setCurrentIndex(i);
-            show();
             break;
         }
     }
-
 }