Merge pull request #25 from status-im/fix/issue-1725

fix(@desktop/general): Changing System Appearance on the fly is not working
This commit is contained in:
Iuri Matias 2021-08-16 15:54:11 -04:00 committed by GitHub
commit b3309ae7c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 37 additions and 6 deletions

View File

@ -33,6 +33,7 @@ include "nimqml/private/qresource.nim"
include "nimqml/private/qdeclarative.nim"
include "nimqml/private/nimqmlmacros.nim"
include "nimqml/private/singleinstance.nim"
include "nimqml/private/status/statusevent.nim"
proc signal_handler*(receiver: pointer, signal: cstring, slot: cstring) =

View File

@ -32,6 +32,7 @@ type
DosQAbstractItemModel = distinct pointer
DosQAbstractTableModel = distinct pointer
DosQAbstractListModel = distinct pointer
DosStatusEventObject = distinct pointer
DosParameterDefinition = object
name: cstring
@ -135,7 +136,7 @@ proc dos_qapplication_quit() {.cdecl, dynlib: dynLibName, importc.}
proc dos_qapplication_icon(filename: cstring) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qapplication_delete() {.cdecl, dynlib: dynLibName, importc.}
proc dos_qapplication_clipboard_setText(content: cstring) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qapplication_installEventFilter(engine: DosQQmlApplicationEngine) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qapplication_installEventFilter(engine: DosStatusEventObject) {.cdecl, dynlib: dynLibName, importc.}
# QGuiApplication
proc dos_qguiapplication_create() {.cdecl, dynlib: dynLibName, importc.}
@ -143,7 +144,7 @@ proc dos_qguiapplication_exec() {.cdecl, dynlib: dynLibName, importc.}
proc dos_qguiapplication_quit() {.cdecl, dynlib: dynLibName, importc.}
proc dos_qguiapplication_icon(filename: cstring) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qguiapplication_delete() {.cdecl, dynlib: dynLibName, importc.}
proc dos_qguiapplication_installEventFilter(engine: DosQQmlApplicationEngine) {.cdecl, dynlib: dynLibName, importc.}
proc dos_qguiapplication_installEventFilter(engine: DosStatusEventObject) {.cdecl, dynlib: dynLibName, importc.}
# QQmlContext
proc dos_qqmlcontext_setcontextproperty(context: DosQQmlContext, propertyName: cstring, propertyValue: DosQVariant) {.cdecl, dynlib: dynLibName, importc.}
@ -337,3 +338,8 @@ proc dos_qurl_replaceHostAndAddPath(url: cstring, newScheme: cstring, newHost: c
proc dos_singleinstance_create(uniqueName: cstring): DosQObject {.cdecl, dynlib: dynLibName, importc.}
proc dos_singleinstance_isfirst(vptr: DosQObject): bool {.cdecl, dynlib: dynLibName, importc.}
proc dos_singleinstance_delete(vptr: DosQObject) {.cdecl, dynlib: dynLibName, importc.}
# DosStatusEventObject
proc dos_statusevent_create_showAppEvent(engine: DosQQmlApplicationEngine): DosStatusEventObject {.cdecl, dynlib: dynLibName, importc.}
proc dos_statusevent_create_osThemeEvent(engine: DosQQmlApplicationEngine): DosStatusEventObject {.cdecl, dynlib: dynLibName, importc.}
proc dos_statusevent_delete(vptr: DosStatusEventObject) {.cdecl, dynlib: dynLibName, importc.}

View File

@ -132,5 +132,9 @@ type
SingleInstance* = ref object of QObject
StatusEventObject* = ref object of RootObj ## \
## A StatusEventObject
vptr: DosStatusEventObject
const
UserRole* = 0x100

View File

@ -17,8 +17,8 @@ proc icon*(application: QApplication, filename: string) =
proc setClipboardText*(text: string = "") =
dos_qapplication_clipboard_setText(text.cstring)
proc installEventFilter*(application: QApplication, engine: QQmlApplicationEngine) =
dos_qapplication_installEventFilter(engine.vptr)
proc installEventFilter*(application: QApplication, event: StatusEventObject) =
dos_qapplication_installEventFilter(event.vptr)
proc delete*(application: QApplication) =
## Delete the given QApplication

View File

@ -16,8 +16,8 @@ proc delete*(self: QGuiApplication) =
proc icon*(application: QGuiApplication, filename: string) =
dos_qguiapplication_icon(filename.cstring)
proc installEventFilter*(application: QGuiApplication, engine: QQmlApplicationEngine) =
dos_qguiapplication_installEventFilter(engine.vptr)
proc installEventFilter*(application: QGuiApplication, event: StatusEventObject) =
dos_qguiapplication_installEventFilter(event.vptr)
proc newQGuiApplication*(): QGuiApplication =
## Return a new QGuiApplication

View File

@ -0,0 +1,20 @@
#import ../[nimqmltypes, dotherside]
proc setupDockShowAppEventObject*(self: StatusEventObject, engine: QQmlApplicationEngine) =
self.vptr = dos_statusevent_create_showAppEvent(engine.vptr)
proc setupOSThemeEventObject*(self: StatusEventObject, engine: QQmlApplicationEngine) =
self.vptr = dos_statusevent_create_osThemeEvent(engine.vptr)
proc delete*(self: StatusEventObject) =
dos_statusevent_delete(self.vptr)
self.vptr.resetToNil
proc newStatusDockShowAppEventObject*(engine: QQmlApplicationEngine): StatusEventObject =
new(result, delete)
result.setupDockShowAppEventObject(engine)
proc newStatusOSThemeEventObject*(engine: QQmlApplicationEngine): StatusEventObject =
new(result, delete)
result.setupOSThemeEventObject(engine)