author | zecke <zecke> | 2003-10-07 12:41:05 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-10-07 12:41:05 (UTC) |
commit | bff4ae322275e910125cd8d9bd22feefbbab2477 (patch) (unidiff) | |
tree | cc26509dacb72ade7ec573400aa301f9ad6a8828 | |
parent | b8ac6724a0aaed78a1df712d87110fe39b16955f (diff) | |
download | opie-bff4ae322275e910125cd8d9bd22feefbbab2477.zip opie-bff4ae322275e910125cd8d9bd22feefbbab2477.tar.gz opie-bff4ae322275e910125cd8d9bd22feefbbab2477.tar.bz2 |
Update the Applet Example
-rw-r--r-- | examples/LICENSE | 4 | ||||
-rw-r--r-- | examples/README | 10 | ||||
-rw-r--r-- | examples/applet/simpleimpl.cpp | 17 | ||||
-rw-r--r-- | examples/applet/simpleimpl.h | 5 |
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 | |||
3 | Examples are part of the Opie Examples series. The example | ||
4 | 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 @@ | |||
1 | Hi newbie, | 1 | Hi newbie, |
2 | this directory contains a set of examples for various | 2 | this directory contains a set of examples for various |
3 | API you may want to use. The examples go from simple | 3 | API you may want to use. The examples go from simple |
4 | to harder and must be understand as an extension | 4 | to harder and must be understand as an extension |
5 | of the examples from Qt in your source package. | 5 | of the examples from Qt in your source package. |
6 | Be sure to look there at first and at their excelent | 6 | Be sure to look there at first and at their excelent |
7 | tutorials as well. | 7 | tutorials as well. |
8 | 8 | ||
9 | Note: that some files are found in apps/Examples to really | 9 | Note: that some files are found in apps/Examples to really |
10 | show how to include apps properly. | 10 | show how to include apps properly. |
11 | 11 | ||
12 | Note: to integrate your apps into the build | 12 | Note: 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 | ||
18 | Naming 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 | ||
27 | Compile by setting your environment (QTDIR, QMAKESPEC, PATH, OPIEDIR ) | 35 | Compile by setting your environment (QTDIR, QMAKESPEC, PATH, OPIEDIR ) |
28 | qmake -o Makefile example.pro \ No newline at end of file | 36 | 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 | |||
@@ -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 | ||
47 | SimpleApplet::~SimpleApplet() { | 47 | SimpleApplet::~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 | */ |
59 | void SimpleApplet::mousePressEvent(QMouseEvent* ) { | 59 | void 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 | ||
66 | void SimpleApplet::paintEvent( QPaintEvent* ) { | 66 | void 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 | */ |
76 | SimpleAppletImpl::SimpleAppletImpl() { | 76 | SimpleAppletImpl::SimpleAppletImpl() { |
77 | } | 77 | } |
78 | /* needed cause until it is only pure virtual */ | 78 | /* needed cause until it is only pure virtual */ |
79 | SimpleAppletImpl::~SimpleAppletImpl() { | 79 | SimpleAppletImpl::~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 | */ |
85 | QWidget* SimpleAppletImpl::applet( QWidget* parent ) { | 92 | QWidget* 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 | */ |
93 | int SimpleAppletImpl::position()const { | 106 | int 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 | */ |
104 | QRESULT SimpleAppletImpl::queryInterface( const QUuid& uuid, QUnknownInterface** iface) { | 117 | QRESULT 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 | */ |
41 | class SimpleApplet : public QWidget { | 43 | class SimpleApplet : public QWidget { |
42 | Q_OBJECT | 44 | Q_OBJECT |
43 | public: | 45 | public: |
44 | SimpleApplet(QWidget *parent); | 46 | SimpleApplet(QWidget *parent); |
45 | ~SimpleApplet(); | 47 | ~SimpleApplet(); |
46 | private: | 48 | private: |
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 | ||
52 | class SimpleAppletImpl : public TaskbarAppletInterface { | 54 | class SimpleAppletImpl : public TaskbarAppletInterface { |
53 | public: | 55 | public: |
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 | |||
72 | private: | ||
73 | QList<SimpleApplet> m_applets; | ||
69 | }; | 74 | }; |
70 | 75 | ||
71 | 76 | ||
72 | #endif | 77 | #endif |