22#include "waitingoverlay_p.h"
26#include <KLocalizedString>
28#include <QtCore/QEvent>
37 : QWidget( parent ? parent : baseWidget->window() ),
38 mBaseWidget( baseWidget )
40 Q_ASSERT( baseWidget );
41 Q_ASSERT( parentWidget() != baseWidget );
43 connect( baseWidget, SIGNAL(destroyed()), SLOT(deleteLater()) );
44 connect( job, SIGNAL(result(KJob*)), SLOT(deleteLater()) );
45 mPreviousState = mBaseWidget->isEnabled();
47 QBoxLayout *topLayout =
new QVBoxLayout(
this );
48 topLayout->addStretch();
49 QLabel *description =
new QLabel(
this );
50 description->setText( i18n(
"<p style=\"color: white;\"><b>Waiting for operation</b><br/></p>" ) );
51 description->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
52 topLayout->addWidget( description );
53 topLayout->addStretch();
55 QPalette p = palette();
56 p.setColor( backgroundRole(), QColor( 0, 0, 0, 128 ) );
58 setAutoFillBackground(
true );
60 mBaseWidget->installEventFilter(
this );
65WaitingOverlay::~ WaitingOverlay()
68 mBaseWidget->setEnabled( mPreviousState );
72void WaitingOverlay::reposition()
80 if ( parentWidget() != mBaseWidget->window() ) {
81 setParent( mBaseWidget->window() );
86 if ( !mBaseWidget->isVisible() ) {
93 const QPoint topLevelPos = mBaseWidget->mapTo( window(), QPoint( 0, 0 ) );
94 const QPoint parentPos = parentWidget()->mapFrom( window(), topLevelPos );
99 resize( mBaseWidget->size() );
102bool WaitingOverlay::eventFilter(QObject *
object, QEvent * event)
104 if (
object == mBaseWidget &&
105 ( event->type() == QEvent::Move || event->type() == QEvent::Resize ||
106 event->type() == QEvent::Show || event->type() == QEvent::Hide ||
107 event->type() == QEvent::ParentChange ) ) {
110 return QWidget::eventFilter(
object, event );
WaitingOverlay(KJob *job, QWidget *baseWidget, QWidget *parent=0)
Create an overlay widget on baseWidget for job.