Added support for registering an rcc file (compiled outside of .NET).

This commit is contained in:
Paul Knopf 2018-07-19 14:42:25 -04:00
parent 3147b58ce3
commit 3b2a4a6c97
5 changed files with 45 additions and 2 deletions

View file

@ -0,0 +1,13 @@
#include <QtNetCoreQml/qml/QResource.h>
#include <QResource>
#include <QDir>
extern "C" {
Q_DECL_EXPORT bool qresource_registerResource(LPWSTR rccFileName, LPWSTR resourceRoot) {
QString rccFileNameString = QString::fromUtf16((const char16_t*)rccFileName);
QString resourceRootString = QString::fromUtf16((const char16_t*)resourceRoot);
return QResource::registerResource(rccFileNameString, resourceRootString);
}
}

View file

@ -0,0 +1,6 @@
#ifndef NET_QRESOURCE_H
#define NET_QRESOURCE_H
#include <QtNetCoreQml.h>
#endif // NET_QRESOURCE_H

View file

@ -6,7 +6,8 @@ HEADERS += \
$$PWD/NetValueMetaObject.h \
$$PWD/NetValueType.h \
$$PWD/NetVariantList.h \
$$PWD/NetTestHelper.h
$$PWD/NetTestHelper.h \
$$PWD/QResource.h
SOURCES += \
$$PWD/QGuiApplication.cpp \
@ -16,4 +17,5 @@ SOURCES += \
$$PWD/NetValueMetaObject.cpp \
$$PWD/NetValueType.cpp \
$$PWD/NetVariantList.cpp \
$$PWD/NetTestHelper.cpp
$$PWD/NetTestHelper.cpp \
$$PWD/QResource.cpp

View file

@ -24,6 +24,7 @@ namespace Qt.NetCore
NetInstance = NativeLibraryBuilder.Default.ActivateInterface<INetInstanceInterop>("QtNetCoreQml");
NetVariantList = NativeLibraryBuilder.Default.ActivateInterface<INetVariantListInterop>("QtNetCoreQml");
NetTestHelper = NativeLibraryBuilder.Default.ActivateInterface<INetTestHelperInterop>("QtNetCoreQml");
QResource = NativeLibraryBuilder.Default.ActivateInterface<IQResourceInterop>("QtNetCoreQml");
var cb = DefaultCallbacks.Callbacks();
Callbacks.RegisterCallbacks(ref cb);
@ -51,6 +52,8 @@ namespace Qt.NetCore
public static INetTestHelperInterop NetTestHelper { get; }
public static IQResourceInterop QResource { get; set; }
public static void RegisterCallbacks(ICallbacks callbacks)
{
var callbacksImpl = new CallbacksImpl(callbacks);

View file

@ -0,0 +1,19 @@
using System.Runtime.InteropServices;
using AdvancedDLSupport;
namespace Qt.NetCore.Qml
{
public class QResource
{
public static bool RegisterResource(string rccFileName, string resourceRoot = null)
{
return Interop.QResource.RegisterResource(rccFileName, resourceRoot);
}
}
public interface IQResourceInterop
{
[NativeSymbol(Entrypoint = "qresource_registerResource")]
bool RegisterResource([MarshalAs(UnmanagedType.LPWStr)]string rccFileName, [MarshalAs(UnmanagedType.LPWStr)]string resourceRoot);
}
}