00001
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"