1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
/*********
*
* This file is part of BibleTime's source code, http://www.bibletime.info/.
*
* Copyright 1999-2016 by the BibleTime developers.
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
*
**********/
#include "messagedialog.h"
#include <QAction>
#include <QDialogButtonBox>
#include <QMessageBox>
#include <QPushButton>
#include "util/btassert.h"
namespace message {
namespace {
void replaceText(QDialogButtonBox *box, QDialogButtonBox::StandardButton flag,
const QString &text) {
QPushButton *button(box->button(flag));
if (button != nullptr) {
button->setText(text);
}
}
QMessageBox::StandardButton bt_messageBox(QMessageBox::Icon icon,
QWidget * parent,
const QString &title,
const QString &text,
QMessageBox::StandardButtons buttons,
QMessageBox::StandardButton defaultButton)
{
QMessageBox messageBox(icon, title, text, QMessageBox::Ok, parent);
messageBox.setTextFormat(Qt::RichText);
//We need the button box to translate the strings (the idea of this whole function)
QDialogButtonBox* box = dynamic_cast<QDialogButtonBox*>(messageBox.button(QMessageBox::Ok)->parent());
BT_ASSERT(box);
messageBox.setStandardButtons(buttons);
messageBox.setDefaultButton(defaultButton);
prepareDialogBox(box);
return static_cast<QMessageBox::StandardButton>(messageBox.exec());
}
} // anonymous namespace
void setQActionCheckedNoTrigger(QAction * const action, const bool checked) {
BT_ASSERT(action);
const bool signalsWereBlocked = action->blockSignals(true);
action->setChecked(checked);
action->blockSignals(signalsWereBlocked);
}
void prepareDialogBox(QDialogButtonBox *box) {
replaceText(box, QDialogButtonBox::Ok , QPushButton::tr("OK" , "Dialog Button"));
replaceText(box, QDialogButtonBox::Open , QPushButton::tr("Open" , "Dialog Button"));
replaceText(box, QDialogButtonBox::Save , QPushButton::tr("Save" , "Dialog Button"));
replaceText(box, QDialogButtonBox::Cancel , QPushButton::tr("Cancel" , "Dialog Button"));
replaceText(box, QDialogButtonBox::Close , QPushButton::tr("Close" , "Dialog Button"));
replaceText(box, QDialogButtonBox::Discard , QPushButton::tr("Discard" , "Dialog Button"));
replaceText(box, QDialogButtonBox::Apply , QPushButton::tr("Apply" , "Dialog Button"));
replaceText(box, QDialogButtonBox::Reset , QPushButton::tr("Reset" , "Dialog Button"));
replaceText(box, QDialogButtonBox::RestoreDefaults, QPushButton::tr("Restore defaults", "Dialog Button"));
replaceText(box, QDialogButtonBox::Help , QPushButton::tr("Help" , "Dialog Button"));
replaceText(box, QDialogButtonBox::SaveAll , QPushButton::tr("Save All" , "Dialog Button"));
replaceText(box, QDialogButtonBox::Yes , QPushButton::tr("Yes" , "Dialog Button"));
replaceText(box, QDialogButtonBox::YesToAll, QPushButton::tr("Yes to all", "Dialog Button"));
replaceText(box, QDialogButtonBox::No , QPushButton::tr("No" , "Dialog Button"));
replaceText(box, QDialogButtonBox::NoToAll , QPushButton::tr("No to all" , "Dialog Button"));
}
QMessageBox::StandardButton showWarning(QWidget * parent, const QString & title, const QString & text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton) {
return bt_messageBox(QMessageBox::Warning, parent, title, text, buttons, defaultButton);
}
QMessageBox::StandardButton showInformation(QWidget * parent, const QString & title, const QString & text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton) {
return bt_messageBox(QMessageBox::Information, parent, title, text, buttons, defaultButton);
}
QMessageBox::StandardButton showCritical(QWidget * parent, const QString & title, const QString & text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton) {
return bt_messageBox(QMessageBox::Critical, parent, title, text, buttons, defaultButton);
}
QMessageBox::StandardButton showQuestion(QWidget * parent, const QString & title, const QString & text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton) {
return bt_messageBox(QMessageBox::Question, parent, title, text, buttons, defaultButton);
}
} // namespace message
|