diff options
author | hjk <qthjk@ovi.com> | 2011-12-18 00:58:28 +0100 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-01-11 16:19:36 +0100 |
commit | 9d0e65ae3954e982a128f6ac343e682338b531d7 (patch) | |
tree | 9d7a68dda847603ff5bd92f9ca059de7ddfc7ea1 /src/libs/utils/checkablemessagebox.cpp | |
parent | f75abb341ecd6f7f11a9b9ae01605135f3953ca3 (diff) |
More Mac-like spacing in CheckableMessageBox.
Task-number: QTCREATORBUG-6244
Change-Id: Ic4bb76be79dea1b220ffe3f45327176305f61e03
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
Diffstat (limited to 'src/libs/utils/checkablemessagebox.cpp')
-rw-r--r-- | src/libs/utils/checkablemessagebox.cpp | 141 |
1 files changed, 104 insertions, 37 deletions
diff --git a/src/libs/utils/checkablemessagebox.cpp b/src/libs/utils/checkablemessagebox.cpp index 927019e275b..f5c2d916eb1 100644 --- a/src/libs/utils/checkablemessagebox.cpp +++ b/src/libs/utils/checkablemessagebox.cpp @@ -31,10 +31,23 @@ **************************************************************************/ #include "checkablemessagebox.h" -#include "ui_checkablemessagebox.h" -#include <QtGui/QPushButton> #include <QtCore/QDebug> +#include <QtCore/QVariant> + +#include <QtGui/QPushButton> +#include <QtGui/QAction> +#include <QtGui/QApplication> +#include <QtGui/QButtonGroup> +#include <QtGui/QCheckBox> +#include <QtGui/QDialog> +#include <QtGui/QDialogButtonBox> +#include <QtGui/QHBoxLayout> +#include <QtGui/QHeaderView> +#include <QtGui/QLabel> +#include <QtGui/QSpacerItem> +#include <QtGui/QVBoxLayout> + /*! \class Utils::CheckableMessageBox @@ -48,24 +61,78 @@ namespace Utils { -struct CheckableMessageBoxPrivate { - CheckableMessageBoxPrivate() : clickedButton(0) {} +class CheckableMessageBoxPrivate +{ +public: + CheckableMessageBoxPrivate(QDialog *q) + : clickedButton(0) + { + QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); + + pixmapLabel = new QLabel(q); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(pixmapLabel->sizePolicy().hasHeightForWidth()); + pixmapLabel->setSizePolicy(sizePolicy); + pixmapLabel->setVisible(false); + + QSpacerItem *pixmapSpacer = + new QSpacerItem(0, 5, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); + + messageLabel = new QLabel(q); + messageLabel->setMinimumSize(QSize(300, 0)); + messageLabel->setWordWrap(true); + messageLabel->setOpenExternalLinks(true); + messageLabel->setTextInteractionFlags(Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse); + + QSpacerItem *checkBoxRightSpacer = + new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum); + QSpacerItem *buttonSpacer = + new QSpacerItem(0, 1, QSizePolicy::Minimum, QSizePolicy::Minimum); + + checkBox = new QCheckBox(q); + checkBox->setText(q->tr("Do not ask again")); + + buttonBox = new QDialogButtonBox(q); + buttonBox->setOrientation(Qt::Horizontal); + buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); + + QVBoxLayout *verticalLayout = new QVBoxLayout(); + verticalLayout->addWidget(pixmapLabel); + verticalLayout->addItem(pixmapSpacer); + + QHBoxLayout *horizontalLayout_2 = new QHBoxLayout(); + horizontalLayout_2->addLayout(verticalLayout); + horizontalLayout_2->addWidget(messageLabel); + + QHBoxLayout *horizontalLayout = new QHBoxLayout(); + horizontalLayout->addWidget(checkBox); + horizontalLayout->addItem(checkBoxRightSpacer); + + QVBoxLayout *verticalLayout_2 = new QVBoxLayout(q); + verticalLayout_2->addLayout(horizontalLayout_2); + verticalLayout_2->addLayout(horizontalLayout); + verticalLayout_2->addItem(buttonSpacer); + verticalLayout_2->addWidget(buttonBox); + } - Ui::CheckableMessageBox ui; + QLabel *pixmapLabel; + QLabel *messageLabel; + QCheckBox *checkBox; + QDialogButtonBox *buttonBox; QAbstractButton *clickedButton; }; CheckableMessageBox::CheckableMessageBox(QWidget *parent) : QDialog(parent), - d(new CheckableMessageBoxPrivate) + d(new CheckableMessageBoxPrivate(this)) { setModal(true); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); - d->ui.setupUi(this); - d->ui.pixmapLabel->setVisible(false); - connect(d->ui.buttonBox, SIGNAL(accepted()), this, SLOT(accept())); - connect(d->ui.buttonBox, SIGNAL(rejected()), this, SLOT(reject())); - connect(d->ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(slotClicked(QAbstractButton*))); + connect(d->buttonBox, SIGNAL(accepted()), SLOT(accept())); + connect(d->buttonBox, SIGNAL(rejected()), SLOT(reject())); + connect(d->buttonBox, SIGNAL(clicked(QAbstractButton*)), + SLOT(slotClicked(QAbstractButton*))); } CheckableMessageBox::~CheckableMessageBox() @@ -86,108 +153,108 @@ QAbstractButton *CheckableMessageBox::clickedButton() const QDialogButtonBox::StandardButton CheckableMessageBox::clickedStandardButton() const { if (d->clickedButton) - return d->ui.buttonBox->standardButton(d->clickedButton); + return d->buttonBox->standardButton(d->clickedButton); return QDialogButtonBox::NoButton; } QString CheckableMessageBox::text() const { - return d->ui.messageLabel->text(); + return d->messageLabel->text(); } void CheckableMessageBox::setText(const QString &t) { - d->ui.messageLabel->setText(t); + d->messageLabel->setText(t); } QPixmap CheckableMessageBox::iconPixmap() const { - if (const QPixmap *p = d->ui.pixmapLabel->pixmap()) + if (const QPixmap *p = d->pixmapLabel->pixmap()) return QPixmap(*p); return QPixmap(); } void CheckableMessageBox::setIconPixmap(const QPixmap &p) { - d->ui.pixmapLabel->setPixmap(p); - d->ui.pixmapLabel->setVisible(!p.isNull()); + d->pixmapLabel->setPixmap(p); + d->pixmapLabel->setVisible(!p.isNull()); } bool CheckableMessageBox::isChecked() const { - return d->ui.checkBox->isChecked(); + return d->checkBox->isChecked(); } void CheckableMessageBox::setChecked(bool s) { - d->ui.checkBox->setChecked(s); + d->checkBox->setChecked(s); } QString CheckableMessageBox::checkBoxText() const { - return d->ui.checkBox->text(); + return d->checkBox->text(); } void CheckableMessageBox::setCheckBoxText(const QString &t) { - d->ui.checkBox->setText(t); + d->checkBox->setText(t); } bool CheckableMessageBox::isCheckBoxVisible() const { - return d->ui.checkBox->isVisible(); + return d->checkBox->isVisible(); } void CheckableMessageBox::setCheckBoxVisible(bool v) { - d->ui.checkBox->setVisible(v); + d->checkBox->setVisible(v); } QDialogButtonBox::StandardButtons CheckableMessageBox::standardButtons() const { - return d->ui.buttonBox->standardButtons(); + return d->buttonBox->standardButtons(); } void CheckableMessageBox::setStandardButtons(QDialogButtonBox::StandardButtons s) { - d->ui.buttonBox->setStandardButtons(s); + d->buttonBox->setStandardButtons(s); } QPushButton *CheckableMessageBox::button(QDialogButtonBox::StandardButton b) const { - return d->ui.buttonBox->button(b); + return d->buttonBox->button(b); } QPushButton *CheckableMessageBox::addButton(const QString &text, QDialogButtonBox::ButtonRole role) { - return d->ui.buttonBox->addButton(text, role); + return d->buttonBox->addButton(text, role); } QDialogButtonBox::StandardButton CheckableMessageBox::defaultButton() const { - foreach (QAbstractButton *b, d->ui.buttonBox->buttons()) + foreach (QAbstractButton *b, d->buttonBox->buttons()) if (QPushButton *pb = qobject_cast<QPushButton *>(b)) if (pb->isDefault()) - return d->ui.buttonBox->standardButton(pb); + return d->buttonBox->standardButton(pb); return QDialogButtonBox::NoButton; } void CheckableMessageBox::setDefaultButton(QDialogButtonBox::StandardButton s) { - if (QPushButton *b = d->ui.buttonBox->button(s)) { + if (QPushButton *b = d->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::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); |