Migration of QtMvvm from github
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.5 KiB

#include "inputviewfactory.h"
#include "inputviewfactory_p.h"
#include <QtCore/QMetaType>
#include <QtMvvmCore/private/qtmvvm_logging_p.h>
using namespace QtMvvm;
static void initResources()
{
#ifdef QT_STATIC
Q_INIT_RESOURCE(qtmvvmquick_module);
#endif
}
InputViewFactory::InputViewFactory() :
QObject(nullptr),
d(new InputViewFactoryPrivate())
{
initResources();
}
InputViewFactory::~InputViewFactory() {}
//int InputViewFactory::metaTypeId(const QByteArray &type, const QVariantMap &properties)
//{
// if(type == "string")
// return QMetaType::QString;
// else if(type == "list")
// return metaTypeId(properties.value(QStringLiteral("_list_data"), QByteArray("string")).toByteArray(), properties);
// else
// return QMetaType::type(type);
//}
QUrl InputViewFactory::getInputUrl(const QByteArray &type, const QVariantMap &viewProperties)
{
Q_UNUSED(viewProperties)
if(d->simpleViews.contains(type))
return d->simpleViews.value(type);
else if(type == QMetaType::typeName(QMetaType::Bool))
return QStringLiteral("qrc:/de/skycoder42/qtmvvm/quick/inputs/CheckBox.qml");
else if(type == QMetaType::typeName(QMetaType::QString) || type == "string")
return QStringLiteral("qrc:/de/skycoder42/qtmvvm/quick/inputs/TextField.qml");
else if(type == QMetaType::typeName(QMetaType::Int))
return QStringLiteral("qrc:/de/skycoder42/qtmvvm/quick/inputs/SpinBox.qml");
else if(type == QMetaType::typeName(QMetaType::Double))
return QStringLiteral("qrc:/de/skycoder42/qtmvvm/quick/inputs/DoubleSpinBox.qml");
// else if(type == QMetaType::typeName(QMetaType::QDate))
// return QUrl();
// else if(type == QMetaType::typeName(QMetaType::QTime))
// return QUrl();
// else if(type == QMetaType::typeName(QMetaType::QDateTime) || type == "date")
// return QUrl();
else if(type == QMetaType::typeName(QMetaType::QFont))
return QStringLiteral("qrc:/de/skycoder42/qtmvvm/quick/inputs/FontEdit.qml");
// else if(type == QMetaType::typeName(QMetaType::QUrl) || type == "url")
// return QStringLiteral("qrc:/de/skycoder42/qtmvvm/quick/inputs/UrlField.qml");
else if(type == "selection" || type == "list")
return QStringLiteral("qrc:/de/skycoder42/qtmvvm/quick/inputs/ListEdit.qml");
else {
logCritical() << "Failed to find any input view for input type:" << type;
return QUrl();
}
}
bool InputViewFactory::addSimpleView(const QByteArray &type, const QUrl &qmlFileUrl)
{
d->simpleViews.insert(type, qmlFileUrl);
return true;
}
// ------------- Private Implementation -------------
InputViewFactoryPrivate::InputViewFactoryPrivate() :
simpleViews()
{}