Diffstat (limited to 'examples/applet/simpleimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | examples/applet/simpleimpl.cpp | 17 |
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 |