libkdepim Library API Documentation

overlaywidget.cpp

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 // p is in the alignWidget's coordinates 00049 QPoint p; 00050 // We are always above the alignWidget, right-aligned with it. 00051 p.setX( mAlignWidget->width() - width() ); 00052 p.setY( -height() ); 00053 // Position in the toplevelwidget's coordinates 00054 QPoint pTopLevel = mAlignWidget->mapTo( topLevelWidget(), p ); 00055 // Position in the widget's parentWidget coordinates 00056 QPoint pParent = parentWidget()->mapFrom( topLevelWidget(), pTopLevel ); 00057 // Move 'this' to that position. 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"
KDE Logo
This file is part of the documentation for libkdepim Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Oct 1 15:18:55 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003