From 760a771fce3758fe34b1f3ce8a22f283bb24b326 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Fri, 7 Feb 2014 14:04:37 +0100 Subject: Consolidate StandardButton, ButtonRole and related static functions Moving them into QPlatformDialogHelper for the convenience of both widgets and QtQuick.Dialogs. The main reason is to ensure that QtQuick.Dialogs does not need to depend on the widgets module, in order to re-implement the button box concept in a generic dialog. Change-Id: If400d215338d7cb6dade39d9de60e50b5e7515ef Reviewed-by: Friedemann Kleint --- src/widgets/widgets/qdialogbuttonbox.cpp | 122 +++++++------------------------ 1 file changed, 27 insertions(+), 95 deletions(-) (limited to 'src/widgets/widgets/qdialogbuttonbox.cpp') diff --git a/src/widgets/widgets/qdialogbuttonbox.cpp b/src/widgets/widgets/qdialogbuttonbox.cpp index d28fb66551..e24247b02f 100644 --- a/src/widgets/widgets/qdialogbuttonbox.cpp +++ b/src/widgets/widgets/qdialogbuttonbox.cpp @@ -150,77 +150,6 @@ QT_BEGIN_NAMESPACE \sa QMessageBox, QPushButton, QDialog */ -enum { - AcceptRole = QDialogButtonBox::AcceptRole, - RejectRole = QDialogButtonBox::RejectRole, - DestructiveRole = QDialogButtonBox::DestructiveRole, - ActionRole = QDialogButtonBox::ActionRole, - HelpRole = QDialogButtonBox::HelpRole, - YesRole = QDialogButtonBox::YesRole, - NoRole = QDialogButtonBox::NoRole, - ApplyRole = QDialogButtonBox::ApplyRole, - ResetRole = QDialogButtonBox::ResetRole, - - AlternateRole = 0x10000000, - Stretch = 0x20000000, - EOL = 0x40000000, - Reverse = 0x80000000 -}; - -static QDialogButtonBox::ButtonRole roleFor(QDialogButtonBox::StandardButton button) -{ - return static_cast(QMessageDialogOptions::buttonRole( - static_cast(button))); -} - -static const uint layouts[2][5][14] = -{ - // Qt::Horizontal - { - // WinLayout - { ResetRole, Stretch, YesRole, AcceptRole, AlternateRole, DestructiveRole, NoRole, ActionRole, RejectRole, ApplyRole, - HelpRole, EOL, EOL, EOL }, - - // MacLayout - { HelpRole, ResetRole, ApplyRole, ActionRole, Stretch, DestructiveRole | Reverse, - AlternateRole | Reverse, RejectRole | Reverse, AcceptRole | Reverse, NoRole | Reverse, YesRole | Reverse, EOL, EOL }, - - // KdeLayout - { HelpRole, ResetRole, Stretch, YesRole, NoRole, ActionRole, AcceptRole, AlternateRole, - ApplyRole, DestructiveRole, RejectRole, EOL }, - - // GnomeLayout - { HelpRole, ResetRole, Stretch, ActionRole, ApplyRole | Reverse, DestructiveRole | Reverse, - AlternateRole | Reverse, RejectRole | Reverse, AcceptRole | Reverse, NoRole | Reverse, YesRole | Reverse, EOL }, - - // Mac modeless - { ResetRole, ApplyRole, ActionRole, Stretch, HelpRole, EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL } - }, - - // Qt::Vertical - { - // WinLayout - { ActionRole, YesRole, AcceptRole, AlternateRole, DestructiveRole, NoRole, RejectRole, ApplyRole, ResetRole, - HelpRole, Stretch, EOL, EOL, EOL }, - - // MacLayout - { YesRole, NoRole, AcceptRole, RejectRole, AlternateRole, DestructiveRole, Stretch, ActionRole, ApplyRole, - ResetRole, HelpRole, EOL, EOL }, - - // KdeLayout - { AcceptRole, AlternateRole, ApplyRole, ActionRole, YesRole, NoRole, Stretch, ResetRole, - DestructiveRole, RejectRole, HelpRole, EOL }, - - // GnomeLayout - { YesRole, NoRole, AcceptRole, RejectRole, AlternateRole, DestructiveRole, ApplyRole, ActionRole, Stretch, - ResetRole, HelpRole, EOL, EOL, EOL }, - - // Mac modeless - { ActionRole, ApplyRole, ResetRole, Stretch, HelpRole, EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL } - } -}; - - class QDialogButtonBoxPrivate : public QWidgetPrivate { Q_DECLARE_PUBLIC(QDialogButtonBox) @@ -323,7 +252,8 @@ void QDialogButtonBoxPrivate::layoutButtons() int tmpPolicy = layoutPolicy; static const int M = 5; - static const int ModalRoles[M] = { AcceptRole, RejectRole, DestructiveRole, YesRole, NoRole }; + static const int ModalRoles[M] = { QPlatformDialogHelper::AcceptRole, QPlatformDialogHelper::RejectRole, + QPlatformDialogHelper::DestructiveRole, QPlatformDialogHelper::YesRole, QPlatformDialogHelper::NoRole }; if (tmpPolicy == QDialogButtonBox::MacLayout) { bool hasModalButton = false; for (int i = 0; i < M; ++i) { @@ -336,23 +266,24 @@ void QDialogButtonBoxPrivate::layoutButtons() tmpPolicy = 4; // Mac modeless } - const uint *currentLayout = layouts[orientation == Qt::Vertical][tmpPolicy]; + const quint32 *currentLayout = QPlatformDialogHelper::buttonLayout( + orientation, static_cast(tmpPolicy)); if (center) buttonLayout->addStretch(); - QList acceptRoleList = buttonLists[AcceptRole]; + QList acceptRoleList = buttonLists[QPlatformDialogHelper::AcceptRole]; - while (*currentLayout != EOL) { - int role = (*currentLayout & ~Reverse); - bool reverse = (*currentLayout & Reverse); + while (*currentLayout != QPlatformDialogHelper::EOL) { + int role = (*currentLayout & ~QPlatformDialogHelper::Reverse); + bool reverse = (*currentLayout & QPlatformDialogHelper::Reverse); switch (role) { - case Stretch: + case QPlatformDialogHelper::Stretch: if (!center) buttonLayout->addStretch(); break; - case AcceptRole: { + case QPlatformDialogHelper::AcceptRole: { if (acceptRoleList.isEmpty()) break; // Only the first one @@ -361,7 +292,7 @@ void QDialogButtonBoxPrivate::layoutButtons() button->show(); } break; - case AlternateRole: + case QPlatformDialogHelper::AlternateRole: { if (acceptRoleList.size() < 2) break; @@ -370,7 +301,7 @@ void QDialogButtonBoxPrivate::layoutButtons() addButtonsToLayout(list, reverse); } break; - case DestructiveRole: + case QPlatformDialogHelper::DestructiveRole: { const QList &list = buttonLists[role]; @@ -396,13 +327,13 @@ void QDialogButtonBoxPrivate::layoutButtons() buttonLayout->addSpacing(MacGap); } break; - case RejectRole: - case ActionRole: - case HelpRole: - case YesRole: - case NoRole: - case ApplyRole: - case ResetRole: + case QPlatformDialogHelper::RejectRole: + case QPlatformDialogHelper::ActionRole: + case QPlatformDialogHelper::HelpRole: + case QPlatformDialogHelper::YesRole: + case QPlatformDialogHelper::NoRole: + case QPlatformDialogHelper::ApplyRole: + case QPlatformDialogHelper::ResetRole: addButtonsToLayout(buttonLists[role], reverse); } ++currentLayout; @@ -484,8 +415,9 @@ QPushButton *QDialogButtonBoxPrivate::createButton(QDialogButtonBox::StandardBut if (style != QApplication::style()) // Propagate style button->setStyle(style); standardButtonHash.insert(button, sbutton); - if (roleFor(sbutton) != QDialogButtonBox::InvalidRole) { - addButton(button, roleFor(sbutton), doLayout); + QPlatformDialogHelper::ButtonRole role = QPlatformDialogHelper::buttonRole(static_cast(sbutton)); + if (role != QPlatformDialogHelper::InvalidRole) { + addButton(button, static_cast(role), doLayout); } else { qWarning("QDialogButtonBox::createButton: Invalid ButtonRole, button not added"); } @@ -934,15 +866,15 @@ void QDialogButtonBoxPrivate::_q_handleButtonClicked() emit q->clicked(button); switch (q->buttonRole(button)) { - case AcceptRole: - case YesRole: + case QPlatformDialogHelper::AcceptRole: + case QPlatformDialogHelper::YesRole: emit q->accepted(); break; - case RejectRole: - case NoRole: + case QPlatformDialogHelper::RejectRole: + case QPlatformDialogHelper::NoRole: emit q->rejected(); break; - case HelpRole: + case QPlatformDialogHelper::HelpRole: emit q->helpRequested(); break; default: -- cgit v1.2.3