Initial commit
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
#include "base_sql_table_model.h"
|
||||
|
||||
#include "QSqlError"
|
||||
#include "table_info_sqlite.h"
|
||||
#include <QDateTime>
|
||||
#include <QSqlQuery>
|
||||
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user