Initial commit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
#ifndef BASE_SQL_TABLE_MODEL_H
|
||||
#define BASE_SQL_TABLE_MODEL_H
|
||||
|
||||
#include "table_info_sqlite.h"
|
||||
#include <QSqlRelationalTableModel>
|
||||
|
||||
class BaseSqlTableModel : public QSqlRelationalTableModel {
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
TableInfoSQLite tableInfo_;
|
||||
|
||||
public:
|
||||
explicit BaseSqlTableModel(QObject *parent = nullptr,
|
||||
QSqlDatabase database = QSqlDatabase());
|
||||
|
||||
virtual ~BaseSqlTableModel() = default;
|
||||
|
||||
virtual QVariant data(const QModelIndex &index,
|
||||
int role = Qt::DisplayRole) const override;
|
||||
|
||||
virtual void setTable(const QString &databaseTableName) override;
|
||||
|
||||
virtual inline QString columnName(int index) const;
|
||||
|
||||
virtual inline QStringList columnNames() const;
|
||||
|
||||
virtual inline bool isCompleteDatabaseFiltering() const = 0;
|
||||
|
||||
virtual inline int columnIndex(const QString &columnName) const;
|
||||
|
||||
void resetFilter();
|
||||
|
||||
void setMultiColumnFilter(const QString &filter);
|
||||
|
||||
protected:
|
||||
virtual QString createMultiColumnFilter(const QString &filter) const;
|
||||
|
||||
public slots:
|
||||
// WARNING: I was too lazy and decided that I could do with one slot
|
||||
|
||||
// Refreshes the whole table
|
||||
bool refreshAll();
|
||||
|
||||
// Here can be additional slots
|
||||
// refreshByRowNumber(int row) = 0;
|
||||
// refreshRange(int from, int to) = 0;
|
||||
// refreshByFilter(QString filter) = 0;
|
||||
// etc
|
||||
|
||||
private:
|
||||
QString createUpdateFilterMessage(const QString &filter) const;
|
||||
};
|
||||
|
||||
QString BaseSqlTableModel::columnName(int index) const {
|
||||
return tableInfo_.columnName(index);
|
||||
}
|
||||
|
||||
QStringList BaseSqlTableModel::columnNames() const {
|
||||
return tableInfo_.columnNames();
|
||||
}
|
||||
|
||||
int BaseSqlTableModel::columnIndex(const QString &columnName) const {
|
||||
return tableInfo_.columnIndex(columnName);
|
||||
}
|
||||
|
||||
#endif // BASE_SQL_TABLE_MODEL_H
|
||||
Reference in New Issue
Block a user