summaryrefslogtreecommitdiff
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
parentb8ac6724a0aaed78a1df712d87110fe39b16955f (diff)
downloadopie-bff4ae322275e910125cd8d9bd22feefbbab2477.zip
opie-bff4ae322275e910125cd8d9bd22feefbbab2477.tar.gz
opie-bff4ae322275e910125cd8d9bd22feefbbab2477.tar.bz2
Update the Applet Example
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--examples/LICENSE4
-rw-r--r--examples/README10
-rw-r--r--examples/applet/simpleimpl.cpp17
-rw-r--r--examples/applet/simpleimpl.h5
4 files changed, 33 insertions, 3 deletions
diff --git a/examples/LICENSE b/examples/LICENSE
new file mode 100644
index 0000000..bb4d39f
--- a/dev/null
+++ b/examples/LICENSE
@@ -0,0 +1,4 @@
+(C) 2003 Holger 'zecke' Freyther
+
+Examples are part of the Opie Examples series. The example
+series may be used, distributed and modified without limitation.
diff --git a/examples/README b/examples/README
index 3003830..a84e8ee 100644
--- a/examples/README
+++ b/examples/README
@@ -1,28 +1,36 @@
Hi newbie,
this directory contains a set of examples for various
API you may want to use. The examples go from simple
to harder and must be understand as an extension
of the examples from Qt in your source package.
Be sure to look there at first and at their excelent
tutorials as well.
Note: that some files are found in apps/Examples to really
show how to include apps properly.
Note: to integrate your apps into the build
make clean-configs
put your application into a sourcedir
edit $OPIEDIR/packages
make
+Naming Conventions:
+ Most of the time we prefix member variables with m_. This allows
+ us to see if a variable in a function is a member
+ or on the stack.
+ Function naming we use setFooBar() but fooBar() to get the
+ value. So please skip the get you're used from Java.
+ Other than that please try to avoid #ifdef and #defines
+ use const but we do not have any coding style convetions.
simple/ - Simple Widget with quit button
simple-icon - Simple Widget with loading resources and playing simple sound
simple-main - Simple QMainWindow usage with toolbar and actions
main-tab - QMainWindow with central tab widget
-simple-pim - QMainWindow + QListView + PIM
+simple-pim - QMainWindow + QListView + PIM + QCOP
big-pim - Usage of Opie PIM with BigScreen Extension
Compile by setting your environment (QTDIR, QMAKESPEC, PATH, OPIEDIR )
qmake -o Makefile example.pro \ No newline at end of file
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