From be933ef2241d79558f91796cc5b3a161f72ebf9c Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 19 Oct 2020 00:52:24 +0200 Subject: sync with upstream --- .../include/kodi/gui/CMakeLists.txt | 9 - .../kodi-addon-dev-kit/include/kodi/gui/General.h | 175 ---- .../kodi-addon-dev-kit/include/kodi/gui/ListItem.h | 366 --------- .../kodi-addon-dev-kit/include/kodi/gui/Window.h | 909 --------------------- .../include/kodi/gui/controls/Button.h | 171 ---- .../include/kodi/gui/controls/CMakeLists.txt | 16 - .../include/kodi/gui/controls/Edit.h | 275 ------- .../include/kodi/gui/controls/FadeLabel.h | 153 ---- .../include/kodi/gui/controls/Image.h | 116 --- .../include/kodi/gui/controls/Label.h | 121 --- .../include/kodi/gui/controls/Progress.h | 114 --- .../include/kodi/gui/controls/RadioButton.h | 167 ---- .../include/kodi/gui/controls/Rendering.h | 205 ----- .../include/kodi/gui/controls/SettingsSlider.h | 326 -------- .../include/kodi/gui/controls/Slider.h | 339 -------- .../include/kodi/gui/controls/Spin.h | 365 --------- .../include/kodi/gui/controls/TextBox.h | 168 ---- .../include/kodi/gui/definitions.h | 433 ---------- .../include/kodi/gui/dialogs/CMakeLists.txt | 14 - .../include/kodi/gui/dialogs/ContextMenu.h | 185 ----- .../include/kodi/gui/dialogs/ExtendedProgress.h | 250 ------ .../include/kodi/gui/dialogs/FileBrowser.h | 310 ------- .../include/kodi/gui/dialogs/Keyboard.h | 422 ---------- .../include/kodi/gui/dialogs/Numeric.h | 362 -------- .../include/kodi/gui/dialogs/OK.h | 99 --- .../include/kodi/gui/dialogs/Progress.h | 255 ------ .../include/kodi/gui/dialogs/Select.h | 269 ------ .../include/kodi/gui/dialogs/TextViewer.h | 108 --- .../include/kodi/gui/dialogs/YesNo.h | 188 ----- .../include/kodi/gui/gl/CMakeLists.txt | 7 - .../kodi-addon-dev-kit/include/kodi/gui/gl/GL.h | 111 --- .../include/kodi/gui/gl/GLonDX.h | 369 --------- .../include/kodi/gui/gl/Shader.h | 594 -------------- .../include/kodi/gui/renderHelper.h | 78 -- 34 files changed, 8049 deletions(-) delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/CMakeLists.txt delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/General.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/ListItem.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Button.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/CMakeLists.txt delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Edit.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/FadeLabel.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Image.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Label.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Progress.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/RadioButton.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Rendering.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/SettingsSlider.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Slider.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Spin.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/TextBox.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/definitions.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/CMakeLists.txt delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ContextMenu.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/FileBrowser.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Keyboard.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Numeric.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/OK.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Progress.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Select.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/TextViewer.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/YesNo.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/CMakeLists.txt delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GL.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GLonDX.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/Shader.h delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/gui') diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/CMakeLists.txt b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/CMakeLists.txt deleted file mode 100644 index 834ec00..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -set(HEADERS General.h - ListItem.h - Window.h - definitions.h - renderHelper.h) - -if(NOT ENABLE_STATIC_LIBS) - core_add_library(addons_kodi-addon-dev-kit_include_kodi_gui) -endif() diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/General.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/General.h deleted file mode 100644 index b5a6393..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/General.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../AddonBase.h" -#include "definitions.h" - -namespace kodi -{ -namespace gui -{ - - //============================================================================ - /// - // \defgroup cpp_kodi_gui ::general - /// \addtogroup cpp_kodi_gui - /// @{ - /// @brief **Allow use of binary classes and function to use on add-on's** - /// - /// Permits the use of the required functions of the add-on to Kodi. This class - /// also contains some functions to the control. - /// - /// These are pure functions them no other initialization need. - /// - /// It has the header \ref kodi/gui/General.h "#include " be included - /// to enjoy it. - /// - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui - /// @brief Performs a graphical lock of rendering engine - /// - inline void ATTRIBUTE_HIDDEN Lock() - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->general->lock(); - } - - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui - /// @brief Performs a graphical unlock of previous locked rendering engine - /// - inline void ATTRIBUTE_HIDDEN Unlock() - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->general->unlock(); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui - /// @brief Return the the current screen height with pixel - /// - inline int ATTRIBUTE_HIDDEN GetScreenHeight() - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->general->get_screen_height(CAddonBase::m_interface->toKodi->kodiBase); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui - /// @brief Return the the current screen width with pixel - /// - inline int ATTRIBUTE_HIDDEN GetScreenWidth() - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->general->get_screen_width(CAddonBase::m_interface->toKodi->kodiBase); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui - /// @brief Return the the current screen rendering resolution - /// - inline int ATTRIBUTE_HIDDEN GetVideoResolution() - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->general->get_video_resolution(CAddonBase::m_interface->toKodi->kodiBase); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui - /// @brief Returns the id for the current 'active' dialog as an integer. - /// - /// @return The currently active dialog Id - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// .. - /// int wid = kodi::gui::GetCurrentWindowDialogId(); - /// .. - /// ~~~~~~~~~~~~~ - /// - inline int ATTRIBUTE_HIDDEN GetCurrentWindowDialogId() - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->general->get_current_window_dialog_id(CAddonBase::m_interface->toKodi->kodiBase); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui - /// @brief Returns the id for the current 'active' window as an integer. - /// - /// @return The currently active window Id - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// .. - /// int wid = kodi::gui::GetCurrentWindowId(); - /// .. - /// ~~~~~~~~~~~~~ - /// - inline int ATTRIBUTE_HIDDEN GetCurrentWindowId() - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->general->get_current_window_id(CAddonBase::m_interface->toKodi->kodiBase); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui - /// \brief To get hardware specific device context interface - /// - /// \return The currently active device context - /// - /// \warning This function is only be supported under Windows, on all other - /// OS it return `nullptr`! - /// - /// \note Returned Windows class pointer is `ID3D11DeviceContext1`. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// .. - /// ID3D11DeviceContext1* context = static_cast(kodi::gui::GetHWContext()); - /// .. - /// ~~~~~~~~~~~~~ - /// - inline void* GetHWContext() - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->general->get_hw_context(CAddonBase::m_interface->toKodi->kodiBase); - } - //-------------------------------------------------------------------------- - -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/ListItem.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/ListItem.h deleted file mode 100644 index 1af4863..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/ListItem.h +++ /dev/null @@ -1,366 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../AddonBase.h" -#include "definitions.h" - -#include - -namespace kodi -{ -namespace gui -{ - - class CWindow; - - class ATTRIBUTE_HIDDEN CAddonGUIControlBase - { - public: - GUIHANDLE GetControlHandle() const { return m_controlHandle; } - - protected: - explicit CAddonGUIControlBase(CAddonGUIControlBase* window) - : m_controlHandle(nullptr), - m_interface(::kodi::addon::CAddonBase::m_interface->toKodi), - m_Window(window) {} - - virtual ~CAddonGUIControlBase() = default; - - friend class CWindow; - - GUIHANDLE m_controlHandle; - AddonToKodiFuncTable_Addon* m_interface; - CAddonGUIControlBase* m_Window; - - private: - CAddonGUIControlBase() = delete; - CAddonGUIControlBase(const CAddonGUIControlBase&) = delete; - CAddonGUIControlBase &operator=(const CAddonGUIControlBase&) = delete; - }; - - class CListItem; - typedef std::shared_ptr ListItemPtr; - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_CListItem List Item - /// \ingroup cpp_kodi_gui - /// @brief \cpp_class{ kodi::gui::CListItem } - /// **Selectable window list item** - /// - /// The list item control is used for creating item lists in Kodi - /// - /// The with \ref ListItem.h "#include " given - /// class is used to create a item entry for a list on window and to support it's - /// control. - /// - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_CListItem_Defs Definitions, structures and enumerators - /// \ingroup cpp_kodi_gui_CListItem - /// @brief **Library definition values** - /// - - class ATTRIBUTE_HIDDEN CListItem : public CAddonGUIControlBase - { - public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Class constructor with parameters - /// - /// @param[in] label Item label - /// @param[in] label2 Second Item label (if needed) - /// @param[in] iconImage Item icon image (if needed) - /// @param[in] path Path to where item is defined - /// - CListItem( - const std::string& label = "", - const std::string& label2 = "", - const std::string& iconImage = "", - const std::string& path = "") - : CAddonGUIControlBase(nullptr) - { - m_controlHandle = m_interface->kodi_gui->listItem->create(m_interface->kodiBase, label.c_str(), - label2.c_str(), iconImage.c_str(), - path.c_str()); - } - - /* - * Constructor used for parts given by list items from addon window - * - * Related to call of "ListItemPtr kodi::gui::CWindow::GetListItem(int listPos)" - * Not needed for addon development itself - */ - explicit CListItem(GUIHANDLE listItemHandle) - : CAddonGUIControlBase(nullptr) - { - m_controlHandle = listItemHandle; - } - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Class destructor - /// - ~CListItem() override - { - m_interface->kodi_gui->listItem->destroy(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Returns the listitem label. - /// - /// @return Label of item - /// - std::string GetLabel() - { - std::string label; - char* ret = m_interface->kodi_gui->listItem->get_label(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Sets the listitem label. - /// - /// @param[in] label string or unicode - text string. - /// - void SetLabel(const std::string& label) - { - m_interface->kodi_gui->listItem->set_label(m_interface->kodiBase, m_controlHandle, label.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Returns the second listitem label. - /// - /// @return Second label of item - /// - std::string GetLabel2() - { - std::string label; - char* ret = m_interface->kodi_gui->listItem->get_label2(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Sets the listitem's label2. - /// - /// @param[in] label string or unicode - text string. - /// - void SetLabel2(const std::string& label) - { - m_interface->kodi_gui->listItem->set_label2(m_interface->kodiBase, m_controlHandle, label.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Sets the listitem's art - /// - /// @param[in] type Type of Art to set - /// - Some default art values (any string possible): - /// | value (type) | Type | - /// |:-------------:|:--------------------------------------------------| - /// | thumb | string - image filename - /// | poster | string - image filename - /// | banner | string - image filename - /// | fanart | string - image filename - /// | clearart | string - image filename - /// | clearlogo | string - image filename - /// | landscape | string - image filename - /// | icon | string - image filename - /// @return The url to use for Art - /// - std::string GetArt(const std::string& type) - { - std::string strReturn; - char* ret = m_interface->kodi_gui->listItem->get_art(m_interface->kodiBase, m_controlHandle, type.c_str()); - if (ret != nullptr) - { - if (std::strlen(ret)) - strReturn = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return strReturn; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Sets the listitem's art - /// - /// @param[in] type Type of Art to set - /// @param[in] url The url to use for Art - /// - Some default art values (any string possible): - /// | value (type) | Type | - /// |:-------------:|:--------------------------------------------------| - /// | thumb | string - image filename - /// | poster | string - image filename - /// | banner | string - image filename - /// | fanart | string - image filename - /// | clearart | string - image filename - /// | clearlogo | string - image filename - /// | landscape | string - image filename - /// | icon | string - image filename - /// - void SetArt(const std::string& type, const std::string& url) - { - m_interface->kodi_gui->listItem->set_art(m_interface->kodiBase, m_controlHandle, type.c_str(), url.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Returns the path / filename of this listitem. - /// - /// @return Path string - /// - std::string GetPath() - { - std::string strReturn; - char* ret = m_interface->kodi_gui->listItem->get_path(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - strReturn = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return strReturn; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Sets the listitem's path. - /// - /// @param[in] path string or unicode - path, activated when - /// item is clicked. - /// - /// @note You can use the above as keywords for arguments. - /// - void SetPath(const std::string& path) - { - m_interface->kodi_gui->listItem->set_path(m_interface->kodiBase, m_controlHandle, path.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Sets a listitem property, similar to an infolabel. - /// - /// @param[in] key string - property name. - /// @param[in] value string or unicode - value of property. - /// - /// @note Key is NOT case sensitive. - /// You can use the above as keywords for arguments and skip certain\n - /// optional arguments.\n - /// Once you use a keyword, all following arguments require the - /// keyword. - /// - /// Some of these are treated internally by Kodi, such as the - /// 'StartOffset' property, which is the offset in seconds at which to - /// start playback of an item. Others may be used in the skin to add - /// extra information, such as 'WatchedCount' for tvshow items - /// - void SetProperty(const std::string& key, const std::string& value) - { - m_interface->kodi_gui->listItem->set_property(m_interface->kodiBase, m_controlHandle, key.c_str(), value.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Returns a listitem property as a string, similar to an infolabel. - /// - /// @param[in] key string - property name. - /// @return string - List item property - /// - /// @note Key is NOT case sensitive.\n - /// You can use the above as keywords for arguments and skip certain - /// optional arguments.\n - /// Once you use a keyword, all following arguments require the - /// keyword. - /// - std::string GetProperty(const std::string& key) - { - std::string label; - char* ret = m_interface->kodi_gui->listItem->get_property(m_interface->kodiBase, m_controlHandle, key.c_str()); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief To control selection of item in list (also multiple selection, - /// in list on serveral items possible). - /// - /// @param[in] selected if true becomes set as selected - /// - void Select(bool selected) - { - m_interface->kodi_gui->listItem->select(m_interface->kodiBase, m_controlHandle, selected); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CListItem - /// @brief Returns the listitem's selected status. - /// - /// @return true if selected, otherwise false - /// - bool IsSelected() - { - return m_interface->kodi_gui->listItem->is_selected(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - }; - -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h deleted file mode 100644 index 5011374..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h +++ /dev/null @@ -1,909 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../AddonBase.h" -#include "ListItem.h" - -#ifdef BUILD_KODI_ADDON -#include "../ActionIDs.h" -#else -#include "input/actions/ActionIDs.h" -#endif - -namespace kodi -{ -namespace gui -{ - - class CListItem; - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_CWindow Window - /// \ingroup cpp_kodi_gui - /// @brief \cpp_class{ kodi::gui::CWindow } - /// **Main window control class** - /// - /// The with \ref Window.h "#include " - /// included file brings support to create a window or dialog on Kodi. - /// - /// -------------------------------------------------------------------------- - /// - /// On functions defined input variable controlId (GUI control identifier) - /// is the on window.xml defined value behind type added with id="..." and - /// used to identify for changes there and on callbacks. - /// - /// ~~~~~~~~~~~~~{.xml} - /// - /// Title Label - /// ... - /// - /// - /// progress control - /// ... - /// - /// ~~~~~~~~~~~~~ - /// - /// - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_CWindow_Defs Definitions, structures and enumerators - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Library definition values - /// - - class ATTRIBUTE_HIDDEN CWindow : public CAddonGUIControlBase - { - public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Class constructor with needed values for window / dialog. - /// - /// Creates a new Window class. - /// - /// @param[in] xmlFilename XML file for the skin - /// @param[in] defaultSkin default skin to use if needed not available - /// @param[in] asDialog Use window as dialog if set - /// @param[in] isMedia [opt] bool - if False, create a regular window. - /// if True, create a mediawindow. - /// (default=false) - /// @note only usable for windows not for dialogs. - /// - /// - CWindow(const std::string& xmlFilename, const std::string& defaultSkin, bool asDialog, bool isMedia = false) - : CAddonGUIControlBase(nullptr) - { - m_controlHandle = m_interface->kodi_gui->window->create(m_interface->kodiBase, xmlFilename.c_str(), - defaultSkin.c_str(), asDialog, isMedia); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, "kodi::gui::CWindow can't create window class from Kodi !!!"); - m_interface->kodi_gui->window->set_callbacks(m_interface->kodiBase, m_controlHandle, this, - CBOnInit, CBOnFocus, CBOnClick, CBOnAction, - CBGetContextButtons, CBOnContextButton); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup CWindow - /// @brief Class destructor - /// - /// - /// - ~CWindow() override - { - if (m_controlHandle) - m_interface->kodi_gui->window->destroy(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Show this window. - /// - /// Shows this window by activating it, calling close() after it wil activate the - /// current window again. - /// - /// @note If your Add-On ends this window will be closed to. To show it forever, - /// make a loop at the end of your Add-On or use doModal() instead. - /// - /// @warning If used must be the class be global present until Kodi becomes - /// closed. The creation can be done after before "Show" becomes called, but - /// not delete class after them. - /// - /// @return Return true if call and show is successed, - /// if false was something failed to get needed - /// skin parts. - /// - bool Show() - { - return m_interface->kodi_gui->window->show(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Closes this window. - /// - /// Closes this window by activating the old window. - /// @note The window is not deleted with this method. - /// - void Close() - { - m_interface->kodi_gui->window->close(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Display this window until close() is called. - /// - void DoModal() - { - m_interface->kodi_gui->window->do_modal(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Gives the control with the supplied focus. - /// - /// @param[in] iControlId On skin defined id of control - /// @return Return true if call and focus is successed, - /// if false was something failed to get needed - /// skin parts. - /// - /// - bool SetFocusId(int iControlId) - { - return m_interface->kodi_gui->window->set_focus_id(m_interface->kodiBase, m_controlHandle, iControlId); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Returns the id of the control which is focused. - /// - /// @return Focused control id - /// - /// - int GetFocusId() - { - return m_interface->kodi_gui->window->get_focus_id(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To set the used label on given control id - /// - /// @param[in] controlId Control id where label need to set - /// @param[in] label Label to use - /// - /// - void SetControlLabel(int controlId, const std::string& label) - { - m_interface->kodi_gui->window->set_control_label(m_interface->kodiBase, m_controlHandle, controlId, label.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To set the visibility on given control id - /// - /// @param[in] controlId Control id where visibility is changed - /// @param[in] visible Boolean value with `true` for visible, `false` for hidden - /// - /// - void SetControlVisible(int controlId, bool visible) - { - m_interface->kodi_gui->window->set_control_visible(m_interface->kodiBase, m_controlHandle, controlId, visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To set the selection on given control id - /// - /// @param[in] controlId Control id where selection is changed - /// @param[in] selected Boolean value with `true` for selected, `false` for not - /// - /// - void SetControlSelected(int controlId, bool selected) - { - m_interface->kodi_gui->window->set_control_selected(m_interface->kodiBase, m_controlHandle, controlId, selected); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Sets a window property, similar to an infolabel. - /// - /// @param[in] key string - property name. - /// @param[in] value string or unicode - value of property. - /// - /// @note Key is NOT case sensitive. Setting value to an empty string is - /// equivalent to clearProperty(key).\n - /// You can use the above as keywords for arguments and skip certain - /// optional arguments.\n - /// Once you use a keyword, all following arguments require the keyword. - /// - void SetProperty(const std::string& key, const std::string& value) - { - m_interface->kodi_gui->window->set_property(m_interface->kodiBase, m_controlHandle, key.c_str(), value.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Returns a window property as a string, similar to an infolabel. - /// - /// @param[in] key string - property name. - /// @return The property as strin (if present) - /// - /// @note Key is NOT case sensitive. Setting value to an empty string is - /// equivalent to clearProperty(key).\n - /// You can use the above as keywords for arguments and skip certain - /// optional arguments.\n - /// Once you use a keyword, all following arguments require the keyword. - /// - /// - std::string GetProperty(const std::string& key) const - { - std::string label; - char* ret = m_interface->kodi_gui->window->get_property(m_interface->kodiBase, m_controlHandle, key.c_str()); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Sets a window property with integer value - /// - /// @param[in] key string - property name. - /// @param[in] value integer value to set - /// - /// - void SetPropertyInt(const std::string& key, int value) - { - m_interface->kodi_gui->window->set_property_int(m_interface->kodiBase, m_controlHandle, key.c_str(), value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Returns a window property with integer value - /// - /// @param[in] key string - property name. - /// @return integer value of property - /// - int GetPropertyInt(const std::string& key) const - { - return m_interface->kodi_gui->window->get_property_int(m_interface->kodiBase, m_controlHandle, key.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Sets a window property with boolean value - /// - /// @param[in] key string - property name. - /// @param[in] value boolean value to set - /// - /// - void SetPropertyBool(const std::string& key, bool value) - { - m_interface->kodi_gui->window->set_property_bool(m_interface->kodiBase, m_controlHandle, key.c_str(), value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Returns a window property with boolean value - /// - /// @param[in] key string - property name. - /// @return boolean value of property - /// - bool GetPropertyBool(const std::string& key) const - { - return m_interface->kodi_gui->window->get_property_bool(m_interface->kodiBase, m_controlHandle, key.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Sets a window property with double value - /// - /// @param[in] key string - property name. - /// @param[in] value double value to set - /// - /// - void SetPropertyDouble(const std::string& key, double value) - { - m_interface->kodi_gui->window->set_property_double(m_interface->kodiBase, m_controlHandle, key.c_str(), value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Returns a window property with double value - /// - /// @param[in] key string - property name. - /// @return double value of property - /// - /// - double GetPropertyDouble(const std::string& key) const - { - return m_interface->kodi_gui->window->get_property_double(m_interface->kodiBase, m_controlHandle, key.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Remove all present properties from window - /// - /// - /// - void ClearProperties() - { - m_interface->kodi_gui->window->clear_properties(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Clears the specific window property. - /// - /// @param[in] key string - property name. - /// - /// @note Key is NOT case sensitive. Equivalent to SetProperty(key, "") - /// You can use the above as keywords for arguments and skip certain - /// optional arguments. - /// Once you use a keyword, all following arguments require the - /// keyword. - /// - /// - ///----------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// .. - /// ClearProperty('Category') - /// .. - /// ~~~~~~~~~~~~~ - /// - void ClearProperty(const std::string& key) - { - m_interface->kodi_gui->window->clear_property(m_interface->kodiBase, m_controlHandle, key.c_str()); - } - //-------------------------------------------------------------------------- - - //@{ - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Function delete all entries in integrated list. - /// - /// - /// - void ClearList() - { - m_interface->kodi_gui->window->clear_item_list(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To add a list item in the on window integrated list. - /// - /// @param[in] item List item to add - /// @param[in] itemPosition [opt] The position for item, default is on end - /// - /// - void AddListItem(ListItemPtr item, int itemPosition = -1) - { - m_interface->kodi_gui->window->add_list_item(m_interface->kodiBase, m_controlHandle, item->m_controlHandle, itemPosition); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To add a list item based upon string in the on window integrated list. - /// - /// @param[in] item List item to add - /// @param[in] itemPosition [opt] The position for item, default is on end - /// - /// - void AddListItem(const std::string item, int itemPosition = -1) - { - m_interface->kodi_gui->window->add_list_item(m_interface->kodiBase, m_controlHandle, std::make_shared(item)->m_controlHandle, itemPosition); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Remove list item on position. - /// - /// @param[in] itemPosition List position to remove - /// - /// - void RemoveListItem(int itemPosition) - { - m_interface->kodi_gui->window->remove_list_item_from_position(m_interface->kodiBase, m_controlHandle, itemPosition); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Remove item with given control class from list. - /// - /// @param[in] item List item control class to remove - /// - /// - void RemoveListItem(ListItemPtr item) - { - m_interface->kodi_gui->window->remove_list_item(m_interface->kodiBase, m_controlHandle, item->m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To get list item control class on wanted position. - /// - /// @param[in] listPos Position from where control is needed - /// @return The list item control class or null if not found - /// - /// @warning Function returns a new generated **CListItem** class! - /// - ListItemPtr GetListItem(int listPos) - { - GUIHANDLE handle = m_interface->kodi_gui->window->get_list_item(m_interface->kodiBase, m_controlHandle, listPos); - if (!handle) - return ListItemPtr(); - - return std::make_shared(handle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To set position of selected part in list. - /// - /// @param[in] listPos Position to use - /// - /// - void SetCurrentListPosition(int listPos) - { - m_interface->kodi_gui->window->set_current_list_position(m_interface->kodiBase, m_controlHandle, listPos); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To get current selected position in list - /// - /// @return Current list position - /// - /// - int GetCurrentListPosition() - { - return m_interface->kodi_gui->window->get_current_list_position(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To get the amount of entries in the list. - /// - /// @return Size of in window integrated control class - /// - /// - int GetListSize() - { - return m_interface->kodi_gui->window->get_list_size(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Sets a container property, similar to an infolabel. - /// - /// @param[in] key string - property name. - /// @param[in] value string or unicode - value of property. - /// - /// @note Key is NOT case sensitive.\n - /// You can use the above as keywords for arguments and skip certain - /// optional arguments.\n - /// Once you use a keyword, all following arguments require the keyword. - /// - /// - void SetContainerProperty(const std::string& key, const std::string& value) - { - m_interface->kodi_gui->window->set_container_property(m_interface->kodiBase, m_controlHandle, key.c_str(), value.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Sets the content type of the container. - /// - /// @param[in] value string or unicode - content value. - /// - /// __Available content types__ - /// | Name | Media | - /// |:-----------:|:-----------------------------------------| - /// | actors | Videos - /// | addons | Addons, Music, Pictures, Programs, Videos - /// | albums | Music, Videos - /// | artists | Music, Videos - /// | countries | Music, Videos - /// | directors | Videos - /// | files | Music, Videos - /// | games | Games - /// | genres | Music, Videos - /// | images | Pictures - /// | mixed | Music, Videos - /// | movies | Videos - /// | Musicvideos | Music, Videos - /// | playlists | Music, Videos - /// | seasons | Videos - /// | sets | Videos - /// | songs | Music - /// | studios | Music, Videos - /// | tags | Music, Videos - /// | tvshows | Videos - /// | videos | Videos - /// | years | Music, Videos - /// - /// - void SetContainerContent(const std::string& value) - { - m_interface->kodi_gui->window->set_container_content(m_interface->kodiBase, m_controlHandle, value.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief Get the id of the currently visible container. - /// - /// @return currently visible container id - /// - /// - int GetCurrentContainerId() - { - return m_interface->kodi_gui->window->get_current_container_id(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - //@} - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow - /// @brief To inform Kodi that it need to render region new. - /// - /// - void MarkDirtyRegion() - { - return m_interface->kodi_gui->window->mark_dirty_region(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - // - /// @defgroup cpp_kodi_gui_CWindow_callbacks Callback functions from Kodi to add-on - /// \ingroup cpp_kodi_gui_CWindow - //@{ - /// @brief GUI window callback functions. - /// - /// Functions to handle control callbacks from Kodi - /// - /// ------------------------------------------------------------------------ - /// - /// @link cpp_kodi_gui_CWindow Go back to normal functions from CWindow@endlink - // - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow_callbacks - /// @brief OnInit method. - /// - /// @return Return true if initialize was done successful - /// - /// - virtual bool OnInit() { return false; } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow_callbacks - /// @brief OnFocus method. - /// - /// @param[in] controlId GUI control identifier - /// @return Return true if focus condition was handled there or false to handle them by Kodi itself - /// - /// - virtual bool OnFocus(int controlId) { return false; } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow_callbacks - /// @brief OnClick method. - /// - /// @param[in] controlId GUI control identifier - /// @return Return true if click was handled there - /// or false to handle them by Kodi itself - /// - /// - virtual bool OnClick(int controlId) { return false; } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow_callbacks - /// @brief OnAction method. - /// - /// @param[in] actionId The action id to perform, see - /// \ref kodi_key_action_ids to get list of - /// them - /// @return Return true if action was handled there - /// or false to handle them by Kodi itself - /// - /// - /// This method will receive all actions that the main program will send - /// to this window. - /// - /// @note - /// - By default, only the \c PREVIOUS_MENU and \c NAV_BACK actions are handled. - /// - Overwrite this method to let your code handle all actions. - /// - Don't forget to capture \c ACTION_PREVIOUS_MENU or \c ACTION_NAV_BACK, else the user can't close this window. - /// - /// - ///-------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// .. - /// /* Window used with parent / child way */ - /// bool cYOUR_CLASS::OnAction(int actionId) - /// { - /// switch (action) - /// { - /// case ACTION_PREVIOUS_MENU: - /// case ACTION_NAV_BACK: - /// printf("action recieved: previous"); - /// Close(); - /// return true; - /// case ACTION_SHOW_INFO: - /// printf("action recieved: show info"); - /// break; - /// case ACTION_STOP: - /// printf("action recieved: stop"); - /// break; - /// case ACTION_PAUSE: - /// printf("action recieved: pause"); - /// break; - /// default: - /// break; - /// } - /// return false; - /// } - /// .. - /// ~~~~~~~~~~~~~ - /// - virtual bool OnAction(int actionId, uint32_t buttoncode, wchar_t unicode) - { - switch (actionId) - { - case ACTION_PREVIOUS_MENU: - case ACTION_NAV_BACK: - Close(); - return true; - default: - break; - } - return false; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow_callbacks - /// @brief Get context menu buttons for list entry - /// - /// @param[in] itemNumber selected list item entry - /// @param[in] buttons list where context menus becomes added with his - /// identifier and name. - /// - virtual void GetContextButtons(int itemNumber, std::vector< std::pair > &buttons) - { - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow_callbacks - /// @brief Called after selection in context menu - /// - /// @param[in] itemNumber selected list item entry - /// @param[in] button the pressed button id - /// @return true if handled, otherwise false - /// - virtual bool OnContextButton(int itemNumber, unsigned int button) - { - return false; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_CWindow_callbacks - /// @brief **Set independent callbacks** - /// - /// If the class is used independent (with "new CWindow") and - /// not as parent (with "cCLASS_own : CWindow") from own must be the - /// callback from Kodi to add-on overdriven with own functions! - /// - /// @param[in] cbhdl The pointer to own handle data - /// structure / class - /// @param[in] CBOnInit Own defined window init function - /// @param[in] CBOnFocus Own defined focus function - /// @param[in] CBOnClick Own defined click function - /// @param[in] CBOnAction Own defined action function - /// @param[in] CBGetContextButtons [opt] To get context menu entries for - /// lists function - /// @param[in] CBOnContextButton [opt] Used context menu entry function - /// - /// - ///-------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// ... - /// - /// bool OnInit(GUIHANDLE cbhdl) - /// { - /// ... - /// return true; - /// } - /// - /// bool OnFocus(GUIHANDLE cbhdl, int controlId) - /// { - /// ... - /// return true; - /// } - /// - /// bool OnClick(GUIHANDLE cbhdl, int controlId) - /// { - /// ... - /// return true; - /// } - /// - /// bool OnAction(GUIHANDLE cbhdl, int actionId) - /// { - /// ... - /// return true; - /// } - /// - /// ... - /// /* Somewhere where you create the window */ - /// CWindow myWindow = new CWindow; - /// myWindow->SetIndependentCallbacks(myWindow, OnInit, OnFocus, OnClick, OnAction); - /// ... - /// ~~~~~~~~~~~~~ - /// - void SetIndependentCallbacks( - GUIHANDLE cbhdl, - bool (*CBOnInit) (GUIHANDLE cbhdl), - bool (*CBOnFocus) (GUIHANDLE cbhdl, int controlId), - bool (*CBOnClick) (GUIHANDLE cbhdl, int controlId), - bool (*CBOnAction) (GUIHANDLE cbhdl, int actionId, uint32_t buttoncode, wchar_t unicode), - void (*CBGetContextButtons) (GUIHANDLE cbhdl, int itemNumber, gui_context_menu_pair* buttons, unsigned int* size) = nullptr, - bool (*CBOnContextButton) (GUIHANDLE cbhdl, int itemNumber, unsigned int button) = nullptr) - { - if (!cbhdl || - !CBOnInit || !CBOnFocus || !CBOnClick || !CBOnAction) - { - kodi::Log(ADDON_LOG_FATAL, "kodi::gui::CWindow::%s called with nullptr !!!", __FUNCTION__); - return; - } - - m_interface->kodi_gui->window->set_callbacks(m_interface->kodiBase, m_controlHandle, cbhdl, - CBOnInit, CBOnFocus, CBOnClick, CBOnAction, - CBGetContextButtons, CBOnContextButton); - } - //-------------------------------------------------------------------------- - //@} - - private: - static bool CBOnInit(GUIHANDLE cbhdl) - { - return static_cast(cbhdl)->OnInit(); - } - - static bool CBOnFocus(GUIHANDLE cbhdl, int controlId) - { - return static_cast(cbhdl)->OnFocus(controlId); - } - - static bool CBOnClick(GUIHANDLE cbhdl, int controlId) - { - return static_cast(cbhdl)->OnClick(controlId); - } - - static bool CBOnAction(GUIHANDLE cbhdl, int actionId, uint32_t buttoncode, wchar_t unicode) - { - return static_cast(cbhdl)->OnAction(actionId, buttoncode, unicode); - } - - static void CBGetContextButtons(GUIHANDLE cbhdl, int itemNumber, gui_context_menu_pair* buttons, unsigned int* size) - { - std::vector< std::pair > buttonList; - static_cast(cbhdl)->GetContextButtons(itemNumber, buttonList); - if (!buttonList.empty()) - { - unsigned int presentSize = static_cast(buttonList.size()); - if (presentSize > *size) - kodi::Log(ADDON_LOG_WARNING, "GetContextButtons: More as allowed '%i' entries present!", *size); - else - *size = presentSize; - for (unsigned int i = 0; i < *size; ++i) - { - buttons[i].id = buttonList[i].first; - strncpy(buttons[i].name, buttonList[i].second.c_str(), ADDON_MAX_CONTEXT_ENTRY_NAME_LENGTH); - } - } - } - - static bool CBOnContextButton(GUIHANDLE cbhdl, int itemNumber, unsigned int button) - { - return static_cast(cbhdl)->OnContextButton(itemNumber, button); - } - }; - -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Button.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Button.h deleted file mode 100644 index 081ab06..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Button.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CButton Control Button -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CButton } -/// **Standard push button control for window** -/// -/// The button control is used for creating push buttons in Kodi. You can -/// choose the position, size, and look of the button, as well as choosing -/// what action(s) should be performed when pushed. -/// -/// It has the header \ref Button.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref skin_Button_control "button control" -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// -class ATTRIBUTE_HIDDEN CButton : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// @ingroup cpp_kodi_gui_control_CButton - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CButton(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_button( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, "kodi::gui::CButton can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// @ingroup cpp_kodi_gui_control_CButton - /// @brief Destructor - /// - ~CButton() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// @ingroup cpp_kodi_gui_control_CButton - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_button->set_visible(m_interface->kodiBase, m_controlHandle, - visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// @ingroup cpp_kodi_gui_control_CButton - /// @brief Set's the control's enabled/disabled state - /// - /// @param[in] enabled If true enabled, otherwise disabled - /// - void SetEnabled(bool enabled) - { - m_interface->kodi_gui->control_button->set_enabled(m_interface->kodiBase, m_controlHandle, - enabled); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// @ingroup cpp_kodi_gui_control_CButton - /// @brief To set the text string on button - /// - /// @param[in] label Text to show - /// - void SetLabel(const std::string& label) - { - m_interface->kodi_gui->control_button->set_label(m_interface->kodiBase, m_controlHandle, - label.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// @ingroup cpp_kodi_gui_control_CButton - /// @brief Get the used text from button - /// - /// @return Text shown - /// - std::string GetLabel() const - { - std::string label; - char* ret = - m_interface->kodi_gui->control_button->get_label(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// @ingroup cpp_kodi_gui_control_CButton - /// @brief If two labels are used for button becomes it set with them - /// - /// @param[in] label Text for second label - /// - void SetLabel2(const std::string& label) - { - m_interface->kodi_gui->control_button->set_label2(m_interface->kodiBase, m_controlHandle, - label.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// @ingroup cpp_kodi_gui_control_CButton - /// @brief Get the second label if present - /// - /// @return Second label - /// - std::string GetLabel2() const - { - std::string label; - char* ret = - m_interface->kodi_gui->control_button->get_label2(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/CMakeLists.txt b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/CMakeLists.txt deleted file mode 100644 index c7cc1dd..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -set(HEADERS Button.h - Edit.h - FadeLabel.h - Image.h - Label.h - Progress.h - RadioButton.h - Rendering.h - SettingsSlider.h - Slider.h - Spin.h - TextBox.h) - -if(NOT ENABLE_STATIC_LIBS) - core_add_library(addons_kodi-addon-dev-kit_include_kodi_gui_controls) -endif() diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Edit.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Edit.h deleted file mode 100644 index 99c01de..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Edit.h +++ /dev/null @@ -1,275 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_controls_CEdit Control Edit - /// \ingroup cpp_kodi_gui - /// @brief \cpp_class{ kodi::gui::controls::CEdit } - /// **Editable window text control used as an input control for the osd keyboard - /// and other input fields** - /// - /// The edit control allows a user to input text in Kodi. You can choose the - /// font, size, colour, location and header of the text to be displayed. - /// - /// It has the header \ref Edit.h "#include " - /// be included to enjoy it. - /// - /// Here you find the needed skin part for a \ref skin_Edit_control - /// "edit control". - /// - /// @note The call of the control is only possible from the corresponding - /// window as its class and identification number is required. - /// - - //============================================================================ - // see gui/definition.h for use of group "cpp_kodi_gui_controls_CEdit_Defs" - /// - /// \defgroup cpp_kodi_gui_controls_CEdit_Defs Definitions, structures and enumerators - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief **Library definition values** - /// - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ - -//============================================================================ -/// -/// \ingroup cpp_kodi_gui_controls_CEdit_Defs -/// @{ -/// @anchor AddonGUIInputType -/// @brief Text input types used on kodi::gui::controls::CEdit -enum AddonGUIInputType -{ - /// Text inside edit control only readable - ADDON_INPUT_TYPE_READONLY = -1, - /// Normal text entries - ADDON_INPUT_TYPE_TEXT = 0, - /// To use on edit control only numeric numbers - ADDON_INPUT_TYPE_NUMBER, - /// To insert seconds - ADDON_INPUT_TYPE_SECONDS, - /// To insert time - ADDON_INPUT_TYPE_TIME, - /// To insert a date - ADDON_INPUT_TYPE_DATE, - /// Used for write in IP addresses - ADDON_INPUT_TYPE_IPADDRESS, - /// Text field used as password entry field with not visible text - ADDON_INPUT_TYPE_PASSWORD, - /// Text field used as password entry field with not visible text but - /// returned as MD5 value - ADDON_INPUT_TYPE_PASSWORD_MD5, - /// Use text field for search purpose - ADDON_INPUT_TYPE_SEARCH, - /// Text field as filter - ADDON_INPUT_TYPE_FILTER, - /// - ADDON_INPUT_TYPE_PASSWORD_NUMBER_VERIFY_NEW -}; -/// @} -//---------------------------------------------------------------------------- - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -class ATTRIBUTE_HIDDEN CEdit : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CEdit(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_edit( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::control::CEdit can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief Destructor - /// - ~CEdit() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_edit->set_visible(m_interface->kodiBase, m_controlHandle, - visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief Set's the control's enabled/disabled state - /// - /// @param[in] enabled If true enabled, otherwise disabled - /// - void SetEnabled(bool enabled) - { - m_interface->kodi_gui->control_edit->set_enabled(m_interface->kodiBase, m_controlHandle, - enabled); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief To set the text string on edit control - /// - /// @param[in] label Text to show - /// - void SetLabel(const std::string& label) - { - m_interface->kodi_gui->control_edit->set_label(m_interface->kodiBase, m_controlHandle, - label.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief Returns the text heading for this edit control. - /// - /// @return Heading text - /// - std::string GetLabel() const - { - std::string label; - char* ret = - m_interface->kodi_gui->control_edit->get_label(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief Set's text heading for this edit control. - /// - /// @param[in] text string or unicode - text string. - /// - void SetText(const std::string& text) - { - m_interface->kodi_gui->control_edit->set_text(m_interface->kodiBase, m_controlHandle, - text.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief Returns the text value for this edit control. - /// - /// @return Text value of control - /// - std::string GetText() const - { - std::string text; - char* ret = - m_interface->kodi_gui->control_edit->get_text(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - text = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return text; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief Set the cursor position on text. - /// - /// @param[in] iPosition The position to set - /// - void SetCursorPosition(unsigned int iPosition) - { - m_interface->kodi_gui->control_edit->set_cursor_position(m_interface->kodiBase, m_controlHandle, - iPosition); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief To get current cursor position on text field - /// - /// @return The current cursor position - /// - unsigned int GetCursorPosition() - { - return m_interface->kodi_gui->control_edit->get_cursor_position(m_interface->kodiBase, - m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CEdit - /// @brief To set field input type which are defined on \ref AddonGUIInputType - /// - /// @param[in] type The \ref AddonGUIInputType "Add-on input type" - /// to use - /// @param[in] heading The heading text for related keyboard - /// dialog - /// - void SetInputType(AddonGUIInputType type, const std::string& heading) - { - m_interface->kodi_gui->control_edit->set_input_type(m_interface->kodiBase, m_controlHandle, - static_cast(type), heading.c_str()); - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/FadeLabel.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/FadeLabel.h deleted file mode 100644 index 02c843f..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/FadeLabel.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CFadeLabel Control Fade Label -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CFadeLabel } -/// **Window control used to show multiple pieces of text in the same position, -/// by fading from one to the other** -/// -/// The fade label control is used for displaying multiple pieces of text in -/// the same space in Kodi. You can choose the font, size, colour, location -/// and contents of the text to be displayed. The first piece of information -/// to display fades in over 50 frames, then scrolls off to the left. Once it -/// is finished scrolling off screen, the second piece of information fades -/// in and the process repeats. A fade label control is not supported in a -/// list container. -/// -/// It has the header \ref FadeLabel.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref Fade_Label_Control "fade label control" -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// -class ATTRIBUTE_HIDDEN CFadeLabel : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CFadeLabel - /// @brief Construct a new control. - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CFadeLabel(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_fade_label( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::controls::CFadeLabel can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CFadeLabel - /// @brief Destructor. - /// - ~CFadeLabel() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CFadeLabel - /// @brief Set the control on window to visible. - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_fade_label->set_visible(m_interface->kodiBase, m_controlHandle, - visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CFadeLabel - /// @brief To add additional text string on fade label. - /// - /// @param[in] label Text to show - /// - void AddLabel(const std::string& label) - { - m_interface->kodi_gui->control_fade_label->add_label(m_interface->kodiBase, m_controlHandle, - label.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CFadeLabel - /// @brief Get the used text from button - /// - /// @return Text shown - /// - std::string GetLabel() const - { - std::string label; - char* ret = m_interface->kodi_gui->control_fade_label->get_label(m_interface->kodiBase, - m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CFadeLabel - /// @brief To enable or disable scrolling on fade label - /// - /// @param[in] scroll To enable scrolling set to true, otherwise is - /// disabled - /// - void SetScrolling(bool scroll) - { - m_interface->kodi_gui->control_fade_label->set_scrolling(m_interface->kodiBase, m_controlHandle, - scroll); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CFadeLabel - /// @brief To reset al inserted labels. - /// - void Reset() - { - m_interface->kodi_gui->control_fade_label->reset(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Image.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Image.h deleted file mode 100644 index b4d092f..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Image.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CImage Control Image -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CImage } -/// **Window control used to show an image.** -/// -/// The image control is used for displaying images in Kodi. You can choose -/// the position, size, transparency and contents of the image to be displayed. -/// -/// It has the header \ref Image.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref Image_Control "image control" -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// -class ATTRIBUTE_HIDDEN CImage : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CImage - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CImage(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_image( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::controls::CImage can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CImage - /// @brief Destructor - /// - ~CImage() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CImage - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_image->set_visible(m_interface->kodiBase, m_controlHandle, - visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CImage - /// @brief To set the filename used on image control. - /// - /// @param[in] filename Image file to use - /// @param[in] useCache To define storage of image, default is - /// in cache, if false becomes it loaded - /// always on changes again - /// - void SetFileName(const std::string& filename, bool useCache = true) - { - m_interface->kodi_gui->control_image->set_filename(m_interface->kodiBase, m_controlHandle, - filename.c_str(), useCache); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CImage - /// @brief To set set the diffuse color on image. - /// - /// @param[in] colorDiffuse Color to use for diffuse - /// - void SetColorDiffuse(uint32_t colorDiffuse) - { - m_interface->kodi_gui->control_image->set_color_diffuse(m_interface->kodiBase, m_controlHandle, - colorDiffuse); - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Label.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Label.h deleted file mode 100644 index 82604bd..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Label.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CLabel Control Label -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CLabel } -/// **Window control used to show some lines of text.** -/// -/// The label control is used for displaying text in Kodi. You can choose -/// the font, size, colour, location and contents of the text to be displayed. -/// -/// It has the header \ref Label.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref Label_Control "label control" -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// -class ATTRIBUTE_HIDDEN CLabel : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CLabel - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CLabel(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_label( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::controls::CLabel can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CLabel - /// @brief Destructor - /// - ~CLabel() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CLabel - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_label->set_visible(m_interface->kodiBase, m_controlHandle, - visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CLabel - /// @brief To set the text string on label - /// - /// @param[in] text Text to show - /// - void SetLabel(const std::string& text) - { - m_interface->kodi_gui->control_label->set_label(m_interface->kodiBase, m_controlHandle, - text.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CLabel - /// @brief Get the used text from control - /// - /// @return Used text on label control - /// - std::string GetLabel() const - { - std::string label; - char* ret = - m_interface->kodi_gui->control_label->get_label(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Progress.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Progress.h deleted file mode 100644 index 8cb582b..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Progress.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CProgress Control Progress -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CProgress } -/// **Window control to show the progress of a particular operation** -/// -/// The progress control is used to show the progress of an item that may take -/// a long time, or to show how far through a movie you are. You can choose -/// the position, size, and look of the progress control. -/// -/// It has the header \ref Progress.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref Progress_Control "progress control" -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// -class ATTRIBUTE_HIDDEN CProgress : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CProgress - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CProgress(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_progress( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::controls::CProgress can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CProgress - /// @brief Destructor - /// - ~CProgress() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CProgress - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_progress->set_visible(m_interface->kodiBase, m_controlHandle, - visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CProgress - /// @brief To set Percent position of control - /// - /// @param[in] percent The percent position to use - /// - void SetPercentage(float percent) - { - m_interface->kodi_gui->control_progress->set_percentage(m_interface->kodiBase, m_controlHandle, - percent); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CProgress - /// @brief Get the active percent position of progress bar - /// - /// @return Progress position as percent - /// - float GetPercentage() const - { - return m_interface->kodi_gui->control_progress->get_percentage(m_interface->kodiBase, - m_controlHandle); - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/RadioButton.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/RadioButton.h deleted file mode 100644 index 305195d..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/RadioButton.h +++ /dev/null @@ -1,167 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CRadioButton Control Radio Button -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CRadioButton } -/// **Window control for a radio button (as used for on/off settings)** -/// -/// The radio button control is used for creating push button on/off settings -/// in Kodi. You can choose the position, size, and look of the button. When -/// the user clicks on the radio button, the state will change, toggling the -/// extra textures (textureradioon and textureradiooff). Used for settings -/// controls. -/// -/// It has the header \ref RadioButton.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref Radio_button_control "radio button control" -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// -class ATTRIBUTE_HIDDEN CRadioButton : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRadioButton - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CRadioButton(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_radio_button( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::controls::CRadioButton can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRadioButton - /// @brief Destructor - /// - ~CRadioButton() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRadioButton - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_radio_button->set_visible(m_interface->kodiBase, m_controlHandle, - visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRadioButton - /// @brief Set's the control's enabled/disabled state - /// - /// @param[in] enabled If true enabled, otherwise disabled - /// - void SetEnabled(bool enabled) - { - m_interface->kodi_gui->control_radio_button->set_enabled(m_interface->kodiBase, m_controlHandle, - enabled); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRadioButton - /// @brief To set the text string on radio button - /// - /// @param[in] label Text to show - /// - void SetLabel(const std::string& label) - { - m_interface->kodi_gui->control_radio_button->set_label(m_interface->kodiBase, m_controlHandle, - label.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRadioButton - /// @brief Get the used text from control - /// - /// @return Text shown - /// - std::string GetLabel() const - { - std::string label; - char* ret = m_interface->kodi_gui->control_radio_button->get_label(m_interface->kodiBase, - m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - label = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return label; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRadioButton - /// @brief To set radio button condition to on or off - /// - /// @param[in] selected true set radio button to selection on, otherwise - /// off - /// - void SetSelected(bool selected) - { - m_interface->kodi_gui->control_radio_button->set_selected(m_interface->kodiBase, - m_controlHandle, selected); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRadioButton - /// @brief Get the current selected condition of radio button - /// - /// @return Selected condition - /// - bool IsSelected() const - { - return m_interface->kodi_gui->control_radio_button->is_selected(m_interface->kodiBase, - m_controlHandle); - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Rendering.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Rendering.h deleted file mode 100644 index 7cc9b24..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Rendering.h +++ /dev/null @@ -1,205 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" -#include "../renderHelper.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CRendering Control Rendering -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CRendering } -/// **Window control for rendering own parts** -/// -/// This rendering control is used when own parts are needed. You have the -/// control over them to render direct OpenGL or DirectX content to the -/// screen set by the size of them. -/// -/// Alternative can be the virtual functions from t his been ignored if the -/// callbacks are defined by the \ref CRendering_SetIndependentCallbacks function and -/// class is used as single and not as a parent class. -/// -/// It has the header \ref Rendering.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref Addon_Rendering_control "rendering control" -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CRendering_Defs Definitions, structures and enumerators -/// \ingroup cpp_kodi_gui_controls_CRendering -/// @brief **Library definition values** -/// - -class ATTRIBUTE_HIDDEN CRendering : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRendering - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CRendering(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_render_addon( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (m_controlHandle) - m_interface->kodi_gui->control_rendering->set_callbacks(m_interface->kodiBase, - m_controlHandle, this, OnCreateCB, - OnRenderCB, OnStopCB, OnDirtyCB); - else - kodi::Log(ADDON_LOG_FATAL, "kodi::gui::controls::%s can't create control class from Kodi !!!", - __FUNCTION__); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRendering - /// @brief Destructor - /// - ~CRendering() override - { - m_interface->kodi_gui->control_rendering->destroy(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRendering - /// @brief To create rendering control on Add-on - /// - /// Function creates the needed rendering control for Kodi which becomes - /// handled and processed from Add-on - /// - /// @note This is callback function from Kodi to Add-on and not to use - /// for calls from add-on to this function. - /// - /// @param[in] x Horizontal position - /// @param[in] y Vertical position - /// @param[in] w Width of control - /// @param[in] h Height of control - /// @param[in] device The device to use. For OpenGL is empty - /// on Direct X is the needed device send. - /// @return Add-on needs to return true if successed, - /// otherwise false. - /// - virtual bool Create(int x, int y, int w, int h, void* device) { return false; } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRendering - /// @brief Render process call from Kodi - /// - /// @note This is callback function from Kodi to Add-on and not to use - /// for calls from add-on to this function. - /// - virtual void Render() {} - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRendering - /// @brief Call from Kodi to stop rendering process - /// - /// @note This is callback function from Kodi to Add-on and not to use - /// for calls from add-on to this function. - /// - virtual void Stop() {} - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRendering - /// @brief Call from Kodi where add-on becomes asked about dirty rendering - /// region. - /// - /// @note This is callback function from Kodi to Add-on and not to use - /// for calls from add-on to this function. - /// - virtual bool Dirty() { return false; } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CRendering - /// \anchor CRendering_SetIndependentCallbacks - /// @brief If the class is used independent (with "new CRendering") - /// and not as parent (with "cCLASS_own : CRendering") from own must - /// be the callback from Kodi to add-on overdriven with own functions! - /// - void SetIndependentCallbacks( - GUIHANDLE cbhdl, - bool (*CBCreate)(GUIHANDLE cbhdl, int x, int y, int w, int h, void* device), - void (*CBRender)(GUIHANDLE cbhdl), - void (*CBStop)(GUIHANDLE cbhdl), - bool (*CBDirty)(GUIHANDLE cbhdl)) - { - if (!cbhdl || !CBCreate || !CBRender || !CBStop || !CBDirty) - { - kodi::Log(ADDON_LOG_ERROR, "kodi::gui::controls::%s called with nullptr !!!", __FUNCTION__); - return; - } - - m_interface->kodi_gui->control_rendering->set_callbacks( - m_interface->kodiBase, m_controlHandle, cbhdl, CBCreate, CBRender, CBStop, CBDirty); - } - //-------------------------------------------------------------------------- - -private: - /* - * Defined callback functions from Kodi to add-on, for use in parent / child system - * (is private)! - */ - static bool OnCreateCB(void* cbhdl, int x, int y, int w, int h, void* device) - { - static_cast(cbhdl)->m_renderHelper = kodi::gui::GetRenderHelper(); - return static_cast(cbhdl)->Create(x, y, w, h, device); - } - - static void OnRenderCB(void* cbhdl) - { - if (!static_cast(cbhdl)->m_renderHelper) - return; - static_cast(cbhdl)->m_renderHelper->Begin(); - static_cast(cbhdl)->Render(); - static_cast(cbhdl)->m_renderHelper->End(); - } - - static void OnStopCB(void* cbhdl) - { - static_cast(cbhdl)->Stop(); - static_cast(cbhdl)->m_renderHelper = nullptr; - } - - static bool OnDirtyCB(void* cbhdl) { return static_cast(cbhdl)->Dirty(); } - - std::shared_ptr m_renderHelper; -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/SettingsSlider.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/SettingsSlider.h deleted file mode 100644 index 76a02aa..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/SettingsSlider.h +++ /dev/null @@ -1,326 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CSettingsSlider Control Settings Slider -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CSettingsSlider } -/// **Window control for moveable slider with text name** -/// -/// The settings slider control is used in the settings screens for when an -/// option is best specified on a sliding scale. You can choose the position, -/// size, and look of the slider control. It is basically a cross between the -/// button control and a slider control. It has a label and focus and non -/// focus textures, as well as a slider control on the right. -/// -/// It has the header \ref SettingsSlider.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref Settings_Slider_Control "settings slider control" -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// -class ATTRIBUTE_HIDDEN CSettingsSlider : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CSettingsSlider(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_settings_slider( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::controls::CSettingsSlider can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief Destructor - /// - ~CSettingsSlider() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_settings_slider->set_visible(m_interface->kodiBase, - m_controlHandle, visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief Set's the control's enabled/disabled state - /// - /// @param[in] enabled If true enabled, otherwise disabled - /// - void SetEnabled(bool enabled) - { - m_interface->kodi_gui->control_settings_slider->set_enabled(m_interface->kodiBase, - m_controlHandle, enabled); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief To set the text string on settings slider - /// - /// @param[in] text Text to show - /// - void SetText(const std::string& text) - { - m_interface->kodi_gui->control_settings_slider->set_text(m_interface->kodiBase, m_controlHandle, - text.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief To reset slider on defaults - /// - void Reset() - { - m_interface->kodi_gui->control_settings_slider->reset(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief To set the the range as integer of slider, e.g. -10 is the slider - /// start and e.g. +10 is the from here defined position where it reach the - /// end. - /// - /// Ad default is the range from 0 to 100. - /// - /// The integer interval is as default 1 and can be changed with - /// @ref SetIntInterval. - /// - /// @param[in] start Integer start value - /// @param[in] end Integer end value - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used. - /// - void SetIntRange(int start, int end) - { - m_interface->kodi_gui->control_settings_slider->set_int_range(m_interface->kodiBase, - m_controlHandle, start, end); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief Set the slider position with the given integer value. The Range - /// must be defined with a call from \ref SetIntRange before. - /// - /// @param[in] value Position in range to set with integer - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values ​​can be not together and can, therefore, only - /// one each can be used. - /// - void SetIntValue(int value) - { - m_interface->kodi_gui->control_settings_slider->set_int_value(m_interface->kodiBase, - m_controlHandle, value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief To get the current position as integer value. - /// - /// @return The position as integer - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values ​​can be not together and can, therefore, only - /// one each can be used. - /// - int GetIntValue() const - { - return m_interface->kodi_gui->control_settings_slider->get_int_value(m_interface->kodiBase, - m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief To set the interval steps of slider, as default is it 1. If it - /// becomes changed with this function will a step of the user with the - /// value fixed here be executed. - /// - /// @param[in] interval Intervall step to set. - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values ​​can be not together and can, therefore, only - /// one each can be used. - /// - void SetIntInterval(int interval) - { - m_interface->kodi_gui->control_settings_slider->set_int_interval(m_interface->kodiBase, - m_controlHandle, interval); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief Sets the percent of the slider. - /// - /// @param[in] percent float - Percent value of slide - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values ​​can be not together and can, therefore, only - /// one each can be used. - /// - void SetPercentage(float percent) - { - m_interface->kodi_gui->control_settings_slider->set_percentage(m_interface->kodiBase, - m_controlHandle, percent); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief Returns a float of the percent of the slider. - /// - /// @return float - Percent of slider - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values ​​can be not together and can, therefore, only - /// one each can be used. - /// - float GetPercentage() const - { - return m_interface->kodi_gui->control_settings_slider->get_percentage(m_interface->kodiBase, - m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief To set the the range as float of slider, e.g. -25.0 is the slider - /// start and e.g. +25.0 is the from here defined position where it reach - /// the end. - /// - /// As default is the range 0.0 to 1.0. - /// - /// The float interval is as default 0.1 and can be changed with - /// @ref SetFloatInterval. - /// - /// @param[in] start Integer start value - /// @param[in] end Integer end value - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values ​​ can be not together and can, therefore, only - /// one each can be used. - /// - void SetFloatRange(float start, float end) - { - m_interface->kodi_gui->control_settings_slider->set_float_range(m_interface->kodiBase, - m_controlHandle, start, end); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief Set the slider position with the given float value. The Range - /// can be defined with a call from \ref SetIntRange before, as default it - /// is 0.0 to 1.0. - /// - /// @param[in] value Position in range to set with float - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values ​​can be not together and can, therefore, only - /// one each can be used. - /// - void SetFloatValue(float value) - { - m_interface->kodi_gui->control_settings_slider->set_float_value(m_interface->kodiBase, - m_controlHandle, value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief To get the current position as float value. - /// - /// @return The position as float - /// - float GetFloatValue() const - { - return m_interface->kodi_gui->control_settings_slider->get_float_value(m_interface->kodiBase, - m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSettingsSlider - /// @brief To set the interval steps of slider, as default is it 0.1 If it - /// becomes changed with this function will a step of the user with the - /// value fixed here be executed. - /// - /// @param[in] interval Intervall step to set. - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values ​​can be not together and can, therefore, only - /// one each can be used. - /// - void SetFloatInterval(float interval) - { - m_interface->kodi_gui->control_settings_slider->set_float_interval(m_interface->kodiBase, - m_controlHandle, interval); - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Slider.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Slider.h deleted file mode 100644 index 715cc7d..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Slider.h +++ /dev/null @@ -1,339 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CSlider Control Slider -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CSlider } -/// **Window control for moveable slider** -/// -/// The slider control is used for things where a sliding bar best represents -/// the operation at hand (such as a volume control or seek control). You can -/// choose the position, size, and look of the slider control. -/// -/// It has the header \ref Slider.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref Slider_Control "slider control" -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// -class ATTRIBUTE_HIDDEN CSlider : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CSlider(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_slider( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::controls::CSlider can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief Destructor - /// - ~CSlider() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_slider->set_visible(m_interface->kodiBase, m_controlHandle, - visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief Set's the control's enabled/disabled state - /// - /// @param[in] enabled If true enabled, otherwise disabled - /// - void SetEnabled(bool enabled) - { - m_interface->kodi_gui->control_slider->set_enabled(m_interface->kodiBase, m_controlHandle, - enabled); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief To reset slider on defaults - /// - void Reset() - { - m_interface->kodi_gui->control_slider->reset(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief With GetDescription becomes a string value of position returned. - /// - /// @return Text string about current slider position - /// - /// The following are the text definition returned from this: - /// | Value | Without range selection | With range selection | - /// |:---------:|:------------------------|:-------------------------------| - /// | float | %2.2f | [%2.2f, %2.2f] | - /// | integer | %i | [%i, %i] | - /// | percent | %i%% | [%i%%, %i%%] | - /// - std::string GetDescription() const - { - std::string text; - char* ret = m_interface->kodi_gui->control_slider->get_description(m_interface->kodiBase, - m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - text = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return text; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief To set the the range as integer of slider, e.g. -10 is the slider - /// start and e.g. +10 is the from here defined position where it reach the - /// end. - /// - /// Ad default is the range from 0 to 100. - /// - /// The integer interval is as default 1 and can be changed with - /// @ref SetIntInterval. - /// - /// @param[in] start Integer start value - /// @param[in] end Integer end value - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only one - /// each can be used. - /// - void SetIntRange(int start, int end) - { - m_interface->kodi_gui->control_slider->set_int_range(m_interface->kodiBase, m_controlHandle, - start, end); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup CSlider - /// @brief Set the slider position with the given integer value. The Range - /// must be defined with a call from \ref SetIntRange before. - /// - /// @param[in] value Position in range to set with integer - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only one - /// each can be used. - /// - void SetIntValue(int value) - { - m_interface->kodi_gui->control_slider->set_int_value(m_interface->kodiBase, m_controlHandle, - value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief To get the current position as integer value. - /// - /// @return The position as integer - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used. - /// - int GetIntValue() const - { - return m_interface->kodi_gui->control_slider->get_int_value(m_interface->kodiBase, - m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief To set the interval steps of slider, as default is it 1. If it - /// becomes changed with this function will a step of the user with the - /// value fixed here be executed. - /// - /// @param[in] interval Intervall step to set. - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only one - /// each can be used. - /// - void SetIntInterval(int interval) - { - m_interface->kodi_gui->control_slider->set_int_interval(m_interface->kodiBase, m_controlHandle, - interval); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief Sets the percent of the slider. - /// - /// @param[in] percent float - Percent value of slide - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only one - /// each can be used. - /// - void SetPercentage(float percent) - { - m_interface->kodi_gui->control_slider->set_percentage(m_interface->kodiBase, m_controlHandle, - percent); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief Returns a float of the percent of the slider. - /// - /// @return float - Percent of slider - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only one - /// each can be used. - /// - float GetPercentage() const - { - return m_interface->kodi_gui->control_slider->get_percentage(m_interface->kodiBase, - m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief To set the the range as float of slider, e.g. -25.0 is the slider - /// start and e.g. +25.0 is the from here defined position where it reach - /// the end. - /// - /// As default is the range 0.0 to 1.0. - /// - /// The float interval is as default 0.1 and can be changed with - /// @ref SetFloatInterval. - /// - /// @param[in] start Integer start value - /// @param[in] end Integer end value - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used. - /// - void SetFloatRange(float start, float end) - { - m_interface->kodi_gui->control_slider->set_float_range(m_interface->kodiBase, m_controlHandle, - start, end); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief Set the slider position with the given float value. The Range - /// can be defined with a call from \ref SetIntRange before, as default it - /// is 0.0 to 1.0. - /// - /// @param[in] value Position in range to set with float - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only one - /// each can be used. - /// - void SetFloatValue(float value) - { - m_interface->kodi_gui->control_slider->set_float_value(m_interface->kodiBase, m_controlHandle, - value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief To get the current position as float value. - /// - /// @return The position as float - /// - float GetFloatValue() const - { - return m_interface->kodi_gui->control_slider->get_float_value(m_interface->kodiBase, - m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSlider - /// @brief To set the interval steps of slider, as default is it 0.1 If it - /// becomes changed with this function will a step of the user with the - /// value fixed here be executed. - /// - /// @param[in] interval Intervall step to set. - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used. - /// - void SetFloatInterval(float interval) - { - m_interface->kodi_gui->control_slider->set_float_interval(m_interface->kodiBase, - m_controlHandle, interval); - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Spin.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Spin.h deleted file mode 100644 index db8d491..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Spin.h +++ /dev/null @@ -1,365 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_controls_CSpin Control Spin - /// \ingroup cpp_kodi_gui - /// @brief \cpp_class{ kodi::gui::controls::CSpin } - /// **Window control used for cycling up/down controls** - /// - /// The settings spin control is used in the settings screens for when a list - /// of options can be chosen from using up/down arrows. You can choose the - /// position, size, and look of the spin control. It is basically a cross - /// between the button control and a spin control. It has a label and focus - /// and non focus textures, as well as a spin control on the right. - /// - /// It has the header \ref Spin.h "#include " - /// be included to enjoy it. - /// - /// Here you find the needed skin part for a \ref Spin_Control "spin control" - /// - /// @note The call of the control is only possible from the corresponding - /// window as its class and identification number is required. - /// - - - //============================================================================ - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @anchor AddonGUISpinControlType - /// @brief The values here defines the used value format for steps on - /// spin control. - /// - typedef enum AddonGUISpinControlType - { - /// One spin step interpreted as integer - ADDON_SPIN_CONTROL_TYPE_INT = 1, - /// One spin step interpreted as floating point value - ADDON_SPIN_CONTROL_TYPE_FLOAT = 2, - /// One spin step interpreted as text string - ADDON_SPIN_CONTROL_TYPE_TEXT = 3, - /// One spin step interpreted as a page change value - ADDON_SPIN_CONTROL_TYPE_PAGE = 4 - } AddonGUISpinControlType; - //---------------------------------------------------------------------------- - - class ATTRIBUTE_HIDDEN CSpin : public CAddonGUIControlBase - { - public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CSpin(CWindow* window, int controlId) - : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_spin(m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, "kodi::gui::controls::CSpin can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief Destructor - /// - ~CSpin() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_spin->set_visible(m_interface->kodiBase, m_controlHandle, visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief Set's the control's enabled/disabled state - /// - /// @param[in] enabled If true enabled, otherwise disabled - /// - void SetEnabled(bool enabled) - { - m_interface->kodi_gui->control_spin->set_enabled(m_interface->kodiBase, m_controlHandle, enabled); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To set the text string on spin control - /// - /// @param[in] text Text to show as name for spin - /// - void SetText(const std::string& text) - { - m_interface->kodi_gui->control_spin->set_text(m_interface->kodiBase, m_controlHandle, text.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To reset spin control to defaults - /// - void Reset() - { - m_interface->kodi_gui->control_spin->reset(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To set the with SpinControlType defined types of spin. - /// - /// @param[in] type The type to use - /// - /// @note See description of \ref AddonGUISpinControlType for available types. - /// - void SetType(AddonGUISpinControlType type) - { - m_interface->kodi_gui->control_spin->set_type(m_interface->kodiBase, m_controlHandle, (int)type); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To add a label entry in spin defined with a value as string. - /// - /// Format must be set to ADDON_SPIN_CONTROL_TYPE_TEXT to use this function. - /// - /// @param[in] label Label string to view on skin - /// @param[in] value String value to use for selection - /// of them. - /// - void AddLabel(const std::string& label, const std::string& value) - { - m_interface->kodi_gui->control_spin->add_string_label(m_interface->kodiBase, m_controlHandle, label.c_str(), value.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To add a label entry in spin defined with a value as integer. - /// - /// Format must be set to ADDON_SPIN_CONTROL_TYPE_INT to use this function. - /// - /// @param[in] label Label string to view on skin - /// @param[in] value Integer value to use for selection - /// of them. - /// - void AddLabel(const std::string& label, int value) - { - m_interface->kodi_gui->control_spin->add_int_label(m_interface->kodiBase, m_controlHandle, label.c_str(), value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To change the spin to position with them string as value. - /// - /// Format must be set to ADDON_SPIN_CONTROL_TYPE_TEXT to use this function. - /// - /// @param[in] value String value to change to - /// - void SetStringValue(const std::string& value) - { - m_interface->kodi_gui->control_spin->set_string_value(m_interface->kodiBase, m_controlHandle, value.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To get the current spin control position with text string value. - /// - /// Format must be set to ADDON_SPIN_CONTROL_TYPE_TEXT to use this function. - /// - /// @return Currently selected string value - /// - std::string GetStringValue() const - { - std::string value; - char* ret = m_interface->kodi_gui->control_spin->get_string_value(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - value = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return value; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To set the the range as integer of slider, e.g. -10 is the slider - /// start and e.g. +10 is the from here defined position where it reach the - /// end. - /// - /// Ad default is the range from 0 to 100. - /// - /// @param[in] start Integer start value - /// @param[in] end Integer end value - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used and must be defined with \ref SetType before. - /// - void SetIntRange(int start, int end) - { - m_interface->kodi_gui->control_spin->set_int_range(m_interface->kodiBase, m_controlHandle, start, end); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief Set the slider position with the given integer value. The Range - /// must be defined with a call from \ref SetIntRange before. - /// - /// @param[in] value Position in range to set with integer - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used and must be defined with \ref SetType before. - /// - void SetIntValue(int value) - { - m_interface->kodi_gui->control_spin->set_int_value(m_interface->kodiBase, m_controlHandle, value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To get the current position as integer value. - /// - /// @return The position as integer - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used and must be defined with \ref SetType before. - /// - int GetIntValue() const - { - return m_interface->kodi_gui->control_spin->get_int_value(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To set the the range as float of spin, e.g. -25.0 is the spin - /// start and e.g. +25.0 is the from here defined position where it reach - /// the end. - /// - /// As default is the range 0.0 to 1.0. - /// - /// The float interval is as default 0.1 and can be changed with - /// @ref SetFloatInterval. - /// - /// @param[in] start Integer start value - /// @param[in] end Integer end value - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used and must be defined with \ref SetType before. - /// - void SetFloatRange(float start, float end) - { - m_interface->kodi_gui->control_spin->set_float_range(m_interface->kodiBase, m_controlHandle, start, end); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief Set the spin position with the given float value. The Range - /// can be defined with a call from \ref SetIntRange before, as default it - /// is 0.0 to 1.0. - /// - /// @param[in] value Position in range to set with float - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used and must be defined with \ref SetType before. - /// - void SetFloatValue(float value) - { - m_interface->kodi_gui->control_spin->set_float_value(m_interface->kodiBase, m_controlHandle, value); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To get the current position as float value. - /// - /// @return The position as float - /// - float GetFloatValue() const - { - return m_interface->kodi_gui->control_spin->get_float_value(m_interface->kodiBase, m_controlHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CSpin - /// @brief To set the interval steps of spin, as default is it 0.1 If it - /// becomes changed with this function will a step of the user with the - /// value fixed here be executed. - /// - /// @param[in] interval Intervall step to set. - /// - /// @note Percent, floating point or integer are alone possible. Combining - /// these different values can be not together and can, therefore, only - /// one each can be used and must be defined with \ref SetType before. - /// - void SetFloatInterval(float interval) - { - m_interface->kodi_gui->control_spin->set_float_interval(m_interface->kodiBase, m_controlHandle, interval); - } - //-------------------------------------------------------------------------- - }; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/TextBox.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/TextBox.h deleted file mode 100644 index b4e8ae0..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/TextBox.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../Window.h" - -namespace kodi -{ -namespace gui -{ -namespace controls -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_controls_CTextBox Control Text Box -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::controls::CTextBox } -/// **Used to show a multi-page piece of text** -/// -/// The text box control can be used to display descriptions, help texts or -/// other larger texts. It corresponds to the representation which is also to -/// be seen on the CDialogTextViewer. -/// -/// It has the header \ref TextBox.h "#include " -/// be included to enjoy it. -/// -/// Here you find the needed skin part for a \ref Text_Box "textbox control". -/// -/// @note The call of the control is only possible from the corresponding -/// window as its class and identification number is required. -/// -class ATTRIBUTE_HIDDEN CTextBox : public CAddonGUIControlBase -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CTextBox - /// @brief Construct a new control - /// - /// @param[in] window related window control class - /// @param[in] controlId Used skin xml control id - /// - CTextBox(CWindow* window, int controlId) : CAddonGUIControlBase(window) - { - m_controlHandle = m_interface->kodi_gui->window->get_control_text_box( - m_interface->kodiBase, m_Window->GetControlHandle(), controlId); - if (!m_controlHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::controls::CTextBox can't create control class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CTextBox - /// @brief Destructor - /// - ~CTextBox() override = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CTextBox - /// @brief Set the control on window to visible - /// - /// @param[in] visible If true visible, otherwise hidden - /// - void SetVisible(bool visible) - { - m_interface->kodi_gui->control_text_box->set_visible(m_interface->kodiBase, m_controlHandle, - visible); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CTextBox - /// @brief To reset box an remove all the text - /// - void Reset() { m_interface->kodi_gui->control_text_box->reset(m_controlHandle, m_controlHandle); } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CTextBox - /// @brief To set the text on box - /// - /// @param[in] text Text to show - /// - void SetText(const std::string& text) - { - m_interface->kodi_gui->control_text_box->set_text(m_interface->kodiBase, m_controlHandle, - text.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CTextBox - /// @brief Get the used text from control - /// - /// @return Text shown - /// - std::string GetText() const - { - std::string text; - char* ret = - m_interface->kodi_gui->control_text_box->get_text(m_interface->kodiBase, m_controlHandle); - if (ret != nullptr) - { - if (std::strlen(ret)) - text = ret; - m_interface->free_string(m_interface->kodiBase, ret); - } - return text; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CTextBox - /// @brief To scroll text on other position - /// - /// @param[in] position The line position to scroll to - /// - void Scroll(unsigned int position) - { - m_interface->kodi_gui->control_text_box->scroll(m_interface->kodiBase, m_controlHandle, - position); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_controls_CTextBox - /// @brief To set automatic scrolling of textbox - /// - /// Specifies the timing and conditions of any autoscrolling this textbox - /// should have. Times are in milliseconds. The content is delayed for the - /// given delay, then scrolls at a rate of one line per time interval until - /// the end. If the repeat tag is present, it then delays for the repeat - /// time, fades out over 1 second, and repeats. It does not wrap or reset - /// to the top at the end of the scroll. - /// - /// @param[in] delay Content delay - /// @param[in] time One line per time interval - /// @param[in] repeat Delays with given time, fades out over 1 - /// second, and repeats - /// - void SetAutoScrolling(int delay, int time, int repeat) - { - m_interface->kodi_gui->control_text_box->set_auto_scrolling( - m_interface->kodiBase, m_controlHandle, delay, time, repeat); - } - //-------------------------------------------------------------------------- -}; - -} /* namespace controls */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/definitions.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/definitions.h deleted file mode 100644 index 4eb64c7..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/definitions.h +++ /dev/null @@ -1,433 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include -#include - -/* - * Internal Structures to have "C"-Style data transfer - */ -extern "C" -{ - -typedef struct AddonToKodiFuncTable_kodi_gui_general -{ - void (*lock)(); - void (*unlock)(); - int (*get_screen_height)(void* kodiBase); - int (*get_screen_width)(void* kodiBase); - int (*get_video_resolution)(void* kodiBase); - int (*get_current_window_dialog_id)(void* kodiBase); - int (*get_current_window_id)(void* kodiBase); - void* (*get_hw_context)(void* kodiBase); -} AddonToKodiFuncTable_kodi_gui_general; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_button -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*set_enabled)(void* kodiBase, void* handle, bool enabled); - void (*set_label)(void* kodiBase, void* handle, const char* label); - char* (*get_label)(void* kodiBase, void* handle); - void (*set_label2)(void* kodiBase, void* handle, const char *label); - char* (*get_label2)(void* kodiBase, void* handle); -} AddonToKodiFuncTable_kodi_gui_control_button; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_edit -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*set_enabled)(void* kodiBase, void* handle, bool enabled); - void (*set_label)(void* kodiBase, void* handle, const char* label); - char* (*get_label)(void* kodiBase, void* handle); - void (*set_text)(void* kodiBase, void* handle, const char* text); - char* (*get_text)(void* kodiBase, void* handle); - void (*set_cursor_position)(void* kodiBase, void* handle, unsigned int position); - unsigned int (*get_cursor_position)(void* kodiBase, void* handle); - void (*set_input_type)(void* kodiBase, void* handle, int type, const char* heading); -} AddonToKodiFuncTable_kodi_gui_control_edit; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_fade_label -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*add_label)(void* kodiBase, void* handle, const char* text); - char* (*get_label)(void* kodiBase, void* handle); - void (*set_scrolling)(void* kodiBase, void* handle, bool scroll); - void (*reset)(void* kodiBase, void* handle); -} AddonToKodiFuncTable_kodi_gui_control_fade_label; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_image -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*set_filename)(void* kodiBase, void* handle, const char* filename, bool use_cache); - void (*set_color_diffuse)(void* kodiBase, void* handle, uint32_t color_diffuse); -} AddonToKodiFuncTable_kodi_gui_control_image; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_label -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*set_label)(void* kodiBase, void* handle, const char* text); - char* (*get_label)(void* kodiBase, void* handle); -} AddonToKodiFuncTable_kodi_gui_control_label; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_progress -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*set_percentage)(void* kodiBase, void* handle, float percent); - float (*get_percentage)(void* kodiBase, void* handle); -} AddonToKodiFuncTable_kodi_gui_control_progress; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_radio_button -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*set_enabled)(void* kodiBase, void* handle, bool enabled); - void (*set_label)(void* kodiBase, void* handle, const char* text); - char* (*get_label)(void* kodiBase, void* handle); - void (*set_selected)(void* kodiBase, void* handle, bool selected); - bool (*is_selected)(void* kodiBase, void* handle); -} AddonToKodiFuncTable_kodi_gui_control_radio_button; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_rendering -{ - void (*set_callbacks)(void* kodiBase, void* handle, void* clienthandle, - bool (*createCB)(void*,int,int,int,int,void*), - void (*renderCB)(void*), - void (*stopCB)(void*), - bool (*dirtyCB)(void*)); - void (*destroy)(void *kodiBase, void* handle); -} AddonToKodiFuncTable_kodi_gui_control_rendering; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_settings_slider -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*set_enabled)(void* kodiBase, void* handle, bool enabled); - void (*set_text)(void* kodiBase, void* handle, const char* label); - void (*reset)(void* kodiBase, void* handle); - void (*set_int_range)(void* kodiBase, void* handle, int start, int end); - void (*set_int_value)(void* kodiBase, void* handle, int value); - int (*get_int_value)(void* kodiBase, void* handle); - void (*set_int_interval)(void* kodiBase, void* handle, int interval); - void (*set_percentage)(void* kodiBase, void* handle, float percent); - float (*get_percentage)(void* kodiBase, void* handle); - void (*set_float_range)(void* kodiBase, void* handle, float start, float end); - void (*set_float_value)(void* kodiBase, void* handle, float value); - float (*get_float_value)(void* kodiBase, void* handle); - void (*set_float_interval)(void* kodiBase, void* handle, float interval); -} AddonToKodiFuncTable_kodi_gui_control_settings_slider; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_slider -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*set_enabled)(void* kodiBase, void* handle, bool enabled); - void (*reset)(void* kodiBase, void* handle); - char* (*get_description)(void* kodiBase, void* handle); - void (*set_int_range)(void* kodiBase, void* handle, int start, int end); - void (*set_int_value)(void* kodiBase, void* handle, int value); - int (*get_int_value)(void* kodiBase, void* handle); - void (*set_int_interval)(void* kodiBase, void* handle, int interval); - void (*set_percentage)(void* kodiBase, void* handle, float percent); - float (*get_percentage)(void* kodiBase, void* handle); - void (*set_float_range)(void* kodiBase, void* handle, float start, float end); - void (*set_float_value)(void* kodiBase, void* handle, float value); - float (*get_float_value)(void* kodiBase, void* handle); - void (*set_float_interval)(void* kodiBase, void* handle, float interval); -} AddonToKodiFuncTable_kodi_gui_control_slider; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_spin -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*set_enabled)(void* kodiBase, void* handle, bool enabled); - void (*set_text)(void* kodiBase, void* handle, const char* text); - void (*reset)(void* kodiBase, void* handle); - void (*set_type)(void* kodiBase, void* handle, int type); - void (*add_string_label)(void* kodiBase, void* handle, const char* label, const char* value); - void (*set_string_value)(void* kodiBase, void* handle, const char* value); - char* (*get_string_value)(void* kodiBase, void* handle); - void (*add_int_label)(void* kodiBase, void* handle, const char* label, int value); - void (*set_int_range)(void* kodiBase, void* handle, int start, int end); - void (*set_int_value)(void* kodiBase, void* handle, int value); - int (*get_int_value)(void* kodiBase, void* handle); - void (*set_float_range)(void* kodiBase, void* handle, float start, float end); - void (*set_float_value)(void* kodiBase, void* handle, float value); - float (*get_float_value)(void* kodiBase, void* handle); - void (*set_float_interval)(void* kodiBase, void* handle, float interval); -} AddonToKodiFuncTable_kodi_gui_control_spin; - -typedef struct AddonToKodiFuncTable_kodi_gui_control_text_box -{ - void (*set_visible)(void* kodiBase, void* handle, bool visible); - void (*reset)(void* kodiBase, void* handle); - void (*set_text)(void* kodiBase, void* handle, const char* text); - char* (*get_text)(void* kodiBase, void* handle); - void (*scroll)(void* kodiBase, void* handle, unsigned int scroll); - void (*set_auto_scrolling)(void* kodiBase, void* handle, int delay, int time, int repeat); -} AddonToKodiFuncTable_kodi_gui_control_text_box; - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogContextMenu -{ - int (*open)(void* kodiBase, const char *heading, const char *entries[], unsigned int size); -} AddonToKodiFuncTable_kodi_gui_dialogContextMenu; - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogExtendedProgress -{ - void* (*new_dialog)(void* kodiBase, const char *title); - void (*delete_dialog)(void* kodiBase, void* handle); - char* (*get_title)(void* kodiBase, void* handle); - void (*set_title)(void* kodiBase, void* handle, const char *title); - char* (*get_text)(void* kodiBase, void* handle); - void (*set_text)(void* kodiBase, void* handle, const char *text); - bool (*is_finished)(void* kodiBase, void* handle); - void (*mark_finished)(void* kodiBase, void* handle); - float (*get_percentage)(void* kodiBase, void* handle); - void (*set_percentage)(void* kodiBase, void* handle, float percentage); - void (*set_progress)(void* kodiBase, void* handle, int currentItem, int itemCount); -} AddonToKodiFuncTable_kodi_gui_dialogExtendedProgress; - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogFileBrowser -{ - bool (*show_and_get_directory)(void* kodiBase, const char* shares, const char* heading, const char* path_in, char** path_out, bool writeOnly); - bool (*show_and_get_file)(void* kodiBase, const char* shares, const char* mask, const char* heading, const char* path_in, char** path_out, bool use_thumbs, bool use_file_directories); - bool (*show_and_get_file_from_dir)(void* kodiBase, const char* directory, const char* mask, const char* heading, const char* path_in, char** path_out, bool use_thumbs, bool use_file_directories, bool singleList); - bool (*show_and_get_file_list)(void* kodiBase, const char* shares, const char* mask, const char* heading, char*** file_list, unsigned int* entries, bool use_thumbs, bool use_file_directories); - bool (*show_and_get_source)(void* kodiBase, const char* path_in, char** path_out, bool allow_network_shares, const char* additional_share, const char* type); - bool (*show_and_get_image)(void* kodiBase, const char* shares, const char* heading, const char* path_in, char** path_out); - bool (*show_and_get_image_list)(void* kodiBase, const char* shares, const char* heading, char*** file_list, unsigned int* entries); - void (*clear_file_list)(void* kodiBase, char*** file_list, unsigned int entries); -} AddonToKodiFuncTable_kodi_gui_dialogFileBrowser; - -// typedef void (*char_callback_t) (CGUIKeyboard *ref, const std::string &typedString); - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogKeyboard -{ - bool (*show_and_get_input_with_head)(void* kodiBase, const char* text_in, char** text_out, const char* heading, bool allow_empty_result, bool hiddenInput, unsigned int auto_close_ms); - bool (*show_and_get_input)(void* kodiBase, const char* text_in, char** text_out, bool allow_empty_result, unsigned int auto_close_ms); - bool (*show_and_get_new_password_with_head)(void* kodiBase, const char* password_in, char** password_out, const char* heading, bool allow_empty_result, unsigned int auto_close_ms); - bool (*show_and_get_new_password)(void* kodiBase, const char* password_in, char** password_out, unsigned int auto_close_ms); - bool (*show_and_verify_new_password_with_head)(void* kodiBase, char** password_out, const char* heading, bool allow_empty_result, unsigned int auto_close_ms); - bool (*show_and_verify_new_password)(void* kodiBase, char** password_out, unsigned int auto_close_ms); - int (*show_and_verify_password)(void* kodiBase, const char* password_in, char** password_out, const char* heading, int retries, unsigned int auto_close_ms); - bool (*show_and_get_filter)(void* kodiBase, const char* text_in, char** text_out, bool searching, unsigned int auto_close_ms); - bool (*send_text_to_active_keyboard)(void* kodiBase, const char* text, bool close_keyboard); - bool (*is_keyboard_activated)(void* kodiBase); -} AddonToKodiFuncTable_kodi_gui_dialogKeyboard; - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogNumeric -{ - bool (*show_and_verify_new_password)(void* kodiBase, char** password); - int (*show_and_verify_password)(void* kodiBase, const char* password, const char *heading, int retries); - bool (*show_and_verify_input)(void* kodiBase, const char* verify_in, char** verify_out, const char* heading, bool verify_input); - bool (*show_and_get_time)(void* kodiBase, tm *time, const char *heading); - bool (*show_and_get_date)(void* kodiBase, tm *date, const char *heading); - bool (*show_and_get_ip_address)(void* kodiBase, const char* ip_address_in, char** ip_address_out, const char *heading); - bool (*show_and_get_number)(void* kodiBase, const char* input_in, char** input_out, const char *heading, unsigned int auto_close_ms); - bool (*show_and_get_seconds)(void* kodiBase, const char* time_in, char** time_out, const char *heading); -} AddonToKodiFuncTable_kodi_gui_dialogNumeric; - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogOK -{ - void (*show_and_get_input_single_text)(void* kodiBase, const char *heading, const char *text); - void (*show_and_get_input_line_text)(void* kodiBase, const char *heading, const char *line0, const char *line1, const char *line2); -} AddonToKodiFuncTable_kodi_gui_dialogOK; - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogProgress -{ - void* (*new_dialog)(void* kodiBase); - void (*delete_dialog)(void* kodiBase, void* handle); - void (*open)(void* kodiBase, void* handle); - void (*set_heading)(void* kodiBase, void* handle, const char* heading); - void (*set_line)(void* kodiBase, void* handle, unsigned int lineNo, const char* line); - void (*set_can_cancel)(void* kodiBase, void* handle, bool canCancel); - bool (*is_canceled)(void* kodiBase, void* handle); - void (*set_percentage)(void* kodiBase, void* handle, int percentage); - int (*get_percentage)(void* kodiBase, void* handle); - void (*show_progress_bar)(void* kodiBase, void* handle, bool pnOff); - void (*set_progress_max)(void* kodiBase, void* handle, int max); - void (*set_progress_advance)(void* kodiBase, void* handle, int nSteps); - bool (*abort)(void* kodiBase, void* handle); -} AddonToKodiFuncTable_kodi_gui_dialogProgress; - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogSelect -{ - int (*open)(void* kodiBase, const char *heading, const char *entries[], unsigned int size, int selected, unsigned int autoclose); - bool (*open_multi_select)(void* kodiBase, const char* heading, const char* entryIDs[], const char* entryNames[], - bool entriesSelected[], unsigned int size, unsigned int autoclose); -} AddonToKodiFuncTable_kodi_gui_dialogSelect; - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogTextViewer -{ - void (*open)(void* kodiBase, const char *heading, const char *text); -} AddonToKodiFuncTable_kodi_gui_dialogTextViewer; - -typedef struct AddonToKodiFuncTable_kodi_gui_dialogYesNo -{ - bool (*show_and_get_input_single_text)(void* kodiBase, const char *heading, const char *text, bool *canceled, const char *noLabel, const char *yesLabel); - bool (*show_and_get_input_line_text)(void* kodiBase, const char *heading, const char *line0, const char *line1, const char *line2, const char *noLabel, const char *yesLabel); - bool (*show_and_get_input_line_button_text)(void* kodiBase, const char *heading, const char *line0, const char *line1, const char *line2, bool *canceled, const char *noLabel, const char *yesLabel); -} AddonToKodiFuncTable_kodi_gui_dialogYesNo; - -typedef struct AddonToKodiFuncTable_kodi_gui_listItem -{ - void* (*create)(void* kodiBase, const char* label, const char* label2, const char* icon_image, const char* path); - void (*destroy)(void* kodiBase, void* handle); - char* (*get_label)(void* kodiBase, void* handle); - void (*set_label)(void* kodiBase, void* handle, const char* label); - char* (*get_label2)(void* kodiBase, void* handle); - void (*set_label2)(void* kodiBase, void* handle, const char* label); - char* (*get_art)(void* kodiBase, void* handle, const char* type); - void (*set_art)(void* kodiBase, void* handle, const char* type, const char* image); - char* (*get_path)(void* kodiBase, void* handle); - void (*set_path)(void* kodiBase, void* handle, const char* path); - char* (*get_property)(void* kodiBase, void* handle, const char* key); - void (*set_property)(void* kodiBase, void* handle, const char* key, const char* value); - void (*select)(void* kodiBase, void* handle, bool select); - bool (*is_selected)(void* kodiBase, void* handle); -} AddonToKodiFuncTable_kodi_gui_listItem; - -#define ADDON_MAX_CONTEXT_ENTRIES 20 -#define ADDON_MAX_CONTEXT_ENTRY_NAME_LENGTH 80 -typedef struct gui_context_menu_pair -{ - unsigned int id; - char name[ADDON_MAX_CONTEXT_ENTRY_NAME_LENGTH]; -} gui_context_menu_pair; - -typedef struct AddonToKodiFuncTable_kodi_gui_window -{ - /* Window creation functions */ - void* (*create)(void* kodiBase, const char* xml_filename, const char* default_skin, bool as_dialog, bool is_media); - void (*destroy)(void* kodiBase, void* handle); - void (*set_callbacks)(void* kodiBase, void* handle, void* clienthandle, - bool (*CBInit)(void*), - bool (*CBFocus)(void*, int), - bool (*CBClick)(void*, int), - bool (*CBOnAction)(void*, int, uint32_t, wchar_t), - void (*CBGetContextButtons)(void*, int, gui_context_menu_pair*, unsigned int*), - bool (*CBOnContextButton)(void*, int, unsigned int)); - bool (*show)(void* kodiBase, void* handle); - bool (*close)(void* kodiBase, void* handle); - bool (*do_modal)(void* kodiBase, void* handle); - - /* Window control functions */ - bool (*set_focus_id)(void* kodiBase, void* handle, int control_id); - int (*get_focus_id)(void* kodiBase, void* handle); - void (*set_control_label)(void* kodiBase, void* handle, int control_id, const char* label); - void (*set_control_visible)(void* kodiBase, void* handle, int control_id, bool visible); - void (*set_control_selected)(void* kodiBase, void* handle, int control_id, bool selected); - - /* Window property functions */ - void (*set_property)(void* kodiBase, void* handle, const char* key, const char* value); - void (*set_property_int)(void* kodiBase, void* handle, const char* key, int value); - void (*set_property_bool)(void* kodiBase, void* handle, const char* key, bool value); - void (*set_property_double)(void* kodiBase, void* handle, const char* key, double value); - char* (*get_property)(void* kodiBase, void* handle, const char* key); - int (*get_property_int)(void* kodiBase, void* handle, const char* key); - bool (*get_property_bool)(void* kodiBase, void* handle, const char* key); - double (*get_property_double)(void* kodiBase, void* handle, const char* key); - void (*clear_properties)(void* kodiBase, void* handle); - void (*clear_property)(void* kodiBase, void* handle, const char* key); - - /* List item functions */ - void (*clear_item_list)(void* kodiBase, void* handle); - void (*add_list_item)(void* kodiBase, void* handle, void* item, int list_position); - void (*remove_list_item_from_position)(void* kodiBase, void* handle, int list_position); - void (*remove_list_item)(void* kodiBase, void* handle, void* item); - void* (*get_list_item)(void* kodiBase, void* handle, int list_position); - void (*set_current_list_position)(void* kodiBase, void* handle, int list_position); - int (*get_current_list_position)(void* kodiBase, void* handle); - int (*get_list_size)(void* kodiBase, void* handle); - void (*set_container_property)(void* kodiBase, void* handle, const char* key, const char* value); - void (*set_container_content)(void* kodiBase, void* handle, const char* value); - int (*get_current_container_id)(void* kodiBase, void* handle); - - /* Various functions */ - void (*mark_dirty_region)(void* kodiBase, void* handle); - - /* GUI control access functions */ - void* (*get_control_button)(void* kodiBase, void* handle, int control_id); - void* (*get_control_edit)(void* kodiBase, void* handle, int control_id); - void* (*get_control_fade_label)(void* kodiBase, void* handle, int control_id); - void* (*get_control_image)(void* kodiBase, void* handle, int control_id); - void* (*get_control_label)(void* kodiBase, void* handle, int control_id); - void* (*get_control_progress)(void* kodiBase, void* handle, int control_id); - void* (*get_control_radio_button)(void* kodiBase, void* handle, int control_id); - void* (*get_control_render_addon)(void* kodiBase, void* handle, int control_id); - void* (*get_control_settings_slider)(void* kodiBase, void* handle, int control_id); - void* (*get_control_slider)(void* kodiBase, void* handle, int control_id); - void* (*get_control_spin)(void* kodiBase, void* handle, int control_id); - void* (*get_control_text_box)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy1)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy2)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy3)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy4)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy5)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy6)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy7)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy8)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy9)(void* kodiBase, void* handle, int control_id); - void* (*get_control_dummy10)(void* kodiBase, void* handle, int control_id); /* This and above used to add new get_control_* functions */ -} AddonToKodiFuncTable_kodi_gui_window; - -typedef struct AddonToKodiFuncTable_kodi_gui -{ - AddonToKodiFuncTable_kodi_gui_general* general; - AddonToKodiFuncTable_kodi_gui_control_button* control_button; - AddonToKodiFuncTable_kodi_gui_control_edit* control_edit; - AddonToKodiFuncTable_kodi_gui_control_fade_label* control_fade_label; - AddonToKodiFuncTable_kodi_gui_control_label* control_label; - AddonToKodiFuncTable_kodi_gui_control_image* control_image; - AddonToKodiFuncTable_kodi_gui_control_progress* control_progress; - AddonToKodiFuncTable_kodi_gui_control_radio_button* control_radio_button; - AddonToKodiFuncTable_kodi_gui_control_rendering* control_rendering; - AddonToKodiFuncTable_kodi_gui_control_settings_slider* control_settings_slider; - AddonToKodiFuncTable_kodi_gui_control_slider* control_slider; - AddonToKodiFuncTable_kodi_gui_control_spin* control_spin; - AddonToKodiFuncTable_kodi_gui_control_text_box* control_text_box; - void* control_dummy1; - void* control_dummy2; - void* control_dummy3; - void* control_dummy4; - void* control_dummy5; - void* control_dummy6; - void* control_dummy7; - void* control_dummy8; - void* control_dummy9; - void* control_dummy10; /* This and above used to add new controls */ - AddonToKodiFuncTable_kodi_gui_dialogContextMenu* dialogContextMenu; - AddonToKodiFuncTable_kodi_gui_dialogExtendedProgress* dialogExtendedProgress; - AddonToKodiFuncTable_kodi_gui_dialogFileBrowser* dialogFileBrowser; - AddonToKodiFuncTable_kodi_gui_dialogKeyboard* dialogKeyboard; - AddonToKodiFuncTable_kodi_gui_dialogNumeric* dialogNumeric; - AddonToKodiFuncTable_kodi_gui_dialogOK* dialogOK; - AddonToKodiFuncTable_kodi_gui_dialogProgress* dialogProgress; - AddonToKodiFuncTable_kodi_gui_dialogSelect* dialogSelect; - AddonToKodiFuncTable_kodi_gui_dialogTextViewer* dialogTextViewer; - AddonToKodiFuncTable_kodi_gui_dialogYesNo* dialogYesNo; - void* dialog_dummy1; - void* dialog_dummy2; - void* dialog_dummy3; - void* dialog_dummy4; - void* dialog_dummy5; - void* dialog_dummy6; - void* dialog_dummy7; - void* dialog_dummy8; - void* dialog_dummy9; - void* dialog_dummy10; /* This and above used to add new dialogs */ - AddonToKodiFuncTable_kodi_gui_listItem* listItem; - AddonToKodiFuncTable_kodi_gui_window* window; -} AddonToKodiFuncTable_kodi_gui; - -} /* extern "C" */ - -//============================================================================ -/// -/// \ingroup cpp_kodi_gui_CControlRendering_Defs cpp_kodi_gui_CWindow_Defs -/// @{ -/// @brief Handle to use as independent pointer for GUI -typedef void* GUIHANDLE; -/// @} -//---------------------------------------------------------------------------- diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/CMakeLists.txt b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/CMakeLists.txt deleted file mode 100644 index 7227343..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -set(HEADERS ContextMenu.h - ExtendedProgress.h - FileBrowser.h - Keyboard.h - Numeric.h - OK.h - Progress.h - Select.h - TextViewer.h - YesNo.h) - -if(NOT ENABLE_STATIC_LIBS) - core_add_library(addons_kodi-addon-dev-kit_include_kodi_gui_dialogs) -endif() diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ContextMenu.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ContextMenu.h deleted file mode 100644 index d545030..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ContextMenu.h +++ /dev/null @@ -1,185 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../definitions.h" -#include "../../AddonBase.h" - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_dialogs_ContextMenu Dialog Context Menu - /// \ingroup cpp_kodi_gui - /// @brief \cpp_namespace{ kodi::gui::dialogs::ContextMenu } - /// **Context menu dialog** - /// - /// The function listed below permits the call of a dialogue as context menu to - /// select of an entry as a key - /// - /// It has the header \ref ContextMenu.h "#include " - /// be included to enjoy it. - /// - /// - namespace ContextMenu - { - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_ContextMenu - /// @brief Show a context menu dialog about given parts. - /// - /// @param[in] heading Dialog heading name - /// @param[in] entries String list about entries - /// @return The selected entry, if return -1 was nothing selected or canceled - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// const std::vector entries - /// { - /// "Test 1", - /// "Test 2", - /// "Test 3", - /// "Test 4", - /// "Test 5" - /// }; - /// - /// int selected = kodi::gui::dialogs::ContextMenu::Show("Test selection", entries); - /// if (selected < 0) - /// fprintf(stderr, "Item selection canceled\n"); - /// else - /// fprintf(stderr, "Selected item is: %i\n", selected); - /// ~~~~~~~~~~~~~ - /// - inline int ATTRIBUTE_HIDDEN Show(const std::string& heading, - const std::vector& entries) - { - using namespace ::kodi::addon; - unsigned int size = static_cast(entries.size()); - const char** cEntries = static_cast(malloc(size * sizeof(const char**))); - for (unsigned int i = 0; i < size; ++i) - { - cEntries[i] = entries[i].c_str(); - } - int ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogContextMenu->open( - CAddonBase::m_interface->toKodi->kodiBase, heading.c_str(), cEntries, size); - free(cEntries); - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_ContextMenu - /// @brief Show a context menu dialog about given parts. - /// - /// @param[in] heading Dialog heading name - /// @param[in] entries String list about entries - /// @return The selected entry, if return -1 was nothing selected or canceled - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// const std::vector> entries - /// { - /// { "ID 1", "Test 1" }, - /// { "ID 2", "Test 2" }, - /// { "ID 3", "Test 3" }, - /// { "ID 4", "Test 4" }, - /// { "ID 5", "Test 5" } - /// }; - /// - /// int selected = kodi::gui::dialogs::ContextMenu::Show("Test selection", entries); - /// if (selected < 0) - /// fprintf(stderr, "Item selection canceled\n"); - /// else - /// fprintf(stderr, "Selected item is: %i\n", selected); - /// ~~~~~~~~~~~~~ - /// - inline int ATTRIBUTE_HIDDEN Show( - const std::string& heading, const std::vector>& entries) - { - using namespace ::kodi::addon; - unsigned int size = static_cast(entries.size()); - const char** cEntries = static_cast(malloc(size*sizeof(const char**))); - for (unsigned int i = 0; i < size; ++i) - { - cEntries[i] = entries[i].second.c_str(); - } - int ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogContextMenu->open(CAddonBase::m_interface->toKodi->kodiBase, heading.c_str(), cEntries, size); - free(cEntries); - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_ContextMenu - /// @brief Show a context menu dialog about given parts. - /// - /// @param[in] heading Dialog heading name - /// @param[in] entries String list about entries - /// @return The selected entry, if return -1 was nothing selected or canceled - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// const std::vector> entries - /// { - /// { 1, "Test 1" }, - /// { 2, "Test 2" }, - /// { 3, "Test 3" }, - /// { 4, "Test 4" }, - /// { 5, "Test 5" } - /// }; - /// - /// int selected = kodi::gui::dialogs::ContextMenu::Show("Test selection", entries); - /// if (selected < 0) - /// fprintf(stderr, "Item selection canceled\n"); - /// else - /// fprintf(stderr, "Selected item is: %i\n", selected); - /// ~~~~~~~~~~~~~ - /// - inline int ATTRIBUTE_HIDDEN Show(const std::string& heading, - const std::vector>& entries) - { - using namespace ::kodi::addon; - unsigned int size = static_cast(entries.size()); - const char** cEntries = static_cast(malloc(size*sizeof(const char**))); - for (unsigned int i = 0; i < size; ++i) - { - cEntries[i] = entries[i].second.c_str(); - } - int ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogContextMenu->open(CAddonBase::m_interface->toKodi->kodiBase, heading.c_str(), cEntries, size); - free(cEntries); - return ret; - } - //-------------------------------------------------------------------------- - }; - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h deleted file mode 100644 index 5a49b70..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h +++ /dev/null @@ -1,250 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../definitions.h" -#include "../../AddonBase.h" - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_dialogs_CExtendedProgress Dialog Extended Progress -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::dialogs::ExtendedProgress } -/// **Progress dialog shown for background work** -/// -/// The with \ref ExtendedProgress.h "#include " -/// given class are basically used to create Kodi's extended progress. -/// -/// -/// -------------------------------------------------------------------------- -/// -/// **Example:** -/// ~~~~~~~~~~~~~{.cpp} -/// #include -/// -/// kodi::gui::dialogs::CExtendedProgress *ext_progress = new kodi::gui::dialogs::CExtendedProgress("Test Extended progress"); -/// ext_progress->SetText("Test progress"); -/// for (unsigned int i = 0; i < 50; i += 10) -/// { -/// ext_progress->SetProgress(i, 100); -/// sleep(1); -/// } -/// -/// ext_progress->SetTitle("Test Extended progress - Second round"); -/// ext_progress->SetText("Test progress - Step 2"); -/// -/// for (unsigned int i = 50; i < 100; i += 10) -/// { -/// ext_progress->SetProgress(i, 100); -/// sleep(1); -/// } -/// delete ext_progress; -/// ~~~~~~~~~~~~~ -/// -class ATTRIBUTE_HIDDEN CExtendedProgress -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// Construct a new dialog - /// - /// @param[in] title Title string - /// - explicit CExtendedProgress(const std::string& title = "") - { - using namespace ::kodi::addon; - m_DialogHandle = CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->new_dialog( - CAddonBase::m_interface->toKodi->kodiBase, title.c_str()); - if (!m_DialogHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::CDialogExtendedProgress can't create window class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// Destructor - /// - ~CExtendedProgress() - { - using namespace ::kodi::addon; - if (m_DialogHandle) - CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->delete_dialog( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// @brief Get the used title - /// - /// @return Title string - /// - std::string Title() const - { - using namespace ::kodi::addon; - std::string text; - char* strMsg = CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->get_title( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - if (strMsg != nullptr) - { - if (std::strlen(strMsg)) - text = strMsg; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, - strMsg); - } - return text; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// @brief To set the title of dialog - /// - /// @param[in] title Title string - /// - void SetTitle(const std::string& title) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->set_title( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, title.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// @brief Get the used text information string - /// - /// @return Text string - /// - std::string Text() const - { - using namespace ::kodi::addon; - std::string text; - char* strMsg = CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->get_text( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - if (strMsg != nullptr) - { - if (std::strlen(strMsg)) - text = strMsg; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, - strMsg); - } - return text; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// @brief To set the used text information string - /// - /// @param[in] text information text to set - /// - void SetText(const std::string& text) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->set_text( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, text.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// @brief To ask dialog is finished - /// - /// @return True if on end - /// - bool IsFinished() const - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->is_finished( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// @brief Mark progress finished - /// - void MarkFinished() - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->mark_finished( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// @brief Get the current progress position as percent - /// - /// @return Position - /// - float Percentage() const - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->get_percentage( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// @brief To set the current progress position as percent - /// - /// @param[in] percentage Position to use from 0.0 to 100.0 - /// - void SetPercentage(float percentage) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->set_percentage( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, percentage); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CExtendedProgress - /// @brief To set progress position with predefined places - /// - /// @param[in] currentItem Place position to use - /// @param[in] itemCount Amount of used places - /// - void SetProgress(int currentItem, int itemCount) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->set_progress( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, currentItem, itemCount); - } - //-------------------------------------------------------------------------- - -private: - void* m_DialogHandle; -}; - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/FileBrowser.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/FileBrowser.h deleted file mode 100644 index 90da063..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/FileBrowser.h +++ /dev/null @@ -1,310 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../definitions.h" -#include "../../AddonBase.h" - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_dialogs_FileBrowser Dialog File Browser - /// \ingroup cpp_kodi_gui - /// @brief \cpp_namespace{ kodi::gui::dialogs::FileBrowser } - /// **File browser dialog** - /// - /// The functions listed below of the class "FileBrowser" offer - /// the possibility to select to a file by the user of the add-on. - /// - /// It allows all the options that are possible in Kodi itself and offers all - /// support file types. - /// - /// It has the header \ref FileBrowser.h "#include " - /// be included to enjoy it. - /// - namespace FileBrowser - { - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_FileBrowser - /// @brief Directory selection dialog - /// - /// @param[in] shares With Shares becomes the available start folders - /// be set. - /// @param[in] heading Dialog header name - /// @param[in,out] path As in the path to start and return value about - /// selected directory - /// @param[in] writeOnly If set only writeable folders are shown. - /// @return False if selection becomes canceled. - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// /* - /// * Example show directory selection dialog with on 'share' (first value) - /// * defined directory types. - /// * - /// * If this becomes leaved empty and 'directory' is empty goes it to the - /// * base path of the hard disk. - /// * - /// * Also can be with path written to 'directory' before the dialog forced - /// * to a start place. - /// */ - /// std::string directory; - /// bool ret = kodi::gui::dialogs::FileBrowser::ShowAndGetDirectory("local|network|removable", - /// "Test directory selection", - /// directory, - /// false); - /// fprintf(stderr, "Selected directory is : %s and was %s\n", directory.c_str(), ret ? "OK" : "Canceled"); - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetDirectory(const std::string& shares, - const std::string& heading, - std::string& path, - bool writeOnly = false) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_directory( - CAddonBase::m_interface->toKodi->kodiBase, shares.c_str(), heading.c_str(), path.c_str(), - &retString, writeOnly); - if (retString != nullptr) - { - if (std::strlen(retString)) - path = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, - retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_FileBrowser - /// @brief File selection dialog - /// - /// @param[in] shares With Shares becomes the available start - /// folders be set. - /// @param[in] mask The mask to filter visible files, e.g. - /// ".m3u|.pls|.b4s|.wpl". - /// @param[in] heading Dialog header name - /// @param[in,out] path As in the path to start and Return value - /// about selected file - /// @param[in] useThumbs If set show thumbs if possible on dialog. - /// @param[in] useFileDirectories If set also packages (e.g. *.zip) are - /// handled as directories. - /// @return False if selection becomes canceled. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetFile(const std::string& shares, - const std::string& mask, - const std::string& heading, - std::string& path, - bool useThumbs = false, - bool useFileDirectories = false) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_file(CAddonBase::m_interface->toKodi->kodiBase, - shares.c_str(), mask.c_str(), heading.c_str(), path.c_str(), &retString, - useThumbs, useFileDirectories); - if (retString != nullptr) - { - if (std::strlen(retString)) - path = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_FileBrowser - /// @brief File selection from a directory - /// - /// @param[in] directory The directory name where the dialog - /// start, possible are normal names and - /// kodi's special names. - /// @param[in] mask The mask to filter visible files, e.g. - /// ".m3u|.pls|.b4s|.wpl". - /// @param[in] heading Dialog header name - /// @param[in,out] path As in the path to start and Return value - /// about selected file - /// @param[in] useThumbs If set show thumbs if possible on dialog. - /// @param[in] useFileDirectories If set also packages (e.g. *.zip) are - /// handled as directories. - /// @param[in] singleList - /// @return False if selection becomes canceled. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetFileFromDir(const std::string& directory, - const std::string& mask, - const std::string& heading, - std::string& path, - bool useThumbs = false, - bool useFileDirectories = false, - bool singleList = false) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_file_from_dir(CAddonBase::m_interface->toKodi->kodiBase, - directory.c_str(), mask.c_str(), heading.c_str(), - path.c_str(), &retString, useThumbs, - useFileDirectories, singleList); - if (retString != nullptr) - { - if (std::strlen(retString)) - path = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_FileBrowser - /// @brief File selection dialog to get several in to a list - /// - /// @param[in] shares With Shares becomes the available start - /// folders be set. - /// @param[in] mask The mask to filter visible files, e.g. - /// ".m3u|.pls|.b4s|.wpl". - /// @param[in] heading Dialog header name - /// @param[out] fileList Return value about selected files - /// @param[in] useThumbs If set show thumbs if possible on dialog. - /// @param[in] useFileDirectories If set also packages (e.g. *.zip) are - /// handled as directories. - /// @return False if selection becomes canceled. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetFileList(const std::string& shares, - const std::string& mask, - const std::string& heading, - std::vector& fileList, - bool useThumbs = false, - bool useFileDirectories = false) - { - using namespace ::kodi::addon; - char** list = nullptr; - unsigned int listSize = 0; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_file_list(CAddonBase::m_interface->toKodi->kodiBase, - shares.c_str(), mask.c_str(), heading.c_str(), &list, &listSize, - useThumbs, useFileDirectories); - if (ret) - { - for (unsigned int i = 0; i < listSize; ++i) - fileList.emplace_back(list[i]); - CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->clear_file_list(CAddonBase::m_interface->toKodi->kodiBase, &list, listSize); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_FileBrowser - /// @brief Source selection dialog - /// - /// @param[in,out] path As in the path to start and Return value - /// about selected source - /// @param[in] allowNetworkShares Allow also access to network - /// @param[in] additionalShare With additionalShare becomes the available - /// start folders be set (optional). - /// @param[in] type - /// @return False if selection becomes canceled. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetSource(std::string& path, - bool allowNetworkShares, - const std::string& additionalShare = "", - const std::string& type = "") - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_source(CAddonBase::m_interface->toKodi->kodiBase, path.c_str(), &retString, - allowNetworkShares, additionalShare.c_str(), type.c_str()); - if (retString != nullptr) - { - if (std::strlen(retString)) - path = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_FileBrowser - /// @brief Image selection dialog - /// - /// @param[in] shares With Shares becomes the available start folders be - /// set. - /// @param[in] heading Dialog header name - /// @param[out] path Return value about selected image - /// @return False if selection becomes canceled. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetImage(const std::string& shares, - const std::string& heading, - std::string& path) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_image(CAddonBase::m_interface->toKodi->kodiBase, - shares.c_str(), heading.c_str(), path.c_str(), &retString); - if (retString != nullptr) - { - if (std::strlen(retString)) - path = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_FileBrowser - /// @brief Image selection dialog to get several in to a list - /// - /// @param[in] shares With Shares becomes the available start folders - /// be set. - /// @param[in] heading Dialog header name - /// @param[out] file_list Return value about selected images - /// @return False if selection becomes canceled. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetImageList(const std::string& shares, - const std::string& heading, - std::vector& file_list) - { - using namespace ::kodi::addon; - char** list = nullptr; - unsigned int listSize = 0; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_image_list(CAddonBase::m_interface->toKodi->kodiBase, - shares.c_str(), heading.c_str(), &list, &listSize); - if (ret) - { - for (unsigned int i = 0; i < listSize; ++i) - file_list.emplace_back(list[i]); - CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->clear_file_list(CAddonBase::m_interface->toKodi->kodiBase, &list, listSize); - } - return ret; - } - //-------------------------------------------------------------------------- - }; - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Keyboard.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Keyboard.h deleted file mode 100644 index 843bdfa..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Keyboard.h +++ /dev/null @@ -1,422 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../definitions.h" -#include "../../AddonBase.h" - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_dialogs_Keyboard Dialog Keyboard - /// \ingroup cpp_kodi_gui - /// @brief \cpp_namespace{ kodi::gui::dialogs::Keyboard } - /// **Keyboard dialogs** - /// - /// The functions listed below have to be permitted by the user for the - /// representation of a keyboard around an input. - /// - /// The class supports several kinds, from an easy text choice up to the - /// passport Word production and their confirmation for add-on. - /// - /// It has the header \ref Keyboard.h "#include " - /// be included to enjoy it. - /// - namespace Keyboard - { - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief Show keyboard with initial value `text` and replace with result - /// string. - /// - /// @param[in,out] text Overwritten with user input if return=true. - /// @param[in] heading String shown on dialog title. - /// @param[in] allowEmptyResult Whether a blank password is valid or not. - /// @param[in] hiddenInput The inserted input is not shown as text. - /// @param[in] autoCloseMs To close the dialog after a specified - /// time, in milliseconds, default is 0 which - /// keeps the dialog open indefinitely. - /// @return true if successful display and user input. - /// false if unsuccessful display, no user - /// input, or canceled editing. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// /* - /// * The example shows the display of keyboard call dialog at Kodi from the add-on. - /// * Below all values are set, however, can last two (hidden input = false and autoCloseMs = 0) - /// * to be released if not needed. - /// */ - /// std::string text = "Please change me to them want you want"; /*< It can be leaved empty or a - /// entry text added */ - /// bool bRet = ::kodi::gui::dialogs::Keyboard::ShowAndGetInput(text, - /// "Demonstration text entry", - /// true, - /// false, - /// 0); - /// fprintf(stderr, "Written keyboard input is : '%s' and was %s\n", - /// text.c_str(), bRet ? "OK" : "Canceled"); - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetInput(std::string& text, - const std::string& heading, - bool allowEmptyResult, - bool hiddenInput = false, - unsigned int autoCloseMs = 0) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = - CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->show_and_get_input_with_head( - CAddonBase::m_interface->toKodi->kodiBase, text.c_str(), &retString, heading.c_str(), - allowEmptyResult, hiddenInput, autoCloseMs); - if (retString != nullptr) - { - text = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, - retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief The example shows the display of keyboard call dialog at Kodi - /// from the add-on. - /// - /// @param[out] text Overwritten with user input if return=true. - /// @param[in] allowEmptyResult If set to true keyboard can also exited - /// without entered text. - /// @param[in] autoCloseMs To close the dialog after a specified time, - /// in milliseconds, default is 0 which keeps - /// the dialog open indefinitely. - /// @return true if successful display and user input. - /// false if unsuccessful display, no user - /// input, or canceled editing. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetInput(std::string& text, - bool allowEmptyResult, - unsigned int autoCloseMs = 0) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->show_and_get_input(CAddonBase::m_interface->toKodi->kodiBase, - text.c_str(), &retString, - allowEmptyResult, autoCloseMs); - if (retString != nullptr) - { - text = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief Shows keyboard and prompts for a password. Differs from - /// `ShowAndVerifyNewPassword()` in that no second verification - /// - /// @param[in,out] newPassword Overwritten with user input if return=true. - /// @param[in] heading String shown on dialog title. - /// @param[in] allowEmptyResult Whether a blank password is valid or not. - /// @param[in] autoCloseMs To close the dialog after a specified time, - /// in milliseconds, default is 0 which keeps - /// the dialog open indefinitely. - /// @return true if successful display and user input. - /// false if unsuccessful display, no user - /// input, or canceled editing. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetNewPassword(std::string& newPassword, - const std::string& heading, - bool allowEmptyResult, - unsigned int autoCloseMs = 0) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->show_and_get_new_password_with_head(CAddonBase::m_interface->toKodi->kodiBase, - newPassword.c_str(), &retString, heading.c_str(), - allowEmptyResult, autoCloseMs); - if (retString != nullptr) - { - newPassword = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief Shows keyboard and prompts for a password. Differs from - /// `ShowAndVerifyNewPassword()` in that no second verification - /// - /// @param[in,out] newPassword Overwritten with user input if return=true. - /// @param[in] autoCloseMs To close the dialog after a specified time, - /// in milliseconds, default is 0 which keeps - /// the dialog open indefinitely. - /// @return true if successful display and user input. - /// false if unsuccessful display, no user - /// input, or canceled editing. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetNewPassword(std::string& newPassword, - unsigned int autoCloseMs = 0) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->show_and_get_new_password(CAddonBase::m_interface->toKodi->kodiBase, - newPassword.c_str(), &retString, autoCloseMs); - if (retString != nullptr) - { - newPassword = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief Show keyboard twice to get and confirm a user-entered password - /// string. - /// - /// @param[out] newPassword Overwritten with user input if return=true. - /// @param[in] heading String shown on dialog title. - /// @param[in] allowEmptyResult - /// @param[in] autoCloseMs To close the dialog after a specified time, - /// in milliseconds, default is 0 which keeps - /// the dialog open indefinitely. - /// @return true if successful display and user input. - /// false if unsuccessful display, no user - /// input, or canceled editing. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// #include - /// - /// /* - /// * The example below shows the complete use of keyboard dialog for password - /// * check. If only one check from add-on needed can be function with retries - /// * set to '0' called alone. - /// * - /// * The use of MD5 translated password is always required for the check on Kodi! - /// */ - /// - /// int maxretries = 3; - /// /* - /// * Password names need to be send as md5 sum to kodi. - /// */ - /// std::string password; - /// kodi::GetMD5("kodi", password); - /// - /// /* - /// * To the loop about password checks. - /// */ - /// int ret; - /// for (unsigned int i = 0; i < maxretries; i++) - /// { - /// /* - /// * Ask the user about the password. - /// */ - /// ret = ::kodi::gui::dialogs::Keyboard::ShowAndVerifyPassword(password, "Demo password call for PW 'kodi'", i, 0); - /// if (ret == 0) - /// { - /// fprintf(stderr, "Password successfull confirmed after '%i' tries\n", i+1); - /// break; - /// } - /// else if (ret < 0) - /// { - /// fprintf(stderr, "Canceled editing on try '%i'\n", i+1); - /// break; - /// } - /// else /* if (ret > 0) */ - /// { - /// fprintf(stderr, "Wrong password entered on try '%i'\n", i+1); - /// } - /// } - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowAndVerifyNewPassword(std::string& newPassword, - const std::string& heading, - bool allowEmptyResult, - unsigned int autoCloseMs = 0) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->show_and_verify_new_password_with_head(CAddonBase::m_interface->toKodi->kodiBase, - &retString, heading.c_str(), allowEmptyResult, - autoCloseMs); - if (retString != nullptr) - { - newPassword = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief Show keyboard twice to get and confirm a user-entered password - /// string. - /// - /// @param[out] newPassword Overwritten with user input if return=true. - /// @param[in] autoCloseMs To close the dialog after a specified time, - /// in milliseconds, default is 0 which keeps - /// the dialog open indefinitely. - /// @return true if successful display and user input. - /// false if unsuccessful display, no user - /// input, or canceled editing. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndVerifyNewPassword(std::string& newPassword, - unsigned int autoCloseMs = 0) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->show_and_verify_new_password(CAddonBase::m_interface->toKodi->kodiBase, - &retString, autoCloseMs); - if (retString != nullptr) - { - newPassword = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief Show keyboard and verify user input against `password`. - /// - /// @param[in,out] password Value to compare against user input. - /// @param[in] heading String shown on dialog title. - /// @param[in] retries If greater than 0, shows "Incorrect - /// password, %d retries left" on dialog line 2, - /// else line 2 is blank. - /// @param[in] autoCloseMs To close the dialog after a specified time, - /// in milliseconds, default is 0 which keeps - /// the dialog open indefinitely. - /// @return 0 if successful display and user input. 1 if - /// unsuccessful input. -1 if no user input or - /// canceled editing. - /// - inline int ATTRIBUTE_HIDDEN ShowAndVerifyPassword(std::string& password, - const std::string& heading, - int retries, - unsigned int autoCloseMs = 0) - { - using namespace ::kodi::addon; - char* retString = nullptr; - int ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->show_and_verify_password(CAddonBase::m_interface->toKodi->kodiBase, - password.c_str(), &retString, heading.c_str(), - retries, autoCloseMs); - if (retString != nullptr) - { - password = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief Shows a filter related keyboard - /// - /// @param[in,out] text Overwritten with user input if return=true. - /// @param[in] searching Use dialog for search and send our search - /// message in safe way (only the active window - /// needs it) - /// - header name if true is "Enter search string" - /// - header name if false is "Enter value" - /// @param autoCloseMs To close the dialog after a specified time, - /// in milliseconds, default is 0 which keeps - /// the dialog open indefinitely. - /// @return true if successful display and user input. - /// false if unsuccessful display, no user - /// input, or canceled editing. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetFilter(std::string& text, - bool searching, - unsigned int autoCloseMs = 0) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->show_and_get_filter(CAddonBase::m_interface->toKodi->kodiBase, - text.c_str(), &retString, searching, autoCloseMs); - if (retString != nullptr) - { - text = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief Send a text to a visible keyboard - /// - /// @param[in] text Overwritten with user input if return=true. - /// @param[in] closeKeyboard The open dialog is if also closed on 'true'. - /// @return true if successful done, false if - /// unsuccessful or keyboard not present. - /// - inline bool ATTRIBUTE_HIDDEN SendTextToActiveKeyboard(const std::string& text, - bool closeKeyboard = false) - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->send_text_to_active_keyboard(CAddonBase::m_interface->toKodi->kodiBase, - text.c_str(), closeKeyboard); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Keyboard - /// @brief Check for visible keyboard on GUI - /// - /// @return true if keyboard present, false if not present - /// - inline bool ATTRIBUTE_HIDDEN IsKeyboardActivated() - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogKeyboard->is_keyboard_activated(CAddonBase::m_interface->toKodi->kodiBase); - } - //-------------------------------------------------------------------------- - }; - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Numeric.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Numeric.h deleted file mode 100644 index bff7683..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Numeric.h +++ /dev/null @@ -1,362 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../definitions.h" -#include "../../AddonBase.h" - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_dialogs_Numeric Dialog Numeric - /// \ingroup cpp_kodi_gui - /// @{ - /// @brief \cpp_namespace{ kodi::gui::dialogs::Numeric } - /// **Numeric dialogs** - /// - /// The functions listed below have to be permitted by the user for the - /// representation of a numeric keyboard around an input. - /// - /// The class supports several kinds, from an easy number choice up to the - /// passport Word production and their confirmation for add-on. - /// - /// It has the header \ref Numeric.h "#include " - /// be included to enjoy it. - /// - namespace Numeric - { - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Numeric - /// @brief Use dialog to get numeric new password - /// - /// @param[out] newPassword String to preload into the keyboard - /// accumulator. Overwritten with user input - /// if return=true. Returned in MD5 format. - /// @return true if successful display and user - /// input entry/re-entry. - /// false if unsuccessful display, no user - /// input, or canceled editing. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndVerifyNewPassword(std::string& newPassword) - { - using namespace ::kodi::addon; - char* pw = nullptr; - bool ret = - CAddonBase::m_interface->toKodi->kodi_gui->dialogNumeric->show_and_verify_new_password( - CAddonBase::m_interface->toKodi->kodiBase, &pw); - if (pw != nullptr) - { - newPassword = pw; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, pw); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Numeric - /// @brief Use dialog to verify numeric password. - /// - /// @param[in] password Password to compare with user input, need - /// in MD5 format. - /// @param[in] heading Heading to display - /// @param[in] retries If greater than 0, shows "Incorrect - /// password, %d retries left" on dialog - /// line 2, else line 2 is blank. - /// @return Possible values: - /// - 0 if successful display and user input. - /// - 1 if unsuccessful input. - /// - -1 if no user input or canceled editing. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include /* fprintf */ - /// #include - /// #include - /// - /// /* - /// * The example below shows the complete use of keyboard dialog for password - /// * check. If only one check from add-on needed can be function with retries - /// * set to '0' called alone. - /// * - /// * The use of MD5 translated password is always required for the check on Kodi! - /// */ - /// - /// int maxretries = 3; - /// - /// /* - /// * Password names need to be send as md5 sum to kodi. - /// */ - /// std::string password = kodi::GetMD5("1234"); - /// - /// /* - /// * To the loop about password checks. - /// */ - /// int ret; - /// for (unsigned int i = 0; i < maxretries; i++) - /// { - /// /* - /// * Ask the user about the password. - /// */ - /// ret = kodi::gui::dialogs::Numeric::ShowAndVerifyPassword(password, "Demo numeric password call for PW '1234'", i); - /// if (ret == 0) - /// { - /// fprintf(stderr, "Numeric password successfull confirmed after '%i' tries\n", i+1); - /// break; - /// } - /// else if (ret < 0) - /// { - /// fprintf(stderr, "Canceled editing on try '%i'\n", i+1); - /// break; - /// } - /// else /* if (ret > 0) */ - /// { - /// fprintf(stderr, "Wrong numeric password entered on try '%i'\n", i+1); - /// } - /// } - /// ~~~~~~~~~~~~~ - /// - inline int ATTRIBUTE_HIDDEN ShowAndVerifyPassword(const std::string& password, - const std::string& heading, - int retries) - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogNumeric->show_and_verify_password(CAddonBase::m_interface->toKodi->kodiBase, - password.c_str(), heading.c_str(), retries); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Numeric - /// @brief Use dialog to verify numeric password - /// - /// @param[in,out] toVerify Value to compare against user input. - /// @param[in] heading Heading to display - /// @param[in] verifyInput If set as true we verify the users input - /// versus toVerify. - /// @return true if successful display and user - /// input. false if unsuccessful display, no - /// user input, or canceled editing. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndVerifyInput(std::string& toVerify, - const std::string& heading, - bool verifyInput) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogNumeric->show_and_verify_input(CAddonBase::m_interface->toKodi->kodiBase, - toVerify.c_str(), &retString, heading.c_str(), verifyInput); - if (retString != nullptr) - { - toVerify = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Numeric - /// @brief Use dialog to get time value. - /// - /// @param[out] time Overwritten with user input if - /// return=true and time inserted. - /// @param[in] heading Heading to display. - /// @return true if successful display and user - /// input. false if unsuccessful display, no - /// user input, or canceled editing. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include /* printf */ - /// #include /* time_t, struct tm, time, localtime, strftime */ - /// #include - /// - /// time_t rawtime; - /// struct tm * timeinfo; - /// char buffer [10]; - /// - /// time (&rawtime); - /// timeinfo = localtime(&rawtime); - /// bool bRet = kodi::gui::dialogs::Numeric::ShowAndGetTime(*timeinfo, "Selected time test call"); - /// strftime(buffer, sizeof(buffer), "%H:%M.", timeinfo); - /// printf("Selected time it's %s and was on Dialog %s\n", buffer, bRet ? "OK" : "Canceled"); - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetTime(tm& time, const std::string& heading) - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogNumeric->show_and_get_time(CAddonBase::m_interface->toKodi->kodiBase, &time, heading.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Numeric - /// @brief Use dialog to get date value. - /// - /// @param[in,out] date Overwritten with user input if - /// return=true and date inserted. - /// @param[in] heading Heading to display - /// @return true if successful display and user - /// input. false if unsuccessful display, no - /// user input, or canceled editing. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include /* printf */ - /// #include /* time_t, struct tm, time, localtime, strftime */ - /// #include - /// - /// time_t rawtime; - /// struct tm * timeinfo; - /// char buffer [20]; - /// - /// time (&rawtime); - /// timeinfo = localtime(&rawtime); - /// bool bRet = kodi::gui::dialogs::Numeric::ShowAndGetDate(*timeinfo, "Selected date test call"); - /// strftime(buffer, sizeof(buffer), "%Y-%m-%d", timeinfo); - /// printf("Selected date it's %s and was on Dialog %s\n", buffer, bRet ? "OK" : "Canceled"); - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetDate(tm& date, const std::string& heading) - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogNumeric->show_and_get_date(CAddonBase::m_interface->toKodi->kodiBase, &date, heading.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Numeric - /// @brief Use dialog to get a IP - /// - /// @param[in,out] ipAddress Overwritten with user input if - /// return=true and IP address inserted. - /// @param[in] heading Heading to display. - /// @return true if successful display and - /// user input. false if unsuccessful - /// display, no user input, or canceled - /// editing. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetIPAddress(std::string& ipAddress, - const std::string& heading) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogNumeric->show_and_get_ip_address(CAddonBase::m_interface->toKodi->kodiBase, - ipAddress.c_str(), &retString, heading.c_str()); - if (retString != nullptr) - { - ipAddress = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Numeric - /// @brief Use dialog to get normal number. - /// - /// @param[in,out] input Overwritten with user input if - /// return=true and time in seconds inserted - /// @param[in] heading Heading to display - /// @param[in] autoCloseTimeoutMs To close the dialog after a specified - /// time, in milliseconds, default is 0 - /// which keeps the dialog open - /// indefinitely. - /// @return true if successful display and user - /// input. false if unsuccessful display, no - /// user input, or canceled editing. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include /* printf */ - /// #include /* strtoull (C++11) */ - /// #include - /// - /// std::string number; - /// bool bRet = kodi::gui::dialogs::Numeric::ShowAndGetNumber(number, "Number test call"); - /// printf("Written number input is : %llu and was %s\n", - /// strtoull(number.c_str(), nullptr, 0), bRet ? "OK" : "Canceled"); - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetNumber(std::string& input, - const std::string& heading, - unsigned int autoCloseTimeoutMs = 0) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogNumeric->show_and_get_number(CAddonBase::m_interface->toKodi->kodiBase, - input.c_str(), &retString, heading.c_str(), autoCloseTimeoutMs); - if (retString != nullptr) - { - input = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Numeric - /// @brief Show numeric keypad to get seconds. - /// - /// @param[in,out] time Overwritten with user input if return=true and - /// time in seconds inserted. - /// @param[in] heading Heading to display - /// @return true if successful display and user input. false - /// if unsuccessful display, no user input, or - /// canceled editing. - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetSeconds(std::string& time, const std::string& heading) - { - using namespace ::kodi::addon; - char* retString = nullptr; - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogNumeric->show_and_get_seconds(CAddonBase::m_interface->toKodi->kodiBase, - time.c_str(), &retString, heading.c_str()); - if (retString != nullptr) - { - time = retString; - CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase, retString); - } - return ret; - } - //-------------------------------------------------------------------------- - }; - /// @} - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/OK.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/OK.h deleted file mode 100644 index b9a3a0d..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/OK.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../../AddonBase.h" -#include "../definitions.h" - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_dialogs_OK Dialog OK - /// \ingroup cpp_kodi_gui - /// @{ - /// @brief \cpp_namespace{ kodi::gui::dialogs::OK } - /// **OK dialog** - /// - /// The functions listed below permit the call of a dialogue of information, a - /// confirmation of the user by press from OK required. - /// - /// It has the header \ref OK.h "#include " - /// be included to enjoy it. - /// - namespace OK - { - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_OK - /// @brief Use dialog to inform user with text and confirmation with OK with continued string. - /// - /// @param[in] heading Dialog heading. - /// @param[in] text Multi-line text. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// ... - /// kodi::gui::dialogs::OK::ShowAndGetInput("Test dialog", "Hello World!\nI'm a call from add-on\n :) :D"); - /// ~~~~~~~~~~~~~ - /// - inline void ATTRIBUTE_HIDDEN ShowAndGetInput(const std::string& heading, const std::string& text) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogOK->show_and_get_input_single_text( - CAddonBase::m_interface->toKodi->kodiBase, heading.c_str(), text.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_OK - /// @brief Use dialog to inform user with text and confirmation with OK with strings separated to the lines. - /// - /// @param[in] heading Dialog heading. - /// @param[in] line0 Line #1 text. - /// @param[in] line1 Line #2 text. - /// @param[in] line2 Line #3 text. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// ... - /// kodi::gui::dialogs::OK::ShowAndGetInput("Test dialog", "Hello World!", "I'm a call from add-on", " :) :D"); - /// ~~~~~~~~~~~~~ - /// - inline void ATTRIBUTE_HIDDEN ShowAndGetInput(const std::string& heading, - const std::string& line0, - const std::string& line1, - const std::string& line2) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogOK->show_and_get_input_line_text(CAddonBase::m_interface->toKodi->kodiBase, - heading.c_str(), line0.c_str(), line1.c_str(), - line2.c_str()); - } - //-------------------------------------------------------------------------- - } - /// @} - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Progress.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Progress.h deleted file mode 100644 index b1f8cc5..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Progress.h +++ /dev/null @@ -1,255 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../definitions.h" -#include "../../AddonBase.h" - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_dialogs_CProgress Dialog Progress -/// \ingroup cpp_kodi_gui -/// @brief \cpp_class{ kodi::gui::dialogs::CProgress } -/// **Progress dialog shown in center** -/// -/// The with \ref DialogProgress.h "#include " -/// given class are basically used to create Kodi's progress dialog with named -/// text fields. -/// -/// **Example:** -/// ~~~~~~~~~~~~~{.cpp} -/// #include -/// -/// kodi::gui::dialogs::CProgress *progress = new kodi::gui::dialogs::CProgress; -/// progress->SetHeading("Test progress"); -/// progress->SetLine(1, "line 1"); -/// progress->SetLine(2, "line 2"); -/// progress->SetLine(3, "line 3"); -/// progress->SetCanCancel(true); -/// progress->ShowProgressBar(true); -/// progress->Open(); -/// for (unsigned int i = 0; i < 100; i += 10) -/// { -/// progress->SetPercentage(i); -/// sleep(1); -/// } -/// delete progress; -/// ~~~~~~~~~~~~~ -/// -class ATTRIBUTE_HIDDEN CProgress -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief Construct a new dialog - /// - CProgress() - { - using namespace ::kodi::addon; - m_DialogHandle = CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->new_dialog( - CAddonBase::m_interface->toKodi->kodiBase); - if (!m_DialogHandle) - kodi::Log(ADDON_LOG_FATAL, - "kodi::gui::dialogs::CProgress can't create window class from Kodi !!!"); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief Destructor - /// - ~CProgress() - { - using namespace ::kodi::addon; - if (m_DialogHandle) - CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->delete_dialog( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief To open the dialog - /// - void Open() - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->open( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief Set the heading title of dialog - /// - /// @param[in] heading Title string to use - /// - void SetHeading(const std::string& heading) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->set_heading( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, heading.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief To set the line text field on dialog from 0 - 2 - /// - /// @param[in] iLine Line number - /// @param[in] line Text string - /// - void SetLine(unsigned int iLine, const std::string& line) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->set_line( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, iLine, line.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief To enable and show cancel button on dialog - /// - /// @param[in] canCancel if true becomes it shown - /// - void SetCanCancel(bool canCancel) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->set_can_cancel( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, canCancel); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief To check dialog for clicked cancel button - /// - /// @return True if canceled - /// - bool IsCanceled() const - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->is_canceled( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief Get the current progress position as percent - /// - /// @param[in] percentage Position to use from 0 to 100 - /// - void SetPercentage(int percentage) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->set_percentage( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, percentage); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief To set the current progress position as percent - /// - /// @return Current Position used from 0 to 100 - /// - int GetPercentage() const - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->get_percentage( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief To show or hide progress bar dialog - /// - /// @param[in] onOff If true becomes it shown - /// - void ShowProgressBar(bool onOff) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->show_progress_bar( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, onOff); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief Set the maximum position of progress, needed if `SetProgressAdvance(...)` is used - /// - /// @param[in] max Biggest usable position to use - /// - void SetProgressMax(int max) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->set_progress_max( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, max); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief To increase progress bar by defined step size until reach of maximum position - /// - /// @param[in] steps Step size to increase, default is 1 - /// - void SetProgressAdvance(int steps = 1) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->set_progress_advance( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, steps); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_CProgress - /// @brief To check progress was canceled on work - /// - /// @return True if aborted - /// - bool Abort() - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogProgress->abort( - CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle); - } - //-------------------------------------------------------------------------- - -private: - void* m_DialogHandle; -}; - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Select.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Select.h deleted file mode 100644 index 39a98fe..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Select.h +++ /dev/null @@ -1,269 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../definitions.h" -#include "../../AddonBase.h" - -//============================================================================== -/// \defgroup cpp_kodi_vfs_Defs Definitions, structures and enumerators -/// \ingroup cpp_kodi_gui_dialogs_Select -/// @brief **Dialog Select definition values** -//------------------------------------------------------------------------------ - -//============================================================================== -/// \ingroup cpp_kodi_vfs_Defs -/// @brief **Selection entry structure** -/// -typedef struct SSelectionEntry -{ - //============================================================================ - /// Structure constructor - /// - /// There becomes selected always set to false. - /// - SSelectionEntry() = default; - //---------------------------------------------------------------------------- - - /// Entry identfication string - std::string id; - - /// Entry name to show on GUI dialog - std::string name; - - /// Place where entry can be preselected and after return the from user - /// selected is set. - bool selected = false; -} SSelectionEntry; -//------------------------------------------------------------------------------ - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_dialogs_Select Dialog Select - /// \ingroup cpp_kodi_gui - /// @{ - /// @brief \cpp_namespace{ kodi::gui::dialogs::Select } - /// **Selection dialog** - /// - /// The function listed below permits the call of a dialogue to select of an - /// entry as a key - /// - /// It has the header \ref Select.h "#include " - /// be included to enjoy it. - /// - /// - namespace Select - { - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Select - /// @brief Show a selection dialog about given parts. - /// - /// @param[in] heading Dialog heading name - /// @param[in] entries String list about entries - /// @param[in] selected [opt] Predefined selection (default is - /// -1 for the first) - /// @param[in] autoclose [opt] To close dialog automatic after the given - /// time in ms. As '0' it stays open. - /// @return The selected entry, if return -1 was - /// nothing selected or canceled - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// const std::vector entries - /// { - /// "Test 1", - /// "Test 2", - /// "Test 3", - /// "Test 4", - /// "Test 5" - /// }; - /// - /// int selected = kodi::gui::dialogs::Select::Show("Test selection", entries, -1); - /// if (selected < 0) - /// fprintf(stderr, "Item selection canceled\n"); - /// else - /// fprintf(stderr, "Selected item is: %i\n", selected); - /// ~~~~~~~~~~~~~ - /// - inline int ATTRIBUTE_HIDDEN Show(const std::string& heading, - const std::vector& entries, - int selected = -1, - unsigned int autoclose = 0) - { - using namespace ::kodi::addon; - unsigned int size = static_cast(entries.size()); - const char** cEntries = (const char**)malloc(size * sizeof(const char**)); - for (unsigned int i = 0; i < size; ++i) - { - cEntries[i] = entries[i].c_str(); - } - int ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogSelect->open( - CAddonBase::m_interface->toKodi->kodiBase, heading.c_str(), cEntries, size, selected, - autoclose); - free(cEntries); - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Select - /// @brief Show a selection dialog about given parts. - /// - /// This function is mostly equal to the other, only becomes the string list - /// here done by a SSelectionEntry, where a ID string can be defined. - /// - /// @param[in] heading Dialog heading name - /// @param[in] entries SSelectionEntry list about entries - /// @param[in] selected [opt] Predefined selection (default is - /// -1 for the first) - /// @param[in] autoclose [opt] To close dialog automatic after the given - /// time in ms. As '0' it stays open. - /// @return The selected entry, if return -1 was - /// nothing selected or canceled - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// std::vector entries - /// { - /// { "ID 1", "Test 1", false }, - /// { "ID 2", "Test 2", false }, - /// { "ID 3", "Test 3", false }, - /// { "ID 4", "Test 4", false }, - /// { "ID 5", "Test 5", false } - /// }; - /// - /// int selected = kodi::gui::dialogs::Select::Show("Test selection", entries, -1); - /// if (selected < 0) - /// fprintf(stderr, "Item selection canceled\n"); - /// else - /// fprintf(stderr, "Selected item is: %i\n", selected); - /// ~~~~~~~~~~~~~ - /// - inline int ATTRIBUTE_HIDDEN Show(const std::string& heading, - std::vector& entries, - int selected = -1, - unsigned int autoclose = 0) - { - using namespace ::kodi::addon; - unsigned int size = static_cast(entries.size()); - const char** cEntries = static_cast(malloc(size*sizeof(const char*))); - for (unsigned int i = 0; i < size; ++i) - { - cEntries[i] = entries[i].name.c_str(); - if (selected == -1 && entries[i].selected) - selected = i; - } - int ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogSelect->open(CAddonBase::m_interface->toKodi->kodiBase, heading.c_str(), - cEntries, size, selected, autoclose); - if (ret >= 0) - { - entries[ret].selected = true; - } - free(cEntries); - return ret; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_Select - /// @brief Show a multiple selection dialog about given parts. - /// - /// @param[in] heading Dialog heading name - /// @param[in] entries SSelectionEntry list about entries - /// @param[in] autoclose [opt] To close dialog automatic after the given - /// time in ms. As '0' it stays open. - /// @return The selected entries, if return empty was - /// nothing selected or canceled - /// - /// With selected on SSelectionEntry can be a pre selection defined. - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// std::vector entries - /// { - /// { "ID 1", "Test 1", false }, - /// { "ID 2", "Test 2", false }, - /// { "ID 3", "Test 3", false }, - /// { "ID 4", "Test 4", false }, - /// { "ID 5", "Test 5", false } - /// }; - /// - /// bool ret = kodi::gui::dialogs::Select::ShowMultiSelect("Test selection", entries); - /// if (!ret) - /// fprintf(stderr, "Selection canceled\n"); - /// else - /// { - /// fprintf(stderr, "Selected items:\n"); - /// for (const auto& entry : entries) - /// { - /// if (entry.selected) - /// fprintf(stderr, " - %s\n", entry.selected.id.c_str()); - /// } - /// } - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowMultiSelect(const std::string& heading, - std::vector& entries, - int autoclose = 0) - { - using namespace ::kodi::addon; - unsigned int size = static_cast(entries.size()); - const char** cEntryIDs = static_cast(malloc(size*sizeof(const char*))); - const char** cEntryNames = static_cast(malloc(size*sizeof(const char*))); - bool* cEntriesSelected = static_cast(malloc(size*sizeof(bool))); - for (unsigned int i = 0; i < size; ++i) - { - cEntryIDs[i] = entries[i].id.c_str(); - cEntryNames[i] = entries[i].name.c_str(); - cEntriesSelected[i] = entries[i].selected; - } - bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogSelect->open_multi_select(CAddonBase::m_interface->toKodi->kodiBase, - heading.c_str(), cEntryIDs, cEntryNames, - cEntriesSelected, size, autoclose); - if (ret) - { - for (unsigned int i = 0; i < size; ++i) - entries[i].selected = cEntriesSelected[i]; - } - free(cEntryNames); - free(cEntryIDs); - free(cEntriesSelected); - return ret; - } - //-------------------------------------------------------------------------- - }; - /// @} - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/TextViewer.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/TextViewer.h deleted file mode 100644 index 5c81837..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/TextViewer.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (C) 2015-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. - */ - -#pragma once - -#include "../definitions.h" -#include "../../AddonBase.h" - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_dialogs_TextViewer Dialog Text Viewer - /// \ingroup cpp_kodi_gui - /// @{ - /// @brief \cpp_namespace{ kodi::gui::dialogs::TextViewer } - /// **Text viewer dialog** - /// - /// The text viewer dialog can be used to display descriptions, help texts or - /// other larger texts. - /// - /// In order to achieve a line break is a \\n directly in the text or - /// in the "./resources/language/resource.language.??_??/strings.po" - /// to call with std::string kodi::general::GetLocalizedString(...);. - /// - /// It has the header \ref TextViewer.h "#include " - /// be included to enjoy it. - /// - namespace TextViewer - { - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_TextViewer - /// @brief Show info text dialog - /// - /// @param[in] heading Small heading text - /// @param[in] text Showed text on dialog - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// kodi::gui::dialogs::TextViewer::Show("The Wizard of Oz (1939 film)", - /// "The Wizard of Oz is a 1939 American musical comedy-drama fantasy film " - /// "produced by Metro-Goldwyn-Mayer, and the most well-known and commercially " - /// "successful adaptation based on the 1900 novel The Wonderful Wizard of Oz " - /// "by L. Frank Baum. The film stars Judy Garland as Dorothy Gale. The film" - /// "co-stars Terry the dog, billed as Toto; Ray Bolger, Jack Haley, Bert Lahr, " - /// "Frank Morgan, Billie Burke, Margaret Hamilton, with Charley Grapewin and " - /// "Clara Blandick, and the Singer Midgets as the Munchkins.\n" - /// "\n" - /// "Notable for its use of Technicolor, fantasy storytelling, musical score and " - /// "unusual characters, over the years it has become an icon of American popular " - /// "culture. It was nominated for six Academy Awards, including Best Picture but " - /// "lost to Gone with the Wind. It did win in two other categories including Best " - /// "Original Song for \"Over the Rainbow\". However, the film was a box office " - /// "disappointment on its initial release, earning only $3,017,000 on a $2,777,000 " - /// "budget, despite receiving largely positive reviews. It was MGM's most " - /// "expensive production at that time, and did not completely recoup the studio's " - /// "investment and turn a profit until theatrical re-releases starting in 1949.\n" - /// "\n" - /// "The 1956 broadcast television premiere of the film on CBS re-introduced the " - /// "film to the wider public and eventually made the presentation an annual " - /// "tradition, making it one of the most known films in cinema history. The " - /// "film was named the most-viewed motion picture on television syndication by " - /// "the Library of Congress who also included the film in its National Film " - /// "Registry in its inaugural year in 1989. Designation on the registry calls " - /// "for efforts to preserve it for being \"culturally, historically, and " - /// "aesthetically significant\". It is also one of the few films on UNESCO's " - /// "Memory of the World Register.\n" - /// "\n" - /// "The Wizard of Oz is often ranked on best-movie lists in critics' and public " - /// "polls. It is the source of many quotes referenced in modern popular culture. " - /// "It was directed primarily by Victor Fleming (who left production to take " - /// "over direction on the troubled Gone with the Wind production). Noel Langley, " - /// "Florence Ryerson and Edgar Allan Woolf received credit for the screenplay, " - /// "but there were uncredited contributions by others. The songs were written " - /// "by Edgar \"Yip\" Harburg (lyrics) and Harold Arlen (music). The incidental " - /// "music, based largely on the songs, was composed by Herbert Stothart, with " - /// "interspersed renderings from classical composers.\n"); - /// ~~~~~~~~~~~~~ - /// - inline void ATTRIBUTE_HIDDEN Show(const std::string& heading, const std::string& text) - { - using namespace ::kodi::addon; - CAddonBase::m_interface->toKodi->kodi_gui->dialogTextViewer->open( - CAddonBase::m_interface->toKodi->kodiBase, heading.c_str(), text.c_str()); - } - //-------------------------------------------------------------------------- - }; - /// @} - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/YesNo.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/YesNo.h deleted file mode 100644 index 67c2fc4..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/YesNo.h +++ /dev/null @@ -1,188 +0,0 @@ -/* - * 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. - */ - -#pragma once - -#include "../definitions.h" -#include "../../AddonBase.h" - -namespace kodi -{ -namespace gui -{ -namespace dialogs -{ - - //============================================================================ - /// - /// \defgroup cpp_kodi_gui_dialogs_YesNo Dialog Yes/No - /// \ingroup cpp_kodi_gui - /// @{ - /// @brief \cpp_namespace{ kodi::gui::dialogs::YesNo } - /// **Yes / No dialog** - /// - /// The Yes / No dialog can be used to inform the user about questions and get - /// the answer. - /// - /// In order to achieve a line break is a \\n directly in the text or - /// in the "./resources/language/resource.language.??_??/strings.po" - /// to call with std::string kodi::general::GetLocalizedString(...);. - /// - /// It has the header \ref YesNo.h "#include " - /// be included to enjoy it. - /// - /// - namespace YesNo - { - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_YesNo - /// @brief Use dialog to get numeric new password with one text string shown - /// everywhere and cancel return field - /// - /// @param[in] heading Dialog heading - /// @param[in] text Multi-line text - /// @param[out] canceled Return value about cancel button - /// @param[in] noLabel [opt] label to put on the no button - /// @param[in] yesLabel [opt] label to put on the yes button - /// @return Returns True if 'Yes' was pressed, else False - /// - /// @note It is preferred to only use this as it is actually a multi-line text. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// bool canceled; - /// bool ret = kodi::gui::dialogs::YesNo::ShowAndGetInput( - /// "Yes / No test call", /* The Header */ - /// "You has opened Yes / No dialog for test\n\nIs this OK for you?", - /// canceled, /* return value about cancel button */ - /// "Not really", /* No label, is optional and if empty "No" */ - /// "Ohhh yes"); /* Yes label, also optional and if empty "Yes" */ - /// fprintf(stderr, "You has called Yes/No, returned '%s' and was %s\n", - /// ret ? "yes" : "no", - /// canceled ? "canceled" : "not canceled"); - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetInput(const std::string& heading, - const std::string& text, - bool& canceled, - const std::string& noLabel = "", - const std::string& yesLabel = "") - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogYesNo->show_and_get_input_single_text( - CAddonBase::m_interface->toKodi->kodiBase, heading.c_str(), text.c_str(), &canceled, - noLabel.c_str(), yesLabel.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_YesNo - /// @brief Use dialog to get numeric new password with separated line strings - /// - /// @param[in] heading Dialog heading - /// @param[in] line0 Line #0 text - /// @param[in] line1 Line #1 text - /// @param[in] line2 Line #2 text - /// @param[in] noLabel [opt] label to put on the no button. - /// @param[in] yesLabel [opt] label to put on the yes button. - /// @return Returns True if 'Yes' was pressed, else False. - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// bool ret = kodi::gui::dialogs::YesNo::ShowAndGetInput( - /// "Yes / No test call", // The Header - /// "You has opened Yes / No dialog for test", - /// "", - /// "Is this OK for you?", - /// "Not really", // No label, is optional and if empty "No" - /// "Ohhh yes"); // Yes label, also optional and if empty "Yes" - /// fprintf(stderr, "You has called Yes/No, returned '%s'\n", - /// ret ? "yes" : "no"); - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetInput(const std::string& heading, - const std::string& line0, - const std::string& line1, - const std::string& line2, - const std::string& noLabel = "", - const std::string& yesLabel = "") - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogYesNo->show_and_get_input_line_text(CAddonBase::m_interface->toKodi->kodiBase, - heading.c_str(), line0.c_str(), line1.c_str(), line2.c_str(), - noLabel.c_str(), yesLabel.c_str()); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_dialogs_YesNo - /// @brief Use dialog to get numeric new password with separated line strings and cancel return field - /// - /// @param[in] heading Dialog heading - /// @param[in] line0 Line #0 text - /// @param[in] line1 Line #1 text - /// @param[in] line2 Line #2 text - /// @param[out] canceled Return value about cancel button - /// @param[in] noLabel [opt] label to put on the no button - /// @param[in] yesLabel [opt] label to put on the yes button - /// @return Returns True if 'Yes' was pressed, else False - /// - /// - ///------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// #include - /// - /// bool canceled; - /// bool ret = kodi::gui::dialogs::YesNo::ShowAndGetInput( - /// "Yes / No test call", // The Header - /// "You has opened Yes / No dialog for test", - /// "", - /// "Is this OK for you?", - /// canceled, // return value about cancel button - /// "Not really", // No label, is optional and if empty "No" - /// "Ohhh yes"); // Yes label, also optional and if empty "Yes" - /// fprintf(stderr, "You has called Yes/No, returned '%s' and was %s\n", - /// ret ? "yes" : "no", - /// canceled ? "canceled" : "not canceled"); - /// ~~~~~~~~~~~~~ - /// - inline bool ATTRIBUTE_HIDDEN ShowAndGetInput(const std::string& heading, - const std::string& line0, - const std::string& line1, - const std::string& line2, - bool& canceled, - const std::string& noLabel = "", - const std::string& yesLabel = "") - { - using namespace ::kodi::addon; - return CAddonBase::m_interface->toKodi->kodi_gui->dialogYesNo->show_and_get_input_line_button_text(CAddonBase::m_interface->toKodi->kodiBase, - heading.c_str(), line0.c_str(), line1.c_str(), line2.c_str(), - &canceled, noLabel.c_str(), yesLabel.c_str()); - } - //-------------------------------------------------------------------------- - }; - /// @} - -} /* namespace dialogs */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/CMakeLists.txt b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/CMakeLists.txt deleted file mode 100644 index a9ab70c..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -set(HEADERS GL.h - GLonDX.h - Shader.h) - -if(NOT ENABLE_STATIC_LIBS) - core_add_library(addons_kodi-addon-dev-kit_include_kodi_gui_gl) -endif() diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GL.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GL.h deleted file mode 100644 index 943c7d0..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GL.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2005-2019 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. - */ - -#pragma once - -//============================================================================== -/// -/// \defgroup cpp_kodi_gui_gl OpenGL helpers -/// \ingroup cpp_kodi_gui -/// \brief Auxiliary functions for Open GL -/// -/// This group includes help for definitions, functions, and classes for -/// OpenGL. -/// -/// To use OpenGL for your system, add the \ref GL.h "#include ". -/// -/// -///----------------------------------------------------------------------------- -/// -/// The \ref HAS_GL is declared if Open GL is required and \ref HAS_GLES if Open GL -/// Embedded Systems (ES) is required, with ES the version is additionally given -/// in the definition, this can be "2" or "3". -/// -/// -///----------------------------------------------------------------------------- -/// -/// Following \ref GL_TYPE_STRING define can be used, for example, to manage -/// different folders for GL and GLES and make the selection easier. -/// This are on OpenGL "GL" and on Open GL|ES "GLES". -/// -/// **Example:** -/// ~~~~~~~~~~~~~~~~~{.cpp} -/// kodi::GetAddonPath("resources/shaders/" GL_TYPE_STRING "/frag.glsl"); -/// ~~~~~~~~~~~~~~~~~ -/// -/// -///---------------------------------------------------------------------------- -/// -/// In addition, \ref BUFFER_OFFSET is declared in it which can be used to give an -/// offset on the array to GL. -/// -/// **Example:** -/// ~~~~~~~~~~~~~~~~~{.cpp} -/// const struct PackedVertex { -/// float position[3]; // Position x, y, z -/// float color[4]; // Color r, g, b, a -/// } vertices[3] = { -/// { { -0.5f, -0.5f, 0.0f }, { 1.0f, 0.0f, 0.0f, 1.0f } }, -/// { { 0.5f, -0.5f, 0.0f }, { 0.0f, 1.0f, 0.0f, 1.0f } }, -/// { { 0.0f, 0.5f, 0.0f }, { 0.0f, 0.0f, 1.0f, 1.0f } } -/// }; -/// -/// glVertexAttribPointer(m_aPosition, 3, GL_FLOAT, GL_FALSE, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, position))); -/// glEnableVertexAttribArray(m_aPosition); -/// -/// glVertexAttribPointer(m_aColor, 4, GL_FLOAT, GL_FALSE, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, color))); -/// glEnableVertexAttribArray(m_aColor); -/// ~~~~~~~~~~~~~~~~~ - -#if HAS_GL - #define GL_TYPE_STRING "GL" - // always define GL_GLEXT_PROTOTYPES before include gl headers - #if !defined(GL_GLEXT_PROTOTYPES) - #define GL_GLEXT_PROTOTYPES - #endif - #if defined(TARGET_LINUX) - #include - #include - #elif defined(TARGET_FREEBSD) - #include - #elif defined(TARGET_DARWIN) - #include - #include - #elif defined(WIN32) - #error Use of GL under Windows is not possible - #endif -#elif HAS_GLES >= 2 - #define GL_TYPE_STRING "GLES" - #if defined(WIN32) - #if defined(HAS_ANGLE) - #include - #else - #error Use of GLES only be available under Windows by the use of angle - #endif - #elif defined(TARGET_DARWIN) - #if HAS_GLES == 3 - #include - #include - #else - #include - #include - #endif - #else - #if HAS_GLES == 3 - #include - #include - #else - #include - #include - #endif - #endif -#endif - -#ifndef BUFFER_OFFSET -#define BUFFER_OFFSET(i) ((char *)nullptr + (i)) -#endif diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GLonDX.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GLonDX.h deleted file mode 100644 index 7a6a0a1..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GLonDX.h +++ /dev/null @@ -1,369 +0,0 @@ -/* - * Copyright (C) 2005-2019 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. - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include - -#pragma comment( lib, "d3dcompiler.lib" ) -#ifndef GL_CLIENT_VERSION -#define GL_CLIENT_VERSION 3 -#endif - -namespace kodi -{ -namespace gui -{ -namespace gl -{ - -class ATTRIBUTE_HIDDEN CGLonDX : public kodi::gui::IRenderHelper -{ -public: - explicit CGLonDX() : m_pContext(reinterpret_cast(kodi::gui::GetHWContext())) {} - ~CGLonDX() override { destruct(); } - - bool Init() override - { - EGLint egl_display_attrs[] = - { - EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, - EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE, EGL_DONT_CARE, - EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE, EGL_DONT_CARE, - EGL_EXPERIMENTAL_PRESENT_PATH_ANGLE, EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE, - EGL_NONE - }; - EGLint egl_config_attrs[] = - { - EGL_RED_SIZE, 8, EGL_GREEN_SIZE, 8, EGL_BLUE_SIZE, 8, EGL_ALPHA_SIZE, 8, - EGL_BIND_TO_TEXTURE_RGBA, EGL_TRUE, - EGL_RENDERABLE_TYPE, GL_CLIENT_VERSION == 3 ? EGL_OPENGL_ES3_BIT : EGL_OPENGL_ES2_BIT, - EGL_SURFACE_TYPE, EGL_PBUFFER_BIT, - EGL_NONE - }; - EGLint egl_context_attrs[] = - { - EGL_CONTEXT_CLIENT_VERSION, GL_CLIENT_VERSION, EGL_NONE - }; - - m_eglDisplay = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, egl_display_attrs); - if (m_eglDisplay == EGL_NO_DISPLAY) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to get EGL display (%s)", eglGetErrorString()); - return false; - } - - if (eglInitialize(m_eglDisplay, nullptr, nullptr) != EGL_TRUE) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to init EGL display (%s)", eglGetErrorString()); - return false; - } - - EGLint numConfigs = 0; - if (eglChooseConfig(m_eglDisplay, egl_config_attrs, &m_eglConfig, 1, &numConfigs) != EGL_TRUE || numConfigs == 0) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to get EGL config (%s)", eglGetErrorString()); - return false; - } - - m_eglContext = eglCreateContext(m_eglDisplay, m_eglConfig, nullptr, egl_context_attrs); - if (m_eglContext == EGL_NO_CONTEXT) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to create EGL context (%s)", eglGetErrorString()); - return false; - } - - if (!createD3DResources()) - return false; - - if (eglMakeCurrent(m_eglDisplay, m_eglBuffer, m_eglBuffer, m_eglContext) != EGL_TRUE) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to make current EGL (%s)", eglGetErrorString()); - return false; - } - return true; - } - - void CheckGL(ID3D11DeviceContext* device) - { - if (m_pContext != device) - { - m_pSRView = nullptr; - m_pVShader = nullptr; - m_pPShader = nullptr; - m_pContext = device; - - if (m_eglBuffer != EGL_NO_SURFACE) - { - eglMakeCurrent(m_eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - eglDestroySurface(m_eglDisplay, m_eglBuffer); - m_eglBuffer = EGL_NO_SURFACE; - } - - // create new resources - if (!createD3DResources()) - return; - - eglMakeCurrent(m_eglDisplay, m_eglBuffer, m_eglBuffer, m_eglContext); - } - } - - void Begin() override - { - // confirm on begin D3D context is correct - CheckGL(reinterpret_cast(kodi::gui::GetHWContext())); - - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT); - } - - void End() override - { - glFlush(); - - // set our primitive shaders - m_pContext->VSSetShader(m_pVShader.Get(), nullptr, 0); - m_pContext->PSSetShader(m_pPShader.Get(), nullptr, 0); - m_pContext->PSSetShaderResources(0, 1, m_pSRView.GetAddressOf()); - // draw texture - m_pContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); - m_pContext->IASetVertexBuffers(0, 0, nullptr, nullptr, nullptr); - m_pContext->IASetInputLayout(nullptr); - m_pContext->Draw(4, 0); - // unset shaders - m_pContext->PSSetShader(nullptr, nullptr, 0); - m_pContext->VSSetShader(nullptr, nullptr, 0); - // unbind our view - ID3D11ShaderResourceView* views[1] = {}; - m_pContext->PSSetShaderResources(0, 1, views); - } - -private: - enum ShaderType - { - VERTEX_SHADER, - PIXEL_SHADER - }; - - bool createD3DResources() - { - HANDLE sharedHandle; - Microsoft::WRL::ComPtr pDevice; - Microsoft::WRL::ComPtr pRTView; - Microsoft::WRL::ComPtr pRTResource; - Microsoft::WRL::ComPtr pRTTexture; - Microsoft::WRL::ComPtr pOffScreenTexture; - Microsoft::WRL::ComPtr dxgiResource; - - m_pContext->GetDevice(&pDevice); - m_pContext->OMGetRenderTargets(1, &pRTView, nullptr); - if (!pRTView) - return false; - - pRTView->GetResource(&pRTResource); - if (FAILED(pRTResource.As(&pRTTexture))) - return false; - - D3D11_TEXTURE2D_DESC texDesc; - pRTTexture->GetDesc(&texDesc); - texDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; - texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET; - texDesc.MiscFlags = D3D11_RESOURCE_MISC_SHARED; - if (FAILED(pDevice->CreateTexture2D(&texDesc, nullptr, &pOffScreenTexture))) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to create intermediate texture"); - return false; - } - - CD3D11_SHADER_RESOURCE_VIEW_DESC srvDesc(pOffScreenTexture.Get(), D3D11_SRV_DIMENSION_TEXTURE2D); - if (FAILED(pDevice->CreateShaderResourceView(pOffScreenTexture.Get(), &srvDesc, &m_pSRView))) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to create shader view"); - return false; - } - - if (FAILED(pOffScreenTexture.As(&dxgiResource)) || - FAILED(dxgiResource->GetSharedHandle(&sharedHandle))) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable get shared handle for texture"); - return false; - } - - // initiate simple shaders - if (FAILED(d3dCreateShader(VERTEX_SHADER, vs_out_shader_text, &m_pVShader))) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to create vertex shader view"); - return false; - } - - if (FAILED(d3dCreateShader(PIXEL_SHADER, ps_out_shader_text, &m_pPShader))) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to create pixel shader view"); - return false; - } - - // create EGL buffer from D3D shared texture - EGLint egl_buffer_attrs[] = - { - EGL_WIDTH, static_cast(texDesc.Width), - EGL_HEIGHT, static_cast(texDesc.Height), - EGL_TEXTURE_TARGET, EGL_TEXTURE_2D, - EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGBA, - EGL_NONE - }; - - m_eglBuffer = eglCreatePbufferFromClientBuffer(m_eglDisplay, - EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE, - sharedHandle, m_eglConfig, egl_buffer_attrs); - - if (m_eglBuffer == EGL_NO_SURFACE) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to create EGL buffer (%s)", eglGetErrorString()); - return false; - } - return true; - } - - HRESULT d3dCreateShader(ShaderType shaderType, const std::string& source, IUnknown** ppShader) const - { - Microsoft::WRL::ComPtr pBlob; - Microsoft::WRL::ComPtr pErrors; - - auto hr = D3DCompile(source.c_str(), source.length(), nullptr, nullptr, nullptr, "main", - shaderType == PIXEL_SHADER ? "ps_4_0" : "vs_4_0", 0, 0, &pBlob, &pErrors); - - if (SUCCEEDED(hr)) - { - Microsoft::WRL::ComPtr pDevice; - m_pContext->GetDevice(&pDevice); - - if (shaderType == PIXEL_SHADER) - { - hr = pDevice->CreatePixelShader(pBlob->GetBufferPointer(), pBlob->GetBufferSize(), nullptr, - reinterpret_cast(ppShader)); - } - else - { - hr = pDevice->CreateVertexShader(pBlob->GetBufferPointer(), pBlob->GetBufferSize(), nullptr, - reinterpret_cast(ppShader)); - } - - if (FAILED(hr)) - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to create %s shader", - shaderType == PIXEL_SHADER ? "pixel" : "vertex"); - } - } - else - { - Log(ADDON_LOG_ERROR, "GLonDX: unable to compile shader (%s)", pErrors->GetBufferPointer()); - } - return hr; - } - - static const char* eglGetErrorString() - { -#define CASE_STR( value ) case value: return #value - switch (eglGetError()) - { - CASE_STR(EGL_SUCCESS); - CASE_STR(EGL_NOT_INITIALIZED); - CASE_STR(EGL_BAD_ACCESS); - CASE_STR(EGL_BAD_ALLOC); - CASE_STR(EGL_BAD_ATTRIBUTE); - CASE_STR(EGL_BAD_CONTEXT); - CASE_STR(EGL_BAD_CONFIG); - CASE_STR(EGL_BAD_CURRENT_SURFACE); - CASE_STR(EGL_BAD_DISPLAY); - CASE_STR(EGL_BAD_SURFACE); - CASE_STR(EGL_BAD_MATCH); - CASE_STR(EGL_BAD_PARAMETER); - CASE_STR(EGL_BAD_NATIVE_PIXMAP); - CASE_STR(EGL_BAD_NATIVE_WINDOW); - CASE_STR(EGL_CONTEXT_LOST); - default: - return "Unknown"; - } -#undef CASE_STR - } - - void destruct() - { - if (m_eglDisplay != EGL_NO_DISPLAY) - { - eglMakeCurrent(m_eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - - if (m_eglBuffer != EGL_NO_SURFACE) - { - eglDestroySurface(m_eglDisplay, m_eglBuffer); - m_eglBuffer = EGL_NO_SURFACE; - } - - if (m_eglContext != EGL_NO_CONTEXT) - { - eglDestroyContext(m_eglDisplay, m_eglContext); - m_eglContext = EGL_NO_CONTEXT; - } - - eglTerminate(m_eglDisplay); - m_eglDisplay = EGL_NO_DISPLAY; - } - - m_pSRView = nullptr; - m_pVShader = nullptr; - m_pPShader = nullptr; - m_pContext = nullptr; - } - - EGLConfig m_eglConfig = EGL_NO_CONFIG_KHR; - EGLDisplay m_eglDisplay = EGL_NO_DISPLAY; - EGLContext m_eglContext = EGL_NO_CONTEXT; - EGLSurface m_eglBuffer = EGL_NO_SURFACE; - - ID3D11DeviceContext* m_pContext = nullptr; // don't hold context - Microsoft::WRL::ComPtr m_pSRView = nullptr; - Microsoft::WRL::ComPtr m_pVShader = nullptr; - Microsoft::WRL::ComPtr m_pPShader = nullptr; - -#define TO_STRING(...) #__VA_ARGS__ - std::string vs_out_shader_text = TO_STRING( - void main(uint id : SV_VertexId, out float2 tex : TEXCOORD0, out float4 pos : SV_POSITION) - { - tex = float2(id % 2, (id % 4) >> 1); - pos = float4((tex.x - 0.5f) * 2, -(tex.y - 0.5f) * 2, 0, 1); - }); - - std::string ps_out_shader_text = TO_STRING( - Texture2D texMain : register(t0); - SamplerState Sampler - { - Filter = MIN_MAG_MIP_LINEAR; - AddressU = CLAMP; - AddressV = CLAMP; - Comparison = NEVER; - }; - - float4 main(in float2 tex : TEXCOORD0) : SV_TARGET - { - return texMain.Sample(Sampler, tex); - }); -#undef TO_STRING -}; /* class CGLonDX */ - -} /* namespace gl */ - -using CRenderHelper = gl::CGLonDX; -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/Shader.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/Shader.h deleted file mode 100644 index 209f274..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/Shader.h +++ /dev/null @@ -1,594 +0,0 @@ -/* - * Copyright (C) 2005-2019 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. - */ - -#pragma once - -#include "GL.h" - -#include -#include -#include - -#include -#include - -#define LOG_SIZE 1024 -#define GLchar char - -namespace kodi -{ -namespace gui -{ -namespace gl -{ - -//======================================================================== -/// CShader - base class -class ATTRIBUTE_HIDDEN CShader -{ -public: - CShader() = default; - virtual ~CShader() = default; - virtual bool Compile(const std::string& extraBegin = "", - const std::string& extraEnd = "") = 0; - virtual void Free() = 0; - virtual GLuint Handle() = 0; - - bool LoadSource(const std::string& file) - { - char buffer[16384]; - - kodi::vfs::CFile source; - if (!source.OpenFile(file)) - { - kodi::Log(ADDON_LOG_ERROR, "CShader::%s: Failed to open file '%s'", __FUNCTION__, file.c_str()); - return false; - } - size_t len = source.Read(buffer, sizeof(buffer)); - m_source.assign(buffer); - m_source[len] = 0; - source.Close(); - return true; - } - - bool OK() const { return m_compiled; } - -protected: - std::string m_source; - std::string m_lastLog; - bool m_compiled = false; -}; -//------------------------------------------------------------------------ - -//======================================================================== -/// CVertexShader -class ATTRIBUTE_HIDDEN CVertexShader : public CShader -{ -public: - CVertexShader() = default; - ~CVertexShader() override { Free(); } - - void Free() override - { - if (m_vertexShader) - glDeleteShader(m_vertexShader); - m_vertexShader = 0; - } - - bool Compile(const std::string& extraBegin = "", - const std::string& extraEnd = "") override - { - GLint params[4]; - - Free(); - - m_vertexShader = glCreateShader(GL_VERTEX_SHADER); - - GLsizei count = 0; - const char *sources[3]; - if (!extraBegin.empty()) - sources[count++] = extraBegin.c_str(); - if (!m_source.empty()) - sources[count++] = m_source.c_str(); - if (!extraEnd.empty()) - sources[count++] = extraEnd.c_str(); - - glShaderSource(m_vertexShader, count, sources, nullptr); - glCompileShader(m_vertexShader); - glGetShaderiv(m_vertexShader, GL_COMPILE_STATUS, params); - if (params[0] != GL_TRUE) - { - GLchar log[LOG_SIZE]; - glGetShaderInfoLog(m_vertexShader, LOG_SIZE, nullptr, log); - kodi::Log(ADDON_LOG_ERROR, "CVertexShader::%s: %s", __FUNCTION__, log); - fprintf(stderr, "CVertexShader::%s: %s\n", __FUNCTION__, log); - m_lastLog = log; - m_compiled = false; - } - else - { - GLchar log[LOG_SIZE]; - glGetShaderInfoLog(m_vertexShader, LOG_SIZE, nullptr, log); - m_lastLog = log; - m_compiled = true; - } - return m_compiled; - } - - GLuint Handle() override { return m_vertexShader; } - -protected: - GLuint m_vertexShader = 0; -}; -//------------------------------------------------------------------------ - -//======================================================================== -/// CPixelShader -class ATTRIBUTE_HIDDEN CPixelShader : public CShader -{ -public: - CPixelShader() = default; - ~CPixelShader() { Free(); } - void Free() override - { - if (m_pixelShader) - glDeleteShader(m_pixelShader); - m_pixelShader = 0; - } - - bool Compile(const std::string& extraBegin = "", - const std::string& extraEnd = "") override - { - GLint params[4]; - - Free(); - - m_pixelShader = glCreateShader(GL_FRAGMENT_SHADER); - - GLsizei count = 0; - const char *sources[3]; - if (!extraBegin.empty()) - sources[count++] = extraBegin.c_str(); - if (!m_source.empty()) - sources[count++] = m_source.c_str(); - if (!extraEnd.empty()) - sources[count++] = extraEnd.c_str(); - - glShaderSource(m_pixelShader, count, sources, 0); - glCompileShader(m_pixelShader); - glGetShaderiv(m_pixelShader, GL_COMPILE_STATUS, params); - if (params[0] != GL_TRUE) - { - GLchar log[LOG_SIZE]; - glGetShaderInfoLog(m_pixelShader, LOG_SIZE, nullptr, log); - kodi::Log(ADDON_LOG_ERROR, "CPixelShader::%s: %s", __FUNCTION__, log); - fprintf(stderr, "CPixelShader::%s: %s\n", __FUNCTION__, log); - m_lastLog = log; - m_compiled = false; - } - else - { - GLchar log[LOG_SIZE]; - glGetShaderInfoLog(m_pixelShader, LOG_SIZE, nullptr, log); - m_lastLog = log; - m_compiled = true; - } - return m_compiled; - } - - GLuint Handle() override { return m_pixelShader; } - -protected: - GLuint m_pixelShader = 0; -}; -//------------------------------------------------------------------------ - -//============================================================================ -/// -/// \defgroup cpp_kodi_gui_gl_CShaderProgram GL Shader Program -/// \ingroup cpp_kodi_gui_gl -/// @brief \cpp_class{ kodi::gui::gl::CShaderProgram } -/// **Class to manage an OpenGL shader program** -/// -/// With this class the used GL shader code can be defined on the GPU and -/// its variables can be managed between CPU and GPU. -/// -/// It has the header \ref Shader.h "#include " -/// be included to enjoy it. -/// -/// ---------------------------------------------------------------------------- -/// -/// Example: -/// -/// ~~~~~~~~~~~~~{.cpp} -/// -/// #include -/// ... -/// -/// class ATTRIBUTE_HIDDEN CExample -/// : ..., -/// public kodi::gui::gl::CShaderProgram -/// { -/// public: -/// CExample() = default; -/// -/// bool Start(); -/// void Render(); -/// -/// // override functions for kodi::gui::gl::CShaderProgram -/// void OnCompiledAndLinked() override; -/// bool OnEnabled() override; -/// -/// private: -/// ... -/// GLint m_aPosition = -1; -/// GLint m_aColor = -1; -/// }; -/// -/// bool CExample::Start() -/// { -/// // Define shaders and load -/// std::string fraqShader = kodi::GetAddonPath("resources/shaders/" GL_TYPE_STRING "/glsl.frag"); -/// std::string vertShader = kodi::GetAddonPath("resources/shaders/" GL_TYPE_STRING "/glsl.vert"); -/// if (!LoadShaderFiles(vertShader, fraqShader) || !CompileAndLink()) -/// return false; -/// -/// ... -/// return true; -/// } -/// -/// ... -/// -/// void CExample::Render() -/// { -/// ... -/// -/// EnableShader(); -/// ... -/// DO WORK -/// ... -/// DisableShader(); -/// } -/// -/// void CExample::OnCompiledAndLinked() -/// { -/// ... -/// DO YOUR WORK HERE FOR WHAT IS ONE TIME REQUIRED DURING COMPILE OF SHADER, E.G.: -/// -/// m_aPosition = glGetAttribLocation(ProgramHandle(), "a_position"); -/// m_aColor = glGetAttribLocation(ProgramHandle(), "a_color"); -/// } -/// -/// bool OnEnabled() override -/// { -/// ... -/// DO YOUR WORK HERE FOR WHAT REQUIRED DURING ENABLE OF SHADER -/// ... -/// return true; -/// } -/// -/// ADDONCREATOR(CExample); -/// ~~~~~~~~~~~~~ -/// - -//======================================================================== -/// CShaderProgram -class ATTRIBUTE_HIDDEN CShaderProgram -{ -public: - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief Construct a new shader - /// - /// Load must be done later with \ref LoadShaderFiles. - /// - CShaderProgram() = default; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief Construct a new shader and load defined shader files - /// - /// @param[in] vert Path to used GL vertext shader - /// @param[in] frag Path to used GL fragment shader - /// - CShaderProgram(const std::string& vert, const std::string& frag) - { - LoadShaderFiles(vert, frag); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief Destructor - /// - virtual ~CShaderProgram() - { - ShaderFree(); - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief To load manually the needed shader files - /// - /// @param[in] vert Path to used GL vertext shader - /// @param[in] frag Path to used GL fragment shader - /// - /// - /// @note The use of the files is optional, but it must either be passed over - /// here or via \ref CompileAndLink, or both of the source code. - /// - bool LoadShaderFiles(const std::string& vert, const std::string& frag) - { - if (!kodi::vfs::FileExists(vert) || !m_pVP.LoadSource(vert)) - { - kodi::Log(ADDON_LOG_ERROR, "%s: Failed to load '%s'", __func__, vert.c_str()); - return false; - } - - if (!kodi::vfs::FileExists(frag) || !m_pFP.LoadSource(frag)) - { - kodi::Log(ADDON_LOG_ERROR, "%s: Failed to load '%s'", __func__, frag.c_str()); - return false; - } - - return true; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief To compile and link the shader to the GL interface - /// - /// Optionally, additional source code can be transferred here, or it can be - /// used independently without any files - /// - /// @param[in] vertexExtraBegin [opt] To additionally add vextex source - /// code to the beginning of the loaded file - /// source code - /// @param[in] vertexExtraEnd [opt] To additionally add vextex source - /// code to the end of the loaded file - /// source code - /// @param[in] fragmentExtraBegin [opt] To additionally add fragment source - /// code to the beginning of the loaded file - /// source code - /// @param[in] fragmentExtraEnd [opt] To additionally add fragment source - /// code to the end of the loaded file - /// source code - /// @return true if compile was successed - /// - /// - /// @note In the case of a compile error, it will be written once into the Kodi - /// log and in addition to the console output to quickly detect the errors when - /// writing the damage. - /// - /// - bool CompileAndLink(const std::string& vertexExtraBegin = "", - const std::string& vertexExtraEnd = "", - const std::string& fragmentExtraBegin = "", - const std::string& fragmentExtraEnd = "") - { - GLint params[4]; - - // free resources - ShaderFree(); - m_ok = false; - - // compiled vertex shader - if (!m_pVP.Compile(vertexExtraBegin, vertexExtraEnd)) - { - kodi::Log(ADDON_LOG_ERROR, "GL: Error compiling vertex shader"); - return false; - } - - // compile pixel shader - if (!m_pFP.Compile(fragmentExtraBegin, fragmentExtraEnd)) - { - m_pVP.Free(); - kodi::Log(ADDON_LOG_ERROR, "GL: Error compiling fragment shader"); - return false; - } - - // create program object - m_shaderProgram = glCreateProgram(); - if (!m_shaderProgram) - { - kodi::Log(ADDON_LOG_ERROR, "CShaderProgram::%s: Failed to create GL program", __FUNCTION__); - ShaderFree(); - return false; - } - - // attach the vertex shader - glAttachShader(m_shaderProgram, m_pVP.Handle()); - glAttachShader(m_shaderProgram, m_pFP.Handle()); - - // link the program - glLinkProgram(m_shaderProgram); - glGetProgramiv(m_shaderProgram, GL_LINK_STATUS, params); - if (params[0] != GL_TRUE) - { - GLchar log[LOG_SIZE]; - glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, nullptr, log); - kodi::Log(ADDON_LOG_ERROR, "CShaderProgram::%s: %s", __FUNCTION__, log); - fprintf(stderr, "CShaderProgram::%s: %s\n", __FUNCTION__, log); - ShaderFree(); - return false; - } - - m_validated = false; - m_ok = true; - OnCompiledAndLinked(); - return true; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief To activate the shader and use it on the GPU - /// - /// @return true if enable was successfull done - /// - /// - /// @note During this call, the \ref OnEnabled stored in the child is also - /// called - /// - bool EnableShader() - { - if (ShaderOK()) - { - glUseProgram(m_shaderProgram); - if (OnEnabled()) - { - if (!m_validated) - { - // validate the program - GLint params[4]; - glValidateProgram(m_shaderProgram); - glGetProgramiv(m_shaderProgram, GL_VALIDATE_STATUS, params); - if (params[0] != GL_TRUE) - { - GLchar log[LOG_SIZE]; - glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, nullptr, log); - kodi::Log(ADDON_LOG_ERROR, "CShaderProgram::%s: %s", __FUNCTION__, log); - fprintf(stderr, "CShaderProgram::%s: %s\n", __FUNCTION__, log); - } - m_validated = true; - } - return true; - } - else - { - glUseProgram(0); - return false; - } - return true; - } - return false; - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief To deactivate the shader use on the GPU - /// - void DisableShader() - { - if (ShaderOK()) - { - glUseProgram(0); - OnDisabled(); - } - } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief Used to check if shader has been loaded before. - /// - /// @return true if enable was successfull done - /// - /// @note The CompileAndLink call sets these values - /// - ATTRIBUTE_FORCEINLINE bool ShaderOK() const { return m_ok; } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief To get the vertex shader class used by Kodi at the addon - /// - /// @return pointer to vertex shader class - /// - ATTRIBUTE_FORCEINLINE CVertexShader& VertexShader() { return m_pVP; } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief To get the fragment shader class used by Kodi at the addon - /// - /// @return pointer to fragment shader class - /// - ATTRIBUTE_FORCEINLINE CPixelShader& PixelShader() { return m_pFP; } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief Used to get the definition created in the OpenGL itself - /// - /// @return GLuint of GL shader program handler - /// - ATTRIBUTE_FORCEINLINE GLuint ProgramHandle() { return m_shaderProgram; } - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \defgroup cpp_kodi_gui_gl_CShaderProgram_child Child Functions - /// \ingroup cpp_kodi_gui_gl_CShaderProgram - /// @brief \cpp_class{ kodi::gui::gl::CShaderProgram child functions } - /// - /// Functions that are added by parent in the child - //@{ - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram_child - /// @brief Mandatory child function to set the necessary CPU to GPU data - /// - virtual void OnCompiledAndLinked() {}; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram_child - /// @brief Optional function to exchange data between CPU and GPU while - /// activating the shader - /// - /// @return true if enable was successfull done - /// - virtual bool OnEnabled() { return true; }; - //-------------------------------------------------------------------------- - - //========================================================================== - /// - /// \ingroup cpp_kodi_gui_gl_CShaderProgram_child - /// @brief Optional child function that may have to be performed when - /// switching off the shader - virtual void OnDisabled() {}; - //-------------------------------------------------------------------------- - //@} - -private: - void ShaderFree() - { - if (m_shaderProgram) - glDeleteProgram(m_shaderProgram); - m_shaderProgram = 0; - m_ok = false; - } - - CVertexShader m_pVP; - CPixelShader m_pFP; - GLuint m_shaderProgram = 0; - bool m_ok = false; - bool m_validated = false; -}; -//------------------------------------------------------------------------ - -} /* namespace gl */ -} /* namespace gui */ -} /* namespace kodi */ diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h deleted file mode 100644 index 2e96d21..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2005-2019 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. - */ - -#pragma once - -#include "../AddonBase.h" - -namespace kodi -{ -namespace gui -{ -struct ATTRIBUTE_HIDDEN IRenderHelper -{ - virtual ~IRenderHelper() = default; - virtual bool Init() = 0; - virtual void Begin() = 0; - virtual void End() = 0; -}; /* class IRenderHelper */ -} /* namespace gui */ -} /* namespace kodi */ - -#if defined(WIN32) && defined(HAS_ANGLE) -#include "gl/GLonDX.h" -#else -/* - * Default background GUI render helper class - */ -namespace kodi -{ -namespace gui -{ -struct ATTRIBUTE_HIDDEN CRenderHelperStub : public IRenderHelper -{ - bool Init() override { return true; } - void Begin() override { } - void End() override { } -}; /* class CRenderHelperStub */ - -using CRenderHelper = CRenderHelperStub; -} /* namespace gui */ -} /* namespace kodi */ -#endif - -namespace kodi -{ -namespace gui -{ - -/* - * Create render background handler, e.g. becomes on "Windows" Angle used - * to emulate GL. - * - * This only be used internal and not from addon's direct. - * - * Function defines here and not in CAddonBase because of a hen and egg problem. - */ -inline std::shared_ptr ATTRIBUTE_HIDDEN GetRenderHelper() -{ - using namespace ::kodi::addon; - if (static_cast(CAddonBase::m_interface->addonBase)->m_renderHelper) - return static_cast(CAddonBase::m_interface->addonBase)->m_renderHelper; - - const std::shared_ptr renderHelper(new CRenderHelper()); - if (!renderHelper->Init()) - return nullptr; - - static_cast(CAddonBase::m_interface->addonBase)->m_renderHelper = - renderHelper; // Hold on base for other types - return renderHelper; -} - -} /* namespace gui */ -} /* namespace kodi */ -- cgit v1.2.3