mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-24 02:42:48 +00:00
kdeui: place the close button of KMessageWidget conditionally again
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
324518962f
commit
71e27caf2e
1 changed files with 38 additions and 25 deletions
|
@ -76,11 +76,13 @@ void KMessageLabel::paintEvent(QPaintEvent *event)
|
||||||
class KMessageWidgetPrivate
|
class KMessageWidgetPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
KMessageWidgetPrivate();
|
KMessageWidgetPrivate(KMessageWidget *messagewidget);
|
||||||
~KMessageWidgetPrivate();
|
~KMessageWidgetPrivate();
|
||||||
|
|
||||||
void updateColors();
|
void updateColors();
|
||||||
|
void updateLayout();
|
||||||
|
|
||||||
|
KMessageWidget* messagewidget;
|
||||||
QVBoxLayout* mainlayout;
|
QVBoxLayout* mainlayout;
|
||||||
QHBoxLayout* messagelayout;
|
QHBoxLayout* messagelayout;
|
||||||
KPixmapWidget* iconwidget;
|
KPixmapWidget* iconwidget;
|
||||||
|
@ -92,8 +94,9 @@ public:
|
||||||
QList<QToolButton*> buttons;
|
QList<QToolButton*> buttons;
|
||||||
};
|
};
|
||||||
|
|
||||||
KMessageWidgetPrivate::KMessageWidgetPrivate()
|
KMessageWidgetPrivate::KMessageWidgetPrivate(KMessageWidget *_messagewidget)
|
||||||
: mainlayout(nullptr),
|
: messagewidget(_messagewidget),
|
||||||
|
mainlayout(nullptr),
|
||||||
messagelayout(nullptr),
|
messagelayout(nullptr),
|
||||||
iconwidget(nullptr),
|
iconwidget(nullptr),
|
||||||
textlabel(nullptr),
|
textlabel(nullptr),
|
||||||
|
@ -108,6 +111,9 @@ KMessageWidgetPrivate::~KMessageWidgetPrivate()
|
||||||
qDeleteAll(buttons);
|
qDeleteAll(buttons);
|
||||||
buttons.clear();
|
buttons.clear();
|
||||||
delete buttonslayout;
|
delete buttonslayout;
|
||||||
|
delete iconwidget;
|
||||||
|
delete textlabel;
|
||||||
|
delete closebutton;
|
||||||
delete messagelayout;
|
delete messagelayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,12 +139,37 @@ void KMessageWidgetPrivate::updateColors()
|
||||||
textlabel->border = KColorScheme::shade(textlabel->bg, KColorScheme::DarkShade);
|
textlabel->border = KColorScheme::shade(textlabel->bg, KColorScheme::DarkShade);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KMessageWidgetPrivate::updateLayout()
|
||||||
|
{
|
||||||
|
qDeleteAll(buttons);
|
||||||
|
buttons.clear();
|
||||||
|
delete buttonslayout;
|
||||||
|
buttonslayout = new QHBoxLayout();
|
||||||
|
mainlayout->addLayout(buttonslayout);
|
||||||
|
buttonslayout->addStretch();
|
||||||
|
foreach (QAction* action, messagewidget->actions()) {
|
||||||
|
QToolButton* button = new QToolButton(messagewidget);
|
||||||
|
button->setDefaultAction(action);
|
||||||
|
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
|
buttons.append(button);
|
||||||
|
buttonslayout->addWidget(button, 1, Qt::AlignCenter);
|
||||||
|
}
|
||||||
|
if (!textlabel->wordWrap()) {
|
||||||
|
messagelayout->removeWidget(closebutton);
|
||||||
|
buttonslayout->addWidget(closebutton, 1, Qt::AlignCenter);
|
||||||
|
} else {
|
||||||
|
buttonslayout->removeWidget(closebutton);
|
||||||
|
messagelayout->addWidget(closebutton);
|
||||||
|
}
|
||||||
|
buttonslayout->addStretch();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
// KMessageWidget
|
// KMessageWidget
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
KMessageWidget::KMessageWidget(QWidget *parent)
|
KMessageWidget::KMessageWidget(QWidget *parent)
|
||||||
: QWidget(parent),
|
: QWidget(parent),
|
||||||
d(new KMessageWidgetPrivate())
|
d(new KMessageWidgetPrivate(this))
|
||||||
{
|
{
|
||||||
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
|
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
|
||||||
|
|
||||||
|
@ -161,9 +192,6 @@ KMessageWidget::KMessageWidget(QWidget *parent)
|
||||||
d->messagelayout->addWidget(d->textlabel);
|
d->messagelayout->addWidget(d->textlabel);
|
||||||
d->mainlayout->addLayout(d->messagelayout);
|
d->mainlayout->addLayout(d->messagelayout);
|
||||||
|
|
||||||
d->buttonslayout = new QHBoxLayout();
|
|
||||||
d->mainlayout->addLayout(d->buttonslayout);
|
|
||||||
|
|
||||||
// NOTE: the standard close action tooltip refers to document, this is not one
|
// NOTE: the standard close action tooltip refers to document, this is not one
|
||||||
d->closebutton = new QToolButton(this);
|
d->closebutton = new QToolButton(this);
|
||||||
d->closebutton->setText(i18n("&Close"));
|
d->closebutton->setText(i18n("&Close"));
|
||||||
|
@ -171,11 +199,9 @@ KMessageWidget::KMessageWidget(QWidget *parent)
|
||||||
d->closebutton->setToolTip(i18n("Close message"));
|
d->closebutton->setToolTip(i18n("Close message"));
|
||||||
d->closebutton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
d->closebutton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
connect(d->closebutton, SIGNAL(clicked()), this, SLOT(hide()));
|
connect(d->closebutton, SIGNAL(clicked()), this, SLOT(hide()));
|
||||||
d->buttonslayout->addStretch();
|
|
||||||
d->buttonslayout->addWidget(d->closebutton, 1, Qt::AlignCenter);
|
|
||||||
d->buttonslayout->addStretch();
|
|
||||||
|
|
||||||
d->updateColors();
|
d->updateColors();
|
||||||
|
d->updateLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
KMessageWidget::~KMessageWidget()
|
KMessageWidget::~KMessageWidget()
|
||||||
|
@ -213,6 +239,7 @@ bool KMessageWidget::wordWrap() const
|
||||||
void KMessageWidget::setWordWrap(bool wordWrap)
|
void KMessageWidget::setWordWrap(bool wordWrap)
|
||||||
{
|
{
|
||||||
d->textlabel->setWordWrap(wordWrap);
|
d->textlabel->setWordWrap(wordWrap);
|
||||||
|
d->updateLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool KMessageWidget::isCloseButtonVisible() const
|
bool KMessageWidget::isCloseButtonVisible() const
|
||||||
|
@ -254,21 +281,7 @@ bool KMessageWidget::event(QEvent *event)
|
||||||
case QEvent::ActionChanged:
|
case QEvent::ActionChanged:
|
||||||
case QEvent::ActionAdded:
|
case QEvent::ActionAdded:
|
||||||
case QEvent::ActionRemoved: {
|
case QEvent::ActionRemoved: {
|
||||||
qDeleteAll(d->buttons);
|
d->updateLayout();
|
||||||
d->buttons.clear();
|
|
||||||
delete d->buttonslayout;
|
|
||||||
d->buttonslayout = new QHBoxLayout();
|
|
||||||
d->mainlayout->addLayout(d->buttonslayout);
|
|
||||||
d->buttonslayout->addStretch();
|
|
||||||
foreach (QAction* action, actions()) {
|
|
||||||
QToolButton* button = new QToolButton(this);
|
|
||||||
button->setDefaultAction(action);
|
|
||||||
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
|
||||||
d->buttons.append(button);
|
|
||||||
d->buttonslayout->addWidget(button, 1, Qt::AlignCenter);
|
|
||||||
}
|
|
||||||
d->buttonslayout->addWidget(d->closebutton, 1, Qt::AlignCenter);
|
|
||||||
d->buttonslayout->addStretch();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue