diff --git a/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h b/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h index 8910c46545..75c414e506 100644 --- a/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h +++ b/vendor/DOtherSide/lib/include/DOtherSide/DOtherSide.h @@ -1015,6 +1015,18 @@ DOS_API void dos_osnotification_delete(DosOSNotification* vptr); #pragma endregion +#pragma region QSettings + +DOS_API DosQSettings* dos_qsettings_create(const char* fileName, int format); +DOS_API DosQVariant* dos_qsettings_value(DosQSettings* vptr, const char* key, + DosQVariant* defaultValue); +DOS_API void dos_qsettings_set_value(DosQSettings* vptr, const char* key, + DosQVariant* value); +DOS_API void dos_qsettings_remove(DosQSettings* vptr, const char* key); +DOS_API void dos_qsettings_delete(DosQSettings* vptr); + +#pragma endregion + #pragma endregion diff --git a/vendor/DOtherSide/lib/include/DOtherSide/DOtherSideTypes.h b/vendor/DOtherSide/lib/include/DOtherSide/DOtherSideTypes.h index 4b5f70f9c1..ba46018f82 100644 --- a/vendor/DOtherSide/lib/include/DOtherSide/DOtherSideTypes.h +++ b/vendor/DOtherSide/lib/include/DOtherSide/DOtherSideTypes.h @@ -89,6 +89,9 @@ typedef void DosQMetaObject; /// A pointer to a QObject typedef void DosQObject; +/// A pointer to a QSettings +typedef void DosQSettings; + /// A pointer to a QQuickImageProvider typedef void DosQQuickImageProvider; diff --git a/vendor/DOtherSide/lib/src/DOtherSide.cpp b/vendor/DOtherSide/lib/src/DOtherSide.cpp index fc64702f49..eb1476b2a8 100644 --- a/vendor/DOtherSide/lib/src/DOtherSide.cpp +++ b/vendor/DOtherSide/lib/src/DOtherSide.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #ifdef QT_QUICKCONTROLS2_LIB #include #endif @@ -1399,6 +1400,65 @@ void dos_osnotification_delete(DosOSNotification* vptr) #pragma endregion +#pragma region QSettings + +DosQSettings* dos_qsettings_create(const char* fileName, int format) +{ + QSettings::Format fileFormat = QSettings::NativeFormat; + if(format == 1) + fileFormat = QSettings::IniFormat; + + return new QSettings(QString(fileName), fileFormat); +} + +DosQVariant* dos_qsettings_value(DosQSettings* vptr, const char* key, + DosQVariant* defaultValue) +{ + auto defaultValuePtr = static_cast(defaultValue); + auto settings = static_cast(vptr); + if(settings) + { + if(defaultValuePtr) + { + auto result = new QVariant(settings->value(QString(key), *defaultValuePtr)); + return static_cast(result); + } + } + + return defaultValue; +} + +void dos_qsettings_set_value(DosQSettings* vptr, const char* key, + DosQVariant* value) +{ + auto settings = static_cast(vptr); + if(settings) + { + auto valuePtr = static_cast(value); + if(valuePtr) + { + return settings->setValue(QString(key), *valuePtr); + } + } +} + +void dos_qsettings_remove(DosQSettings* vptr, const char* key) +{ + auto settings = static_cast(vptr); + if(settings) + { + return settings->remove(QString(key)); + } +} + +void dos_qsettings_delete(DosQSettings* vptr) +{ + auto qobject = static_cast(vptr); + if(qobject) + qobject->deleteLater(); +} +#pragma endregion + char* dos_to_local_file(const char* fileUrl) { return convert_to_cstring(QUrl(QString::fromUtf8(fileUrl)).toLocalFile()); @@ -1407,4 +1467,4 @@ char* dos_to_local_file(const char* fileUrl) char* dos_from_local_file(const char* filePath) { return convert_to_cstring(QUrl::fromLocalFile(QString::fromUtf8(filePath)).toString()); -} +} \ No newline at end of file