diff --git a/src/libs/utils/checkablemessagebox.cpp b/src/libs/utils/checkablemessagebox.cpp index 927019e275b2120cd644f69e36f8b8354b704091..f5c2d916eb1a6392930fcaad8ade2afbd16a8dd4 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); diff --git a/src/libs/utils/checkablemessagebox.h b/src/libs/utils/checkablemessagebox.h index 7bc6fd9fca81d1236dd55684dfca97b5a50980cb..11fcba7a2cf0284e1eecd1580c35a6380f98bd04 100644 --- a/src/libs/utils/checkablemessagebox.h +++ b/src/libs/utils/checkablemessagebox.h @@ -41,7 +41,7 @@ namespace Utils { -struct CheckableMessageBoxPrivate; +class CheckableMessageBoxPrivate; class QTCREATOR_UTILS_EXPORT CheckableMessageBox : public QDialog { @@ -52,6 +52,7 @@ class QTCREATOR_UTILS_EXPORT CheckableMessageBox : public QDialog Q_PROPERTY(QString checkBoxText READ checkBoxText WRITE setCheckBoxText) Q_PROPERTY(QDialogButtonBox::StandardButtons buttons READ standardButtons WRITE setStandardButtons) Q_PROPERTY(QDialogButtonBox::StandardButton defaultButton READ defaultButton WRITE setDefaultButton) + public: explicit CheckableMessageBox(QWidget *parent); virtual ~CheckableMessageBox(); @@ -77,30 +78,30 @@ public: bool isCheckBoxVisible() const; void setCheckBoxVisible(bool); - QDialogButtonBox::StandardButtons standardButtons() const; - void setStandardButtons(QDialogButtonBox::StandardButtons s); - QPushButton *button(QDialogButtonBox::StandardButton b) const; - QPushButton *addButton(const QString &text, QDialogButtonBox::ButtonRole role); + QDialogButtonBox::StandardButtons standardButtons() const; + void setStandardButtons(QDialogButtonBox::StandardButtons s); + QPushButton *button(QDialogButtonBox::StandardButton b) const; + QPushButton *addButton(const QString &text, QDialogButtonBox::ButtonRole role); - QDialogButtonBox::StandardButton defaultButton() const; - void setDefaultButton(QDialogButtonBox::StandardButton s); + QDialogButtonBox::StandardButton defaultButton() const; + void setDefaultButton(QDialogButtonBox::StandardButton s); - // see static QMessageBox::standardPixmap() + // See static QMessageBox::standardPixmap() QPixmap iconPixmap() const; void setIconPixmap (const QPixmap &p); - // Query the result - QAbstractButton *clickedButton() const; - QDialogButtonBox::StandardButton clickedStandardButton() const; + // Query the result + QAbstractButton *clickedButton() const; + QDialogButtonBox::StandardButton clickedStandardButton() const; - // Conversion convenience - static QMessageBox::StandardButton dialogButtonBoxToMessageBoxButton(QDialogButtonBox::StandardButton); + // Conversion convenience + static QMessageBox::StandardButton dialogButtonBoxToMessageBoxButton(QDialogButtonBox::StandardButton); private slots: - void slotClicked(QAbstractButton *b); + void slotClicked(QAbstractButton *b); private: - CheckableMessageBoxPrivate *d; + CheckableMessageBoxPrivate *d; }; } // namespace Utils diff --git a/src/libs/utils/checkablemessagebox.ui b/src/libs/utils/checkablemessagebox.ui deleted file mode 100644 index cc60cf7357300d06279cc6afe599ffe8d621eea5..0000000000000000000000000000000000000000 --- a/src/libs/utils/checkablemessagebox.ui +++ /dev/null @@ -1,168 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>Utils::CheckableMessageBox</class> - <widget class="QDialog" name="Utils::CheckableMessageBox"> - <property name="windowTitle"> - <string>Dialog</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="pixmapLabel"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - <item> - <spacer name="pixmapSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::MinimumExpanding</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>0</width> - <height>5</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <widget class="QLabel" name="messageLabel"> - <property name="minimumSize"> - <size> - <width>300</width> - <height>0</height> - </size> - </property> - <property name="text"> - <string notr="true">dummyText</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse</set> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="checkBoxLeftSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QCheckBox" name="checkBox"> - <property name="text"> - <string notr="true">CheckBox</string> - </property> - </widget> - </item> - <item> - <spacer name="checkBoxRightSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <spacer name="buttonSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Minimum</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>0</width> - <height>5</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - <property name="centerButtons"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>Utils::CheckableMessageBox</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>Utils::CheckableMessageBox</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri index 395882b8393aeae520ef50a44550755048d7606d..8fbd9b921a554f3038209e45eb2b14bd85a60a26 100644 --- a/src/libs/utils/utils-lib.pri +++ b/src/libs/utils/utils-lib.pri @@ -204,7 +204,6 @@ HEADERS += \ FORMS += $$PWD/filewizardpage.ui \ $$PWD/projectintropage.ui \ $$PWD/newclasswidget.ui \ - $$PWD/submiteditorwidget.ui \ - $$PWD/checkablemessagebox.ui + $$PWD/submiteditorwidget.ui RESOURCES += $$PWD/utils.qrc