From b1a9ffcb32eac6bd09368dcab0d266d5fb67d095 Mon Sep 17 00:00:00 2001 From: Maschell Date: Sun, 18 Sep 2022 23:57:23 +0200 Subject: [PATCH] Adds a stub WUPSConfigItem for displaying data --- include/wups/config/WUPSConfigItemStub.h | 23 +++++++ libraries/libwups/WUPSConfigItemStub.cpp | 76 ++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 include/wups/config/WUPSConfigItemStub.h create mode 100644 libraries/libwups/WUPSConfigItemStub.cpp diff --git a/include/wups/config/WUPSConfigItemStub.h b/include/wups/config/WUPSConfigItemStub.h new file mode 100644 index 0000000..c2335bf --- /dev/null +++ b/include/wups/config/WUPSConfigItemStub.h @@ -0,0 +1,23 @@ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ConfigItemStub { + WUPSConfigItemHandle handle; +} ConfigItemStub; + +bool WUPSConfigItemStub_AddToCategory(WUPSConfigCategoryHandle cat, const char *configID, const char *displayName); + +#define WUPSConfigItemStub_AddToCategoryHandled(__config__, __cat__, __configID__, __displayName__) \ + do { \ + if (!WUPSConfigItemStub_AddToCategory(__cat__, __configID__, __displayName__)) { \ + WUPSConfig_Destroy(__config__); \ + return 0; \ + } \ + } while (0) + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/libraries/libwups/WUPSConfigItemStub.cpp b/libraries/libwups/WUPSConfigItemStub.cpp new file mode 100644 index 0000000..1824f0f --- /dev/null +++ b/libraries/libwups/WUPSConfigItemStub.cpp @@ -0,0 +1,76 @@ +#include "wups/config/WUPSConfigItemStub.h" +#include +#include +#include +#include + +void WUPSConfigItemStub_onDelete(void *context); + +int32_t WUPSConfigItemStub_getCurrentValueDisplay(void *context, char *out_buf, int32_t out_size) { + memset(out_buf, 0, out_size); + return 0; +} + +bool WUPSConfigItemStub_callCallback(void *context) { + return false; +} + +void WUPSConfigItemStub_onButtonPressed(void *context, WUPSConfigButtons buttons) { +} + +bool WUPSConfigItemStub_isMovementAllowed(void *context) { + return true; +} + +int32_t WUPSConfigItemStub_getCurrentValueSelectedDisplay(void *context, char *out_buf, int32_t out_size) { + memset(out_buf, 0, out_size); + return 0; +} + +void WUPSConfigItemStub_restoreDefault(void *context) { +} + +void WUPSConfigItemStub_onSelected(void *context, bool isSelected) { +} + +extern "C" bool +WUPSConfigItemStub_AddToCategoryEx(WUPSConfigCategoryHandle cat, const char *configID, const char *displayName) { + if (cat == 0) { + return false; + } + + auto *item = (ConfigItemStub *) malloc(sizeof(ConfigItemStub)); + if (item == nullptr) { + return false; + } + + WUPSConfigCallbacks_t callbacks = { + .getCurrentValueDisplay = &WUPSConfigItemStub_getCurrentValueDisplay, + .getCurrentValueSelectedDisplay = &WUPSConfigItemStub_getCurrentValueSelectedDisplay, + .onSelected = &WUPSConfigItemStub_onSelected, + .restoreDefault = &WUPSConfigItemStub_restoreDefault, + .isMovementAllowed = &WUPSConfigItemStub_isMovementAllowed, + .callCallback = &WUPSConfigItemStub_callCallback, + .onButtonPressed = &WUPSConfigItemStub_onButtonPressed, + .onDelete = &WUPSConfigItemStub_onDelete}; + + if (WUPSConfigItem_Create(&item->handle, configID, displayName, callbacks, item) < 0) { + free(item); + return false; + } + + if (WUPSConfigCategory_AddItem(cat, item->handle) < 0) { + WUPSConfigItem_Destroy(item->handle); + return false; + } + return true; +} + +void WUPSConfigItemStub_onDelete(void *context) { + auto *item = (ConfigItemStub *) context; + free(item); +} + +extern "C" bool WUPSConfigItemStub_AddToCategory(WUPSConfigCategoryHandle cat, const char *configID, const char *displayName) { + return WUPSConfigItemStub_AddToCategoryEx(cat, configID, displayName); +}