libkdepim
overlaywidget.cpp00001
00031 #include "overlaywidget.h"
00032 using namespace KPIM;
00033
00034 OverlayWidget::OverlayWidget( QWidget* alignWidget, QWidget* parent, const char* name )
00035 : QHBox( parent, name ), mAlignWidget( 0 )
00036 {
00037 setAlignWidget( alignWidget );
00038 }
00039
00040 OverlayWidget::~OverlayWidget()
00041 {
00042 }
00043
00044 void OverlayWidget::reposition()
00045 {
00046 if ( !mAlignWidget )
00047 return;
00048
00049 QPoint p;
00050
00051 p.setX( mAlignWidget->width() - width() );
00052 p.setY( -height() );
00053
00054 QPoint pTopLevel = mAlignWidget->mapTo( topLevelWidget(), p );
00055
00056 QPoint pParent = parentWidget()->mapFrom( topLevelWidget(), pTopLevel );
00057
00058 move( pParent );
00059 }
00060
00061 void OverlayWidget::setAlignWidget( QWidget * w )
00062 {
00063 if (w == mAlignWidget)
00064 return;
00065
00066 if (mAlignWidget)
00067 mAlignWidget->removeEventFilter(this);
00068
00069 mAlignWidget = w;
00070
00071 if (mAlignWidget)
00072 mAlignWidget->installEventFilter(this);
00073
00074 reposition();
00075 }
00076
00077 bool OverlayWidget::eventFilter( QObject* o, QEvent* e)
00078 {
00079 if ( o == mAlignWidget &&
00080 ( e->type() == QEvent::Move || e->type() == QEvent::Resize ) ) {
00081 reposition();
00082 }
00083 return QFrame::eventFilter(o,e);
00084 }
00085
00086 void OverlayWidget::resizeEvent( QResizeEvent* ev )
00087 {
00088 reposition();
00089 QFrame::resizeEvent( ev );
00090 }
00091
00092 #include "overlaywidget.moc"
|