(platform-media type combination).
// be destroyed when parent is destroyed
}
+/*
+ You may wanna set the possible filters (filterDataObjects) before calling getDataModel.
+ After filtering do not set update to true. Data model is already updated.
+*/
QSqlQueryModel* DatabaseManager::getDataModel(bool update)
{
- if (!sqlTableModel || (sqlTableModel && !update)) sqlTableModel = getData();
+ if (!sqlTableModel) {
+ sqlTableModel = getData();
+ }
+ else if (update)
+ clearFilters();
return sqlTableModel;
}
QString DbExecutable::constructSelect(QString whereClause) const
{
- return QString("SELECT "
+ QString sql = QString("SELECT "
"executable.id AS ExecutableId, "
"executable.name AS ExecutableName, "
"executable.executable AS Executable, "
"INNER JOIN platform ON setup.platformid=platform.id "
"INNER JOIN mediatype ON setup.mediatypeid=mediatype.id "
"%1 "
- "ORDER BY executable.name ")
- .arg(whereClause);
+ "ORDER BY executable.name ").arg(whereClause);
+ qDebug() << sql;
+ return sql;
}
/*bool DbExecutable::deleteDataObject(int id) const
// currently.
return QString("SELECT 0");
}
+
+void DbExecutable::filterByPlatformMediaType(int platformId, int mediaTypeId)
+{
+ QList<QString> filters;
+ filters.append(QString("setup.platformid=%1").arg(platformId));
+ filters.append(QString("setup.mediatypeid=%1").arg(mediaTypeId));
+ filterDataObjects(filters);
+}
virtual bool updateDataObjectToModel(const EmuFrontObject*);
int insertDataObjectToModel(const EmuFrontObject*);
bool deleteDataObjectFromModel(QModelIndex*);
+ void filterByPlatformMediaType(int platformId, int mediaTypeId);
enum {
Executable_Id = 0,
Executable_Name,
/* filters is a list of SQL conditions e.g. setup.id=1 */
void DbQueryModelManager::filterDataObjects(QList<QString> filters)
{
- if (!sqlTableModel) sqlTableModel = getDataModel();
+ //if (!sqlTableModel) sqlTableModel = getDataModel();
+ if (!sqlTableModel)
+ getDataModel();
QString where = constructWhereByFilters(filters);
qDebug() << "Constructing SQL with " << where;
QString query = constructSelect(where);
{
platformSelectBox->updateDataModel();
mediaTypeSelectBox->updateDataModel();
- execSelectBox->updateDataModel();
+ //execSelectBox->updateDataModel();
}
void EmuLauncher::initWidgets()
micTable->resizeColumnsToContents();
platformSelectBox->updateDataModel();
mediaTypeSelectBox->updateDataModel();
+ execSelectBox->updateToSetup(plfid, mtid);
}
void EmuLauncher::launchEmu()
{
}
-void EFComboBox::updateDataModel()
+void EFComboBox::updateDataModel(bool reset)
{
- QSqlQueryModel *model = dbManager->getDataModel();
+ QSqlQueryModel *model = dbManager->getDataModel(reset);
if (model)
setModel(model);
}
EmuFrontObject* getSelected() const;
// This will replace DataObjectEditDialog::setSelected!
void setSelected(const EmuFrontObject*);
- void updateDataModel();
+ void updateDataModel(bool reset = true);
protected:
DatabaseManager *dbManager;
int dataModelIndex_id;
dataModelIndex_id = DbExecutable::Executable_Id;
setModelColumn(dataModelIndex_name);
}
+
+void ExecutableComboBox::updateToSetup(int platformId, int mediaTypeId)
+{
+ DbExecutable *dbExe = dynamic_cast<DbExecutable *>(dbManager);
+ dbExe->filterByPlatformMediaType(platformId, mediaTypeId);
+ EFComboBox::updateDataModel(false);
+}
{
public:
ExecutableComboBox(DatabaseManager *dbMan, QWidget *parent);
+ void updateToSetup(int platformId, int mediaTypeId);
};
#endif // EXECUTABLECOMBOBOX_H