Fixed init error in Executable constructor and sql error in executable
authorMikko Keinänen <mikko.keinanen@gmail.com>
Fri, 8 Oct 2010 21:42:45 +0000 (00:42 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Fri, 8 Oct 2010 21:42:45 +0000 (00:42 +0300)
update sql.

src/dataobjects/executable.cpp
src/db/dbexecutable.cpp
src/dialogs/executableeditdialog.cpp

index c16baef..3e65d0a 100644 (file)
@@ -27,7 +27,7 @@ Executable::Executable(int id, QString name)
 {}
 
 Executable::Executable(int id, QString name, QString executable,
-    QString options, Setup*, int type)
+    QString options, Setup* setup, int type)
     : EmuFrontObject(id, name), executable(executable),
     options(options), setup(setup), type(type)
 {}
index 0b44fb8..c7c0b2f 100644 (file)
@@ -38,7 +38,9 @@ EmuFrontObject* DbExecutable::recordToDataObject(const QSqlRecord* rec)
     if (!rec) return ex;
     int id = rec->value(Executable_Id).toInt();
     int supid = rec->value(Executable_SetupId).toInt();
-    Setup *sup = dynamic_cast<Setup*>(dbSetup->getDataObject(supid));
+    EmuFrontObject *ob = dbSetup->getDataObject(supid);
+    Setup *sup = dynamic_cast<Setup*>(ob);
+    qDebug() << "Setup id " << sup->getId() << ", platform " << sup->getPlatform()->getName();
     QString name = rec->value(Executable_Name).toString();
     QString exec = rec->value(Executable_Executable).toString();
     QString opts = rec->value(Executable_Options).toString();
@@ -59,8 +61,8 @@ bool DbExecutable::updateDataObjectToModel(const EmuFrontObject* ob)
               "setupid=:setupid, "
               "type=:type "
               "WHERE id=:id");
-    q.bindValue(":setupid", ex->getSetup()
-                ? QString(ex->getSetup()->getId()) : "NULL"); // TODO: null shouln't be allowed here
+    // TODO: null check
+    q.bindValue(":setupid", ex->getSetup()->getId());
     q.bindValue(":name", ex->getName());
     q.bindValue(":executable", ex->getExecutable());
     q.bindValue(":options", ex->getOptions());
index de9bcf0..64049a9 100644 (file)
@@ -121,6 +121,14 @@ void ExecutableEditDialog::setDataObject(EmuFrontObject *ob)
     if (!ob) return;
     efObject = ob;
     Executable *ex = dynamic_cast<Executable*>(ob);
+    if (!ex) {
+        qDebug("No executable");
+        return;
+    }
+    if (!ex->getSetup()) {
+        qDebug() << "No setup";
+        return;
+    }
     if (ex->getSetup() && ex->getSetup()->getId() >= 0)
         setSelectedSetup(ex->getSetup());
     nameEdit->setText(ex->getName());