From 2c513693bb5b5248bb8e6e04dc2e1873a55028d2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mikko=20Kein=C3=A4nen?= Date: Sun, 12 Dec 2010 02:07:44 +0200 Subject: [PATCH] Added new model: ExternalExecutableModel. --- src/models/externalexecutablemodel.cpp | 66 ++++++++++++++++++++++++++++++++ src/models/externalexecutablemodel.h | 52 +++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 src/models/externalexecutablemodel.cpp create mode 100644 src/models/externalexecutablemodel.h diff --git a/src/models/externalexecutablemodel.cpp b/src/models/externalexecutablemodel.cpp new file mode 100644 index 0000000..5b415a7 --- /dev/null +++ b/src/models/externalexecutablemodel.cpp @@ -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 . +*/ + +#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 index 0000000..2a7dae6 --- /dev/null +++ b/src/models/externalexecutablemodel.h @@ -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 . +*/ + +#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 -- 1.7.9.5