WSJT-X/MessageBox.cpp
Bill Somerville 41f213c44b Fix handling of SSL/TLS exceptions allowing errors to be ignored for a session
Not persistent  but I'm not  sure they need to  be as sites  we access
should have valid certificates and  chains of trust. This should allow
users  with  baulked SSL  installations  or  incomplete CA  stores  to
proceed with network accesses at their discretion.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7378 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2016-12-11 21:19:23 +00:00

102 lines
3.8 KiB
C++

#include "MessageBox.hpp"
#include <QDialogButtonBox>
#include <QPushButton>
#include "revision_utils.hpp"
MessageBox::MessageBox (QWidget * parent)
: QMessageBox {parent}
{
setWindowTitle (program_title ());
}
MessageBox::MessageBox (Icon icon, QString const& text, StandardButtons buttons
, QWidget * parent, Qt::WindowFlags flags)
: QMessageBox {icon, program_title (), text, buttons, parent, flags}
{
}
void MessageBox::about_message (QWidget * parent, QString const& text)
{
QMessageBox::about (parent, program_title (), text);
}
void MessageBox::about_Qt_message (QWidget * parent)
{
QMessageBox::aboutQt (parent, program_title ());
}
namespace
{
QMessageBox::StandardButton show_it (QWidget * parent, MessageBox::Icon icon
, QString const& text
, QString const& informative
, QString const& detail
, MessageBox::StandardButtons buttons
, MessageBox::StandardButton default_button)
{
MessageBox mb {icon, text, MessageBox::NoButton, parent};
QDialogButtonBox * button_box = mb.findChild<QDialogButtonBox *> ();
Q_ASSERT (button_box);
uint mask = MessageBox::FirstButton;
while (mask <= MessageBox::LastButton) {
uint sb = buttons & mask;
mask <<= 1;
if (!sb)
continue;
QPushButton * button = mb.addButton (static_cast<MessageBox::StandardButton> (sb));
// Choose the first accept role as the default
if (mb.defaultButton ())
continue;
if ((default_button == MessageBox::NoButton
&& button_box->buttonRole (button) == QDialogButtonBox::AcceptRole)
|| (default_button != MessageBox::NoButton
&& sb == static_cast<uint> (default_button)))
mb.setDefaultButton (button);
}
mb.setInformativeText (informative);
mb.setDetailedText (detail);
if (mb.exec() == -1)
return MessageBox::Cancel;
return mb.standardButton (mb.clickedButton ());
}
}
auto MessageBox::information_message (QWidget * parent, QString const& text
, QString const& informative
, QString const& detail
, StandardButtons buttons
, StandardButton default_button) -> StandardButton
{
return show_it (parent, Information, text, informative, detail, buttons, default_button);
}
auto MessageBox::query_message (QWidget * parent, QString const& text
, QString const& informative
, QString const& detail
, StandardButtons buttons
, StandardButton default_button) -> StandardButton
{
return show_it (parent, Question, text, informative, detail, buttons, default_button);
}
auto MessageBox::warning_message (QWidget * parent, QString const& text
, QString const& informative
, QString const& detail
, StandardButtons buttons
, StandardButton default_button) -> StandardButton
{
return show_it (parent, Warning, text, informative, detail, buttons, default_button);
}
auto MessageBox::critical_message (QWidget * parent, QString const& text
, QString const& informative
, QString const& detail
, StandardButtons buttons
, StandardButton default_button) -> StandardButton
{
return show_it (parent, Critical, text, informative, detail, buttons, default_button);
}