22 #include "waitingoverlay_p.h"
29 #include <QtCore/QEvent>
30 #include <QtGui/QBoxLayout>
31 #include <QtGui/QLabel>
32 #include <QtGui/QPalette>
33 #include <QtGui/QProgressBar>
38 : QWidget( parent ? parent : baseWidget->window() ),
39 mBaseWidget( baseWidget )
41 Q_ASSERT( baseWidget );
42 Q_ASSERT( parentWidget() != baseWidget );
44 connect( baseWidget, SIGNAL(destroyed()), SLOT(deleteLater()) );
45 connect( job, SIGNAL(result(KJob*)), SLOT(deleteLater()) );
46 mPreviousState = mBaseWidget->isEnabled();
48 QBoxLayout *topLayout =
new QVBoxLayout(
this );
49 topLayout->addStretch();
50 mDescription =
new QLabel(
this );
51 mDescription->setText( i18n(
"<p style=\"color: white;\"><b>Waiting for operation</b><br/></p>" ) );
52 mDescription->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter );
53 topLayout->addWidget( mDescription );
54 topLayout->addStretch();
56 QPalette p = palette();
57 p.setColor( backgroundRole(), QColor( 0, 0, 0, 128 ) );
59 setAutoFillBackground(
true );
61 mBaseWidget->installEventFilter(
this );
66 WaitingOverlay::~ WaitingOverlay()
69 mBaseWidget->setEnabled( mPreviousState );
72 void WaitingOverlay::reposition()
79 if ( parentWidget() != mBaseWidget->window() )
80 setParent( mBaseWidget->window() );
84 if ( !mBaseWidget->isVisible() ) {
91 const QPoint topLevelPos = mBaseWidget->mapTo( window(), QPoint( 0, 0 ) );
92 const QPoint parentPos = parentWidget()->mapFrom( window(), topLevelPos );
97 resize( mBaseWidget->size() );
100 bool WaitingOverlay::eventFilter(QObject *
object, QEvent * event)
102 if (
object == mBaseWidget &&
103 ( event->type() == QEvent::Move ||
event->type() == QEvent::Resize ||
104 event->type() == QEvent::Show ||
event->type() == QEvent::Hide ||
105 event->type() == QEvent::ParentChange ) ) {
108 return QWidget::eventFilter(
object, event );