/*
* 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 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 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 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 */