summaryrefslogtreecommitdiff
path: root/examples/applet/simpleimpl.cpp
Side-by-side diff
Diffstat (limited to 'examples/applet/simpleimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--examples/applet/simpleimpl.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/examples/applet/simpleimpl.cpp b/examples/applet/simpleimpl.cpp
index 981e0ab..82fc6e5 100644
--- a/examples/applet/simpleimpl.cpp
+++ b/examples/applet/simpleimpl.cpp
@@ -32,104 +32,117 @@ SimpleApplet::SimpleApplet(QWidget *parent)
* now we need to convert the Image to a Pixmap cause these
* can be drawn more easily
*/
m_pix = new QPixmap();
m_pix->convertFromImage( image );
/*
* Now we will say that we don't want to be bigger than our
* Pixmap
*/
setFixedHeight(AppLnk::smallIconSize() );
setFixedWidth( AppLnk::smallIconSize() );
}
SimpleApplet::~SimpleApplet() {
delete m_pix;
}
/*
* here you would normal show or do something
* useful. If you want to show a widget at the top left
* of your icon you need to map your rect().topLeft() to
* global with mapToGlobal(). Then you might also need to
* move the widgets so it is visible
*/
void SimpleApplet::mousePressEvent(QMouseEvent* ) {
QMessageBox::information(this, tr("No action taken"),
tr("<qt>This Plugin does not yet support anything usefule aye.</qt>"),
QMessageBox::Ok );
}
void SimpleApplet::paintEvent( QPaintEvent* ) {
QPainter p(this);
/* simpy draw the pixmap from the start of this widget */
p.drawPixmap(0, 0, *m_pix );
}
/*
* Here comes the implementation of the interface
*/
SimpleAppletImpl::SimpleAppletImpl() {
}
/* needed cause until it is only pure virtual */
SimpleAppletImpl::~SimpleAppletImpl() {
+ /*
+ * we will delete our applets as well
+ * setAUtoDelete makes the QList free
+ * the objects behind the pointers
+ */
+ m_applets.setAutoDelete( true );
+ m_applets.clear();
}
/*
* For the taskbar interface return a Widget
*/
QWidget* SimpleAppletImpl::applet( QWidget* parent ) {
- /* ownership has the parent */
- return new SimpleApplet( parent );
+ /*
+ * There are problems with ownership. So we add
+ * our ownlist and clear this;
+ */
+ SimpleApplet* ap = new SimpleApplet( parent );
+ m_applets.append( ap );
+
+ return ap;
}
/*
* A small hint where the Applet Should be displayed
*/
int SimpleAppletImpl::position()const {
return 1;
}
/*
* Now the important QUnkownInterface method without
* this one your applet won't load
* @param uuid The uuid of the interface
* @param iface The pointer to the interface ptr
*/
QRESULT SimpleAppletImpl::queryInterface( const QUuid& uuid, QUnknownInterface** iface) {
/* set the pointer to the interface to 0 */
*iface = 0;
/*
* we check if we support the requested interface
* and then assign to the pointer.
* You may alos create another interface here so
* *iface = this is only in this simple case true you
* could also support more interfaces.
* But this example below is the most common use.
* Now the caller knows that the Interface Pointer
* is valid and the interface supported
*/
if ( uuid == IID_QUnknown )
*iface = this;
else if ( uuid == IID_TaskbarApplet )
*iface = this;
else
return QS_FALSE;
if ( *iface )
(*iface)->addRef();
return QS_OK;
}
/*
* Finally we need to export the Interface.
* CREATE_INSTANCE creates a interface and calls
* queryInterface for the QUnknownInterface once