diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
commit | c04dcc2e7d834218ef2d4194331e383402495ae1 (patch) | |
tree | 7333e38d10d75386e60f336b80c2443c1166031d /xbmc/interfaces/builtins/SystemBuiltins.cpp | |
parent | Initial commit. (diff) | |
download | kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip |
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'xbmc/interfaces/builtins/SystemBuiltins.cpp')
-rw-r--r-- | xbmc/interfaces/builtins/SystemBuiltins.cpp | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/xbmc/interfaces/builtins/SystemBuiltins.cpp b/xbmc/interfaces/builtins/SystemBuiltins.cpp new file mode 100644 index 0000000..3a41a5f --- /dev/null +++ b/xbmc/interfaces/builtins/SystemBuiltins.cpp @@ -0,0 +1,267 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "SystemBuiltins.h" + +#include "ServiceBroker.h" +#include "messaging/ApplicationMessenger.h" +#include "utils/StringUtils.h" + +/*! \brief Execute a system executable. + * \param params The parameters. + * \details params[0] = The path to the executable. + * + * Set the template parameter Wait to true to wait for execution exit. + */ + template<int Wait=0> +static int Exec(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_MINIMIZE); + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_EXECUTE_OS, Wait, -1, nullptr, params[0]); + + return 0; +} + +/*! \brief Hibernate system. + * \param params (ignored) + */ +static int Hibernate(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_HIBERNATE); + + return 0; +} + +/*! \brief Inhibit idle shutdown timer. + * \param params The parameters. + * \details params[0] = "true" to inhibit shutdown timer (optional). + */ +static int InhibitIdle(const std::vector<std::string>& params) +{ + bool inhibit = (params.size() == 1 && StringUtils::EqualsNoCase(params[0], "true")); + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_INHIBITIDLESHUTDOWN, inhibit); + + return 0; +} + +/*! \brief Minimize application. + * \param params (ignored) + */ +static int Minimize(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_MINIMIZE); + + return 0; +} + +/*! \brief Powerdown system. + * \param params (ignored) + */ +static int Powerdown(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_POWERDOWN); + + return 0; +} + +/*! \brief Quit application. + * \param params (ignored) + */ +static int Quit(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_QUIT); + + return 0; +} + +/*! \brief Reboot system. + * \param params (ignored) + */ +static int Reboot(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_RESTART); + + return 0; +} + +/*! \brief Restart application. + * \param params (ignored) + */ +static int RestartApp(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_RESTARTAPP); + + return 0; +} + +/*! \brief Activate screensaver. + * \param params (ignored) + */ +static int ActivateScreensaver(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_ACTIVATESCREENSAVER); + + return 0; +} + +/*! \brief Reset screensaver. + * \param params (ignored) + */ +static int ResetScreensaver(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_RESETSCREENSAVER); + + return 0; +} + +/*! \brief Inhibit screensaver. + * \param params The parameters. + * \details params[0] = "true" to inhibit screensaver (optional). + */ +static int InhibitScreenSaver(const std::vector<std::string>& params) +{ + bool inhibit = (params.size() == 1 && StringUtils::EqualsNoCase(params[0], "true")); + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_INHIBITSCREENSAVER, inhibit); + + return 0; +} + +/*! \brief Shutdown system. + * \param params (ignored) + */ +static int Shutdown(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_SHUTDOWN); + + return 0; +} + +/*! \brief Suspend system. + * \param params (ignored) + */ +static int Suspend(const std::vector<std::string>& params) +{ + CServiceBroker::GetAppMessenger()->PostMsg(TMSG_SUSPEND); + + return 0; +} + + +// Note: For new Texts with comma add a "\" before!!! Is used for table text. +// +/// \page page_List_of_built_in_functions +/// \section built_in_functions_15 System built-in's +/// +/// ----------------------------------------------------------------------------- +/// +/// \table_start +/// \table_h2_l{ +/// Function, +/// Description } +/// \table_row2_l{ +/// <b>`ActivateScreensaver`</b> +/// , +/// Starts the screensaver +/// } +/// \table_row2_l{ +/// <b>`InhibitScreensaver(yesNo)`</b> +/// , +/// Inhibit the screensaver +/// @param[in] yesNo value with "true" or "false" to inhibit or allow screensaver (leaving empty defaults to false) +/// } +/// \table_row2_l{ +/// <b>`Hibernate`</b> +/// , +/// Hibernate (S4) the System +/// } +/// \table_row2_l{ +/// <b>`InhibitIdleShutdown(true/false)`</b> +/// , +/// Prevent the system to shutdown on idle. +/// @param[in] value "true" to inhibit shutdown timer (optional). +/// } +/// \table_row2_l{ +/// <b>`Minimize`</b> +/// , +/// Minimizes Kodi +/// } +/// \table_row2_l{ +/// <b>`Powerdown`</b> +/// , +/// Powerdown system +/// } +/// \table_row2_l{ +/// <b>`Quit`</b> +/// , +/// Quits Kodi +/// } +/// \table_row2_l{ +/// <b>`Reboot`</b> +/// , +/// Cold reboots the system (power cycle) +/// } +/// \table_row2_l{ +/// <b>`Reset`</b> +/// , +/// Reset the system (same as reboot) +/// } +/// \table_row2_l{ +/// <b>`Restart`</b> +/// , +/// Restart the system (same as reboot) +/// } +/// \table_row2_l{ +/// <b>`RestartApp`</b> +/// , +/// Restarts Kodi (only implemented under Windows and Linux) +/// } +/// \table_row2_l{ +/// <b>`ShutDown`</b> +/// , +/// Trigger default Shutdown action defined in System Settings +/// } +/// \table_row2_l{ +/// <b>`Suspend`</b> +/// , +/// Suspends (S3 / S1 depending on bios setting) the System +/// } +/// \table_row2_l{ +/// <b>`System.Exec(exec)`</b> +/// , +/// Execute shell commands +/// @param[in] exec The path to the executable +/// } +/// \table_row2_l{ +/// <b>`System.ExecWait(exec)`</b> +/// , +/// Execute shell commands and freezes Kodi until shell is closed +/// @param[in] exec The path to the executable +/// } +/// \table_end +/// + +CBuiltins::CommandMap CSystemBuiltins::GetOperations() const +{ + return {{"activatescreensaver", {"Activate Screensaver", 0, ActivateScreensaver}}, + {"resetscreensaver", {"Reset Screensaver", 0, ResetScreensaver}}, + {"hibernate", {"Hibernates the system", 0, Hibernate}}, + {"inhibitidleshutdown", {"Inhibit idle shutdown", 0, InhibitIdle}}, + {"inhibitscreensaver", {"Inhibit Screensaver", 0, InhibitScreenSaver}}, + {"minimize", {"Minimize Kodi", 0, Minimize}}, + {"powerdown", {"Powerdown system", 0, Powerdown}}, + {"quit", {"Quit Kodi", 0, Quit}}, + {"reboot", {"Reboot the system", 0, Reboot}}, + {"reset", {"Reset the system (same as reboot)", 0, Reboot}}, + {"restart", {"Restart the system (same as reboot)", 0, Reboot}}, + {"restartapp", {"Restart Kodi", 0, RestartApp}}, + {"shutdown", {"Shutdown the system", 0, Shutdown}}, + {"suspend", {"Suspends the system", 0, Suspend}}, + {"system.exec", {"Execute shell commands", 1, Exec<0>}}, + {"system.execwait", + {"Execute shell commands and freezes Kodi until shell is closed", 1, Exec<1>}}}; +} |