#include "inputviewfactory.h" #include "inputviewfactory_p.h" #include #include 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() {}