diff --git a/src/nimqml.nim b/src/nimqml.nim index d8f55c2..d936b16 100644 --- a/src/nimqml.nim +++ b/src/nimqml.nim @@ -31,6 +31,7 @@ include "nimqml/private/qabstractlistmodel.nim" include "nimqml/private/qabstracttablemodel.nim" include "nimqml/private/qresource.nim" include "nimqml/private/qdeclarative.nim" +include "nimqml/private/qsettings.nim" include "nimqml/private/nimqmlmacros.nim" include "nimqml/private/singleinstance.nim" include "nimqml/private/status/statusevent.nim" diff --git a/src/nimqml/private/dotherside.nim b/src/nimqml/private/dotherside.nim index 0decf28..aa611c3 100644 --- a/src/nimqml/private/dotherside.nim +++ b/src/nimqml/private/dotherside.nim @@ -34,7 +34,8 @@ type DosQAbstractListModel = distinct pointer DosStatusEvent = distinct pointer DosStatusOSNotification = DosQObject - + DosQSettings = DosQObject + DosParameterDefinition = object name: cstring 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_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 proc dos_osnotification_create(): DosStatusOSNotification {.cdecl, dynlib: dynLibName, importc.} @@ -372,5 +357,22 @@ proc dos_osnotification_show_notification(vptr: DosStatusOSNotification, proc dos_osnotification_delete(vptr: DosStatusOSNotification) {.cdecl, dynlib: dynLibName, importc.} +# QSettings +proc dos_qsettings_create(fileName: cstring, format: int): DosQSettings {.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.} \ No newline at end of file diff --git a/src/nimqml/private/nimqmltypes.nim b/src/nimqml/private/nimqmltypes.nim index 4f56c5e..ef03fae 100644 --- a/src/nimqml/private/nimqmltypes.nim +++ b/src/nimqml/private/nimqmltypes.nim @@ -44,6 +44,8 @@ type QResource* = ref object of RootObj ## \ # A QResource + QSettings* = ref object of QObject ## \ + QtItemFlag*{.pure, size: sizeof(cint).} = enum ## \ ## Item flags ## diff --git a/src/nimqml/private/qsettings.nim b/src/nimqml/private/qsettings.nim new file mode 100644 index 0000000..6e38441 --- /dev/null +++ b/src/nimqml/private/qsettings.nim @@ -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) \ No newline at end of file