46#ifdef _QX_NO_PRECOMPILED_HEADER
52#include <QtCore/qabstractitemmodel.h>
224 Q_INVOKABLE
void dumpModel(
bool bJsonFormat =
true)
const;
230 Q_INVOKABLE
bool setModelValue(
int row,
const QString & column,
const QVariant & value);
237 Q_INVOKABLE QString
toJson(
int row = -1)
const;
238 Q_INVOKABLE
bool fromJson(
const QString & json,
int row = -1);
240 Q_INVOKABLE QVariant
getRelationshipValues(
int row,
const QString & relation,
bool bLoadFromDatabase =
false,
const QString & sAppendRelations = QString());
245 virtual QSqlError
qxFetchById(
const QVariant &
id,
const QStringList & relation = QStringList(), QSqlDatabase * pDatabase = NULL) = 0;
246 virtual QSqlError
qxFetchAll(
const QStringList & relation = QStringList(), QSqlDatabase * pDatabase = NULL) = 0;
248 virtual QSqlError
qxFetchRow(
int row,
const QStringList & relation = QStringList(), QSqlDatabase * pDatabase = NULL) = 0;
249 virtual QSqlError
qxInsert(
const QStringList & relation = QStringList(), QSqlDatabase * pDatabase = NULL,
bool bUseExecBatch =
false) = 0;
250 virtual QSqlError
qxInsertRow(
int row,
const QStringList & relation = QStringList(), QSqlDatabase * pDatabase = NULL) = 0;
253 virtual QSqlError
qxSave(
const QStringList & relation = QStringList(), QSqlDatabase * pDatabase = NULL) = 0;
254 virtual QSqlError
qxSaveRow(
int row,
const QStringList & relation = QStringList(), QSqlDatabase * pDatabase = NULL) = 0;
255 virtual QSqlError
qxSaveRowData(
int row,
const QStringList & column = QStringList(), QSqlDatabase * pDatabase = NULL) = 0;
256 virtual QSqlError
qxDeleteById(
const QVariant &
id, QSqlDatabase * pDatabase = NULL) = 0;
257 virtual QSqlError
qxDeleteAll(QSqlDatabase * pDatabase = NULL) = 0;
259 virtual QSqlError
qxDeleteRow(
int row, QSqlDatabase * pDatabase = NULL) = 0;
260 virtual QSqlError
qxDestroyById(
const QVariant &
id, QSqlDatabase * pDatabase = NULL) = 0;
263 virtual QSqlError
qxDestroyRow(
int row, QSqlDatabase * pDatabase = NULL) = 0;
265 virtual qx_bool qxExist(
const QVariant &
id, QSqlDatabase * pDatabase = NULL) = 0;
270 Q_INVOKABLE
bool qxFetchById_(
const QVariant &
id,
const QStringList & relation = QStringList());
271 Q_INVOKABLE
bool qxFetchAll_(
const QStringList & relation = QStringList());
272 Q_INVOKABLE
bool qxFetchByQuery_(
const QString & sQuery,
const QStringList & relation = QStringList());
273 Q_INVOKABLE
bool qxFetchRow_(
int row,
const QStringList & relation = QStringList());
274 Q_INVOKABLE
bool qxInsert_(
const QStringList & relation = QStringList(),
bool bUseExecBatch =
false);
275 Q_INVOKABLE
bool qxInsertRow_(
int row,
const QStringList & relation = QStringList());
276 Q_INVOKABLE
bool qxUpdate_(
const QString & sQuery,
const QStringList & relation = QStringList(),
bool bUseExecBatch =
false);
277 Q_INVOKABLE
bool qxUpdateRow_(
int row,
const QString & sQuery,
const QStringList & relation = QStringList());
278 Q_INVOKABLE
bool qxSave_(
const QStringList & relation = QStringList());
279 Q_INVOKABLE
bool qxSaveRow_(
int row,
const QStringList & relation = QStringList());
290 Q_INVOKABLE QString
qxValidate_(
const QStringList & groups = QStringList());
291 Q_INVOKABLE QString
qxValidateRow_(
int row,
const QStringList & groups = QStringList());
300#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
301 void raiseEvent_dataChanged(
const QModelIndex & topLeft,
const QModelIndex & bottomRight,
const QVector<int> & roles = QVector<int>());
302 void raiseEvent_layoutAboutToBeChanged(
const QList<QPersistentModelIndex> & parents = QList<QPersistentModelIndex>(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint);
303 void raiseEvent_layoutChanged(
const QList<QPersistentModelIndex> & parents = QList<QPersistentModelIndex>(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint);
305 void raiseEvent_dataChanged(
const QModelIndex & topLeft,
const QModelIndex & bottomRight);
306 void raiseEvent_layoutAboutToBeChanged();
307 void raiseEvent_layoutChanged();
312 Q_INVOKABLE
void clear(
bool bUpdateColumns =
false);
314 virtual QVariant
data(
const QModelIndex & index,
int role = Qt::DisplayRole)
const;
315 virtual bool setData(
const QModelIndex & index,
const QVariant & value,
int role = Qt::EditRole);
316 virtual int rowCount(
const QModelIndex & parent = QModelIndex())
const;
317 virtual int columnCount(
const QModelIndex & parent = QModelIndex())
const;
318 virtual QModelIndex
index(
int row,
int column,
const QModelIndex & parent = QModelIndex())
const;
319 virtual QModelIndex
parent(
const QModelIndex & index)
const;
320 virtual bool hasChildren(
const QModelIndex & parent = QModelIndex())
const;
321 virtual QVariant
headerData(
int section, Qt::Orientation orientation,
int role = Qt::DisplayRole)
const;
322 virtual Qt::ItemFlags
flags(
const QModelIndex & index)
const;
324 virtual bool removeRows(
int row,
int count,
const QModelIndex & parent = QModelIndex());
325 virtual bool setHeaderData(
int section, Qt::Orientation orientation,
const QVariant & value,
int role = Qt::EditRole);
326 bool setHeaderData(
const QString & sColumnName,
const QVariant & value,
int role = Qt::EditRole);
328#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
Common interface for all classes registered into QxOrm context.
Common interface for a list of IxDataMember class properties registered into QxOrm context (for examp...
Common interface for all relationships defined between 2 classes (or between 2 tables in database)
QxOrm thread-safe container (keep insertion order + quick access by index + quick access by key)
Provide template functions to map C++ class registered into QxOrm context with table database (ORM - ...
Define a user SQL query added to default SQL query builded by QxOrm library, and used by qx::dao::xxx...
Implementation of qx::validate<T>() function (validator engine)
qx::IxClass : common interface for all classes registered into QxOrm context
qx::IxCollection : common interface for all QxOrm containers qx::QxCollection<Key,...
qx::IxDataMember : common interface for all class properties registered into QxOrm context
qx::IxDataMemberX : common interface for a list of IxDataMember class properties registered into QxOr...
qx::IxModel : interface to manage Qt model/view architecture with classes registered into QxOrm conte...
virtual QHash< int, QByteArray > roleNames() const
void raiseEvent_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles=QVector< int >())
IxClass * getClass() const
Q_INVOKABLE bool qxDestroyById_(const QVariant &id)
Q_INVOKABLE bool setModelValue(int row, const QString &column, const QVariant &value)
virtual void * getRowItemAsVoidPtr(int row) const =0
void setAutoUpdateDatabase(e_auto_update_database e)
Q_INVOKABLE bool qxExist_(const QVariant &id)
virtual QSqlError qxDestroyAll(QSqlDatabase *pDatabase=NULL)=0
Q_INVOKABLE int getRowCount() const
virtual QSqlError qxDestroyByQuery(const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)=0
Q_INVOKABLE bool qxInsert_(const QStringList &relation=QStringList(), bool bUseExecBatch=false)
virtual QSqlError qxDeleteRow(int row, QSqlDatabase *pDatabase=NULL)=0
virtual bool fromJson_Helper(const QString &json, int row)=0
type_child_to_its_relation m_hChild
Reverse link to m_lstChild, used in setData() to save relations.
virtual QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
void syncNestedModelRecursive(IxModel *pNestedModel, const QStringList &relation)
virtual int columnCount(const QModelIndex &parent=QModelIndex()) const
Q_INVOKABLE bool qxSaveRow_(int row, const QStringList &relation=QStringList())
virtual qx::QxInvalidValueX qxValidateRow(int row, const QStringList &groups=QStringList())=0
virtual QSqlError qxFetchAll(const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDeleteByQuery(const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)=0
virtual QString toJson_Helper(int row) const =0
virtual QSqlError qxFetchByQuery(const qx::QxSqlQuery &query, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
QHash< QString, int > m_lstDataMemberByKey
List of data member key to get column index in model.
bool removeRowsAutoUpdateOnFieldChange(int row, int count)
Q_INVOKABLE void setAutoUpdateDatabase_(int i)
Q_INVOKABLE bool qxDeleteByQuery_(const QString &sQuery)
QHash< IxModel *, QPair< int, QString > > type_child_to_its_relation
QList< IxDataMember * > m_lstDataMember
List of data member exposed by the model.
virtual QSqlError qxSaveRow(int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDestroyRow(int row, QSqlDatabase *pDatabase=NULL)=0
Q_INVOKABLE void setCustomProperty(const QString &key, const QVariant &val)
Q_INVOKABLE bool qxFetchAll_(const QStringList &relation=QStringList())
Q_INVOKABLE void dumpModel(bool bJsonFormat=true) const
virtual void insertDirtyRowToModel()=0
QSqlDatabase m_database
Database connexion to execute SQL queries (if empty, default database connexion)
virtual qx::QxInvalidValueX qxValidate(const QStringList &groups=QStringList())=0
virtual QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
Q_INVOKABLE bool qxInsertRow_(int row, const QStringList &relation=QStringList())
void raiseEvent_layoutAboutToBeChanged(const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
QHash< QString, QVariant > m_lstHeadersData
List of headers data by role and data member key.
IxModel * m_pParent
Parent model, NULL if current model is the root model.
QSqlError m_lastError
Last SQL error.
virtual QSqlError qxFetchById(const QVariant &id, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
Q_INVOKABLE bool qxFetchById_(const QVariant &id, const QStringList &relation=QStringList())
Q_INVOKABLE QObject * getParentModel() const
Can be used to figure out whether this model has a parent model (used only by nested models)
Q_INVOKABLE void setListOfColumns(const QStringList &lst)
Q_INVOKABLE QVariant getModelValue(int row, const QString &column) const
virtual Qt::DropActions supportedDragActions() const
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
virtual QSqlError qxSaveRowData(int row, const QStringList &column=QStringList(), QSqlDatabase *pDatabase=NULL)=0
QVariant getIdFromChild(IxModel *pChild) const
Used to save foreign key in a nested model.
IxDataMemberX * m_pDataMemberX
List of properties defined into QxOrm context.
Q_INVOKABLE bool setRelationshipValues(int row, const QString &relation, const QVariant &values)
Depending on relationship type (1-1, 1-n, n-1, n-n) : values parameter can be a QVariantMap type or a...
IxModel(QObject *parent=0)
IxModel * getChild(long row, const QString &relation)
QList< type_relation_by_name > type_lst_relation_by_name
virtual bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
virtual bool setRelationshipValues_Helper(int row, const QString &relation, const QVariant &values)=0
IxCollection * m_pCollection
Interface to store a list of items.
Q_INVOKABLE bool qxDeleteAll_()
virtual bool hasChildren(const QModelIndex &parent=QModelIndex()) const
virtual Qt::DropActions supportedDropActions() const
virtual void dumpModelImpl(bool bJsonFormat) const =0
Q_INVOKABLE QStringList getListOfColumns() const
virtual void syncAllNestedModel(const QStringList &relation)
bool removeRowsGeneric(int row, int count)
IxClass * getModelClass() const
virtual long qxCount(const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)=0
bool setHeaderData(const QString &sColumnName, const QVariant &value, int role=Qt::EditRole)
virtual QSqlError qxInsertRow(int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
void raiseEvent_layoutChanged(const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
virtual QSqlError qxDeleteAll(QSqlDatabase *pDatabase=NULL)=0
IxClass * m_pClass
Class introspection registered into QxOrm context associated to the model.
IxDataMember * getDataMember(int column) const
Q_INVOKABLE int qxCount_(const QString &sQuery)
QSqlDatabase getDatabase() const
Q_INVOKABLE bool qxDeleteById_(const QVariant &id)
Q_INVOKABLE void clear(bool bUpdateColumns=false)
IxCollection * getCollection() const
QHash< int, QByteArray > m_lstRoleNames
List of model's role names to expose data to QML.
QStringList m_lstColumns
List of columns exposed by the model (if empty, all columns)
Q_INVOKABLE bool qxFetchByQuery_(const QString &sQuery, const QStringList &relation=QStringList())
QSqlDatabase * database(QSqlDatabase *other)
QHash< QString, QVariant > m_hCustomProperties
Use this generic hash-table to define extra-properties in your custom classes which inherit from qx::...
virtual bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex())
void setDatabase(const QSqlDatabase &db)
Q_INVOKABLE QString getDataMemberKey(int column) const
Q_INVOKABLE bool qxFetchRow_(int row, const QStringList &relation=QStringList())
virtual bool isDirtyRow(int row) const =0
virtual QVariant getRelationshipValues_Helper(int row, const QString &relation, bool bLoadFromDatabase, const QString &sAppendRelations)=0
IxClass * m_pModelClass
If model itself is registered into QxOrm context, then you can use this property to work with introsp...
Q_INVOKABLE QVariant getRelationshipValues(int row, const QString &relation, bool bLoadFromDatabase=false, const QString &sAppendRelations=QString())
Depending on relationship type (1-1, 1-n, n-1, n-n) : can return a QVariantMap type or a QVariantList...
void insertChild(long row, const QString &relation, IxModel *pChild)
virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role=Qt::EditRole)
Q_INVOKABLE bool qxDeleteRow_(int row)
void setListOfHeaders(const QHash< QString, QString > &lst)
Obsolete : use setHeaderData() instead.
Q_INVOKABLE QString getLastErrorAsString() const
virtual QObject * cloneModelImpl()=0
QPair< int, QString > getChildPosition(IxModel *pChild) const
virtual QModelIndex parent(const QModelIndex &index) const
Q_INVOKABLE bool qxUpdateRow_(int row, const QString &sQuery, const QStringList &relation=QStringList())
Q_INVOKABLE int getAutoUpdateDatabase_() const
Q_INVOKABLE bool qxExecuteQuery_(const QString &sQuery)
void removeListOfChild(long row)
long m_lManualInsertIndex
Index to insert manually items to the collection.
Q_INVOKABLE QString qxValidate_(const QStringList &groups=QStringList())
Q_INVOKABLE QString qxValidateRow_(int row, const QStringList &groups=QStringList())
QHash< QString, IxModel * > type_relation_by_name
QHash< QString, QString > getListOfHeaders() const
Obsolete : use headerData() instead.
Q_INVOKABLE int getColumnIndex(const QString &sColumnName) const
void setParentModel(IxModel *pParent)
Q_INVOKABLE QVariant getCustomProperty(const QString &key) const
virtual void updateShowEmptyLine()=0
Q_INVOKABLE bool qxDestroyRow_(int row)
virtual QSqlError qxUpdate(const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL, bool bUseExecBatch=false)=0
QSqlError saveChildRelations(IxModel *pChild)
virtual Q_INVOKABLE void setShowEmptyLine(bool b)=0
Q_INVOKABLE bool fromJson(const QString &json, int row=-1)
On QML side, use JSON.stringify() on a javascript object before calling this qx::IxModel::fromJson() ...
QSqlError getLastError() const
type_lst_relation_by_name m_lstChild
List of child model : QxEntityEditor uses this property to manage relationships and create complex da...
virtual QSqlError qxDeleteById(const QVariant &id, QSqlDatabase *pDatabase=NULL)=0
IxDataMember * m_pDataMemberId
Primary key (property id) defined into QxOrm context.
void raiseEvent_headerDataChanged(Qt::Orientation orientation, int first, int last)
Q_INVOKABLE bool qxUpdate_(const QString &sQuery, const QStringList &relation=QStringList(), bool bUseExecBatch=false)
Q_INVOKABLE QString toJson(int row=-1) const
On QML side, use JSON.parse() to create a javascript object after calling this qx::IxModel::toJson() ...
virtual qx_bool qxExist(const QVariant &id, QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxSave(const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
e_auto_update_database getAutoUpdateDatabase() const
IxDataMember * m_pDataMemberRelationToParent
The data member holding relationship to its parent model (if one exists), used only by nested models.
virtual QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const
Q_INVOKABLE bool qxDestroyAll_()
virtual void syncNestedModel(int row, const QStringList &relation)
Q_INVOKABLE bool qxSave_(const QStringList &relation=QStringList())
virtual QSqlError qxUpdateRow(int row, const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual Q_INVOKABLE bool getShowEmptyLine() const =0
Can be useful when a model is displayed in a table (QTableView for example) to add automatically an e...
virtual QSqlError qxInsert(const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL, bool bUseExecBatch=false)=0
e_auto_update_database m_eAutoUpdateDatabase
Auto-update database on field change (detected by the setData() method)
Q_INVOKABLE bool qxDestroyByQuery_(const QString &sQuery)
virtual QSqlError qxExecuteQuery(qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDestroyById(const QVariant &id, QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxCount(long &lCount, const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxFetchRow(int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
Q_INVOKABLE QObject * cloneModel()
virtual Qt::ItemFlags flags(const QModelIndex &index) const
qx_bool : boolean type with code and description message when an error occured
qx::QxInvalidValueX : list of invalid values
qx::QxSqlQuery : define a user SQL query added to default SQL query builded by QxOrm library,...
Root namespace for all QxOrm library features.