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::InputWidgetFactory Class Reference

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

#include <inputwidgetfactory.h>

+ Inheritance diagram for QtMvvm::InputWidgetFactory:

Public Member Functions

Q_INVOKABLE InputWidgetFactory (QObject *parent=nullptr)
 Default constructor.
 
virtual QWidgetcreateInput (const QByteArray &type, QWidget *parent, const QVariantMap &viewProperties)
 Create a new input widget of the given input type. More...
 
template<typename TType , typename TWidget >
void addSimpleWidget ()
 Adds a new generator to create widgets for the given type. More...
 
virtual void addSimpleWidget (const QByteArray &type, const std::function< QWidget *(QWidget *)> &creator)
 Adds a new generator to create widgets for the given type. More...
 
template<typename TAliasType , typename TTargetType >
void addAlias ()
 Adds a type name alias. More...
 
virtual void addAlias (const QByteArray &alias, const QByteArray &targetType)
 Adds a type name alias. 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 widgets by their type names.

The factory is used by the WidgetsPresenter to create input widgets for various types. This is used to for example create the edits of input dialogs or for the edit fields of a SettingsDialog.

See also
WidgetsPresenter, WidgetsPresenter::inputWidgetFactory, MessageConfig::TypeInputDialog, QtMvvm::getInput, SettingsViewModel

Definition at line 17 of file inputwidgetfactory.h.

Member Function Documentation

◆ addAlias() [1/2]

template<typename TAliasType , typename TTargetType >
QtMvvm::InputWidgetFactory::addAlias ( )
inline

Adds a type name alias.

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

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

See also
InputWidgetFactory::createInput, InputWidgetFactory::addSimpleWidget

Definition at line 54 of file inputwidgetfactory.h.

◆ addAlias() [2/2]

QtMvvm::InputWidgetFactory::addAlias ( const QByteArray alias,
const QByteArray targetType 
)
virtual

Adds a type name alias.

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

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

See also
InputWidgetFactory::createInput, InputWidgetFactory::addSimpleWidget

◆ addSimpleWidget() [1/2]

template<typename TType , typename TWidget >
QtMvvm::InputWidgetFactory::addSimpleWidget ( )
inline

Adds a new generator to create widgets for the given type.

Template Parameters
TTypeThe type to add a widget for
TWidgetThe type of the widget to provide for that type

The TWidget type must extend QWidget and have a constructor that takes a single QWidget* as argument. It furthermore needs to have a USER property, which is used to read and write the input value.

See also
InputWidgetFactory::createInput, InputWidgetFactory::addAlias

Definition at line 46 of file inputwidgetfactory.h.

◆ addSimpleWidget() [2/2]

QtMvvm::InputWidgetFactory::addSimpleWidget ( const QByteArray type,
const std::function< QWidget *(QWidget *)> &  creator 
)
virtual

Adds a new generator to create widgets for the given type.

Parameters
typeThe type to add a widget for
creatorA function that creates a new instance of a widget for the given type

The QWidget* argument of the creator function must be used as the parent of the created widget that is returned by the function. It furthermore needs to have a USER property, which is used to read and write the input value.

See also
InputWidgetFactory::createInput, InputWidgetFactory::addAlias

◆ createInput()

QtMvvm::InputWidgetFactory::createInput ( const QByteArray type,
QWidget parent,
const QVariantMap &  viewProperties 
)
virtual

Create a new input widget of the given input type.

Parameters
typeThe input type to create a widget for
parentThe parent widget for the created widget
viewPropertiesA map with extra properties to be set on the edit
Returns
A newly created widget suitable for editing input of the given type
Exceptions
PresenterExceptionIn case no widget could be found or created for 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 widget registered as simple widget exists for the given type and uses that one if present. If no simple widget is set the default mapping for type to widgets is used (See MessageConfig::TypeInputDialog for a full table of supported types). If no widget can be found for a type, an exception is thrown.

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

See also
MessageConfig::TypeInputDialog, InputWidgetFactory::addSimpleWidget, InputWidgetFactory::addAlias

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