QtMvvm  1.1.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...
 
QTMVVM_REVISION_1 Q_INVOKABLE QString format (const QByteArray &type, const QString &formatString, const QVariant &value, const QVariantMap &viewProperties)
 Formats the value using the internally registered Formatter for the given 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 TType >
void addFormatter (Formatter *formatter)
 Adds a new Formatter to format delegate preview texts for the given type. More...
 
void addFormatter (const QByteArray &type, Formatter *formatter)
 Adds a new Formatter to format delegate preview texts 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...
 
template<typename TAliasType , typename TTargetType >
void addFormatterAlias ()
 Adds a type name alias for formatters. More...
 
QTMVVM_REVISION_1 Q_INVOKABLE void addFormatterAlias (const QByteArray &alias, const QByteArray &targetType)
 Adds a type name alias for formatters. More...
 
- Public Member Functions inherited from QObject
virtual const QMetaObjectmetaObject () const const
 
virtual void * qt_metacast (const char *)
 
virtual int qt_metacall (QMetaObject::Call, int, void **)
 
 QObject (QObject *parent)
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThreadthread () const 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 const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectList & children () const 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 const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const 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 const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const 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 42 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 127 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

◆ addFormatter() [1/2]

template<typename TType >
QtMvvm::InputViewFactory::addFormatter ( Formatter formatter)
inline

Adds a new Formatter to format delegate preview texts for the given type.

Template Parameters
TTypeThe type to add a formatter for
Parameters
formatterThe formatter instance to be added

The formatter must be valid and is registered in the factory. The factory takes ownership of the passed formatter. From now on it is used to convert display texts when format() is called.

See also
InputViewFactory::format, InputViewFactory::addFormatterAlias, Formatter

Definition at line 115 of file inputviewfactory.h.

◆ addFormatter() [2/2]

QtMvvm::InputViewFactory::addFormatter ( const QByteArray type,
Formatter formatter 
)

Adds a new Formatter to format delegate preview texts for the given type.

Parameters
typeThe type to add a formatter for
formatterThe formatter instance to be added

The formatter must be valid and is registered in the factory. The factory takes ownership of the passed formatter. From now on it is used to convert display texts when format() is called.

See also
InputViewFactory::format, InputViewFactory::addFormatterAlias, Formatter

◆ addFormatterAlias() [1/2]

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

Adds a type name alias for formatters.

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

If a formatter for the alias type is requested for the format() method, the one of the target type is used instead.

See also
InputViewFactory::format, InputViewFactory::addFormatter

Definition at line 133 of file inputviewfactory.h.

◆ addFormatterAlias() [2/2]

QtMvvm::InputViewFactory::addFormatterAlias ( const QByteArray alias,
const QByteArray targetType 
)

Adds a type name alias for formatters.

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

If a formatter for the alias type is requested for the format() method, the one of the target type is used instead.

See also
InputViewFactory::format, InputViewFactory::addFormatter

◆ 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 121 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 109 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 103 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

◆ format()

QtMvvm::InputViewFactory::format ( const QByteArray type,
const QString formatString,
const QVariant value,
const QVariantMap &  viewProperties 
)

Formats the value using the internally registered Formatter for the given type.

Parameters
typeThe type to choose a formatter for
formatStringSome kind of format string, depending on what the formatter wants here
valueThe actual value, packet as a variant
viewPropertiesAdditional properies set on the delegate
Returns
The formatted value text

Internally, this method uses the Formatter registered for the given type and then returns the result of Formatter::format, invoked with the remaining parameters.

If no formatter was registered for the given type, this method simply returns formatString.arg(value.toString());

Currently, the following special formatters are set by default.

types formatString semantics
int A translated string with either %1, L1 or n as number placeholder. If n is used, "plural-translations" are used
list, selection, radiolist A translated string with %1 as placeholder. If the list element is named, that one is used, otherwise the value itself
QDateTime, QDate, QTime Can either be the integer value of one of Qt::DateFormat or a standard date format string (QDateTime::toString). If neither is the case, the date is formatted using Qt::DefaultLocaleShortDate
double Uses the SimpleFormatter with double as template argument

All other types use the fallback formatting.

See also
Formatter::format, InputViewFactory::addFormatter, InputViewFactory::addFormatterAlias

◆ 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: