The core flow from creating a platform, a mediatype, a setup, media
authorMikko Keinänen <mikko.keinanen@gmail.com>
Tue, 14 Dec 2010 22:40:44 +0000 (00:40 +0200)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Tue, 14 Dec 2010 22:40:44 +0000 (00:40 +0200)
image path, emulator configuration, scanning media images and
launching an emulator with selected file is now functional with new
MVC implementations.

src/emulauncher.cpp
src/models/emufrontquerymodel.cpp
src/models/emufrontquerymodel.h
src/models/externalexecutablemodel.cpp
src/models/externalexecutablemodel.h

index 0e15d46..672874f 100644 (file)
@@ -164,18 +164,13 @@ void EmuLauncher::launchEmu()
         }
         qDebug() << listMIndex.count() << " items selected.";
 
-        // TODO: write a method to ExternalExecutable to return an Executable object of a selected row.
-        // TODO2: rewrite ExecutableComboBox and reimplement getSelected?
-        /*EmuFrontObject *obExe = execSelectBox->getSelected();
-        if (!obExe) {
-            throw EmuFrontException(tr("Failed fetching selected emulator!"));
-        }
-        exe = dynamic_cast<Executable*>(obExe);
+        QAbstractItemModel *absModel = execSelectBox->model();
+        ExternalExecutableModel *extModel = qobject_cast<ExternalExecutableModel*>(absModel);
+        exe = extModel->getExecutable(execSelectBox->currentIndex());
         if (!exe) {
-            throw EmuFrontException(tr("Failed creating Emulator object!"));
-        }*/
-
-        qDebug() << "File types; " << exe->getSetup()->getSupportedFileTypeExtensions().count();
+            errorMessage->showMessage(tr("Failed creating an executable object from selection."));
+            return;
+        }
 
         bool mame = exe->getSetup()->getSupportedFileTypeExtensions().isEmpty();
 
index 4ae2adf..c3dcb43 100644 (file)
 
 EmuFrontQueryModel::EmuFrontQueryModel(QObject *parent) :
     QSqlQueryModel(parent)
-{
-}
+{ }
 
-EmuFrontObject* EmuFrontQueryModel::getObject(int row) const
+EmuFrontObject* EmuFrontQueryModel::getObject(int row)
 {
-    // TODO
-    return 0;
+    if (row < 0 || row > rowCount() - 1)
+        return 0;
+    QSqlRecord rec = record(row);
+    return recordToDataObject(&rec);
 }
 
-/*Platform* EmuFrontQueryModel::getPlatform(int id) const
-{
-}*/
-
 EmuFrontObject* EmuFrontQueryModel::getDataObject(int id)
 {
     filterById(id);
index f238e00..5d21fac 100644 (file)
@@ -34,7 +34,7 @@ public:
     EmuFrontQueryModel(QObject *parent = 0);
     EmuFrontObject* getDataObject(int id);
     EmuFrontObject* getDataObject(const QModelIndex &index);
-    EmuFrontObject* getObject(int row) const;
+    EmuFrontObject* getObject(int row);
     static int getCurrentTimeStamp();
 
 protected:
index a8c0ab5..a6a786c 100644 (file)
@@ -239,3 +239,10 @@ QString ExternalExecutableModel::constructFilterById(int id) const
 {
     return QString("executable.id=%1").arg(id);
 }
+
+Executable* ExternalExecutableModel::getExecutable(int row)
+{
+    if (row < 0) return 0;
+    EmuFrontObject *efo = getObject(row);
+    return dynamic_cast<Executable*>(efo);
+}
index e5ce786..d69cbfd 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "emufrontquerymodel.h"
 
+class Executable;
+
 class ExternalExecutableModel : public EmuFrontQueryModel
 {
     Q_OBJECT
@@ -34,6 +36,7 @@ public:
     virtual bool insertRows(int row, int count, const QModelIndex &parent);
     virtual bool removeRows(int row, int count, const QModelIndex &parent);
     void filterBySetup(int setupId);
+    Executable* getExecutable(int row);
     enum {
         Executable_Id = 0,
         Executable_Name,