[RFC PATCH] Use QDialogButtonBox in KMessageWidget
Tomaz Canabrava
tcanabrava at kde.org
Wed Jul 2 14:32:45 PDT 2014
On Wed, Jul 2, 2014 at 5:59 PM, Anton Lundin <glance at acc.umu.se> wrote:
> QDialogButtonBox can auto-choose the order of the actions based on the
> current interfaces guidelines, but in this case its a guessing game.
>
> It does a half-decent job off guessing.
> ---
> qt-ui/kmessagewidget.cpp | 21 +++++++++++++--------
> 1 file changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/qt-ui/kmessagewidget.cpp b/qt-ui/kmessagewidget.cpp
> index 2f9ac68..e03d10c 100644
> --- a/qt-ui/kmessagewidget.cpp
> +++ b/qt-ui/kmessagewidget.cpp
> @@ -21,7 +21,7 @@
>
> #include <QEvent>
> #include <QGridLayout>
> -#include <QHBoxLayout>
> +#include <QDialogButtonBox>
> #include <QLabel>
> #include <QPainter>
> #include <QShowEvent>
> @@ -92,27 +92,32 @@ void KMessageWidgetPrivate::createLayout()
> layout->addWidget(iconLabel, 0, 0, 1, 1, Qt::AlignHCenter | Qt::AlignTop);
> layout->addWidget(textLabel, 0, 1);
>
> - QHBoxLayout *buttonLayout = new QHBoxLayout;
> - buttonLayout->addStretch();
> + QDialogButtonBox *buttonLayout = new QDialogButtonBox();
> + //buttonLayout->addStretch();
> Q_FOREACH (QToolButton *button, buttons) {
> // For some reason, calling show() is necessary if wordwrap is true,
> // otherwise the buttons do not show up. It is not needed if
> // wordwrap is false.
> button->show();
> - buttonLayout->addWidget(button);
> + buttonLayout->addButton(button, QDialogButtonBox::QDialogButtonBox::AcceptRole);
> }
> - buttonLayout->addWidget(closeButton);
> - layout->addItem(buttonLayout, 1, 0, 1, 2);
> + buttonLayout->addButton(closeButton, QDialogButtonBox::RejectRole);
> + layout->addWidget(buttonLayout, 1, 0, 1, 2, Qt::AlignHCenter | Qt::AlignTop);
> } else {
> + bool closeButtonVisible = closeButton->isVisible();
> QHBoxLayout *layout = new QHBoxLayout(content);
> layout->addWidget(iconLabel);
> layout->addWidget(textLabel);
>
> + QDialogButtonBox *buttonLayout = new QDialogButtonBox();
> Q_FOREACH (QToolButton *button, buttons) {
> - layout->addWidget(button);
> + buttonLayout->addButton(button, QDialogButtonBox::QDialogButtonBox::AcceptRole);
> }
>
> - layout->addWidget(closeButton);
> + buttonLayout->addButton(closeButton, QDialogButtonBox::RejectRole);
> + // Something gets changed when added to the buttonLayout
> + closeButton->setVisible(closeButtonVisible);
> + layout->addWidget(buttonLayout);
> };
>
> if (q->isVisible()) {
> --
> 1.9.1
>
> _______________________________________________
> subsurface mailing list
> subsurface at hohndel.org
> http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface
Ack
And this probably should be upstreamed to KDE. :)
More information about the subsurface
mailing list