QtMvvm  1.0.0
A mvvm oriented library for Qt, to create Projects for Widgets and Quick in parallel
Public Member Functions | List of all members
QtMvvm::InputViewFactory Class Reference

A factory class to generate input edit views by their type names. More...

#include <inputviewfactory.h>

+ Inheritance diagram for QtMvvm::InputViewFactory:

Public Member Functions

Q_INVOKABLE InputViewFactory (QObject *parent=nullptr)
 Default constructor.
 
virtual Q_INVOKABLE QUrl getInputUrl (const QByteArray &type, const QVariantMap &viewProperties)
 Find the input view URL of the given input type. More...
 
virtual Q_INVOKABLE QUrl getDelegate (const QByteArray &type, const QVariantMap &viewProperties)
 Find the input list delegate URL of the given input type. More...
 
template<typename TType >
void addSimpleInput (const QUrl &qmlFileUrl)
 Adds a new QML file to create views for the given type. More...
 
virtual Q_INVOKABLE void addSimpleInput (const QByteArray &type, const QUrl &qmlFileUrl)
 Adds a new QML file to create views for the given type. More...
 
template<typename TType >
void addSimpleDelegate (const QUrl &qmlFileUrl)
 Adds a new QML file to create delegates for the given type. More...
 
virtual Q_INVOKABLE void addSimpleDelegate (const QByteArray &type, const QUrl &qmlFileUrl)
 Adds a new QML file to create delegates for the given type. More...
 
template<typename TAliasType , typename TTargetType >
void addInputAlias ()
 Adds a type name alias for views. More...
 
virtual Q_INVOKABLE void addInputAlias (const QByteArray &alias, const QByteArray &targetType)
 Adds a type name alias for views. More...
 
template<typename TAliasType , typename TTargetType >
void addDelegateAlias ()
 Adds a type name alias for delegates. More...
 
virtual Q_INVOKABLE void addDelegateAlias (const QByteArray &alias, const QByteArray &targetType)
 Adds a type name alias for delegates. More...
 
- Public Member Functions inherited from QObject
 QObject (QObject *parent)
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
virtual const QMetaObjectmetaObject () const
 
QString objectName () const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const
 
bool isWindowType () const
 
bool signalsBlocked () const
 
bool blockSignals (bool block)
 
QThreadthread () const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const
 
const QObjectList & children () const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const
 
bool disconnect (const QObject *receiver, const char *method) const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const
 
void dumpObjectInfo () const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const
 
QList< QByteArraydynamicPropertyNames () const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const
 
bool inherits (const char *className) const
 
void deleteLater ()
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
- Properties inherited from QObject
 objectName
 

Detailed Description

A factory class to generate input edit views by their type names.

The factory is used by the QuickPresenter to create input views and delegates for various types. This is used to for example create the edits of input dialogs or for the list delegates of a SettingsView.

See also
QuickPresenter, QuickPresenter::inputViewFactory, MessageConfig::TypeInputDialog, QtMvvm::getInput, SettingsViewModel

Definition at line 15 of file inputviewfactory.h.

Member Function Documentation

◆ addDelegateAlias() [1/2]

template<typename TAliasType , typename TTargetType >
QtMvvm::InputViewFactory::addDelegateAlias ( )
inline

Adds a type name alias for delegates.

Template Parameters
TAliasTypeThe type to add as a new alias
TTargetTypeThe type the alias should be translated to

If an delegate view for the alias type is requested, one of the target type is created instead.

See also
InputViewFactory::getDelegate, InputViewFactory::addSimpleDelegate

Definition at line 76 of file inputviewfactory.h.

◆ addDelegateAlias() [2/2]

QtMvvm::InputViewFactory::addDelegateAlias ( const QByteArray alias,
const QByteArray targetType 
)
virtual

Adds a type name alias for delegates.

Parameters
aliasThe type to add as a new alias
targetTypeThe type the alias should be translated to

If an delegate view for the alias type is requested, one of the target type is created instead.

See also
InputViewFactory::getDelegate, InputViewFactory::addSimpleDelegate

◆ addInputAlias() [1/2]

template<typename TAliasType , typename TTargetType >
QtMvvm::InputViewFactory::addInputAlias ( )
inline

Adds a type name alias for views.

Template Parameters
TAliasTypeThe type to add as a new alias
TTargetTypeThe type the alias should be translated to

If an input view for the alias type is requested, one of the target type is created instead.

See also
InputViewFactory::getInputUrl, InputViewFactory::addSimpleInput

Definition at line 70 of file inputviewfactory.h.

◆ addInputAlias() [2/2]

QtMvvm::InputViewFactory::addInputAlias ( const QByteArray alias,
const QByteArray targetType 
)
virtual

Adds a type name alias for views.

Parameters
aliasThe type to add as a new alias
targetTypeThe type the alias should be translated to

If an input view for the alias type is requested, one of the target type is created instead.

See also
InputViewFactory::getInputUrl, InputViewFactory::addSimpleInput

◆ addSimpleDelegate() [1/2]

template<typename TType >
QtMvvm::InputViewFactory::addSimpleDelegate ( const QUrl qmlFileUrl)
inline

Adds a new QML file to create delegates for the given type.

Template Parameters
TTypeThe type to add a delegate view for
Parameters
qmlFileUrlThe URL of the QML file that contains the component

The qmlFileUrl must be a valid URL to a QML file with a displayable quick item that can be used as a delegate for a ListView.

See also
InputViewFactory::getDelegate, InputViewFactory::addDelegateAlias

Definition at line 64 of file inputviewfactory.h.

◆ addSimpleDelegate() [2/2]

QtMvvm::InputViewFactory::addSimpleDelegate ( const QByteArray type,
const QUrl qmlFileUrl 
)
virtual

Adds a new QML file to create delegates for the given type.

Parameters
typeThe type to add a delegate view for
qmlFileUrlThe URL of the QML file that contains the component

The qmlFileUrl must be a valid URL to a QML file with a displayable quick item that can be used as a delegate for a ListView.

See also
InputViewFactory::getDelegate, InputViewFactory::addDelegateAlias

◆ addSimpleInput() [1/2]

template<typename TType >
QtMvvm::InputViewFactory::addSimpleInput ( const QUrl qmlFileUrl)
inline

Adds a new QML file to create views for the given type.

Template Parameters
TTypeThe type to add an input view for
Parameters
qmlFileUrlThe URL of the QML file that contains the component

The qmlFileUrl must be a valid URL to a QML file with a displayable quick item. The item must have a property named inputValue that is used to read and write the edit data.

See also
InputViewFactory::getInputUrl, InputViewFactory::addInputAlias

Definition at line 58 of file inputviewfactory.h.

◆ addSimpleInput() [2/2]

QtMvvm::InputViewFactory::addSimpleInput ( const QByteArray type,
const QUrl qmlFileUrl 
)
virtual

Adds a new QML file to create views for the given type.

Parameters
typeThe type to add an input view for
qmlFileUrlThe URL of the QML file that contains the component

The qmlFileUrl must be a valid URL to a QML file with a displayable quick item. The item must have a property named inputValue that is used to read and write the edit data.

See also
InputViewFactory::getInputUrl, InputViewFactory::addInputAlias

◆ getDelegate()

QtMvvm::InputViewFactory::getDelegate ( const QByteArray type,
const QVariantMap &  viewProperties 
)
virtual

Find the input list delegate URL of the given input type.

Parameters
typeThe input type to create a delegate for
viewPropertiesA map with extra properties to be set on the delegate
Returns
A url to a QML component suitable for editing input of the given type, as a delegate

Delegates can be used to provide "editabel" list items for ListViews. (For example, the SettingsView makes use of them). Available roles are:

  • group
  • key
  • type
  • title
  • tooltip
  • delegateUrl
  • inputValue
  • properties

The factory first checks if the given type is registered as alias. If yes, it continues with the aliased type. Then it checks for a url registered as simple delegate exists for the given type and uses that one if present. If no simple delegate is set the default mapping for type to urls is used (See MessageConfig::TypeInputDialog for a full table of supported types). If no url can be found for a type, the MsgDelegate is returned, which will simply show an input of the given type. Thus, for all not explicitly supported delegate types, the getInputUrl() is used to find an edit for the dialog.

The viewProperties are used to setup the created delegate by settings them as properties on the delegate. For every key-value-pair in the map, QObject::setProperty is called on the delegate to set the property.

See also
MessageConfig::TypeInputDialog, InputViewFactory::addSimpleDelegate, InputViewFactory::addDelegateAlias, InputViewFactory::getInputUrl

◆ getInputUrl()

QtMvvm::InputViewFactory::getInputUrl ( const QByteArray type,
const QVariantMap &  viewProperties 
)
virtual

Find the input view URL of the given input type.

Parameters
typeThe input type to create a view for
viewPropertiesA map with extra properties to be set on the edit
Returns
A url to a QML component suitable for editing input of the given type

The factory first checks if the given type is registered as alias. If yes, it continues with the aliased type. Then it checks for a url registered as simple view exists for the given type and uses that one if present. If no simple view is set the default mapping for type to urls is used (See MessageConfig::TypeInputDialog for a full table of supported types). If no url can be found for a type, an invalid url is returned.

The viewProperties are used to setup the created view by settings them as properties on the view. For every key-value-pair in the map, QObject::setProperty is called on the view to set the property.

See also
MessageConfig::TypeInputDialog, InputViewFactory::addSimpleInput, InputViewFactory::addInputAlias, InputViewFactory::getDelegate

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