summaryrefslogtreecommitdiff
authorzecke <zecke>2003-10-07 12:41:05 (UTC)
committer zecke <zecke>2003-10-07 12:41:05 (UTC)
commitbff4ae322275e910125cd8d9bd22feefbbab2477 (patch) (unidiff)
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 @@
1(C) 2003 Holger 'zecke' Freyther
2
3Examples are part of the Opie Examples series. The example
4series 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 @@
1Hi newbie, 1Hi newbie,
2this directory contains a set of examples for various 2this directory contains a set of examples for various
3API you may want to use. The examples go from simple 3API you may want to use. The examples go from simple
4to harder and must be understand as an extension 4to harder and must be understand as an extension
5of the examples from Qt in your source package. 5of the examples from Qt in your source package.
6Be sure to look there at first and at their excelent 6Be sure to look there at first and at their excelent
7tutorials as well. 7tutorials as well.
8 8
9Note: that some files are found in apps/Examples to really 9Note: that some files are found in apps/Examples to really
10show how to include apps properly. 10show how to include apps properly.
11 11
12Note: to integrate your apps into the build 12Note: to integrate your apps into the build
13 make clean-configs 13 make clean-configs
14 put your application into a sourcedir 14 put your application into a sourcedir
15 edit $OPIEDIR/packages 15 edit $OPIEDIR/packages
16 make 16 make
17 17
18Naming Conventions:
19 Most of the time we prefix member variables with m_. This allows
20 us to see if a variable in a function is a member
21 or on the stack.
22 Function naming we use setFooBar() but fooBar() to get the
23 value. So please skip the get you're used from Java.
24 Other than that please try to avoid #ifdef and #defines
25 use const but we do not have any coding style convetions.
18 26
19 27
20 simple/ - Simple Widget with quit button 28 simple/ - Simple Widget with quit button
21 simple-icon - Simple Widget with loading resources and playing simple sound 29 simple-icon - Simple Widget with loading resources and playing simple sound
22 simple-main - Simple QMainWindow usage with toolbar and actions 30 simple-main - Simple QMainWindow usage with toolbar and actions
23 main-tab - QMainWindow with central tab widget 31 main-tab - QMainWindow with central tab widget
24 simple-pim - QMainWindow + QListView + PIM 32 simple-pim - QMainWindow + QListView + PIM + QCOP
25 big-pim - Usage of Opie PIM with BigScreen Extension 33 big-pim - Usage of Opie PIM with BigScreen Extension
26 34
27Compile by setting your environment (QTDIR, QMAKESPEC, PATH, OPIEDIR ) 35Compile by setting your environment (QTDIR, QMAKESPEC, PATH, OPIEDIR )
28qmake -o Makefile example.pro \ No newline at end of file 36qmake -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
@@ -32,104 +32,117 @@ SimpleApplet::SimpleApplet(QWidget *parent)
32 * now we need to convert the Image to a Pixmap cause these 32 * now we need to convert the Image to a Pixmap cause these
33 * can be drawn more easily 33 * can be drawn more easily
34 */ 34 */
35 m_pix = new QPixmap(); 35 m_pix = new QPixmap();
36 m_pix->convertFromImage( image ); 36 m_pix->convertFromImage( image );
37 37
38 /* 38 /*
39 * Now we will say that we don't want to be bigger than our 39 * Now we will say that we don't want to be bigger than our
40 * Pixmap 40 * Pixmap
41 */ 41 */
42 setFixedHeight(AppLnk::smallIconSize() ); 42 setFixedHeight(AppLnk::smallIconSize() );
43 setFixedWidth( AppLnk::smallIconSize() ); 43 setFixedWidth( AppLnk::smallIconSize() );
44 44
45} 45}
46 46
47SimpleApplet::~SimpleApplet() { 47SimpleApplet::~SimpleApplet() {
48 delete m_pix; 48 delete m_pix;
49} 49}
50 50
51 51
52/* 52/*
53 * here you would normal show or do something 53 * here you would normal show or do something
54 * useful. If you want to show a widget at the top left 54 * useful. If you want to show a widget at the top left
55 * of your icon you need to map your rect().topLeft() to 55 * of your icon you need to map your rect().topLeft() to
56 * global with mapToGlobal(). Then you might also need to 56 * global with mapToGlobal(). Then you might also need to
57 * move the widgets so it is visible 57 * move the widgets so it is visible
58 */ 58 */
59void SimpleApplet::mousePressEvent(QMouseEvent* ) { 59void SimpleApplet::mousePressEvent(QMouseEvent* ) {
60 QMessageBox::information(this, tr("No action taken"), 60 QMessageBox::information(this, tr("No action taken"),
61 tr("<qt>This Plugin does not yet support anything usefule aye.</qt>"), 61 tr("<qt>This Plugin does not yet support anything usefule aye.</qt>"),
62 QMessageBox::Ok ); 62 QMessageBox::Ok );
63 63
64} 64}
65 65
66void SimpleApplet::paintEvent( QPaintEvent* ) { 66void SimpleApplet::paintEvent( QPaintEvent* ) {
67 QPainter p(this); 67 QPainter p(this);
68 68
69 /* simpy draw the pixmap from the start of this widget */ 69 /* simpy draw the pixmap from the start of this widget */
70 p.drawPixmap(0, 0, *m_pix ); 70 p.drawPixmap(0, 0, *m_pix );
71} 71}
72 72
73/* 73/*
74 * Here comes the implementation of the interface 74 * Here comes the implementation of the interface
75 */ 75 */
76SimpleAppletImpl::SimpleAppletImpl() { 76SimpleAppletImpl::SimpleAppletImpl() {
77} 77}
78/* needed cause until it is only pure virtual */ 78/* needed cause until it is only pure virtual */
79SimpleAppletImpl::~SimpleAppletImpl() { 79SimpleAppletImpl::~SimpleAppletImpl() {
80 /*
81 * we will delete our applets as well
82 * setAUtoDelete makes the QList free
83 * the objects behind the pointers
84 */
85 m_applets.setAutoDelete( true );
86 m_applets.clear();
80} 87}
81 88
82/* 89/*
83 * For the taskbar interface return a Widget 90 * For the taskbar interface return a Widget
84 */ 91 */
85QWidget* SimpleAppletImpl::applet( QWidget* parent ) { 92QWidget* SimpleAppletImpl::applet( QWidget* parent ) {
86 /* ownership has the parent */ 93 /*
87 return new SimpleApplet( parent ); 94 * There are problems with ownership. So we add
95 * our ownlist and clear this;
96 */
97 SimpleApplet* ap = new SimpleApplet( parent );
98 m_applets.append( ap );
99
100 return ap;
88} 101}
89 102
90/* 103/*
91 * A small hint where the Applet Should be displayed 104 * A small hint where the Applet Should be displayed
92 */ 105 */
93int SimpleAppletImpl::position()const { 106int SimpleAppletImpl::position()const {
94 return 1; 107 return 1;
95} 108}
96 109
97 110
98/* 111/*
99 * Now the important QUnkownInterface method without 112 * Now the important QUnkownInterface method without
100 * this one your applet won't load 113 * this one your applet won't load
101 * @param uuid The uuid of the interface 114 * @param uuid The uuid of the interface
102 * @param iface The pointer to the interface ptr 115 * @param iface The pointer to the interface ptr
103 */ 116 */
104QRESULT SimpleAppletImpl::queryInterface( const QUuid& uuid, QUnknownInterface** iface) { 117QRESULT SimpleAppletImpl::queryInterface( const QUuid& uuid, QUnknownInterface** iface) {
105 /* set the pointer to the interface to 0 */ 118 /* set the pointer to the interface to 0 */
106 *iface = 0; 119 *iface = 0;
107 120
108 /* 121 /*
109 * we check if we support the requested interface 122 * we check if we support the requested interface
110 * and then assign to the pointer. 123 * and then assign to the pointer.
111 * You may alos create another interface here so 124 * You may alos create another interface here so
112 * *iface = this is only in this simple case true you 125 * *iface = this is only in this simple case true you
113 * could also support more interfaces. 126 * could also support more interfaces.
114 * But this example below is the most common use. 127 * But this example below is the most common use.
115 * Now the caller knows that the Interface Pointer 128 * Now the caller knows that the Interface Pointer
116 * is valid and the interface supported 129 * is valid and the interface supported
117 */ 130 */
118 if ( uuid == IID_QUnknown ) 131 if ( uuid == IID_QUnknown )
119 *iface = this; 132 *iface = this;
120 else if ( uuid == IID_TaskbarApplet ) 133 else if ( uuid == IID_TaskbarApplet )
121 *iface = this; 134 *iface = this;
122 else 135 else
123 return QS_FALSE; 136 return QS_FALSE;
124 137
125 if ( *iface ) 138 if ( *iface )
126 (*iface)->addRef(); 139 (*iface)->addRef();
127 140
128 return QS_OK; 141 return QS_OK;
129} 142}
130 143
131 144
132/* 145/*
133 * Finally we need to export the Interface. 146 * Finally we need to export the Interface.
134 * CREATE_INSTANCE creates a interface and calls 147 * CREATE_INSTANCE creates a interface and calls
135 * queryInterface for the QUnknownInterface once 148 * queryInterface for the QUnknownInterface once
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
@@ -1,72 +1,77 @@
1/* 1/*
2 * You may use, modify and distribute without any limitation 2 * You may use, modify and distribute without any limitation
3 */ 3 */
4 4
5/** 5/**
6 * Opie and Qtopia uses a component system called QCOM 6 * Opie and Qtopia uses a component system called QCOM
7 * which was first part of the Qt 3.0 API but was made 7 * which was first part of the Qt 3.0 API but was made
8 * prviate during the betas. Opie and Qtopia still use it 8 * prviate during the betas. Opie and Qtopia still use it
9 * and we're happy with it. 9 * and we're happy with it.
10 * Every starts with the QUnknownInterface. It supports functions 10 * Every starts with the QUnknownInterface. It supports functions
11 * for reference counting and the most important one 11 * for reference counting and the most important one
12 * is for a query. Every QCOM interface got a global unique id ( GUID,UUID ) 12 * is for a query. Every QCOM interface got a global unique id ( GUID,UUID )
13 * query is used to see if a interface is supported by 13 * query is used to see if a interface is supported by
14 * a dynamic shared object ( dso / plugin ) 14 * a dynamic shared object ( dso / plugin )
15 * For tasks like loading Applications, InputMethods, Today, MenuButton, 15 * For tasks like loading Applications, InputMethods, Today, MenuButton,
16 * Taskbar, Style, Email Client there are specefic Interfaces you 16 * Taskbar, Style, Email Client there are specefic Interfaces you
17 * need to implement. The interfaces inherits from QUnknownInterface and 17 * need to implement. The interfaces inherits from QUnknownInterface and
18 * you'll need inherit from the interface. 18 * you'll need inherit from the interface.
19 * As example we will use the Taskbar interface 19 * As example we will use the Taskbar interface
20 */ 20 */
21 21
22#ifndef SIMPLE_OPIE_EXAMPLE_APPLET_H 22#ifndef SIMPLE_OPIE_EXAMPLE_APPLET_H
23#define SIMPLE_OPIE_EXAMPLE_APPLET_H 23#define SIMPLE_OPIE_EXAMPLE_APPLET_H
24 24
25/* 25/*
26 * The taskbar applet interfaces wants us to implement position() and applet() 26 * The taskbar applet interfaces wants us to implement position() and applet()
27 * additionally we need to implement add(), release() and queryInterface for QUnknownInterface 27 * additionally we need to implement add(), release() and queryInterface for QUnknownInterface
28 * luckiy there is a macro for the reference counting 28 * luckiy there is a macro for the reference counting
29 * We provide an Implementation of the interface. 29 * We provide an Implementation of the interface.
30 */ 30 */
31#include <qwidget.h> 31#include <qwidget.h>
32#include <qlist.h>
33
32#include <qpe/taskbarappletinterface.h> 34#include <qpe/taskbarappletinterface.h>
33 35
34 36
35/* 37/*
36 * Because we only draw an Icon in a fixed width and height 38 * Because we only draw an Icon in a fixed width and height
37 * we declare and define SimpleApplet here and you could use QLabel 39 * we declare and define SimpleApplet here and you could use QLabel
38 * setPixmap or use QWidget and draw yourself. 40 * setPixmap or use QWidget and draw yourself.
39 * You might also want to reimplement mouse*Event to use some simple actions 41 * You might also want to reimplement mouse*Event to use some simple actions
40 */ 42 */
41class SimpleApplet : public QWidget { 43class SimpleApplet : public QWidget {
42 Q_OBJECT 44 Q_OBJECT
43public: 45public:
44 SimpleApplet(QWidget *parent); 46 SimpleApplet(QWidget *parent);
45 ~SimpleApplet(); 47 ~SimpleApplet();
46private: 48private:
47 void mousePressEvent( QMouseEvent* ); 49 void mousePressEvent( QMouseEvent* );
48 void paintEvent( QPaintEvent* ); 50 void paintEvent( QPaintEvent* );
49 QPixmap *m_pix; 51 QPixmap *m_pix;
50}; 52};
51 53
52class SimpleAppletImpl : public TaskbarAppletInterface { 54class SimpleAppletImpl : public TaskbarAppletInterface {
53public: 55public:
54 56
55 SimpleAppletImpl(); 57 SimpleAppletImpl();
56 virtual ~SimpleAppletImpl(); 58 virtual ~SimpleAppletImpl();
57 59
58 QRESULT queryInterface( const QUuid&, QUnknownInterface** ); 60 QRESULT queryInterface( const QUuid&, QUnknownInterface** );
59 61
60 QWidget *applet( QWidget* parent ); 62 QWidget *applet( QWidget* parent );
61 int position()const; 63 int position()const;
62 64
63 /* 65 /*
64 * macro for reference countint 66 * macro for reference countint
65 * if reference drops to zero 67 * if reference drops to zero
66 * delete this is called 68 * delete this is called
67 */ 69 */
68 Q_REFCOUNT 70 Q_REFCOUNT
71
72private:
73 QList<SimpleApplet> m_applets;
69}; 74};
70 75
71 76
72#endif 77#endif