Initial commit
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
#include "tickets_model.h"
|
||||
|
||||
#include <QSqlError>
|
||||
#include <QSqlRecord>
|
||||
|
||||
TicketsModel::TicketsModel(QObject *parent, const QSqlDatabase &database)
|
||||
: BaseSqlTableModel(parent, database) {}
|
||||
|
||||
void TicketsModel::initialize() {
|
||||
setTable("tickets");
|
||||
|
||||
setEditStrategy(QSqlTableModel::OnFieldChange);
|
||||
|
||||
bool success = select();
|
||||
if (!success) {
|
||||
qWarning() << "Error:" << lastError().text();
|
||||
}
|
||||
}
|
||||
|
||||
QVariant TicketsModel::headerData(int section, Qt::Orientation orientation,
|
||||
int role) const {
|
||||
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
|
||||
switch (section) {
|
||||
case TicketsColumns::Id:
|
||||
return tr("ID");
|
||||
case TicketsColumns::SessionId:
|
||||
return tr("Session ID");
|
||||
case TicketsColumns::SeatNumber:
|
||||
return tr("Seat Number");
|
||||
case TicketsColumns::SoldAt:
|
||||
return tr("Sold At");
|
||||
default:
|
||||
return QVariant();
|
||||
}
|
||||
}
|
||||
return QSqlTableModel::headerData(section, orientation, role);
|
||||
}
|
||||
|
||||
QString TicketsModel::createMultiColumnFilter(const QString &filter) const {
|
||||
QStringList conditions;
|
||||
|
||||
// WARNING: Does not filter these models transmitted through the data method,
|
||||
// such as QDatetime
|
||||
|
||||
using Columns = TicketsColumns;
|
||||
QStringList columns = {columnName(Columns::Id),
|
||||
columnName(Columns::SessionId),
|
||||
columnName(Columns::SeatNumber)};
|
||||
|
||||
#ifndef NO_DATE_TIME_SEARCH
|
||||
columns.append(columnName(Columns::SoldAt));
|
||||
#endif
|
||||
|
||||
for (const QString &column : columns) {
|
||||
conditions.append(QString("%1 LIKE '%%2%'").arg(column).arg(filter));
|
||||
}
|
||||
|
||||
return conditions.join(" OR ");
|
||||
}
|
||||
Reference in New Issue
Block a user