ModalMessageBox.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright 2019 Dolphin Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "DolphinQt/QtUtils/ModalMessageBox.h"
  4. #include <QApplication>
  5. #include "DolphinQt/QtUtils/SetWindowDecorations.h"
  6. ModalMessageBox::ModalMessageBox(QWidget* parent, Qt::WindowModality modality)
  7. : QMessageBox(parent != nullptr ? parent->window() : nullptr)
  8. {
  9. setWindowModality(modality);
  10. setWindowFlags(Qt::Sheet | Qt::WindowTitleHint | Qt::CustomizeWindowHint);
  11. // No parent is still preferable to showing a hidden parent here.
  12. if (parent != nullptr && !parent->window()->isVisible())
  13. setParent(nullptr);
  14. }
  15. static inline int ExecMessageBox(ModalMessageBox::Icon icon, QWidget* parent, const QString& title,
  16. const QString& text, ModalMessageBox::StandardButtons buttons,
  17. ModalMessageBox::StandardButton default_button,
  18. Qt::WindowModality modality, QString detailed_text)
  19. {
  20. ModalMessageBox msg(parent, modality);
  21. msg.setIcon(icon);
  22. msg.setWindowTitle(title);
  23. msg.setText(text);
  24. msg.setStandardButtons(buttons);
  25. msg.setDefaultButton(default_button);
  26. msg.setDetailedText(detailed_text);
  27. SetQWidgetWindowDecorations(&msg);
  28. return msg.exec();
  29. }
  30. int ModalMessageBox::critical(QWidget* parent, const QString& title, const QString& text,
  31. StandardButtons buttons, StandardButton default_button,
  32. Qt::WindowModality modality, const QString& detailedText)
  33. {
  34. return ExecMessageBox(QMessageBox::Critical, parent, title, text, buttons, default_button,
  35. modality, detailedText);
  36. }
  37. int ModalMessageBox::information(QWidget* parent, const QString& title, const QString& text,
  38. StandardButtons buttons, StandardButton default_button,
  39. Qt::WindowModality modality, const QString& detailedText)
  40. {
  41. return ExecMessageBox(QMessageBox::Information, parent, title, text, buttons, default_button,
  42. modality, detailedText);
  43. }
  44. int ModalMessageBox::question(QWidget* parent, const QString& title, const QString& text,
  45. StandardButtons buttons, StandardButton default_button,
  46. Qt::WindowModality modality, const QString& detailedText)
  47. {
  48. return ExecMessageBox(QMessageBox::Warning, parent, title, text, buttons, default_button,
  49. modality, detailedText);
  50. }
  51. int ModalMessageBox::warning(QWidget* parent, const QString& title, const QString& text,
  52. StandardButtons buttons, StandardButton default_button,
  53. Qt::WindowModality modality, const QString& detailedText)
  54. {
  55. return ExecMessageBox(QMessageBox::Warning, parent, title, text, buttons, default_button,
  56. modality, detailedText);
  57. }