{
filterById(id);
return getFilteredDataObject();
- /*EmuFrontObject *plf = 0;
- if (sqlTableModel->rowCount() == 1)
- {
- QSqlRecord record = sqlTableModel->record(0);
- if (record.isEmpty())
- {
- throw new EmuFrontException(tr("No data available for id %1").arg(id));
- }
- else plf = recordToDataObject(&record);
- }
- return plf;*/
}
EmuFrontObject* DatabaseManager::getDataObject(QString filter)
return id;
}
-/*bool DbEmuFrontFileObject::deleteDataObject(int id) const
-{
- if (countDataObjectRefs(id) > 0)
- // TODO
- return false;
- QSqlQuery q;
- q.prepare(QString("DELETE FROM %1 WHERE id = :id").arg(tableName));
- q.bindValue(":id", id);
- return q.exec();
-
-}*/
-
// WARNING: this will delete also all the databindings to selected platform
bool DbEmuFrontFileObject::deleteDataObjectFromModel(QModelIndex *index)
{
// TODO
return false;
- //QSqlDatabase::database().transaction();
- //QSqlTableModel *tmodel = dynamic_cast<QSqlTableModel*>(sqlTableModel);
- /*QSqlRecord record = tmodel->record(index->row());
- int id = record.value(EmuFrontFileObject_Id).toInt();
- qDebug() << "Deleting platform " << id;
- int count = countDataObjectRefs(id);
- if (count > 0)
- {
- QSqlQuery query;
- if (!query.exec(QString("DELETE FROM imagecontainer WHERE platformid = %1").arg(id)))
- {
- qDebug() << "Deleting data bindings failed!";
- QSqlDatabase::database().rollback();
- return false;
- }
- }*/
- /*tmodel->removeRow(index->row());
- tmodel->submitAll();
- return QSqlDatabase::database().commit();
- */
}
QString DbEmuFrontFileObject::constructSelect(QString where) const
{
- /*QString where = whereClause.isEmpty()
- ? "" : QString("WHERE ").append(whereClause);*/
-
return QString("SELECT maintbl.id AS FileObjectId, "
"maintbl.name AS Name, "
"file.id AS FileId, "
model->setQuery(constructSelect());
model->setHeaderData(EmuFrontFileObject_Id, Qt::Horizontal, tr("Id"));
model->setHeaderData(EmuFrontFileObject_Name, Qt::Horizontal, tr("Name"));
- /*model->setHeaderData(EmuFrontFileObject_FileId, Qt::Horizontal, tr("File id"));
- model->setHeaderData(EmuFrontFileObject_FileName, Qt::Horizontal, tr("File name"));
- model->setHeaderData(EmuFrontFileObject_FileType, Qt::Horizontal, tr("File type"));
- model->setHeaderData(EmuFrontFileObject_FileCheckSum, Qt::Horizontal, tr("File checksum"));
- model->setHeaderData(EmuFrontFileObject_FileSize, Qt::Horizontal, tr("File size"));
- model->setHeaderData(EmuFrontFileObject_FileUpdateTime, Qt::Horizontal, tr("File update time"));*/
return model;
}
class DbEmuFrontFileObject : public DbQueryModelManager
{
public:
-DbEmuFrontFileObject(QObject *parent);
-virtual bool updateDataObjectToModel(const EmuFrontObject*);
-int insertDataObjectToModel(const EmuFrontObject*);
-bool deleteDataObjectFromModel(QModelIndex*);
-enum {
- EmuFrontFileObject_Id= 0,
- EmuFrontFileObject_Name,
- EmuFrontFileObject_FileId,
- EmuFrontFileObject_FileName,
- EmuFrontFileObject_FileType,
- EmuFrontFileObject_FileCheckSum,
- EmuFrontFileObject_FileSize,
- EmuFrontFileObject_FileUpdateTime
-};
+ DbEmuFrontFileObject(QObject *parent);
+ virtual bool updateDataObjectToModel(const EmuFrontObject*);
+ int insertDataObjectToModel(const EmuFrontObject*);
+ bool deleteDataObjectFromModel(QModelIndex*);
+ enum {
+ EmuFrontFileObject_Id= 0,
+ EmuFrontFileObject_Name,
+ EmuFrontFileObject_FileId,
+ EmuFrontFileObject_FileName,
+ EmuFrontFileObject_FileType,
+ EmuFrontFileObject_FileCheckSum,
+ EmuFrontFileObject_FileSize,
+ EmuFrontFileObject_FileUpdateTime
+ };
protected:
virtual QString constructSelect(QString whereClause = "") const;
virtual QString constructFilterById(int id) const;
virtual EmuFrontObject* recordToDataObject(const QSqlRecord* );
virtual EmuFrontObject* createEmuFrontFileObject(int id, QString name, EmuFrontFile *f) = 0;
- //virtual bool deleteDataObject(int id) const;
private:
virtual QSqlQueryModel* getData();
return id;
}
-/*int DbFile::insertFile(const EmuFrontFile *mi)
-{
- qDebug() << "Inserting file " << mi->getName() << " to db.";
- QSqlQuery q;
- q.prepare("INSERT INTO file "
- "(id, name, type, checksum, size, updatetime) "
- "VALUES (NULL, :name, :type, :checksum, :size, :updatetime)");
- q.bindValue(":name", mi->getName());
- q.bindValue(":type", mi->getType());
- q.bindValue(":checksum", mi->getCheckSum());
- q.bindValue(":size", mi->getSize());
- q.bindValue(":updatetime", DatabaseManager::getCurrentTimeStamp());
- int id = -1;
- if (q.exec())
- id = q.lastInsertId().toInt();
- return id;
-
-}*/
-
// WARNING: this will delete also all the databindings to selected platform
// the delete must be confirmed in the UI
bool DbFile::deleteDataObjectFromModel(QModelIndex *index)
{
return false;
-
- /*QSqlDatabase::database().transaction();*/
- //QSqlTableModel *tmodel = dynamic_cast<QSqlTableModel*>(sqlTableModel);
- /*QSqlRecord record = tmodel->record(index->row());
- int id = record.value(File_Id).toInt();
- int count = countDataObjectRefs(id);
- if (count > 0)
- {
- QSqlQuery query;
- if (!query.exec(QString("DELETE FROM imagecontainer WHERE platformid = %1").arg(id)))
- {
- qDebug() << "Deleting data bindings failed!";
- QSqlDatabase::database().rollback();
- return false;
- }
- }*/
- //tmodel->removeRow(index->row());
- //tmodel->submitAll();
- //return QSqlDatabase::database().commit();
}
bool DbFile::deleteDataObject(int id) const
QString DbFile::constructSelect(QString where) const
{
- /*QString where = whereClause.isEmpty()
- ? "" : QString("WHERE ").append(whereClause);*/
-
return QString("SELECT file.id AS FileId, "
"file.name AS Name, "
"file.type AS FileType, "
QString DbFilePath::constructSelect(QString where) const
{
- /*QString where = whereClause.isEmpty()
- ? "" : QString("WHERE ").append(whereClause);*/
-
return QString("SELECT filepath.id AS FilePathId, "
"filepath.name AS Name, "
"filepath.lastscanned AS LastScanned, "
tableName = DbMediaImage::DB_TABLE_NAME_FILE;
}
-/*bool DbMediaImage::updateDataObjectToModel(const EmuFrontObject *efo)
-{
- // TODO
- return false;
-}*/
-
-/*bool DbMediaImage::deleteDataObjectFromModel(QModelIndex *i)
-{
- // TODO
- return false;
-}
-
-int DbMediaImage::countDataObjectRefs(int id) const
-{
- // TODO
- return -1;
-}
-
-QString DbMediaImage::constructSelect(QString whereClause) const
-{
- // TODO
- return "";
-}
-
-QString DbMediaImage::constructSelectById(int id) const
-{
- // TODO
- return "";
-}
-
-EmuFrontObject* DbMediaImage::recordToDataObject(const QSqlRecord *)
-{
- // TODO
- return 0;
-}*/
-
-/*QSqlQueryModel* DbMediaImage::getData()
-{
- QSqlTableModel *model = new QSqlTableModel;
- model->setTable(DB_TABLE_NAME_FILE);
- return model;
-}*/
-
-/*int DbMediaImage::insertMediaImage(const MediaImage *mi)
-{
- return DbFile::insertDataObjectToModel(mi);
-}*/
/* Stores a list of media images to the database.
Returns a list of media image id corresponding to the given list of media
QList<int> storeMediaImages(QMap<QString, EmuFrontObject*>);
void removeOrphanedMediaImages(QList<int> ids);
QMap<QString, EmuFrontObject*> getMediaImages(int id) const;
- /*virtual bool updateDataObjectToModel(const EmuFrontObject *);
- virtual bool deleteDataObjectFromModel(QModelIndex *);
- int getMediaImage(QString checksum) const;
- int insertMediaImage(const MediaImage*);
-protected:
- virtual QString constructSelect(QString whereClause) const;
- virtual QString constructSelectById(int id) const;
- virtual EmuFrontObject* recordToDataObject(const QSqlRecord *);
- */
private:
- /*virtual QSqlQueryModel* getData();*/
virtual QString getCountRefsSelect(int) const;
};
#include "dbfilepath.h"
DbMediaImageContainer::DbMediaImageContainer(QObject *parent)
- : DbFile(parent) // DbQueryModelManager(parent)
+ : DbFile(parent)
{
dbMediaImage = new DbMediaImage(parent);
dbFilePath = new DbFilePath(parent);
tableName = DbMediaImageContainer::DB_TABLE_MEDIAIMAGECONTAINER;
- //dbFile = new DbFile(parent);
}
bool DbMediaImageContainer::updateDataObjectToModel(const EmuFrontObject *efo)
#ifndef DBMEDIAIMAGECONTAINER_H
#define DBMEDIAIMAGECONTAINER_H
-//#include "dbquerymodelmanager.h"
#include "dbmediaimage.h"
#include "dbfile.h"
#include "../dataobjects/mediaimagecontainer.h"
#include "dbmediatype.h"
-//QString DbMediaType::tableName = DbMediaType::DB_TABLE_NAME_MEDIATYPE;
-
DbMediaType::DbMediaType(QObject *parent) : DbEmuFrontFileObject(parent)
{
-tableName = DbMediaType::DB_TABLE_NAME_MEDIATYPE;
- }
+ tableName = DbMediaType::DB_TABLE_NAME_MEDIATYPE;
+}
EmuFrontObject* DbMediaType::createEmuFrontFileObject(int id, QString name, EmuFrontFile *f)
{ return new MediaType(id, name, f); }
#include <QSqlRecord>
#include <QVariant>
-//QString DbPlatform::tableName = DbPlatform::DB_TABLE_NAME_PLATFORM;
-
DbPlatform::DbPlatform(QObject *parent) : DbEmuFrontFileObject(parent)
{
tableName = DbPlatform::DB_TABLE_NAME_PLATFORM;
QString DbSetup::constructSelect(QString where) const
{
- /*QString where = whereClause.isEmpty()
- ? "" : QString("WHERE ").append(whereClause);*/
return QString(
"SELECT setup.id AS SetupId, "
"setup.platformid AS PlatformId, "
return false;
}
-/*bool DbSetup::deleteDataObject(int id) const
-{
- int c = countDataObjectRefs(id);
- if (c != 0)
- // TODO
- return false;
- QSqlQuery q;
- q.prepare(QString("DELETE FROM setup WHERE id=:id"));
- q.bindValue(":id", id);
- return q.exec();
-}*/
-
QSqlQueryModel* DbSetup::getData()
{
QSqlQueryModel *model = new QSqlQueryModel;
DataObjectEditDialog::DataObjectEditDialog(QWidget *parent, EmuFrontObject *ob, Qt::Orientation orientation)
: EmuFrontDialog(parent), efObject(ob), orientation(orientation)
{
- qDebug("DataObjectEditDialog creating buttonBox");
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Abort, orientation);
}
connect(buttonBox, SIGNAL(rejected()), this, SLOT(rejectChanges()));
}
-// TODO: remove this after implementing all the combo boxes using EFComboBox
-/*void DataObjectEditDialog::setSelected(QComboBox *cbox, const EmuFrontObject *ob, int idIndex)
-{
- if (!ob) return;
- QSqlQueryModel *model = dynamic_cast<QSqlQueryModel*>(cbox->model());
- for (int i = 0; i < model->rowCount(); i++)
- {
- qDebug() << "i: " << i << ", rowcount: " << model->rowCount();
- qDebug() << ", object id:" << ob->getId();
- QSqlRecord rec = model->record(i);
- if (rec.value(idIndex) == ob->getId())
- {
- cbox->setCurrentIndex(i);
- break;
- }
- }
-}*/
-
void DataObjectEditDialog::rejectChanges()
{
efObject = 0;
void DbObjectDialog::connectSignals()
{
- qDebug() << "DbObjectDialog connecting signals";
connect(buttonBox, SIGNAL(accepted()), this, SLOT(close()));
connect(objectList, SIGNAL(clicked(const QModelIndex &)),
this, SLOT(listObjectClicked(const QModelIndex &)));
filePathLabel = new QLabel;
filePathButton = new QPushButton(tr("&Browse filepath"));
dbSetup = new DbSetup(this);
- setupComBox = new SetupComboBox(dbSetup, this); //QComboBox;
- //populateSetupComBox();
+ setupComBox = new SetupComboBox(dbSetup, this);
}
-/*void MediaImagePathDialog::populateSetupComBox()
-{
- dbSetup = new DbSetup(this);
- setupComBox->setModel(dbSetup->getDataModel());
- setupComBox->setModelColumn(DbSetup::Setup_Name);
-}*/
-
void MediaImagePathDialog::layout()
{
QLabel *setupLabel = new QLabel(tr("&Set up"));
void MediaImagePathDialog::setSelectedSetup(const Setup *sup)
{
-
setupComBox->setSelected(sup);
- // setSelected(setupComBox, sup, DbSetup::Setup_Id);
}
Setup* MediaImagePathDialog::getSelectedSetup()
EmuFrontObject *ob = setupComBox->getSelected();
if (!ob) return 0;
return dynamic_cast<Setup*>(ob);
- /*if (!dbPlatform) dbPlatform => new DbPlatform(this);
- if (!dbMediaType) dbMediaType = new DbMediaType(this);
- Setup *sup = 0;
- int index = setupComBox->currentIndex();
- if (index < 0) return sup;
- QSqlQueryModel *model
- = dynamic_cast<QSqlQueryModel*>(setupComBox->model());
- if (!model)
- {
- errorMessage->showMessage(tr("Data model missing."));
- return sup;
- }
- QSqlRecord rec = model->record(index);
- if (!rec.isEmpty())
- {
- EmuFrontObject *efPlf = dbPlatform->getDataObject(rec.value(DbSetup::Setup_PlatformId).toInt());
- EmuFrontObject *efMt = dbMediaType->getDataObject(rec.value(DbSetup::Setup_MediaTypeId).toInt());
-
- Platform *plf = dynamic_cast<Platform*>(efPlf);
- MediaType *mt = dynamic_cast<MediaType*>(efMt);
- QString exts = rec.value(DbSetup::Setup_FileTypeExtensions).toString();
-
- sup = new Setup(rec.value(DbSetup::Setup_Id).toInt(), plf, mt,
- exts.split(DbSetup::FILE_TYPE_EXTENSION_SEPARATOR));
- }
- else errorMessage->showMessage("Record missing");
- return sup;*/
}
void MediaImagePathDialog::acceptChanges()
SetupEditDialog::SetupEditDialog(QWidget *parent, EmuFrontObject* obj)
: DataObjectEditDialog(parent, obj)
{
- dbSetup = 0; //new DbSetup(this);
+ dbSetup = 0;
dbPlatform = new DbPlatform(this);
dbMediaType = new DbMediaType(this);
initWidgets();
- qDebug() << "Connecting signals";
connectSignals();
layout();
}
void SetupEditDialog::initWidgets()
{
- mediaTypeComBox = new EFFileObjectComboBox(dbMediaType, this); //new QComboBox;
- platformComBox = new EFFileObjectComboBox(dbPlatform, this); //new QComboBox;
+ mediaTypeComBox = new EFFileObjectComboBox(dbMediaType, this);
+ platformComBox = new EFFileObjectComboBox(dbPlatform, this);
supportedFileTypesList = new StringListWidget;
}
void SetupEditDialog::layout()
{
- qDebug() << "SetupEditDialog::layout";
QLabel *platformLabel = new QLabel(tr("&Platform"));
platformLabel->setBuddy(platformComBox);
QLabel *mediaTypeLabel = new QLabel(tr("Media&Type"));
mainLayout->addLayout(gridLayout);
mainLayout->addWidget(buttonBox);
setLayout(mainLayout);
- qDebug() << "SetupEditDialog::layout done";
-
setWindowTitle(tr("Edit setup"));
}
void SetupEditDialog::setSelectedPlatform(const Platform *plf)
{
- //setSelected(platformComBox, plf, DbPlatform::EmuFrontFileObject_Id);
platformComBox->setSelected(plf);
}
void SetupEditDialog::setSelectedMediaType(const MediaType *plf)
{
- //setSelected(mediaTypeComBox, plf, DbMediaType::EmuFrontFileObject_Id);
mediaTypeComBox->setSelected(plf);
}
Platform* SetupEditDialog::getSelectedPlatform() const
{
- /*Platform *plf = 0;
- int index = platformComBox->currentIndex();
- qDebug() << "Platform from index " << index << " selected";
- if (index < 0)
- return plf;
- QSqlQueryModel* platformModel
- = dynamic_cast<QSqlQueryModel*>(platformComBox->model());
- if (!platformModel)
- {
- qDebug() << "No platform model";
- return plf;
- }
- QSqlRecord rec = platformModel->record(index);
- if (!rec.isEmpty())
- {
- qDebug() << "Trying to fetch platform with id "
- << rec.value(DbPlatform::EmuFrontFileObject_Id).toInt() ;
- EmuFrontObject *o
- = dbPlatform->getDataObject(rec.value(DbPlatform::EmuFrontFileObject_Id).toInt());
- plf = dynamic_cast<Platform*>(o);
- }*/
-
EmuFrontObject *o = platformComBox->getSelected();
if (!o) return 0;
Platform *plf = dynamic_cast<Platform*>(o);
MediaType* SetupEditDialog::getSelectedMediaType() const
{
- /*MediaType *mt = 0;
- int index = mediaTypeComBox->currentIndex();
- if (index < 0) return mt;
- QSqlQueryModel* mediaTypeModel = dynamic_cast<QSqlQueryModel*>(mediaTypeComBox->model());
- if (!mediaTypeModel)
- {
- qDebug("Media type data model missing");
- return mt;
- }
- QSqlRecord rec = mediaTypeModel->record(index);
- if (!rec.isEmpty())
- {
- EmuFrontObject *o = dbMediaType->getDataObject(rec.value(DbMediaType::EmuFrontFileObject_Id).toInt());
- mt = dynamic_cast<MediaType*>(o);
- }
- return mt;*/
EmuFrontObject *o = mediaTypeComBox->getSelected();
if (!o) return 0;
MediaType *mt = dynamic_cast<MediaType*>(o);
void SetupEditDialog::updateData()
{
- qDebug() << "Updating combobox data";
platformComBox->updateDataModel();
mediaTypeComBox->updateDataModel();
}
#include "dataobjecteditdialog.h"
-//class QComboBox;
class EFFileObjectComboBox;
class DbSetup;
class DbMediaType;
virtual void acceptChanges();
private:
- //QComboBox *mediaTypeComBox;
EFFileObjectComboBox *mediaTypeComBox;
- //QComboBox *platformComBox;
EFFileObjectComboBox *platformComBox;
DbSetup *dbSetup;
DbPlatform *dbPlatform;
void initWidgets();
void layout();
- //void populateMediaTypeComBox();
- //void populatePlatformComBox();
void setSelectedMediaType(const MediaType*);
void setSelectedPlatform(const Platform*);
MediaType* getSelectedMediaType() const;
#include <QProcess>
#include "fileutil.h"
#include "zlib.h" /* crc32 */
-//#include "OSDaB-Zip/unzip.h"
#include "../exceptions/emufrontexception.h"
#include "../dataobjects/setup.h"
#include "../dataobjects/mediaimage.h"
#include "../db/dbmediaimagecontainer.h"
#include "unziphelper.h"
-//int FileUtil::MIC_BUFFER_SIZE = 50;
-
FileUtil::FileUtil(QObject *parent) : QObject(parent)
{
buf = new char[READ_BUFFER];