Added new model: ExternalExecutableModel.
authorMikko Keinänen <mikko.keinanen@gmail.com>
Sun, 12 Dec 2010 00:07:44 +0000 (02:07 +0200)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Sun, 12 Dec 2010 00:07:44 +0000 (02:07 +0200)
src/models/externalexecutablemodel.cpp [new file with mode: 0644]
src/models/externalexecutablemodel.h [new file with mode: 0644]

diff --git a/src/models/externalexecutablemodel.cpp b/src/models/externalexecutablemodel.cpp
new file mode 100644 (file)
index 0000000..5b415a7
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+** EmuFront
+** Copyright 2010 Mikko Keinänen
+**
+** This file is part of EmuFront.
+**
+**
+** EmuFront is free software: you can redistribute it and/or modify
+** it under the terms of the GNU General Public License version 2 as published by
+** the Free Software Foundation and appearing in the file gpl.txt included in the
+** packaging of this file.
+**
+** EmuFront is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with EmuFront.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "externalexecutablemodel.h"
+
+ExternalExecutableModel::ExternalExecutableModel(QObject *parent) :
+    EmuFrontQueryModel(parent)
+{
+    refresh();
+}
+
+void ExternalExecutableModel::refresh()
+{
+    setQuery(constructSelect());
+    setHeaderData(Executable_Id, Qt::Horizontal, tr("Id"));
+    setHeaderData(Executable_Name, Qt::Horizontal, tr("Name"));
+    setHeaderData(Executable_Executable, Qt::Horizontal, tr("Executable"));
+    setHeaderData(Executable_Options, Qt::Horizontal, tr("Options"));
+    setHeaderData(Executable_TypeId, Qt::Horizontal, tr("Type"));
+    setHeaderData(Executable_SetupId, Qt::Horizontal, tr("Setup id"));
+    setHeaderData(Executable_SetupName, Qt::Horizontal, tr("Setup"));
+}
+
+QString ExternalExecutableModel::constructSelect(QString where) const
+{
+    return QString("SELECT "
+                   "executable.id AS ExecutableId, "
+                   "executable.name AS ExecutableName, "
+                   "executable.executable AS Executable, "
+                   "executable.options AS ExecutableOptions, "
+                   "executable.type AS ExecutableType, "
+                   "setup.id As ExecutableSetupId, "
+                   "platform.name || ' ' || mediatype.name AS SetupName "
+                   "FROM executable "
+                   "INNER JOIN setup ON executable.setupid = setup.id "
+                   "INNER JOIN platform ON setup.platformid=platform.id "
+                   "INNER JOIN mediatype ON setup.mediatypeid=mediatype.id "
+                   "%1 "
+                   "ORDER BY executable.name").arg(where);
+}
+
+Qt::ItemFlags ExternalExecutableModel::flags(const QModelIndex &index) const
+{
+    Qt::ItemFlags flags = QSqlQueryModel::flags(index);
+    int col = index.column();
+    // TODO
+    return flags;
+}
diff --git a/src/models/externalexecutablemodel.h b/src/models/externalexecutablemodel.h
new file mode 100644 (file)
index 0000000..2a7dae6
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+** EmuFront
+** Copyright 2010 Mikko Keinänen
+**
+** This file is part of EmuFront.
+**
+**
+** EmuFront is free software: you can redistribute it and/or modify
+** it under the terms of the GNU General Public License version 2 as published by
+** the Free Software Foundation and appearing in the file gpl.txt included in the
+** packaging of this file.
+**
+** EmuFront is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with EmuFront.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef EXTERNALEXECUTABLEMODEL_H
+#define EXTERNALEXECUTABLEMODEL_H
+
+#include "emufrontquerymodel.h"
+
+class ExternalExecutableModel : public EmuFrontQueryModel
+{
+    Q_OBJECT
+public:
+    ExternalExecutableModel(QObject *parent = 0);
+    virtual Qt::ItemFlags flags(const QModelIndex &index) const;
+    virtual bool setData(const QModelIndex &index, const QVariant &value, int role);
+    virtual bool insertRows(int row, int count, const QModelIndex &parent);
+    virtual bool removeRows(int row, int count, const QModelIndex &parent);
+    enum {
+        Executable_Id = 0,
+        Executable_Name,
+        Executable_Executable,
+        Executable_Options,
+        Executable_TypeId,
+        Executable_SetupId,
+        Executable_SetupName
+    };
+
+protected:
+    virtual void refresh();
+    virtual QString constructSelect(QString where = "") const;
+    virtual bool setSetup(int isd, int setupId);
+};
+
+#endif // EXTERNALEXECUTABLEMODEL_H