QtUtils: Add ModalMessageBox
This commit is contained in:
parent
a59010fa29
commit
d1cb79f644
|
@ -104,6 +104,7 @@ add_executable(dolphin-emu
|
||||||
QtUtils/DoubleClickEventFilter.cpp
|
QtUtils/DoubleClickEventFilter.cpp
|
||||||
QtUtils/ElidedButton.cpp
|
QtUtils/ElidedButton.cpp
|
||||||
QtUtils/FlowLayout.cpp
|
QtUtils/FlowLayout.cpp
|
||||||
|
QtUtils/ModalMessageBox.cpp
|
||||||
QtUtils/ImageConverter.cpp
|
QtUtils/ImageConverter.cpp
|
||||||
QtUtils/SignalDaemon.cpp
|
QtUtils/SignalDaemon.cpp
|
||||||
QtUtils/WindowActivationEventFilter.cpp
|
QtUtils/WindowActivationEventFilter.cpp
|
||||||
|
|
|
@ -154,6 +154,7 @@
|
||||||
<QtMoc Include="QtUtils\DoubleClickEventFilter.h" />
|
<QtMoc Include="QtUtils\DoubleClickEventFilter.h" />
|
||||||
<QtMoc Include="QtUtils\ElidedButton.h" />
|
<QtMoc Include="QtUtils\ElidedButton.h" />
|
||||||
<QtMoc Include="QtUtils\FlowLayout.h" />
|
<QtMoc Include="QtUtils\FlowLayout.h" />
|
||||||
|
<QtMoc Include="QtUtils\ModalMessageBox.h" />
|
||||||
<QtMoc Include="QtUtils\WindowActivationEventFilter.h" />
|
<QtMoc Include="QtUtils\WindowActivationEventFilter.h" />
|
||||||
<QtMoc Include="QtUtils\WrapInScrollArea.h" />
|
<QtMoc Include="QtUtils\WrapInScrollArea.h" />
|
||||||
<QtMoc Include="RenderWidget.h" />
|
<QtMoc Include="RenderWidget.h" />
|
||||||
|
@ -245,6 +246,7 @@
|
||||||
<ClCompile Include="$(QtMocOutPrefix)MemoryViewWidget.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)MemoryViewWidget.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)MemoryWidget.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)MemoryWidget.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)MenuBar.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)MenuBar.cpp" />
|
||||||
|
<ClCompile Include="$(QtMocOutPrefix)ModalMessageBox.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)NetPlayDialog.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)NetPlayDialog.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)NetPlaySetupDialog.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)NetPlaySetupDialog.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)NewBreakpointDialog.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)NewBreakpointDialog.cpp" />
|
||||||
|
@ -371,6 +373,7 @@
|
||||||
<ClCompile Include="QtUtils\ElidedButton.cpp" />
|
<ClCompile Include="QtUtils\ElidedButton.cpp" />
|
||||||
<ClCompile Include="QtUtils\FlowLayout.cpp" />
|
<ClCompile Include="QtUtils\FlowLayout.cpp" />
|
||||||
<ClCompile Include="QtUtils\ImageConverter.cpp" />
|
<ClCompile Include="QtUtils\ImageConverter.cpp" />
|
||||||
|
<ClCompile Include="QtUtils\ModalMessageBox.cpp" />
|
||||||
<ClCompile Include="QtUtils\WindowActivationEventFilter.cpp" />
|
<ClCompile Include="QtUtils\WindowActivationEventFilter.cpp" />
|
||||||
<ClCompile Include="QtUtils\WrapInScrollArea.cpp" />
|
<ClCompile Include="QtUtils\WrapInScrollArea.cpp" />
|
||||||
<ClCompile Include="RenderWidget.cpp" />
|
<ClCompile Include="RenderWidget.cpp" />
|
||||||
|
@ -491,4 +494,4 @@
|
||||||
<Message Text="Copy: @(BinaryFiles) -> $(BinaryOutputDir)" Importance="High" />
|
<Message Text="Copy: @(BinaryFiles) -> $(BinaryOutputDir)" Importance="High" />
|
||||||
<Copy SourceFiles="@(BinaryFiles)" DestinationFolder="$(BinaryOutputDir)" />
|
<Copy SourceFiles="@(BinaryFiles)" DestinationFolder="$(BinaryOutputDir)" />
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
// Copyright 2019 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinQt/QtUtils/ModalMessageBox.h"
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
ModalMessageBox::ModalMessageBox(QWidget* parent) : QMessageBox(parent)
|
||||||
|
{
|
||||||
|
setWindowModality(Qt::WindowModal);
|
||||||
|
|
||||||
|
// No parent is still preferable to showing a hidden parent here.
|
||||||
|
if (parent != nullptr && !parent->isVisible())
|
||||||
|
setParent(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int ExecMessageBox(ModalMessageBox::Icon icon, QWidget* parent, const QString& title,
|
||||||
|
const QString& text, ModalMessageBox::StandardButtons buttons,
|
||||||
|
ModalMessageBox::StandardButton default_button)
|
||||||
|
{
|
||||||
|
ModalMessageBox msg(parent);
|
||||||
|
msg.setIcon(icon);
|
||||||
|
msg.setWindowTitle(title);
|
||||||
|
msg.setText(text);
|
||||||
|
msg.setStandardButtons(buttons);
|
||||||
|
msg.setDefaultButton(default_button);
|
||||||
|
|
||||||
|
return msg.exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
int ModalMessageBox::critical(QWidget* parent, const QString& title, const QString& text,
|
||||||
|
StandardButtons buttons, StandardButton default_button)
|
||||||
|
{
|
||||||
|
return ExecMessageBox(QMessageBox::Critical, parent, title, text, buttons, default_button);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ModalMessageBox::information(QWidget* parent, const QString& title, const QString& text,
|
||||||
|
StandardButtons buttons, StandardButton default_button)
|
||||||
|
{
|
||||||
|
return ExecMessageBox(QMessageBox::Information, parent, title, text, buttons, default_button);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ModalMessageBox::question(QWidget* parent, const QString& title, const QString& text,
|
||||||
|
StandardButtons buttons, StandardButton default_button)
|
||||||
|
{
|
||||||
|
return ExecMessageBox(QMessageBox::Critical, parent, title, text, buttons, default_button);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ModalMessageBox::warning(QWidget* parent, const QString& title, const QString& text,
|
||||||
|
StandardButtons buttons, StandardButton default_button)
|
||||||
|
{
|
||||||
|
return ExecMessageBox(QMessageBox::Warning, parent, title, text, buttons, default_button);
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
// Copyright 2019 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
// Helper for making message boxes modal by default
|
||||||
|
class ModalMessageBox : public QMessageBox
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit ModalMessageBox(QWidget* parent);
|
||||||
|
|
||||||
|
static int critical(QWidget* parent, const QString& title, const QString& text,
|
||||||
|
StandardButtons buttons = Ok, StandardButton default_button = NoButton);
|
||||||
|
static int information(QWidget* parent, const QString& title, const QString& text,
|
||||||
|
StandardButtons buttons = Ok, StandardButton default_button = NoButton);
|
||||||
|
static int question(QWidget* parent, const QString& title, const QString& text,
|
||||||
|
StandardButtons buttons = Yes | No, StandardButton default_button = NoButton);
|
||||||
|
static int warning(QWidget* parent, const QString& title, const QString& text,
|
||||||
|
StandardButtons buttons = Ok, StandardButton default_button = NoButton);
|
||||||
|
};
|
Loading…
Reference in New Issue