summaryrefslogtreecommitdiff
path: root/examples/applet
authorzecke <zecke>2003-10-07 12:41:05 (UTC)
committer zecke <zecke>2003-10-07 12:41:05 (UTC)
commitbff4ae322275e910125cd8d9bd22feefbbab2477 (patch) (side-by-side diff)
treecc26509dacb72ade7ec573400aa301f9ad6a8828 /examples/applet
parentb8ac6724a0aaed78a1df712d87110fe39b16955f (diff)
downloadopie-bff4ae322275e910125cd8d9bd22feefbbab2477.zip
opie-bff4ae322275e910125cd8d9bd22feefbbab2477.tar.gz
opie-bff4ae322275e910125cd8d9bd22feefbbab2477.tar.bz2
Update the Applet Example
Diffstat (limited to 'examples/applet') (more/less context) (ignore whitespace changes)
-rw-r--r--examples/applet/simpleimpl.cpp17
-rw-r--r--examples/applet/simpleimpl.h5
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