/*
* 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 "../../c-api/gui/dialogs/yes_no.h"
#ifdef __cplusplus
namespace kodi
{
namespace gui
{
namespace dialogs
{
//==============================================================================
/// @defgroup cpp_kodi_gui_dialogs_YesNo Dialog Yes/No
/// @ingroup cpp_kodi_gui_dialogs
/// @{
/// @brief @cpp_namespace{ kodi::gui::dialogs::YesNo }
/// **Yes / No dialog**\n
/// 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 = false;
/// 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 = false;
/// 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 YesNo
/// @}
} /* namespace dialogs */
} /* namespace gui */
} /* namespace kodi */
#endif /* __cplusplus */