diff options
author | Friedemann Kleint <[email protected]> | 2009-06-19 16:34:38 +0200 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2009-06-19 16:34:38 +0200 |
commit | 2508fa03a09391957933c5d7d83b9ab80cb4ca9e (patch) | |
tree | 919369920a429ada9e3f00b5d56e71c7d807ef6c /src/libs/utils/checkablemessagebox.cpp | |
parent | e05505613a0c316fe15023766b54b085e67249d2 (diff) |
Make the "prompt to submit" setting a per-plugin one.
Provide a checkable message box to be able to turn
prompting off when asked.
Diffstat (limited to 'src/libs/utils/checkablemessagebox.cpp')
-rw-r--r-- | src/libs/utils/checkablemessagebox.cpp | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/src/libs/utils/checkablemessagebox.cpp b/src/libs/utils/checkablemessagebox.cpp new file mode 100644 index 00000000000..d72bd9e6da4 --- /dev/null +++ b/src/libs/utils/checkablemessagebox.cpp @@ -0,0 +1,150 @@ +#include "checkablemessagebox.h" +#include "ui_checkablemessagebox.h" + +#include <QtGui/QPushButton> +#include <QtCore/QDebug> + +namespace Core { +namespace Utils { + +struct CheckableMessageBoxPrivate { + CheckableMessageBoxPrivate() : clickedButton(0) {} + + Ui::CheckableMessageBox ui; + QAbstractButton *clickedButton; +}; + +CheckableMessageBox::CheckableMessageBox(QWidget *parent) : + QDialog(parent), + m_d(new CheckableMessageBoxPrivate) +{ + setModal(true); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + m_d->ui.setupUi(this); + m_d->ui.pixmapLabel->setVisible(false); + connect(m_d->ui.buttonBox, SIGNAL(accepted()), this, SLOT(accept())); + connect(m_d->ui.buttonBox, SIGNAL(rejected()), this, SLOT(reject())); + connect(m_d->ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(slotClicked(QAbstractButton*))); +} + +CheckableMessageBox::~CheckableMessageBox() +{ + delete m_d; +} + +void CheckableMessageBox::slotClicked(QAbstractButton *b) +{ + m_d->clickedButton = b; +} + +QAbstractButton *CheckableMessageBox::clickedButton() const +{ + return m_d->clickedButton; +} + +QDialogButtonBox::StandardButton CheckableMessageBox::clickedStandardButton() const +{ + if (m_d->clickedButton) + return m_d->ui.buttonBox->standardButton(m_d->clickedButton); + return QDialogButtonBox::NoButton; +} + +QString CheckableMessageBox::text() const +{ + return m_d->ui.messageLabel->text(); +} + +void CheckableMessageBox::setText(const QString &t) +{ + m_d->ui.messageLabel->setText(t); +} + +QPixmap CheckableMessageBox::iconPixmap() const +{ + if (const QPixmap *p = m_d->ui.pixmapLabel->pixmap()) + return QPixmap(*p); + return QPixmap(); +} + +void CheckableMessageBox::setIconPixmap(const QPixmap &p) +{ + m_d->ui.pixmapLabel->setPixmap(p); + m_d->ui.pixmapLabel->setVisible(!p.isNull()); +} + +bool CheckableMessageBox::isChecked() const +{ + return m_d->ui.checkBox->isChecked(); +} + +void CheckableMessageBox::setChecked(bool s) +{ + m_d->ui.checkBox->setChecked(s); +} + +QString CheckableMessageBox::checkBoxText() const +{ + return m_d->ui.checkBox->text(); +} + +void CheckableMessageBox::setCheckBoxText(const QString &t) +{ + m_d->ui.checkBox->setText(t); +} + +QDialogButtonBox::StandardButtons CheckableMessageBox::standardButtons() const +{ + return m_d->ui.buttonBox->standardButtons(); +} + +void CheckableMessageBox::setStandardButtons(QDialogButtonBox::StandardButtons s) +{ + m_d->ui.buttonBox->setStandardButtons(s); +} + +QDialogButtonBox::StandardButton CheckableMessageBox::defaultButton() const +{ + foreach (QAbstractButton *b, m_d->ui.buttonBox->buttons()) + if (QPushButton *pb = qobject_cast<QPushButton *>(b)) + if (pb->isDefault()) + return m_d->ui.buttonBox->standardButton(pb); + return QDialogButtonBox::NoButton; +} + +void CheckableMessageBox::setDefaultButton(QDialogButtonBox::StandardButton s) +{ + if (QPushButton *b = m_d->ui.buttonBox->button(s)) { + b->setDefault(true); + b->setFocus(); + } +} + +QDialogButtonBox::StandardButton + CheckableMessageBox::question(QWidget *parent, + const QString &title, + const QString &question, + const QString &checkBoxText, + bool *checkBoxSetting, + QDialogButtonBox::StandardButtons buttons, + QDialogButtonBox::StandardButton defaultButton) +{ + CheckableMessageBox mb(parent); + mb.setWindowTitle(title); + mb.setIconPixmap(QMessageBox::standardIcon(QMessageBox::Question)); + mb.setText(question); + mb.setCheckBoxText(checkBoxText); + mb.setChecked(*checkBoxSetting); + mb.setStandardButtons(buttons); + mb.setDefaultButton(defaultButton); + mb.exec(); + *checkBoxSetting = mb.isChecked(); + return mb.clickedStandardButton(); +} + +QMessageBox::StandardButton CheckableMessageBox::dialogButtonBoxToMessageBoxButton(QDialogButtonBox::StandardButton db) +{ + return static_cast<QMessageBox::StandardButton>(int(db)); +} + +} // namespace Utils +} // namespace Core |