/xbmc/dialogs/GUIDialogOK.cpp

http://github.com/xbmc/xbmc · C++ · 96 lines · 75 code · 12 blank · 9 comment · 12 complexity · 9350039493a1a79c79de14f0210a95f7 MD5 · raw file

  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. #include "GUIDialogOK.h"
  9. #include "ServiceBroker.h"
  10. #include "guilib/GUIComponent.h"
  11. #include "guilib/GUIMessage.h"
  12. #include "guilib/GUIWindowManager.h"
  13. #include "utils/Variant.h"
  14. CGUIDialogOK::CGUIDialogOK(void)
  15. : CGUIDialogBoxBase(WINDOW_DIALOG_OK, "DialogConfirm.xml")
  16. {
  17. }
  18. CGUIDialogOK::~CGUIDialogOK(void) = default;
  19. bool CGUIDialogOK::OnMessage(CGUIMessage& message)
  20. {
  21. if (message.GetMessage() == GUI_MSG_CLICKED)
  22. {
  23. int iControl = message.GetSenderId();
  24. if (iControl == CONTROL_YES_BUTTON)
  25. {
  26. m_bConfirmed = true;
  27. Close();
  28. return true;
  29. }
  30. }
  31. return CGUIDialogBoxBase::OnMessage(message);
  32. }
  33. // \brief Show CGUIDialogOK dialog, then wait for user to dismiss it.
  34. bool CGUIDialogOK::ShowAndGetInput(CVariant heading, CVariant text)
  35. {
  36. CGUIDialogOK *dialog = CServiceBroker::GetGUI()->GetWindowManager().GetWindow<CGUIDialogOK>(WINDOW_DIALOG_OK);
  37. if (!dialog)
  38. return false;
  39. dialog->SetHeading(heading);
  40. dialog->SetText(text);
  41. dialog->Open();
  42. return dialog->IsConfirmed();
  43. }
  44. // \brief Show CGUIDialogOK dialog, then wait for user to dismiss it.
  45. bool CGUIDialogOK::ShowAndGetInput(CVariant heading, CVariant line0, CVariant line1, CVariant line2)
  46. {
  47. CGUIDialogOK *dialog = CServiceBroker::GetGUI()->GetWindowManager().GetWindow<CGUIDialogOK>(WINDOW_DIALOG_OK);
  48. if (!dialog)
  49. return false;
  50. dialog->SetHeading(heading);
  51. dialog->SetLine(0, line0);
  52. dialog->SetLine(1, line1);
  53. dialog->SetLine(2, line2);
  54. dialog->Open();
  55. return dialog->IsConfirmed();
  56. }
  57. bool CGUIDialogOK::ShowAndGetInput(const HELPERS::DialogOKMessage & options)
  58. {
  59. if (!options.heading.isNull())
  60. SetHeading(options.heading);
  61. if (!options.text.isNull())
  62. SetText(options.text);
  63. for (size_t i = 0; i < 3; ++i)
  64. {
  65. if (!options.lines[i].isNull())
  66. SetLine(i, options.lines[i]);
  67. }
  68. Open();
  69. return IsConfirmed();
  70. }
  71. void CGUIDialogOK::OnInitWindow()
  72. {
  73. SET_CONTROL_HIDDEN(CONTROL_NO_BUTTON);
  74. SET_CONTROL_HIDDEN(CONTROL_CUSTOM_BUTTON);
  75. SET_CONTROL_HIDDEN(CONTROL_PROGRESS_BAR);
  76. SET_CONTROL_FOCUS(CONTROL_YES_BUTTON, 0);
  77. CGUIDialogBoxBase::OnInitWindow();
  78. }
  79. int CGUIDialogOK::GetDefaultLabelID(int controlId) const
  80. {
  81. if (controlId == CONTROL_YES_BUTTON)
  82. return 186;
  83. return CGUIDialogBoxBase::GetDefaultLabelID(controlId);
  84. }