From 5604364ea87aa497b698d6722befd0c8ef19b9b7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mikko=20Kein=C3=A4nen?= Date: Tue, 26 Oct 2010 01:58:47 +0300 Subject: [PATCH] Combo boxes were not properly updated when editing an object [fixed]. --- src/dialogs/dbobjectdialog.cpp | 7 ++++--- src/dialogs/dbobjectdialog.h | 2 +- src/dialogs/setupeditdialog.cpp | 4 +++- src/widgets/efcombobox.cpp | 10 +++++----- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/dialogs/dbobjectdialog.cpp b/src/dialogs/dbobjectdialog.cpp index 4304bc0..75afef5 100644 --- a/src/dialogs/dbobjectdialog.cpp +++ b/src/dialogs/dbobjectdialog.cpp @@ -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(); } diff --git a/src/dialogs/dbobjectdialog.h b/src/dialogs/dbobjectdialog.h index 01b834e..92e0021 100644 --- a/src/dialogs/dbobjectdialog.h +++ b/src/dialogs/dbobjectdialog.h @@ -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(); diff --git a/src/dialogs/setupeditdialog.cpp b/src/dialogs/setupeditdialog.cpp index c35042b..e36cd45 100644 --- a/src/dialogs/setupeditdialog.cpp +++ b/src/dialogs/setupeditdialog.cpp @@ -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(ob); if (sup->getPlatform()) setSelectedPlatform(sup->getPlatform()); diff --git a/src/widgets/efcombobox.cpp b/src/widgets/efcombobox.cpp index 9246b8e..72791fe 100644 --- a/src/widgets/efcombobox.cpp +++ b/src/widgets/efcombobox.cpp @@ -23,12 +23,14 @@ #include #include #include +#include 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; } } - } -- 1.7.9.5