feat(@desktop/general): QSettings class exposed to nim

This commit is contained in:
Sale Djenic 2021-09-07 10:15:53 +02:00
parent fb44e71c57
commit 00ee27ca52
4 changed files with 53 additions and 18 deletions

View File

@ -31,6 +31,7 @@ include "nimqml/private/qabstractlistmodel.nim"
include "nimqml/private/qabstracttablemodel.nim" include "nimqml/private/qabstracttablemodel.nim"
include "nimqml/private/qresource.nim" include "nimqml/private/qresource.nim"
include "nimqml/private/qdeclarative.nim" include "nimqml/private/qdeclarative.nim"
include "nimqml/private/qsettings.nim"
include "nimqml/private/nimqmlmacros.nim" include "nimqml/private/nimqmlmacros.nim"
include "nimqml/private/singleinstance.nim" include "nimqml/private/singleinstance.nim"
include "nimqml/private/status/statusevent.nim" include "nimqml/private/status/statusevent.nim"

View File

@ -34,7 +34,8 @@ type
DosQAbstractListModel = distinct pointer DosQAbstractListModel = distinct pointer
DosStatusEvent = distinct pointer DosStatusEvent = distinct pointer
DosStatusOSNotification = DosQObject DosStatusOSNotification = DosQObject
DosQSettings = DosQObject
DosParameterDefinition = object DosParameterDefinition = object
name: cstring name: cstring
metaType: cint metaType: cint
@ -347,22 +348,6 @@ proc dos_event_create_showAppEvent(engine: DosQQmlApplicationEngine): DosStatusE
proc dos_event_create_osThemeEvent(engine: DosQQmlApplicationEngine): DosStatusEvent {.cdecl, dynlib: dynLibName, importc.} proc dos_event_create_osThemeEvent(engine: DosQQmlApplicationEngine): DosStatusEvent {.cdecl, dynlib: dynLibName, importc.}
proc dos_event_delete(vptr: DosStatusEvent) {.cdecl, dynlib: dynLibName, importc.} proc dos_event_delete(vptr: DosStatusEvent) {.cdecl, dynlib: dynLibName, importc.}
<<<<<<< HEAD
# DosStatusOSNotificationObject
proc dos_statusosnotification_create(): DosStatusOSNotificationObject
{.cdecl, dynlib: dynLibName, importc.}
proc dos_statusosnotification_show_notification(vptr: DosStatusOSNotificationObject,
title: cstring, messsage: cstring, identifier: cstring)
{.cdecl, dynlib: dynLibName, importc.}
proc dos_statusosnotification_delete(vptr: DosStatusOSNotificationObject)
{.cdecl, dynlib: dynLibName, importc.}
proc dos_to_local_file(fileUrl: cstring): cstring
{.cdecl, dynlib: dynLibName, importc.}
proc dos_from_local_file(filePath: cstring): cstring
{.cdecl, dynlib: dynLibName, importc.}
=======
# DosStatusOSNotification # DosStatusOSNotification
proc dos_osnotification_create(): DosStatusOSNotification proc dos_osnotification_create(): DosStatusOSNotification
{.cdecl, dynlib: dynLibName, importc.} {.cdecl, dynlib: dynLibName, importc.}
@ -372,5 +357,22 @@ proc dos_osnotification_show_notification(vptr: DosStatusOSNotification,
proc dos_osnotification_delete(vptr: DosStatusOSNotification) proc dos_osnotification_delete(vptr: DosStatusOSNotification)
{.cdecl, dynlib: dynLibName, importc.} {.cdecl, dynlib: dynLibName, importc.}
# QSettings
proc dos_qsettings_create(fileName: cstring, format: int): DosQSettings
{.cdecl, dynlib: dynLibName, importc.} {.cdecl, dynlib: dynLibName, importc.}
>>>>>>> c58455f... refactor(@desktop/general): status custom events and os notification renamed type and methods proc dos_qsettings_value(vptr: DosQSettings, key: cstring,
defaultValue: DosQVariant): DosQVariant
{.cdecl, dynlib: dynLibName, importc.}
proc dos_qsettings_set_value(vptr: DosQSettings, key: cstring,
value: DosQVariant)
{.cdecl, dynlib: dynLibName, importc.}
proc dos_qsettings_remove(vptr: DosQSettings, key: cstring)
{.cdecl, dynlib: dynLibName, importc.}
proc dos_qsettings_delete(vptr: DosQSettings)
{.cdecl, dynlib: dynLibName, importc.}
proc dos_to_local_file(fileUrl: cstring): cstring
{.cdecl, dynlib: dynLibName, importc.}
proc dos_from_local_file(filePath: cstring): cstring
{.cdecl, dynlib: dynLibName, importc.}

View File

@ -44,6 +44,8 @@ type
QResource* = ref object of RootObj ## \ QResource* = ref object of RootObj ## \
# A QResource # A QResource
QSettings* = ref object of QObject ## \
QtItemFlag*{.pure, size: sizeof(cint).} = enum ## \ QtItemFlag*{.pure, size: sizeof(cint).} = enum ## \
## Item flags ## Item flags
## ##

View File

@ -0,0 +1,30 @@
type
QSettingsFormat* {.pure.} = enum
NativeFormat = 0
IniFormat
proc setup(self: QSettings, fileName: string, format: int) =
self.vptr = dos_qsettings_create(fileName, format)
proc delete*(self: QSettings) =
dos_qsettings_delete(self.vptr)
self.vptr.resetToNil
proc newQSettings*(fileName: string,
format: QSettingsFormat = QSettingsFormat.NativeFormat): QSettings =
## Available values for format are:
## 0 - QSettings::NativeFormat
## 1 - QSettings::IniFormat
## any other value will be converted to 0 (QSettings::NativeFormat)
new(result, delete)
result.setup(fileName, format.int)
proc value*(self: QSettings, key: string, defaultValue: QVariant = newQVariant()):
QVariant =
newQVariant(dos_qsettings_value(self.vptr, key, defaultValue.vptr), Ownership.Take)
proc setValue*(self: QSettings, key: string, value: QVariant) =
dos_qsettings_set_value(self.vptr, key, value.vptr)
proc remove*(self: QSettings, key: string) =
dos_qsettings_remove(self.vptr, key)