/*! @class QtMvvm::InputViewFactory 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. @sa QuickPresenter, QuickPresenter::inputViewFactory, MessageConfig::TypeInputDialog, QtMvvm::getInput, SettingsViewModel */ /*! @fn QtMvvm::InputViewFactory::getInputUrl @param type The input type to create a view for @param viewProperties A 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. @sa MessageConfig::TypeInputDialog, InputViewFactory::addSimpleInput, InputViewFactory::addInputAlias, InputViewFactory::getDelegate */ /*! @fn QtMvvm::InputViewFactory::getDelegate @param type The input type to create a delegate for @param viewProperties A 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. @sa MessageConfig::TypeInputDialog, InputViewFactory::addSimpleDelegate, InputViewFactory::addDelegateAlias, InputViewFactory::getInputUrl */ /*! @fn QtMvvm::InputViewFactory::format @param type The type to choose a formatter for @param formatString Some kind of format string, depending on what the formatter wants here @param value The actual value, packet as a variant @param viewProperties Additional 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. @sa Formatter::format, InputViewFactory::addFormatter, InputViewFactory::addFormatterAlias */ /*! @fn QtMvvm::InputViewFactory::addSimpleInput(const QUrl &) @tparam TType The type to add an input view for @param qmlFileUrl The 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. @sa InputViewFactory::getInputUrl, InputViewFactory::addInputAlias */ /*! @fn QtMvvm::InputViewFactory::addSimpleInput(const QByteArray &, const QUrl &) @param type The type to add an input view for @param qmlFileUrl The 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. @sa InputViewFactory::getInputUrl, InputViewFactory::addInputAlias */ /*! @fn QtMvvm::InputViewFactory::addSimpleDelegate(const QUrl &) @tparam TType The type to add a delegate view for @param qmlFileUrl The 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. @sa InputViewFactory::getDelegate, InputViewFactory::addDelegateAlias */ /*! @fn QtMvvm::InputViewFactory::addSimpleDelegate(const QByteArray &, const QUrl &) @param type The type to add a delegate view for @param qmlFileUrl The 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. @sa InputViewFactory::getDelegate, InputViewFactory::addDelegateAlias */ /*! @fn QtMvvm::InputViewFactory::addFormatter(Formatter*) @tparam TType The type to add a formatter for @param formatter The 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. @sa InputViewFactory::format, InputViewFactory::addFormatterAlias, Formatter */ /*! @fn QtMvvm::InputViewFactory::addFormatter(const QByteArray &, Formatter*) @param type The type to add a formatter for @param formatter The 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. @sa InputViewFactory::format, InputViewFactory::addFormatterAlias, Formatter */ /*! @fn QtMvvm::InputViewFactory::addInputAlias() @tparam TAliasType The type to add as a new alias @tparam TTargetType The 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. @sa InputViewFactory::getInputUrl, InputViewFactory::addSimpleInput */ /*! @fn QtMvvm::InputViewFactory::addInputAlias(const QByteArray &, const QByteArray &) @param alias The type to add as a new alias @param targetType The 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. @sa InputViewFactory::getInputUrl, InputViewFactory::addSimpleInput */ /*! @fn QtMvvm::InputViewFactory::addDelegateAlias() @tparam TAliasType The type to add as a new alias @tparam TTargetType The 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. @sa InputViewFactory::getDelegate, InputViewFactory::addSimpleDelegate */ /*! @fn QtMvvm::InputViewFactory::addDelegateAlias(const QByteArray &, const QByteArray &) @param alias The type to add as a new alias @param targetType The 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. @sa InputViewFactory::getDelegate, InputViewFactory::addSimpleDelegate */ /*! @fn QtMvvm::InputViewFactory::addFormatterAlias() @tparam TAliasType The type to add as a new alias @tparam TTargetType The 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. @sa InputViewFactory::format, InputViewFactory::addFormatter */ /*! @fn QtMvvm::InputViewFactory::addFormatterAlias(const QByteArray &, const QByteArray &) @param alias The type to add as a new alias @param targetType The 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. @sa InputViewFactory::format, InputViewFactory::addFormatter */ /*! @fn QtMvvm::Formatter::format @param formatString Some kind of format string, depending on what your formatter wants here @param value The actual value, packet as a variant @param viewProperties Additional properies set on the delegate @return A localized, human readable text, the formatted the value based on formatString formatString can be whatever you need it to be, but typically it is a localized text with a placeholder to be replaced with the given value. See InputViewFactory::format for known formats. @sa InputViewFactory::format */