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