diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-03-20 15:23:25 +0000 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-03-20 15:23:25 +0000 |
| commit | 34da16b7e626be4d96c3098b5265e2c008fb2d65 (patch) | |
| tree | cb4b5fc91507c2c93f76468b276f2e69aa7cd847 /src/plugins/PluginAPI.cpp | |
| parent | 71a95a581f86a801b1db24a417f41d9a395cab38 (diff) | |
plugin api: add addNotificationV2
Allows for issuing fancy notifs via api
Diffstat (limited to 'src/plugins/PluginAPI.cpp')
| -rw-r--r-- | src/plugins/PluginAPI.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/plugins/PluginAPI.cpp b/src/plugins/PluginAPI.cpp index 8c816546..c878516b 100644 --- a/src/plugins/PluginAPI.cpp +++ b/src/plugins/PluginAPI.cpp @@ -193,3 +193,51 @@ APICALL bool HyprlandAPI::removeDispatcher(HANDLE handle, const std::string& nam return true; } + +APICALL bool addNotificationV2(HANDLE handle, const std::unordered_map<std::string, std::any>& data) { + auto* const PLUGIN = g_pPluginSystem->getPluginByHandle(handle); + + if (!PLUGIN) + return false; + + try { + auto iterator = data.find("text"); + if (iterator == data.end()) + return false; + + // mandatory + std::string text; + try { + text = std::any_cast<std::string>(iterator->second); + } catch (std::exception& e) { + // attempt const char* + text = std::any_cast<const char*>(iterator->second); + } + + iterator = data.find("time"); + if (iterator == data.end()) + return false; + + const auto TIME = std::any_cast<uint64_t>(iterator->second); + + iterator = data.find("color"); + if (iterator == data.end()) + return false; + + const auto COLOR = std::any_cast<CColor>(iterator->second); + + // optional + eIcons icon = ICON_NONE; + iterator = data.find("icon"); + if (iterator != data.end()) + icon = std::any_cast<eIcons>(iterator->second); + + g_pHyprNotificationOverlay->addNotification(text, COLOR, TIME, icon); + + } catch (std::exception& e) { + // bad any_cast most likely, plugin error + return false; + } + + return true; +}
\ No newline at end of file |
