summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/kodi-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
committermanuel <manuel@mausz.at>2020-10-19 00:52:24 +0200
commitbe933ef2241d79558f91796cc5b3a161f72ebf9c (patch)
treefe3ab2f130e20c99001f2d7a81d610c78c96a3f4 /xbmc/addons/kodi-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h
parent5f8335c1e49ce108ef3481863833c98efa00411b (diff)
downloadkodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.gz
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.tar.bz2
kodi-pvr-build-be933ef2241d79558f91796cc5b3a161f72ebf9c.zip
sync with upstream
Diffstat (limited to 'xbmc/addons/kodi-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h')
-rw-r--r--xbmc/addons/kodi-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h242
1 files changed, 242 insertions, 0 deletions
diff --git a/xbmc/addons/kodi-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h b/xbmc/addons/kodi-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h
new file mode 100644
index 0000000..c650483
--- /dev/null
+++ b/xbmc/addons/kodi-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h
@@ -0,0 +1,242 @@
1/*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#include "../../AddonBase.h"
12#include "../../c-api/gui/dialogs/extended_progress.h"
13
14#ifdef __cplusplus
15
16namespace kodi
17{
18namespace gui
19{
20namespace dialogs
21{
22
23//==============================================================================
24/// @defgroup cpp_kodi_gui_dialogs_CExtendedProgress Dialog Extended Progress
25/// @ingroup cpp_kodi_gui_dialogs
26/// @brief @cpp_class{ kodi::gui::dialogs::ExtendedProgress }
27/// **Progress dialog shown for background work**
28///
29/// The with @ref ExtendedProgress.h "#include <kodi/gui/dialogs/ExtendedProgress.h>"
30/// given class are basically used to create Kodi's extended progress.
31///
32///
33/// --------------------------------------------------------------------------
34///
35/// **Example:**
36/// ~~~~~~~~~~~~~{.cpp}
37/// #include <kodi/gui/dialogs/ExtendedProgress.h>
38///
39/// kodi::gui::dialogs::CExtendedProgress *ext_progress = new kodi::gui::dialogs::CExtendedProgress("Test Extended progress");
40/// ext_progress->SetText("Test progress");
41/// for (unsigned int i = 0; i < 50; i += 10)
42/// {
43/// ext_progress->SetProgress(i, 100);
44/// sleep(1);
45/// }
46///
47/// ext_progress->SetTitle("Test Extended progress - Second round");
48/// ext_progress->SetText("Test progress - Step 2");
49///
50/// for (unsigned int i = 50; i < 100; i += 10)
51/// {
52/// ext_progress->SetProgress(i, 100);
53/// sleep(1);
54/// }
55/// delete ext_progress;
56/// ~~~~~~~~~~~~~
57///
58class ATTRIBUTE_HIDDEN CExtendedProgress
59{
60public:
61 //============================================================================
62 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
63 /// Construct a new dialog.
64 ///
65 /// @param[in] title [opt] Title string
66 ///
67 explicit CExtendedProgress(const std::string& title = "")
68 {
69 using namespace ::kodi::addon;
70 m_DialogHandle = CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->new_dialog(
71 CAddonBase::m_interface->toKodi->kodiBase, title.c_str());
72 if (!m_DialogHandle)
73 kodi::Log(ADDON_LOG_FATAL,
74 "kodi::gui::CDialogExtendedProgress can't create window class from Kodi !!!");
75 }
76 //----------------------------------------------------------------------------
77
78 //============================================================================
79 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
80 /// Destructor.
81 ///
82 ~CExtendedProgress()
83 {
84 using namespace ::kodi::addon;
85 if (m_DialogHandle)
86 CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->delete_dialog(
87 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle);
88 }
89 //----------------------------------------------------------------------------
90
91 //============================================================================
92 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
93 /// @brief Get the used title.
94 ///
95 /// @return Title string
96 ///
97 std::string Title() const
98 {
99 using namespace ::kodi::addon;
100 std::string text;
101 char* strMsg = CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->get_title(
102 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle);
103 if (strMsg != nullptr)
104 {
105 if (std::strlen(strMsg))
106 text = strMsg;
107 CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase,
108 strMsg);
109 }
110 return text;
111 }
112 //----------------------------------------------------------------------------
113
114 //============================================================================
115 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
116 /// @brief To set the title of dialog.
117 ///
118 /// @param[in] title Title string
119 ///
120 void SetTitle(const std::string& title)
121 {
122 using namespace ::kodi::addon;
123 CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->set_title(
124 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, title.c_str());
125 }
126 //----------------------------------------------------------------------------
127
128 //============================================================================
129 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
130 /// @brief Get the used text information string.
131 ///
132 /// @return Text string
133 ///
134 std::string Text() const
135 {
136 using namespace ::kodi::addon;
137 std::string text;
138 char* strMsg = CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->get_text(
139 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle);
140 if (strMsg != nullptr)
141 {
142 if (std::strlen(strMsg))
143 text = strMsg;
144 CAddonBase::m_interface->toKodi->free_string(CAddonBase::m_interface->toKodi->kodiBase,
145 strMsg);
146 }
147 return text;
148 }
149 //----------------------------------------------------------------------------
150
151 //============================================================================
152 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
153 /// @brief To set the used text information string.
154 ///
155 /// @param[in] text Information text to set
156 ///
157 void SetText(const std::string& text)
158 {
159 using namespace ::kodi::addon;
160 CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->set_text(
161 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, text.c_str());
162 }
163 //----------------------------------------------------------------------------
164
165 //============================================================================
166 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
167 /// @brief To ask dialog is finished.
168 ///
169 /// @return True if on end
170 ///
171 bool IsFinished() const
172 {
173 using namespace ::kodi::addon;
174 return CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->is_finished(
175 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle);
176 }
177 //----------------------------------------------------------------------------
178
179 //============================================================================
180 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
181 /// @brief Mark progress finished.
182 ///
183 void MarkFinished()
184 {
185 using namespace ::kodi::addon;
186 CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->mark_finished(
187 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle);
188 }
189 //----------------------------------------------------------------------------
190
191 //============================================================================
192 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
193 /// @brief Get the current progress position as percent.
194 ///
195 /// @return Position
196 ///
197 float Percentage() const
198 {
199 using namespace ::kodi::addon;
200 return CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->get_percentage(
201 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle);
202 }
203 //----------------------------------------------------------------------------
204
205 //============================================================================
206 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
207 /// @brief To set the current progress position as percent.
208 ///
209 /// @param[in] percentage Position to use from 0.0 to 100.0
210 ///
211 void SetPercentage(float percentage)
212 {
213 using namespace ::kodi::addon;
214 CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->set_percentage(
215 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, percentage);
216 }
217 //----------------------------------------------------------------------------
218
219 //============================================================================
220 /// @ingroup cpp_kodi_gui_dialogs_CExtendedProgress
221 /// @brief To set progress position with predefined places.
222 ///
223 /// @param[in] currentItem Place position to use
224 /// @param[in] itemCount Amount of used places
225 ///
226 void SetProgress(int currentItem, int itemCount)
227 {
228 using namespace ::kodi::addon;
229 CAddonBase::m_interface->toKodi->kodi_gui->dialogExtendedProgress->set_progress(
230 CAddonBase::m_interface->toKodi->kodiBase, m_DialogHandle, currentItem, itemCount);
231 }
232 //----------------------------------------------------------------------------
233
234private:
235 KODI_GUI_HANDLE m_DialogHandle;
236};
237
238} /* namespace dialogs */
239} /* namespace gui */
240} /* namespace kodi */
241
242#endif /* __cplusplus */