feat: add QNetworkAccessManager and clearConnectionCache

feat: change QNetworkAccessManager to DosQObject
This commit is contained in:
emizzle 2020-12-16 21:49:27 +11:00 committed by Eric Mastro
parent 953e9f4b38
commit 6776fed33f
4 changed files with 36 additions and 0 deletions

View File

@ -17,6 +17,7 @@ type
DosQMetaObject = distinct pointer
DosQObject = distinct pointer
DosQQNetworkAccessManagerFactory = pointer
DosQQNetworkAccessManager = distinct DosQObject
DosQObjectWrapper = distinct pointer
DosQVariant = distinct pointer
DosQQmlContext = distinct pointer
@ -146,6 +147,7 @@ proc dos_qqmlcontext_setcontextproperty(context: DosQQmlContext, propertyName: c
# QQmlApplicationEngine
proc dos_qqmlapplicationengine_create(): DosQQmlApplicationEngine {.cdecl, dynlib: dynLibName, importc.}
proc dos_qqmlapplicationengine_getNetworkAccessManager(engine: DosQQmlApplicationEngine): DosQQNetworkAccessManager {.cdecl, dynlib: dynLibName, importc.}
proc dos_qqmlapplicationengine_setNetworkAccessManagerFactory(engine: DosQQmlApplicationEngine, factory: DosQQNetworkAccessManagerFactory) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qqmlapplicationengine_load(engine: DosQQmlApplicationEngine, filename: cstring) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qqmlapplicationengine_load_url(engine: DosQQmlApplicationEngine, url: DosQUrl) {.cdecl, dynlib: dynLibName, importc.}
@ -211,8 +213,13 @@ proc dos_qurl_to_string(vptr: DosQUrl): cstring {.cdecl, dynlib: dynLibName, imp
proc dos_qncm_create(): DosQObject {.cdecl, dynlib: dynLibName, importc.}
proc dos_qncm_delete(vptr: DosQObject) {.cdecl, dynlib: dynLibName, importc.}
# QNetworkAccessManagerFactory
proc dos_qqmlnetworkaccessmanagerfactory_create(tmpPath: cstring): DosQQNetworkAccessManagerFactory {.cdecl, dynlib: dynLibName, importc.}
# QNetworkAccessManager
proc dos_qqmlnetworkaccessmanager_clearconnectioncache(vptr: DosQQNetworkAccessManager) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qqmlnetworkaccessmanager_setnetworkaccessible(vptr: DosQQNetworkAccessManager, accessible: cint) {.cdecl, dynlib: dynLibName, importc.}
# QQuickView
proc dos_qquickview_create(): DosQQuickView {.cdecl, dynlib: dynLibName, importc.}
proc dos_qquickview_delete(view: DosQQuickView) {.cdecl, dynlib: dynLibName, importc.}

View File

@ -114,6 +114,13 @@ type
QNetworkAccessManagerFactory* = ref object of RootObj ## \
vptr: DosQQNetworkAccessManagerFactory
QNetworkAccessManager* = ref object of QObject ## \
NetworkAccessibility*{.pure, size: sizeof(cint).} = enum ## \
UnknownAccessibility = -1.cint,
NotAccessible = 0.cint,
Accessible = 1.cint
QUrlParsingMode*{.pure, size: sizeof(cint).} = enum
Tolerant = 0.cint
Strict = 1.cint

View File

@ -26,3 +26,22 @@ proc newQNetworkAccessManagerFactory*(tmpPath: string): QNetworkAccessManagerFac
new(result, delete)
result.setup(tmpPath)
proc setup*(self: QNetworkAccessManager, vptr: DosQQNetworkAccessManager) =
self.vptr = DosQObject(vptr)
proc delete*(self: QNetworkAccessManager) =
if self.vptr.isNil:
return
self.vptr.resetToNil
proc newQNetworkAccessManager*(vptr: DosQQNetworkAccessManager): QNetworkAccessManager =
new(result, delete)
result.setup(vptr)
proc clearConnectionCache*(self: QNetworkAccessManager) =
dos_qqmlnetworkaccessmanager_clearconnectioncache(DosQQNetworkAccessManager(self.vptr))
proc setNetworkAccessible*(self: QNetworkAccessManager, accessibility: NetworkAccessibility) =
debugEcho ">>> [nimqml/private/qnetworkconfigurationmanager.setNetworkAccessible] manually setting network accessibility to: ", $accessibility
dos_qqmlnetworkaccessmanager_setnetworkaccessible(DosQQNetworkAccessManager(self.vptr), accessibility.cint)

View File

@ -14,6 +14,9 @@ proc load*(self: QQmlApplicationEngine, url: QUrl) =
## Load the given Qml file
dos_qqmlapplicationengine_load_url(self.vptr, url.vptr)
proc getNetworkAccessManager*(self: QQmlApplicationEngine): DosQQNetworkAccessManager =
dos_qqmlapplicationengine_getNetworkAccessManager(self.vptr)
proc setNetworkAccessManagerFactory*(self: QQmlApplicationEngine, factory: QNetworkAccessManagerFactory) =
dos_qqmlapplicationengine_setNetworkAccessManagerFactory(self.vptr, factory.vptr)