author | zecke <zecke> | 2003-10-07 12:41:05 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-10-07 12:41:05 (UTC) |
commit | bff4ae322275e910125cd8d9bd22feefbbab2477 (patch) (side-by-side diff) | |
tree | cc26509dacb72ade7ec573400aa301f9ad6a8828 /examples/applet | |
parent | b8ac6724a0aaed78a1df712d87110fe39b16955f (diff) | |
download | opie-bff4ae322275e910125cd8d9bd22feefbbab2477.zip opie-bff4ae322275e910125cd8d9bd22feefbbab2477.tar.gz opie-bff4ae322275e910125cd8d9bd22feefbbab2477.tar.bz2 |
Update the Applet Example
-rw-r--r-- | examples/applet/simpleimpl.cpp | 17 | ||||
-rw-r--r-- | examples/applet/simpleimpl.h | 5 |
2 files changed, 20 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 @@ -56,56 +56,69 @@ SimpleApplet::~SimpleApplet() { * 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 diff --git a/examples/applet/simpleimpl.h b/examples/applet/simpleimpl.h index 8459c96..f58e2af 100644 --- a/examples/applet/simpleimpl.h +++ b/examples/applet/simpleimpl.h @@ -8,65 +8,70 @@ * prviate during the betas. Opie and Qtopia still use it * and we're happy with it. * Every starts with the QUnknownInterface. It supports functions * for reference counting and the most important one * is for a query. Every QCOM interface got a global unique id ( GUID,UUID ) * query is used to see if a interface is supported by * a dynamic shared object ( dso / plugin ) * For tasks like loading Applications, InputMethods, Today, MenuButton, * Taskbar, Style, Email Client there are specefic Interfaces you * need to implement. The interfaces inherits from QUnknownInterface and * you'll need inherit from the interface. * As example we will use the Taskbar interface */ #ifndef SIMPLE_OPIE_EXAMPLE_APPLET_H #define SIMPLE_OPIE_EXAMPLE_APPLET_H /* * The taskbar applet interfaces wants us to implement position() and applet() * additionally we need to implement add(), release() and queryInterface for QUnknownInterface * luckiy there is a macro for the reference counting * We provide an Implementation of the interface. */ #include <qwidget.h> +#include <qlist.h> + #include <qpe/taskbarappletinterface.h> /* * Because we only draw an Icon in a fixed width and height * we declare and define SimpleApplet here and you could use QLabel * setPixmap or use QWidget and draw yourself. * You might also want to reimplement mouse*Event to use some simple actions */ class SimpleApplet : public QWidget { Q_OBJECT public: SimpleApplet(QWidget *parent); ~SimpleApplet(); private: void mousePressEvent( QMouseEvent* ); void paintEvent( QPaintEvent* ); QPixmap *m_pix; }; class SimpleAppletImpl : public TaskbarAppletInterface { public: SimpleAppletImpl(); virtual ~SimpleAppletImpl(); QRESULT queryInterface( const QUuid&, QUnknownInterface** ); QWidget *applet( QWidget* parent ); int position()const; /* * macro for reference countint * if reference drops to zero * delete this is called */ Q_REFCOUNT + +private: + QList<SimpleApplet> m_applets; }; #endif |