From f8107792b463a095e5628345fae0b0b1fce2779d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mikko=20Kein=C3=A4nen?= Date: Thu, 16 Dec 2010 00:38:42 +0200 Subject: [PATCH] Some models were still needed: FileModel and MediaImageModel extending FileModel. Also a MediaImageContainerModel. --- src/dataobjects/mediaimagecontainer.h | 5 +- src/db/dbfile.h | 4 +- src/emufront.pro | 10 ++- src/emulauncher.cpp | 64 +++++++++++-------- src/emulauncher.h | 8 ++- src/models/emufrontquerymodel.h | 4 +- src/models/filemodel.cpp | 59 ++++++++++++++++++ src/models/filemodel.h | 48 ++++++++++++++ src/models/mediaimagecontainermodel.cpp | 104 +++++++++++++++++++++++++++++++ src/models/mediaimagecontainermodel.h | 55 ++++++++++++++++ src/models/mediaimagemodel.cpp | 57 +++++++++++++++++ src/models/mediaimagemodel.h | 43 +++++++++++++ src/models/setupmodel.h | 8 +-- 13 files changed, 429 insertions(+), 40 deletions(-) create mode 100644 src/models/filemodel.cpp create mode 100644 src/models/filemodel.h create mode 100644 src/models/mediaimagecontainermodel.cpp create mode 100644 src/models/mediaimagecontainermodel.h create mode 100644 src/models/mediaimagemodel.cpp create mode 100644 src/models/mediaimagemodel.h diff --git a/src/dataobjects/mediaimagecontainer.h b/src/dataobjects/mediaimagecontainer.h index 4b1c676..3668904 100644 --- a/src/dataobjects/mediaimagecontainer.h +++ b/src/dataobjects/mediaimagecontainer.h @@ -17,13 +17,16 @@ ** ** You should have received a copy of the GNU General Public License ** along with EmuFront. If not, see . -*/#ifndef MEDIAIMAGECONTAINER_H +*/ + +#ifndef MEDIAIMAGECONTAINER_H #define MEDIAIMAGECONTAINER_H #include "emufrontfileobject.h" #include "mediaimage.h" #include "setup.h" #include "filepathobject.h" +#include class MediaImageContainer : public EmuFrontFile { diff --git a/src/db/dbfile.h b/src/db/dbfile.h index 36526d5..533d1f0 100644 --- a/src/db/dbfile.h +++ b/src/db/dbfile.h @@ -17,7 +17,9 @@ ** ** You should have received a copy of the GNU General Public License ** along with EmuFront. If not, see . -*/#ifndef DBFILE_H +*/ + +#ifndef DBFILE_H #define DBFILE_H #include "dbquerymodelmanager.h" diff --git a/src/emufront.pro b/src/emufront.pro index 5be00cb..08430f8 100644 --- a/src/emufront.pro +++ b/src/emufront.pro @@ -100,7 +100,10 @@ HEADERS += mainwindow.h \ delegates/filesystembrowsedelegate.h \ widgets/filepathselectorwidget.h \ models/externalexecutablemodel.h \ - views/externalexecutableeditview.h + views/externalexecutableeditview.h \ + models/mediaimagecontainermodel.h \ + models/mediaimagemodel.h \ + models/filemodel.h SOURCES += main.cpp \ mainwindow.cpp \ db/databasemanager.cpp \ @@ -176,7 +179,10 @@ SOURCES += main.cpp \ delegates/filesystembrowsedelegate.cpp \ widgets/filepathselectorwidget.cpp \ models/externalexecutablemodel.cpp \ - views/externalexecutableeditview.cpp + views/externalexecutableeditview.cpp \ + models/mediaimagecontainermodel.cpp \ + models/mediaimagemodel.cpp \ + models/filemodel.cpp OTHER_FILES += CONFIG += mobility diff --git a/src/emulauncher.cpp b/src/emulauncher.cpp index 672874f..81992e5 100644 --- a/src/emulauncher.cpp +++ b/src/emulauncher.cpp @@ -18,14 +18,18 @@ ** You should have received a copy of the GNU General Public License ** along with EmuFront. If not, see . */ + #include #include #include #include #include "emulauncher.h" +#include "setup.h" #include "setupmodel.h" #include "externalexecutablemodel.h" -#include "dbmediaimagecontainer.h" +//#include "dbmediaimagecontainer.h" +#include "mediaimagecontainer.h" +#include "mediaimagecontainermodel.h" #include "effileobjectcombobox.h" #include "executablecombobox.h" #include "executable.h" @@ -35,7 +39,6 @@ EmuLauncher::EmuLauncher(QErrorMessage *errorMessage, QWidget *parent, QString tmp) : QWidget(parent), tmpDirPath(tmp), errorMessage(errorMessage) { - dbMic = 0; emuHelper = new EmuHelper(this); initWidgets(); layout(); @@ -64,6 +67,9 @@ void EmuLauncher::initWidgets() micTable->verticalHeader()->setVisible(false); micTable->horizontalHeader()->setClickable(false); + MediaImageContainerModel *micModel = new MediaImageContainerModel(this); + micTable->setModel(micModel); + SetupModel *supModel = new SetupModel(this); setupSelectBox = new QComboBox(this); setupSelectBox->setModel(supModel); @@ -108,39 +114,35 @@ void EmuLauncher::updateMediaImageContainers() QAbstractItemModel *setupAbsModel = setupSelectBox->model(); SetupModel *supModel = qobject_cast(setupAbsModel); if (!supModel) return; - QModelIndex plfInd = - supModel->index(setupSelectBox->currentIndex(), SetupModel::Setup_PlatformId); - int plfid = supModel->data(plfInd).toInt(); - QModelIndex mtInd = - supModel->index(setupSelectBox->currentIndex(), SetupModel::Setup_MediaTypeId); - int mtid = supModel->data(mtInd).toInt(); - if (mtid < 0 || plfid < 0) return; + QModelIndex supInd = + supModel->index(setupSelectBox->currentIndex(), SetupModel::Setup_Id); + int supId = supModel->data(supInd).toInt(); + if (supId < 0) return; // 2. fetch available media image containers - if (!dbMic) dbMic = new DbMediaImageContainer(this); - dbMic->filter(mtid, plfid); - micTable->setModel(dbMic->getDataModel()); - micTable->hideColumn(DbMediaImageContainer::MIC_FileId); - micTable->hideColumn(DbMediaImageContainer::MIC_FileSize); - micTable->hideColumn(DbMediaImageContainer::MIC_FileCheckSum); - micTable->hideColumn(DbMediaImageContainer::MIC_FilePathId); - micTable->hideColumn(DbMediaImageContainer::MIC_FilePathName); - micTable->hideColumn(DbMediaImageContainer::MIC_SetupId); - micTable->hideColumn(DbMediaImageContainer::MIC_PlatformName); - micTable->hideColumn(DbMediaImageContainer::MIC_PlatformId); - micTable->hideColumn(DbMediaImageContainer::MIC_MediaTypeName); - micTable->hideColumn(DbMediaImageContainer::MIC_MediaTypeId); + + QAbstractItemModel *absModel = micTable->model(); + MediaImageContainerModel *micModel = qobject_cast(absModel); + micModel->filterBySetup(supId); + + micTable->hideColumn(MediaImageContainerModel::MIC_FileId); + micTable->hideColumn(MediaImageContainerModel::MIC_FileSize); + micTable->hideColumn(MediaImageContainerModel::MIC_FileCheckSum); + micTable->hideColumn(MediaImageContainerModel::MIC_FilePathId); + micTable->hideColumn(MediaImageContainerModel::MIC_FilePathName); + micTable->hideColumn(MediaImageContainerModel::MIC_SetupId); + micTable->hideColumn(MediaImageContainerModel::MIC_PlatformName); + micTable->hideColumn(MediaImageContainerModel::MIC_PlatformId); + micTable->hideColumn(MediaImageContainerModel::MIC_MediaTypeName); + micTable->hideColumn(MediaImageContainerModel::MIC_MediaTypeId); micTable->resizeColumnsToContents(); // 3. filter available emulators - QModelIndex supInd = - supModel->index(setupSelectBox->currentIndex(), SetupModel::Setup_Id); - int supid = supModel->data(supInd).toInt(); QAbstractItemModel *execAbsModel = execSelectBox->model(); ExternalExecutableModel *execModel = qobject_cast(execAbsModel); if (!execModel) return; - execModel->filterBySetup(supid); + execModel->filterBySetup(supId); } void EmuLauncher::launchEmu() @@ -184,9 +186,17 @@ void EmuLauncher::launchEmu() // Now we have one or more media image containers and an emulator selected, // let's fetch the media image container data. + QAbstractItemModel *micAbsModel = micTable->model(); + MediaImageContainerModel *micModel = qobject_cast(micAbsModel); + if (!micModel) { + throw new EmuFrontException(tr("Failed creating data model for media image containers.")); + } + foreach(QModelIndex mind, listMIndex) { if (!mind.isValid()) continue; - EmuFrontObject *obImg = dbMic->getDataObjectFromModel(&mind); // throws EmuFrontException + + EmuFrontObject *obImg = micModel->getDataObject(mind); + if (!obImg) { qDebug() << "Failed creating media image container at row " << mind.row(); continue; diff --git a/src/emulauncher.h b/src/emulauncher.h index c657267..b974ad2 100644 --- a/src/emulauncher.h +++ b/src/emulauncher.h @@ -17,7 +17,9 @@ ** ** You should have received a copy of the GNU General Public License ** along with EmuFront. If not, see . -*/#ifndef EMULAUNCHER_H +*/ + +#ifndef EMULAUNCHER_H #define EMULAUNCHER_H #include @@ -27,7 +29,7 @@ class QTableView; class QPushButton; class QComboBox; class QErrorMessage; -class DbMediaImageContainer; +//class DbMediaImageContainer; class Executable; class MediaImageContainer; class EmuHelper; @@ -55,7 +57,7 @@ private: QComboBox *execSelectBox; QPushButton *selectButton; QPushButton *launchButton; - DbMediaImageContainer *dbMic; + //DbMediaImageContainer *dbMic; EmuHelper *emuHelper; void initWidgets(); void layout(); diff --git a/src/models/emufrontquerymodel.h b/src/models/emufrontquerymodel.h index 5d21fac..216615c 100644 --- a/src/models/emufrontquerymodel.h +++ b/src/models/emufrontquerymodel.h @@ -17,7 +17,9 @@ ** ** You should have received a copy of the GNU General Public License ** along with EmuFront. If not, see . -*/#ifndef EMUFRONTQUERYMODEL_H +*/ + +#ifndef EMUFRONTQUERYMODEL_H #define EMUFRONTQUERYMODEL_H #include diff --git a/src/models/filemodel.cpp b/src/models/filemodel.cpp new file mode 100644 index 0000000..73d6add --- /dev/null +++ b/src/models/filemodel.cpp @@ -0,0 +1,59 @@ +/* +** 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 "emufrontfile.h" +#include "filemodel.h" +#include + +FileModel::FileModel(QObject *parent) : + EmuFrontQueryModel(parent) +{ +} + +QString FileModel::constructSelect(QString where) const +{ + return QString( + "SELECT file.id AS FileId, " + "file.name AS Name, " + "file.type AS FileType, " + "file.checksum AS Checksum, " + "file.size AS FileSize, " + "file.updatetime AS UpdateTime " + "FROM file " + "%1 " + "ORDER BY Name" + ).arg(where); +} + +QString FileModel::constructFilterById(int id) const +{ + return QString("file.id = %1").arg(id); +} + +EmuFrontObject* FileModel::recordToDataObject(const QSqlRecord *record) +{ + int id = record->value(File_Id).toInt(); + QString name = record->value(File_Name).toString(); + QString checksum = record->value(File_CheckSum).toString(); + int size = record->value(File_FileSize).toInt(); + int type = record->value(File_FileType).toInt(); + return new EmuFrontFile(id, name, checksum, size, type); +} diff --git a/src/models/filemodel.h b/src/models/filemodel.h new file mode 100644 index 0000000..313b502 --- /dev/null +++ b/src/models/filemodel.h @@ -0,0 +1,48 @@ +/* +** 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 FILEMODEL_H +#define FILEMODEL_H + +#include "emufrontquerymodel.h" + +class FileModel : public EmuFrontQueryModel +{ + Q_OBJECT +public: + FileModel(QObject *parent = 0); + + enum { + File_Id, + File_Name, + File_FileType, + File_CheckSum, + File_FileSize, + File_UpdateTime + }; +protected: + virtual QString constructSelect(QString where = "") const; + // Implemented for EmuFrontQueryModel: + virtual EmuFrontObject* recordToDataObject(const QSqlRecord* ); + virtual QString constructFilterById(int id) const; +}; + +#endif // FILEMODEL_H diff --git a/src/models/mediaimagecontainermodel.cpp b/src/models/mediaimagecontainermodel.cpp new file mode 100644 index 0000000..d26a8f8 --- /dev/null +++ b/src/models/mediaimagecontainermodel.cpp @@ -0,0 +1,104 @@ +/* +** 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 "mediaimagecontainer.h" +#include "mediaimagecontainermodel.h" +#include "filepathmodel.h" +#include "mediaimagemodel.h" +#include + +MediaImageContainerModel::MediaImageContainerModel(QObject *parent) : + EmuFrontQueryModel(parent) +{ +} + +QString MediaImageContainerModel::constructSelect(QString where) const +{ + // TODO, for a usual search need a "light" version of this select + // and MediaImageContainer (only id, name) + return QString( + "SELECT file.id, file.name, file.checksum, file.size, " + " filepath.id, filepath.name, " + " setup.id, " + " platform.id, platform.name, " + " mediatype.id, mediatype.name " + "FROM file " + "INNER JOIN mediaimagecontainer_filepath ON mediaimagecontainer_filepath.fileid = file.id " + "INNER JOIN filepath ON mediaimagecontainer_filepath.filepathid = filepath.id " + "INNER JOIN setup ON filepath.setupid = setup.id " + "INNER JOIN platform ON setup.platformid = platform.id " + "INNER JOIN mediatype ON setup.mediatypeid = mediatype.id " + "%1 " + "ORDER BY file.name" + ).arg(where); +} + +QString MediaImageContainerModel::constructFilterById(int id) const +{ + return QString("file.id = %1").arg(id); +} + +void MediaImageContainerModel::refresh() +{ + //setQuery(constructSelect()); + setHeaderData(MIC_FileId, Qt::Horizontal, tr("File id")); + setHeaderData(MIC_FileName, Qt::Horizontal, tr("File Name")); + setHeaderData(MIC_FileCheckSum, Qt::Horizontal, tr("File checksum")); + setHeaderData(MIC_FileSize, Qt::Horizontal, tr("File Size")); + setHeaderData(MIC_FilePathId, Qt::Horizontal, tr("File path id")); + setHeaderData(MIC_FilePathName, Qt::Horizontal, tr("File path name")); + setHeaderData(MIC_SetupId, Qt::Horizontal, tr("Setup id")); + setHeaderData(MIC_PlatformId, Qt::Horizontal, tr("Platform id")); + setHeaderData(MIC_PlatformName, Qt::Horizontal, tr("Platform name")); + setHeaderData(MIC_MediaTypeId, Qt::Horizontal, tr("Media type id")); + setHeaderData(MIC_MediaTypeName, Qt::Horizontal, tr("Media type name")); +} + +EmuFrontObject* MediaImageContainerModel::recordToDataObject(const QSqlRecord *rec) +{ + // TODO: checks! + MediaImageContainer *mic = 0; + if (!rec) return mic; + int id = rec->value(MIC_FileId).toInt(); + QString name = rec->value(MIC_FileName).toString(); + QString checksum = rec->value(MIC_FileCheckSum).toString(); + int size = rec->value(MIC_FileSize).toInt(); + int fpId = rec->value(MIC_FilePathId).toInt(); + FilePathModel fpModel; + EmuFrontObject *efo = fpModel.getDataObject(fpId); + FilePathObject *fpo = dynamic_cast(efo); + if (!fpo) return 0; + //int supId = rec->value(MIC_SetupId).toInt(); + //Setup *sup = dbSetup->getDataObject(supId) + MediaImageModel miModel; + QMap images = miModel.getMediaImages(id); + mic = new MediaImageContainer( + id, name, checksum, size, images, fpo + ); + return mic; +} + +void MediaImageContainerModel::filterBySetup(int setupId) +{ + QList filters; + filters.append(QString("setup.id = %1").arg(setupId)); + filterDataObjects(filters); +} diff --git a/src/models/mediaimagecontainermodel.h b/src/models/mediaimagecontainermodel.h new file mode 100644 index 0000000..cda6504 --- /dev/null +++ b/src/models/mediaimagecontainermodel.h @@ -0,0 +1,55 @@ +/* +** 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 MEDIAIMAGECONTAINERMODEL_H +#define MEDIAIMAGECONTAINERMODEL_H + +#include "emufrontquerymodel.h" + +class MediaImageContainerModel : public EmuFrontQueryModel +{ + Q_OBJECT +public: + MediaImageContainerModel(QObject *parent = 0); + void filterBySetup(int setupId); + enum { + MIC_FileId, + MIC_FileName, + MIC_FileCheckSum, + MIC_FileSize, + MIC_FilePathId, + MIC_FilePathName, + MIC_SetupId, + MIC_PlatformId, + MIC_PlatformName, + MIC_MediaTypeId, + MIC_MediaTypeName + }; + +protected: + virtual void refresh(); + virtual QString constructSelect(QString where = "") const; + // Implemented for EmuFrontQueryModel: + virtual EmuFrontObject* recordToDataObject(const QSqlRecord* ); + virtual QString constructFilterById(int id) const; +}; + +#endif // MEDIAIMAGECONTAINERMODEL_H diff --git a/src/models/mediaimagemodel.cpp b/src/models/mediaimagemodel.cpp new file mode 100644 index 0000000..feb4246 --- /dev/null +++ b/src/models/mediaimagemodel.cpp @@ -0,0 +1,57 @@ +/* +** 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 "mediaimage.h" +#include "mediaimagemodel.h" +#include + +MediaImageModel::MediaImageModel(QObject *parent) : + FileModel(parent) +{ +} + +/* Fetches a list of media images inside a media image container + with a given id */ +QMap MediaImageModel::getMediaImages(int micId) +{ + QMap list; + QSqlQuery q; + q.prepare("SELECT file.id, file.name, file.size, file.checksum " + "FROM file INNER JOIN mediaimagecontainer_mediaimage " + "ON mediaimagecontainer_mediaimage.mediaimageid = file.id " + "WHERE mediaimagecontainer_mediaimage.mediaimagecontainerid = :micid "); + q.bindValue(":micid", micId); + q.exec(); + QSqlRecord rec; + int id, size; + QString name, checksum; + MediaImage *mi = 0; + while(q.next()) { + // TODO: checks? + rec = q.record(); + id = rec.value(MediaImageModel::File_Id).toInt(); + name = rec.value(MediaImageModel::File_Name).toString(); + checksum = rec.value(MediaImageModel::File_CheckSum).toString(); + size = rec.value(MediaImageModel::File_FileSize).toInt(); + list[checksum] = new MediaImage(id, name, checksum, size); + } + return list; +} diff --git a/src/models/mediaimagemodel.h b/src/models/mediaimagemodel.h new file mode 100644 index 0000000..0610949 --- /dev/null +++ b/src/models/mediaimagemodel.h @@ -0,0 +1,43 @@ +/* +** 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 MEDIAIMAGEMODEL_H +#define MEDIAIMAGEMODEL_H + +#include "filemodel.h" +#include + +class MediaImageModel : public FileModel +{ + Q_OBJECT +public: + MediaImageModel(QObject *parent = 0); + QMap getMediaImages(int id); + +protected: + //virtual void refresh(); + //virtual QString constructSelect(QString where = "") const; + // Implemented for EmuFrontQueryModel: + //virtual EmuFrontObject* recordToDataObject(const QSqlRecord* ); + //virtual QString constructFilterById(int id) const; +}; + +#endif // MEDIAIMAGEMODEL_H diff --git a/src/models/setupmodel.h b/src/models/setupmodel.h index f1082f7..aae4be7 100644 --- a/src/models/setupmodel.h +++ b/src/models/setupmodel.h @@ -17,13 +17,13 @@ ** ** You should have received a copy of the GNU General Public License ** along with EmuFront. If not, see . -*/#ifndef SETUPMODEL_H +*/ + +#ifndef SETUPMODEL_H #define SETUPMODEL_H #include "emufrontquerymodel.h" -class SetupLt; - class SetupModel : public EmuFrontQueryModel { Q_OBJECT @@ -33,14 +33,12 @@ public: 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); - //virtual EmuFrontObject* getObject(int row) const; enum { Setup_Id = 0, Setup_PlatformId, Setup_MediaTypeId, Setup_FileTypeExtensions, Setup_Name }; static const QString FILE_TYPE_EXTENSION_SEPARATOR; - SetupLt* getCurrentItem(); protected: virtual void refresh(); -- 1.7.9.5