Krita Source Code Documentation
Loading...
Searching...
No Matches
TableModel Class Reference

The TableModel class handles boolean and datetime columns in a custom way. More...

#include <TableModel.h>

+ Inheritance diagram for TableModel:

Public Member Functions

void addBooleanColumn (int column)
 
void addDateTimeColumn (int column)
 
QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const override
 
Qt::ItemFlags flags (const QModelIndex &index) const override
 
bool setData (const QModelIndex &index, const QVariant &value, int role) override
 
 TableModel (QObject *parent=nullptr, QSqlDatabase db=QSqlDatabase())
 
 ~TableModel () override
 

Private Attributes

QVector< int > m_booleanColumns
 
QVector< int > m_dateTimeColumns
 

Detailed Description

The TableModel class handles boolean and datetime columns in a custom way.

Definition at line 40 of file TableModel.h.

Constructor & Destructor Documentation

◆ TableModel()

TableModel::TableModel ( QObject * parent = nullptr,
QSqlDatabase db = QSqlDatabase() )

Definition at line 91 of file TableModel.cpp.

92 : QSqlRelationalTableModel(parent, db)
93{
94 this->setEditStrategy(QSqlTableModel::OnFieldChange);
95}

◆ ~TableModel()

TableModel::~TableModel ( )
override

Definition at line 97 of file TableModel.cpp.

98{
99
100}

Member Function Documentation

◆ addBooleanColumn()

void TableModel::addBooleanColumn ( int column)

Definition at line 159 of file TableModel.cpp.

160{
161 m_booleanColumns << column;
162}
QVector< int > m_booleanColumns
Definition TableModel.h:56

References m_booleanColumns.

◆ addDateTimeColumn()

void TableModel::addDateTimeColumn ( int column)

Definition at line 154 of file TableModel.cpp.

155{
156 m_dateTimeColumns << column;
157}
QVector< int > m_dateTimeColumns
Definition TableModel.h:57

References m_dateTimeColumns.

◆ data()

QVariant TableModel::data ( const QModelIndex & index,
int role = Qt::DisplayRole ) const
override

Definition at line 102 of file TableModel.cpp.

103{
104 QVariant d = QSqlRelationalTableModel::data(index, role);
105 if (role == Qt::DisplayRole) {
106 if (m_dateTimeColumns.contains(index.column())) {
107 return QDateTime::fromSecsSinceEpoch(d.toInt()).toString();
108 } else if (m_booleanColumns.contains(index.column())) {
109 return {};
110 }
111 }
112 else if (role == Qt::CheckStateRole) {
113 if (m_booleanColumns.contains(index.column())) {
114 if (d.toInt() == 0) {
115 return Qt::Unchecked;
116 }
117 else {
118 return Qt::Checked;
119 }
120 }
121 return {};
122 }
123 return d;
124}

References m_booleanColumns, and m_dateTimeColumns.

◆ flags()

Qt::ItemFlags TableModel::flags ( const QModelIndex & index) const
override

Definition at line 144 of file TableModel.cpp.

145{
146 Qt::ItemFlags f = QSqlRelationalTableModel::flags((index));
147 if (m_booleanColumns.contains(index.column())) {
148 f |= Qt::ItemIsUserCheckable;
149 }
150 return f;
151
152}

References m_booleanColumns.

◆ setData()

bool TableModel::setData ( const QModelIndex & index,
const QVariant & value,
int role )
override

Definition at line 126 of file TableModel.cpp.

127{
128 if (m_booleanColumns.contains(index.column()) && role == Qt::CheckStateRole) {
129 // Writing the data when the check box is set to checked.
130 if (value == Qt::Checked) {
131 // Let's write the new value
132 return QSqlTableModel::setData(index, 1, Qt::EditRole);
133 // Writing the data when the check box is set to unchecked
134 } else if (value == Qt::Unchecked) {
135 // Let's write the new value
136 return QSqlTableModel::setData(index, 0, Qt::EditRole);
137 }
138 }
139
140 bool response = QSqlTableModel::setData(index, value, role);
141 return response;
142}
float value(const T *src, size_t ch)

References m_booleanColumns, and value().

Member Data Documentation

◆ m_booleanColumns

QVector<int> TableModel::m_booleanColumns
private

Definition at line 56 of file TableModel.h.

◆ m_dateTimeColumns

QVector<int> TableModel::m_dateTimeColumns
private

Definition at line 57 of file TableModel.h.


The documentation for this class was generated from the following files: