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/GUIContainerBuiltins.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/GUIContainerBuiltins.cpp')
-rw-r--r-- | xbmc/interfaces/builtins/GUIContainerBuiltins.cpp | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/xbmc/interfaces/builtins/GUIContainerBuiltins.cpp b/xbmc/interfaces/builtins/GUIContainerBuiltins.cpp new file mode 100644 index 0000000..a97565c --- /dev/null +++ b/xbmc/interfaces/builtins/GUIContainerBuiltins.cpp @@ -0,0 +1,189 @@ +/* + * 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 "GUIContainerBuiltins.h" + +#include "GUIUserMessages.h" +#include "ServiceBroker.h" +#include "guilib/GUIComponent.h" +#include "guilib/GUIWindowManager.h" +#include "utils/StringUtils.h" + +/*! \brief Change sort method. + * \param params (ignored) + * + * Set the Dir template parameter to 1 to switch to next sort method + * or -1 to switch to previous sort method. + */ + template<int Dir> +static int ChangeSortMethod(const std::vector<std::string>& params) +{ + CGUIMessage message(GUI_MSG_CHANGE_SORT_METHOD, CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow(), 0, 0, Dir); + CServiceBroker::GetGUI()->GetWindowManager().SendMessage(message); + + return 0; +} + +/*! \brief Change view mode. + * \param params (ignored) + * + * Set the Dir template parameter to 1 to switch to next view mode + * or -1 to switch to previous view mode. + */ + template<int Dir> +static int ChangeViewMode(const std::vector<std::string>& params) +{ + CGUIMessage message(GUI_MSG_CHANGE_VIEW_MODE, CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow(), 0, 0, Dir); + CServiceBroker::GetGUI()->GetWindowManager().SendMessage(message); + + return 0; +} + +/*! \brief Refresh a media window. + * \param params The parameters. + * \details params[0] = The URL to refresh window at. + */ +static int Refresh(const std::vector<std::string>& params) +{ // NOTE: These messages require a media window, thus they're sent to the current activewindow. + // This shouldn't stop a dialog intercepting it though. + CGUIMessage message(GUI_MSG_NOTIFY_ALL, CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow(), 0, GUI_MSG_UPDATE, 1); // 1 to reset the history + message.SetStringParam(!params.empty() ? params[0] : ""); + CServiceBroker::GetGUI()->GetWindowManager().SendMessage(message); + + return 0; +} + +/*! \brief Set sort method. + * \param params The parameters. + * \details params[0] = ID of sort method. + */ +static int SetSortMethod(const std::vector<std::string>& params) +{ + CGUIMessage message(GUI_MSG_CHANGE_SORT_METHOD, CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow(), 0, atoi(params[0].c_str())); + CServiceBroker::GetGUI()->GetWindowManager().SendMessage(message); + + return 0; +} + +/*! \brief Set view mode. + * \param params The parameters. + * \details params[0] = ID of view mode. + */ +static int SetViewMode(const std::vector<std::string>& params) +{ + CGUIMessage message(GUI_MSG_CHANGE_VIEW_MODE, CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow(), 0, atoi(params[0].c_str())); + CServiceBroker::GetGUI()->GetWindowManager().SendMessage(message); + + return 0; +} + +/*! \brief Toggle sort direction. + * \param params (ignored) + */ +static int ToggleSortDirection(const std::vector<std::string>& params) +{ + CGUIMessage message(GUI_MSG_CHANGE_SORT_DIRECTION, CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow(), 0, 0); + CServiceBroker::GetGUI()->GetWindowManager().SendMessage(message); + + return 0; +} + +/*! \brief Update a listing in a media window. + * \param params The parameters. + * \details params[0] = The URL to update listing at. + * params[1] = "replace" to reset history (optional). + */ +static int Update(const std::vector<std::string>& params) +{ + CGUIMessage message(GUI_MSG_NOTIFY_ALL, CServiceBroker::GetGUI()->GetWindowManager().GetActiveWindow(), 0, GUI_MSG_UPDATE, 0); + message.SetStringParam(params[0]); + if (params.size() > 1 && StringUtils::EqualsNoCase(params[1], "replace")) + message.SetParam2(1); // reset the history + CServiceBroker::GetGUI()->GetWindowManager().SendMessage(message); + + 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_6 GUI container built-in's +/// +/// ----------------------------------------------------------------------------- +/// +/// \table_start +/// \table_h2_l{ +/// Function, +/// Description } +/// \table_row2_l{ +/// <b>`Container.NextSortMethod`</b> +/// , +/// Change to the next sort method. +/// } +/// \table_row2_l{ +/// <b>`Container.NextViewMode`</b> +/// , +/// Select the next view mode. +/// } +/// \table_row2_l{ +/// <b>`Container.PreviousSortMethod`</b> +/// , +/// Change to the previous sort method. +/// } +/// \table_row2_l{ +/// <b>`Container.PreviousViewMode`</b> +/// , +/// Select the previous view mode. +/// } +/// \table_row2_l{ +/// <b>`Container.Refresh(url)`</b> +/// , +/// Refresh current listing +/// @param[in] url The URL to refresh window at. +/// } +/// \table_row2_l{ +/// <b>`Container.SetSortMethod(id)`</b> +/// , +/// Change to the specified sort method. (For list of ID's \ref SortBy "see List" of sort methods below) +/// @param[in] id ID of sort method. +/// } +/// \table_row2_l{ +/// <b>`Container.SetViewMode(id)`</b> +/// , +/// Set the current view mode (list\, icons etc.) to the given container id. +/// @param[in] id ID of view mode. +/// } +/// \table_row2_l{ +/// <b>`Container.SortDirection`</b> +/// , +/// Toggle the sort direction +/// } +/// \table_row2_l{ +/// <b>`Container.Update(url\,[replace])`</b> +/// , +/// Update current listing. Send `Container.Update(path\,replace)` to reset the path history. +/// @param[in] url The URL to update listing at. +/// @param[in] replace "replace" to reset history (optional). +/// } +/// \table_end +/// + +CBuiltins::CommandMap CGUIContainerBuiltins::GetOperations() const +{ + return { + {"container.nextsortmethod", {"Change to the next sort method", 0, ChangeSortMethod<1>}}, + {"container.nextviewmode", {"Move to the next view type (and refresh the listing)", 0, ChangeViewMode<1>}}, + {"container.previoussortmethod", {"Change to the previous sort method", 0, ChangeSortMethod<-1>}}, + {"container.previousviewmode", {"Move to the previous view type (and refresh the listing)", 0, ChangeViewMode<-1>}}, + {"container.refresh", {"Refresh current listing", 0, Refresh}}, + {"container.setsortdirection", {"Toggle the sort direction", 0, ToggleSortDirection}}, + {"container.setsortmethod", {"Change to the specified sort method", 1, SetSortMethod}}, + {"container.setviewmode", {"Move to the view with the given id", 1, SetViewMode}}, + {"container.update", {"Update current listing. Send Container.Update(path,replace) to reset the path history", 1, Update}} + }; +} |