#include "base_sql_table_model.h" #include "QSqlError" #include "table_info_sqlite.h" #include #include BaseSqlTableModel::BaseSqlTableModel(QObject *parent, QSqlDatabase database) : QSqlRelationalTableModel(parent, database) {} bool BaseSqlTableModel::refreshAll() { beginResetModel(); bool result = select(); endResetModel(); result ? qInfo() << "Model of table with database name" << tableName() << "was refreshed successfully" : qWarning() << "Failed to refresh model: Database name of table:" << tableName() << "Error:" << lastError().text(); return result; } QVariant BaseSqlTableModel::data(const QModelIndex &index, int role) const { // if (role != Qt::DisplayRole) { return QSqlRelationalTableModel::data(index, role); // } // // QVariant value = QSqlRelationalTableModel::data(index, role); // // QDateTime datetime = QDateTime::fromString(value.toString(), Qt::ISODate); // // if (!datetime.isValid()) { // return value; // } // // QLocale locale; // QString formattedDateTime = locale.toString(datetime, QLocale::LongFormat); // // formattedDateTime[0] = formattedDateTime[0].toUpper(); // // return formattedDateTime; } void BaseSqlTableModel::setTable(const QString &databaseTableName) { tableInfo_.setDatabaseTableName(databaseTableName); QSqlRelationalTableModel::setTable(databaseTableName); } void BaseSqlTableModel::resetFilter() { qInfo().noquote() << createUpdateFilterMessage(""); setFilter(""); } void BaseSqlTableModel::setMultiColumnFilter(const QString &filter) { if (filter.isEmpty()) { resetFilter(); return; } const QString filterQuery = createMultiColumnFilter(filter); qInfo().noquote() << createUpdateFilterMessage(filter); setFilter(filterQuery); } QString BaseSqlTableModel::createMultiColumnFilter(const QString &filter) const { QStringList conditions; for (const QString &column : columnNames()) { conditions.append(QString("%1 LIKE '%%2%'").arg(column).arg(filter)); } return conditions.join(" OR "); } QString BaseSqlTableModel::createUpdateFilterMessage(const QString &filter) const { QString classInfoMessage = QString("Model manager class name: %1").arg(metaObject()->className()); QString tableInfoMessage = QString("Database table name: %1").arg(tableName()); QString filterInfoMessage = filter.isEmpty() ? "The filter was reset" : QString("Filter: \"%1\"").arg(filter); QString message = QString("The model was updated: %1: %2: %3") .arg(classInfoMessage) .arg(tableInfoMessage) .arg(filterInfoMessage); return message; }