QxOrm  1.5.0
C++ Object Relational Mapping library

qx::IxModel : interface to manage Qt model/view architecture with classes registered into QxOrm context (Qt widgets and/or QML views) More...

#include <IxModel.h>

List of all members.

Public Types

enum  e_auto_update_database { e_no_auto_update, e_auto_update_on_field_change }
typedef QHash< QString, IxModel * > type_relation_by_name
typedef QList
< type_relation_by_name
type_lst_relation_by_name
typedef QHash< IxModel
*, QPair< int, QString > > 
type_child_to_its_relation

Public Member Functions

 IxModel (QObject *parent=0)
virtual ~IxModel ()
IxClassgetClass () const
IxClassgetModelClass () const
IxCollectiongetCollection () const
QSqlDatabase getDatabase () const
QSqlError getLastError () const
Q_INVOKABLE QString getLastErrorAsString () const
Q_INVOKABLE QStringList getListOfColumns () const
QHash< QString, QString > getListOfHeaders () const
 Obsolete : use headerData() instead.
IxDataMembergetDataMember (int column) const
Q_INVOKABLE QString getDataMemberKey (int column) const
Q_INVOKABLE int getRowCount () const
Q_INVOKABLE QVariant getModelValue (int row, const QString &column) const
Q_INVOKABLE int getColumnIndex (const QString &sColumnName) const
Q_INVOKABLE int getAutoUpdateDatabase_ () const
e_auto_update_database getAutoUpdateDatabase () const
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 empty row at the end of the table to insert quickly new items (for example, same style like QxEntityEditor list of properties/relationships)
Q_INVOKABLE QVariant getCustomProperty (const QString &key) const
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 dumpModel (bool bJsonFormat=true) const
Q_INVOKABLE QObject * cloneModel ()
void setDatabase (const QSqlDatabase &db)
Q_INVOKABLE void setListOfColumns (const QStringList &lst)
void setListOfHeaders (const QHash< QString, QString > &lst)
 Obsolete : use setHeaderData() instead.
Q_INVOKABLE bool setModelValue (int row, const QString &column, const QVariant &value)
void setParentModel (IxModel *pParent)
Q_INVOKABLE void setAutoUpdateDatabase_ (int i)
void setAutoUpdateDatabase (e_auto_update_database e)
virtual Q_INVOKABLE void setShowEmptyLine (bool b)=0
Q_INVOKABLE void setCustomProperty (const QString &key, const QVariant &val)
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() method.
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() method.
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 type.
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 QVariantList type.
virtual long qxCount (const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxCount (long &lCount, const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxFetchById (const QVariant &id, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxFetchAll (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxFetchByQuery (const qx::QxSqlQuery &query, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxFetchRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxInsert (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL, bool bUseExecBatch=false)=0
virtual QSqlError qxInsertRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxUpdate (const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL, bool bUseExecBatch=false)=0
virtual QSqlError qxUpdateRow (int row, const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxSave (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxSaveRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxSaveRowData (int row, const QStringList &column=QStringList(), QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDeleteById (const QVariant &id, QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDeleteAll (QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDeleteByQuery (const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDeleteRow (int row, QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDestroyById (const QVariant &id, QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDestroyAll (QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDestroyByQuery (const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxDestroyRow (int row, QSqlDatabase *pDatabase=NULL)=0
virtual QSqlError qxExecuteQuery (qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)=0
virtual qx_bool qxExist (const QVariant &id, QSqlDatabase *pDatabase=NULL)=0
virtual qx::QxInvalidValueX qxValidate (const QStringList &groups=QStringList())=0
virtual qx::QxInvalidValueX qxValidateRow (int row, const QStringList &groups=QStringList())=0
Q_INVOKABLE int qxCount_ (const QString &sQuery)
Q_INVOKABLE bool qxFetchById_ (const QVariant &id, const QStringList &relation=QStringList())
Q_INVOKABLE bool qxFetchAll_ (const QStringList &relation=QStringList())
Q_INVOKABLE bool qxFetchByQuery_ (const QString &sQuery, const QStringList &relation=QStringList())
Q_INVOKABLE bool qxFetchRow_ (int row, const QStringList &relation=QStringList())
Q_INVOKABLE bool qxInsert_ (const QStringList &relation=QStringList(), bool bUseExecBatch=false)
Q_INVOKABLE bool qxInsertRow_ (int row, const QStringList &relation=QStringList())
Q_INVOKABLE bool qxUpdate_ (const QString &sQuery, const QStringList &relation=QStringList(), bool bUseExecBatch=false)
Q_INVOKABLE bool qxUpdateRow_ (int row, const QString &sQuery, const QStringList &relation=QStringList())
Q_INVOKABLE bool qxSave_ (const QStringList &relation=QStringList())
Q_INVOKABLE bool qxSaveRow_ (int row, const QStringList &relation=QStringList())
Q_INVOKABLE bool qxDeleteById_ (const QVariant &id)
Q_INVOKABLE bool qxDeleteAll_ ()
Q_INVOKABLE bool qxDeleteByQuery_ (const QString &sQuery)
Q_INVOKABLE bool qxDeleteRow_ (int row)
Q_INVOKABLE bool qxDestroyById_ (const QVariant &id)
Q_INVOKABLE bool qxDestroyAll_ ()
Q_INVOKABLE bool qxDestroyByQuery_ (const QString &sQuery)
Q_INVOKABLE bool qxDestroyRow_ (int row)
Q_INVOKABLE bool qxExecuteQuery_ (const QString &sQuery)
Q_INVOKABLE bool qxExist_ (const QVariant &id)
Q_INVOKABLE QString qxValidate_ (const QStringList &groups=QStringList())
Q_INVOKABLE QString qxValidateRow_ (int row, const QStringList &groups=QStringList())
QSqlError saveChildRelations (IxModel *pChild)
QVariant getIdFromChild (IxModel *pChild) const
 Used to save foreign key in a nested model.
QPair< int, QString > getChildPosition (IxModel *pChild) const
Q_INVOKABLE void clear (bool bUpdateColumns=false)
virtual QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const
virtual bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
virtual int rowCount (const QModelIndex &parent=QModelIndex()) const
virtual int columnCount (const QModelIndex &parent=QModelIndex()) const
virtual QModelIndex index (int row, int column, const QModelIndex &parent=QModelIndex()) const
virtual QModelIndex parent (const QModelIndex &index) const
virtual bool hasChildren (const QModelIndex &parent=QModelIndex()) const
virtual QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
virtual Qt::ItemFlags flags (const QModelIndex &index) const
virtual Qt::DropActions supportedDropActions () const
virtual bool removeRows (int row, int count, const QModelIndex &parent=QModelIndex())
virtual bool setHeaderData (int section, Qt::Orientation orientation, const QVariant &value, int role=Qt::EditRole)
bool setHeaderData (const QString &sColumnName, const QVariant &value, int role=Qt::EditRole)
virtual QHash< int, QByteArray > roleNames () const
virtual Qt::DropActions supportedDragActions () const

Protected Member Functions

void raiseEvent_headerDataChanged (Qt::Orientation orientation, int first, int last)
void raiseEvent_dataChanged (const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles=QVector< int >())
void raiseEvent_layoutAboutToBeChanged (const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
void raiseEvent_layoutChanged (const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
virtual QObject * cloneModelImpl ()=0
virtual void dumpModelImpl (bool bJsonFormat) const =0
virtual void * getRowItemAsVoidPtr (int row) const =0
virtual bool isDirtyRow (int row) const =0
virtual void insertDirtyRowToModel ()=0
virtual void updateShowEmptyLine ()=0
virtual void syncNestedModel (int row, const QStringList &relation)
virtual void syncAllNestedModel (const QStringList &relation)
void syncNestedModelRecursive (IxModel *pNestedModel, const QStringList &relation)
void generateRoleNames ()
QSqlDatabase * database (QSqlDatabase *other)
IxModelgetChild (long row, const QString &relation)
void insertChild (long row, const QString &relation, IxModel *pChild)
void removeListOfChild (long row)
bool removeRowsGeneric (int row, int count)
bool removeRowsAutoUpdateOnFieldChange (int row, int count)
virtual QString toJson_Helper (int row) const =0
virtual bool fromJson_Helper (const QString &json, int row)=0
virtual QVariant getRelationshipValues_Helper (int row, const QString &relation, bool bLoadFromDatabase, const QString &sAppendRelations)=0
virtual bool setRelationshipValues_Helper (int row, const QString &relation, const QVariant &values)=0

Protected Attributes

IxClassm_pClass
 Class introspection registered into QxOrm context associated to the model.
IxClassm_pModelClass
 If model itself is registered into QxOrm context, then you can use this property to work with introspection engine.
IxDataMemberXm_pDataMemberX
 List of properties defined into QxOrm context.
IxDataMemberm_pDataMemberId
 Primary key (property id) defined into QxOrm context.
IxCollectionm_pCollection
 Interface to store a list of items.
QHash< int, QByteArray > m_lstRoleNames
 List of model's role names to expose data to QML.
QList< IxDataMember * > m_lstDataMember
 List of data member exposed by the model.
QHash< QString, int > m_lstDataMemberByKey
 List of data member key to get column index in model.
QHash< QString, QVariant > m_lstHeadersData
 List of headers data by role and data member key.
QStringList m_lstColumns
 List of columns exposed by the model (if empty, all columns)
QSqlDatabase m_database
 Database connexion to execute SQL queries (if empty, default database connexion)
QSqlError m_lastError
 Last SQL error.
IxModelm_pParent
 Parent model, NULL if current model is the root model.
type_lst_relation_by_name m_lstChild
 List of child model : QxEntityEditor uses this property to manage relationships and create complex data structure.
type_child_to_its_relation m_hChild
 Reverse link to m_lstChild, used in setData() to save relations.
e_auto_update_database m_eAutoUpdateDatabase
 Auto-update database on field change (detected by the setData() method)
IxDataMemberm_pDataMemberRelationToParent
 The data member holding relationship to its parent model (if one exists), used only by nested models.
long m_lManualInsertIndex
 Index to insert manually items to the collection.
QHash< QString, QVariant > m_hCustomProperties
 Use this generic hash-table to define extra-properties in your custom classes which inherit from qx::IxModel interface (instead of creating new properties) ==> this will ensure that sizeof(qx::IxModel) == sizeof(YourCustomClass), this is important with nested models feature.

Friends

struct qx::model_view::detail::QxNestedModel
struct qx::model_view::detail::QxNestedModel_Generic
struct qx::model_view::detail::QxNestedModel_Container

Detailed Description

qx::IxModel : interface to manage Qt model/view architecture with classes registered into QxOrm context (Qt widgets and/or QML views)

QxModelView module provides an easy way to work with Qt model/view engine with all classes registered into QxOrm context :

  • Qt widgets : QTableView or QListView for example to display/modify a database table content ;
  • QML : each property defined in QxOrm context is exposed to QML engine : QxModelView module makes easier integration between QML and databases.

qx::IxModel interface provides a generic way for all models linked to persistents classes registered into QxOrm context. All methods of this class prefixed by qx call functions from qx::dao namespace and then communicate with database.

The qxBlogModelView sample project in ./test/ directory of QxOrm package shows how to create quickly a model and associate it to the Qt model/view engine (first with a Qt widget, then with a QML view).

1- Here is an example to display/modify data from 'author' table (go to qxBlog tutorial for 'author' class definition) in a QTableView :

// Create a model and fetch all data from database
qx::IxModel * pModel = new qx::QxModel<author>();
pModel->qxFetchAll();

// Associate the model to a QTableView and display it
QTableView tableView;
tableView.setModel(pModel);
tableView.show();

2- Here is another example in QML (with Qt5, QxModelView module works fine with Qt4 too) :

// Create a model and fetch all data from database
qx::IxModel * pModel = new qx::QxModel<author>();
pModel->qxFetchAll();

// Associate the model to a QML view and display it
QQuickView qmlView;
qmlView.rootContext()->setContextProperty("myModel", pModel);
qmlView.setSource(QUrl("qrc:/documents/main.qml"));
qmlView.show();

And here is the 'main.qml' file content :

import QtQuick 2.1
import QtQuick.Controls 1.0

Item {
   width: 400
   height: 300
   Row {
      height: 20
      spacing: 20
      Button {
         text: "Clear"
         onClicked: myModel.clear()
      }
      Button {
         text: "Fetch All"
         onClicked: myModel.qxFetchAll_()
      }
      Button {
         text: "Save"
         onClicked: myModel.qxSave_()
      }
   }
   ListView {
      y: 30
      height: 270
      model: myModel
      delegate: Row {
         height: 20
         spacing: 10
         Text { text: "id: " + author_id }
         TextField {
            text: name
            onTextChanged: name = text
         }
      }
   }
}

As you can see in the 'main.qml' file, 'author_id' and 'name' properties of 'author' model ('myModel' variable) can be automatically read and write (because they are registered into QxOrm context). Moreover, qx::IxModel interface provides a list of methods for QML side (Q_INVOKABLE) to communicate with database : for example, the 'Save' button will save the model in database without having to write a C++ function.

Note : a QxEntityEditor plugin generates automatically the code to manage models with relationships. Then it is possible to work with nested C++ models.

Definition at line 162 of file IxModel.h.


Member Typedef Documentation

typedef QHash<IxModel *, QPair<int, QString> > qx::IxModel::type_child_to_its_relation

Definition at line 177 of file IxModel.h.

Definition at line 176 of file IxModel.h.

typedef QHash<QString, IxModel *> qx::IxModel::type_relation_by_name

Definition at line 175 of file IxModel.h.


Member Enumeration Documentation

Enumerator:
e_no_auto_update 
e_auto_update_on_field_change 

Definition at line 173 of file IxModel.h.


Constructor & Destructor Documentation

qx::IxModel::IxModel ( QObject *  parent = 0)
virtual qx::IxModel::~IxModel ( ) [virtual]

Member Function Documentation

Q_INVOKABLE void qx::IxModel::clear ( bool  bUpdateColumns = false)
Q_INVOKABLE QObject* qx::IxModel::cloneModel ( )
virtual QObject* qx::IxModel::cloneModelImpl ( ) [protected, pure virtual]
virtual int qx::IxModel::columnCount ( const QModelIndex &  parent = QModelIndex()) const [virtual]
virtual QVariant qx::IxModel::data ( const QModelIndex &  index,
int  role = Qt::DisplayRole 
) const [virtual]
QSqlDatabase* qx::IxModel::database ( QSqlDatabase *  other) [protected]
Q_INVOKABLE void qx::IxModel::dumpModel ( bool  bJsonFormat = true) const
virtual void qx::IxModel::dumpModelImpl ( bool  bJsonFormat) const [protected, pure virtual]
virtual Qt::ItemFlags qx::IxModel::flags ( const QModelIndex &  index) const [virtual]
Q_INVOKABLE bool qx::IxModel::fromJson ( const QString &  json,
int  row = -1 
)

On QML side, use JSON.stringify() on a javascript object before calling this qx::IxModel::fromJson() method.

virtual bool qx::IxModel::fromJson_Helper ( const QString &  json,
int  row 
) [protected, pure virtual]
void qx::IxModel::generateRoleNames ( ) [protected]
e_auto_update_database qx::IxModel::getAutoUpdateDatabase ( ) const
Q_INVOKABLE int qx::IxModel::getAutoUpdateDatabase_ ( ) const
IxModel* qx::IxModel::getChild ( long  row,
const QString &  relation 
) [protected]
QPair<int, QString> qx::IxModel::getChildPosition ( IxModel pChild) const
IxClass* qx::IxModel::getClass ( ) const
IxCollection* qx::IxModel::getCollection ( ) const
Q_INVOKABLE int qx::IxModel::getColumnIndex ( const QString &  sColumnName) const
Q_INVOKABLE QVariant qx::IxModel::getCustomProperty ( const QString &  key) const
QSqlDatabase qx::IxModel::getDatabase ( ) const
IxDataMember* qx::IxModel::getDataMember ( int  column) const
Q_INVOKABLE QString qx::IxModel::getDataMemberKey ( int  column) const
QVariant qx::IxModel::getIdFromChild ( IxModel pChild) const

Used to save foreign key in a nested model.

QSqlError qx::IxModel::getLastError ( ) const
Q_INVOKABLE QString qx::IxModel::getLastErrorAsString ( ) const
Q_INVOKABLE QStringList qx::IxModel::getListOfColumns ( ) const
QHash<QString, QString> qx::IxModel::getListOfHeaders ( ) const

Obsolete : use headerData() instead.

IxClass* qx::IxModel::getModelClass ( ) const
Q_INVOKABLE QVariant qx::IxModel::getModelValue ( int  row,
const QString &  column 
) const
Q_INVOKABLE QObject* qx::IxModel::getParentModel ( ) const

Can be used to figure out whether this model has a parent model (used only by nested models)

Q_INVOKABLE QVariant qx::IxModel::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 type.

virtual QVariant qx::IxModel::getRelationshipValues_Helper ( int  row,
const QString &  relation,
bool  bLoadFromDatabase,
const QString &  sAppendRelations 
) [protected, pure virtual]
Q_INVOKABLE int qx::IxModel::getRowCount ( ) const
virtual void* qx::IxModel::getRowItemAsVoidPtr ( int  row) const [protected, pure virtual]
virtual Q_INVOKABLE bool qx::IxModel::getShowEmptyLine ( ) const [pure virtual]

Can be useful when a model is displayed in a table (QTableView for example) to add automatically an empty row at the end of the table to insert quickly new items (for example, same style like QxEntityEditor list of properties/relationships)

virtual bool qx::IxModel::hasChildren ( const QModelIndex &  parent = QModelIndex()) const [virtual]
virtual QVariant qx::IxModel::headerData ( int  section,
Qt::Orientation  orientation,
int  role = Qt::DisplayRole 
) const [virtual]
virtual QModelIndex qx::IxModel::index ( int  row,
int  column,
const QModelIndex &  parent = QModelIndex() 
) const [virtual]
void qx::IxModel::insertChild ( long  row,
const QString &  relation,
IxModel pChild 
) [protected]
virtual void qx::IxModel::insertDirtyRowToModel ( ) [protected, pure virtual]
virtual bool qx::IxModel::isDirtyRow ( int  row) const [protected, pure virtual]
virtual QModelIndex qx::IxModel::parent ( const QModelIndex &  index) const [virtual]
virtual long qx::IxModel::qxCount ( const qx::QxSqlQuery query = qx::QxSqlQuery(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
virtual QSqlError qx::IxModel::qxCount ( long &  lCount,
const qx::QxSqlQuery query = qx::QxSqlQuery(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE int qx::IxModel::qxCount_ ( const QString &  sQuery)
virtual QSqlError qx::IxModel::qxDeleteAll ( QSqlDatabase *  pDatabase = NULL) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxDeleteAll_ ( )
virtual QSqlError qx::IxModel::qxDeleteById ( const QVariant &  id,
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxDeleteById_ ( const QVariant &  id)
virtual QSqlError qx::IxModel::qxDeleteByQuery ( const qx::QxSqlQuery query,
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxDeleteByQuery_ ( const QString &  sQuery)
virtual QSqlError qx::IxModel::qxDeleteRow ( int  row,
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxDeleteRow_ ( int  row)
virtual QSqlError qx::IxModel::qxDestroyAll ( QSqlDatabase *  pDatabase = NULL) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxDestroyAll_ ( )
virtual QSqlError qx::IxModel::qxDestroyById ( const QVariant &  id,
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxDestroyById_ ( const QVariant &  id)
virtual QSqlError qx::IxModel::qxDestroyByQuery ( const qx::QxSqlQuery query,
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxDestroyByQuery_ ( const QString &  sQuery)
virtual QSqlError qx::IxModel::qxDestroyRow ( int  row,
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxDestroyRow_ ( int  row)
virtual QSqlError qx::IxModel::qxExecuteQuery ( qx::QxSqlQuery query,
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxExecuteQuery_ ( const QString &  sQuery)
virtual qx_bool qx::IxModel::qxExist ( const QVariant &  id,
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxExist_ ( const QVariant &  id)
virtual QSqlError qx::IxModel::qxFetchAll ( const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxFetchAll_ ( const QStringList &  relation = QStringList())
virtual QSqlError qx::IxModel::qxFetchById ( const QVariant &  id,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxFetchById_ ( const QVariant &  id,
const QStringList &  relation = QStringList() 
)
virtual QSqlError qx::IxModel::qxFetchByQuery ( const qx::QxSqlQuery query,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxFetchByQuery_ ( const QString &  sQuery,
const QStringList &  relation = QStringList() 
)
virtual QSqlError qx::IxModel::qxFetchRow ( int  row,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxFetchRow_ ( int  row,
const QStringList &  relation = QStringList() 
)
virtual QSqlError qx::IxModel::qxInsert ( const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL,
bool  bUseExecBatch = false 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxInsert_ ( const QStringList &  relation = QStringList(),
bool  bUseExecBatch = false 
)
virtual QSqlError qx::IxModel::qxInsertRow ( int  row,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxInsertRow_ ( int  row,
const QStringList &  relation = QStringList() 
)
virtual QSqlError qx::IxModel::qxSave ( const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxSave_ ( const QStringList &  relation = QStringList())
virtual QSqlError qx::IxModel::qxSaveRow ( int  row,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxSaveRow_ ( int  row,
const QStringList &  relation = QStringList() 
)
virtual QSqlError qx::IxModel::qxSaveRowData ( int  row,
const QStringList &  column = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
virtual QSqlError qx::IxModel::qxUpdate ( const qx::QxSqlQuery query = qx::QxSqlQuery(),
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL,
bool  bUseExecBatch = false 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxUpdate_ ( const QString &  sQuery,
const QStringList &  relation = QStringList(),
bool  bUseExecBatch = false 
)
virtual QSqlError qx::IxModel::qxUpdateRow ( int  row,
const qx::QxSqlQuery query = qx::QxSqlQuery(),
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [pure virtual]
Q_INVOKABLE bool qx::IxModel::qxUpdateRow_ ( int  row,
const QString &  sQuery,
const QStringList &  relation = QStringList() 
)
virtual qx::QxInvalidValueX qx::IxModel::qxValidate ( const QStringList &  groups = QStringList()) [pure virtual]
Q_INVOKABLE QString qx::IxModel::qxValidate_ ( const QStringList &  groups = QStringList())
virtual qx::QxInvalidValueX qx::IxModel::qxValidateRow ( int  row,
const QStringList &  groups = QStringList() 
) [pure virtual]
Q_INVOKABLE QString qx::IxModel::qxValidateRow_ ( int  row,
const QStringList &  groups = QStringList() 
)
void qx::IxModel::raiseEvent_dataChanged ( const QModelIndex &  topLeft,
const QModelIndex &  bottomRight,
const QVector< int > &  roles = QVector< int >() 
) [protected]
void qx::IxModel::raiseEvent_headerDataChanged ( Qt::Orientation  orientation,
int  first,
int  last 
) [protected]
void qx::IxModel::raiseEvent_layoutAboutToBeChanged ( const QList< QPersistentModelIndex > &  parents = QList< QPersistentModelIndex >(),
QAbstractItemModel::LayoutChangeHint  hint = QAbstractItemModel::NoLayoutChangeHint 
) [protected]
void qx::IxModel::raiseEvent_layoutChanged ( const QList< QPersistentModelIndex > &  parents = QList< QPersistentModelIndex >(),
QAbstractItemModel::LayoutChangeHint  hint = QAbstractItemModel::NoLayoutChangeHint 
) [protected]
void qx::IxModel::removeListOfChild ( long  row) [protected]
virtual bool qx::IxModel::removeRows ( int  row,
int  count,
const QModelIndex &  parent = QModelIndex() 
) [virtual]
bool qx::IxModel::removeRowsAutoUpdateOnFieldChange ( int  row,
int  count 
) [protected]
bool qx::IxModel::removeRowsGeneric ( int  row,
int  count 
) [protected]
virtual QHash<int, QByteArray> qx::IxModel::roleNames ( ) const [virtual]
virtual int qx::IxModel::rowCount ( const QModelIndex &  parent = QModelIndex()) const [virtual]
QSqlError qx::IxModel::saveChildRelations ( IxModel pChild)
void qx::IxModel::setAutoUpdateDatabase ( e_auto_update_database  e)
Q_INVOKABLE void qx::IxModel::setAutoUpdateDatabase_ ( int  i)
Q_INVOKABLE void qx::IxModel::setCustomProperty ( const QString &  key,
const QVariant &  val 
)
virtual bool qx::IxModel::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
) [virtual]
void qx::IxModel::setDatabase ( const QSqlDatabase &  db)
virtual bool qx::IxModel::setHeaderData ( int  section,
Qt::Orientation  orientation,
const QVariant &  value,
int  role = Qt::EditRole 
) [virtual]
bool qx::IxModel::setHeaderData ( const QString &  sColumnName,
const QVariant &  value,
int  role = Qt::EditRole 
)
Q_INVOKABLE void qx::IxModel::setListOfColumns ( const QStringList &  lst)
void qx::IxModel::setListOfHeaders ( const QHash< QString, QString > &  lst)

Obsolete : use setHeaderData() instead.

Q_INVOKABLE bool qx::IxModel::setModelValue ( int  row,
const QString &  column,
const QVariant &  value 
)
void qx::IxModel::setParentModel ( IxModel pParent)
Q_INVOKABLE bool qx::IxModel::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 QVariantList type.

virtual bool qx::IxModel::setRelationshipValues_Helper ( int  row,
const QString &  relation,
const QVariant &  values 
) [protected, pure virtual]
virtual Q_INVOKABLE void qx::IxModel::setShowEmptyLine ( bool  b) [pure virtual]
virtual Qt::DropActions qx::IxModel::supportedDragActions ( ) const [virtual]
virtual Qt::DropActions qx::IxModel::supportedDropActions ( ) const [virtual]
virtual void qx::IxModel::syncAllNestedModel ( const QStringList &  relation) [protected, virtual]
virtual void qx::IxModel::syncNestedModel ( int  row,
const QStringList &  relation 
) [protected, virtual]
void qx::IxModel::syncNestedModelRecursive ( IxModel pNestedModel,
const QStringList &  relation 
) [protected]
Q_INVOKABLE QString qx::IxModel::toJson ( int  row = -1) const

On QML side, use JSON.parse() to create a javascript object after calling this qx::IxModel::toJson() method.

virtual QString qx::IxModel::toJson_Helper ( int  row) const [protected, pure virtual]
virtual void qx::IxModel::updateShowEmptyLine ( ) [protected, pure virtual]

Friends And Related Function Documentation

friend struct qx::model_view::detail::QxNestedModel [friend]

Definition at line 167 of file IxModel.h.

Definition at line 169 of file IxModel.h.

Definition at line 168 of file IxModel.h.


Member Data Documentation

QSqlDatabase qx::IxModel::m_database [protected]

Database connexion to execute SQL queries (if empty, default database connexion)

Definition at line 191 of file IxModel.h.

Auto-update database on field change (detected by the setData() method)

Definition at line 196 of file IxModel.h.

Reverse link to m_lstChild, used in setData() to save relations.

Definition at line 195 of file IxModel.h.

QHash<QString, QVariant> qx::IxModel::m_hCustomProperties [protected]

Use this generic hash-table to define extra-properties in your custom classes which inherit from qx::IxModel interface (instead of creating new properties) ==> this will ensure that sizeof(qx::IxModel) == sizeof(YourCustomClass), this is important with nested models feature.

Definition at line 199 of file IxModel.h.

QSqlError qx::IxModel::m_lastError [protected]

Last SQL error.

Definition at line 192 of file IxModel.h.

Index to insert manually items to the collection.

Definition at line 198 of file IxModel.h.

List of child model : QxEntityEditor uses this property to manage relationships and create complex data structure.

Definition at line 194 of file IxModel.h.

QStringList qx::IxModel::m_lstColumns [protected]

List of columns exposed by the model (if empty, all columns)

Definition at line 190 of file IxModel.h.

List of data member exposed by the model.

Definition at line 187 of file IxModel.h.

QHash<QString, int> qx::IxModel::m_lstDataMemberByKey [protected]

List of data member key to get column index in model.

Definition at line 188 of file IxModel.h.

QHash<QString, QVariant> qx::IxModel::m_lstHeadersData [protected]

List of headers data by role and data member key.

Definition at line 189 of file IxModel.h.

QHash<int, QByteArray> qx::IxModel::m_lstRoleNames [protected]

List of model's role names to expose data to QML.

Definition at line 186 of file IxModel.h.

Class introspection registered into QxOrm context associated to the model.

Definition at line 181 of file IxModel.h.

Interface to store a list of items.

Definition at line 185 of file IxModel.h.

Primary key (property id) defined into QxOrm context.

Definition at line 184 of file IxModel.h.

The data member holding relationship to its parent model (if one exists), used only by nested models.

Definition at line 197 of file IxModel.h.

List of properties defined into QxOrm context.

Definition at line 183 of file IxModel.h.

If model itself is registered into QxOrm context, then you can use this property to work with introspection engine.

Definition at line 182 of file IxModel.h.

Parent model, NULL if current model is the root model.

Definition at line 193 of file IxModel.h.


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