summaryrefslogtreecommitdiff
path: root/examples/applet
Side-by-side diff
Diffstat (limited to 'examples/applet') (more/less context) (show whitespace changes)
-rw-r--r--examples/applet/config.in2
-rw-r--r--examples/applet/example.pro2
-rw-r--r--examples/applet/simpleimpl.cpp96
-rw-r--r--examples/applet/simpleimpl.h23
4 files changed, 16 insertions, 107 deletions
diff --git a/examples/applet/config.in b/examples/applet/config.in
index 177de27..c3fb6dd 100644
--- a/examples/applet/config.in
+++ b/examples/applet/config.in
@@ -1,4 +1,4 @@
config APPLET_EXAMPLE
boolean "Taskbar Applet Example"
default "y"
- depends ( LIBQPE || LIBQPE-X11 ) && EXAMPLES
+ depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIEUI2 &&EXAMPLES
diff --git a/examples/applet/example.pro b/examples/applet/example.pro
index 3efd31e..5ae540b 100644
--- a/examples/applet/example.pro
+++ b/examples/applet/example.pro
@@ -1,16 +1,16 @@
CONFIG += warn_on qt
TEMPLATE = lib
DESTDIR = $(OPIEDIR)/plugins/applets
TARGET = example
SOURCES = simpleimpl.cpp
HEADERS = simpleimpl.h
INCLUDEPATH += $(OPIEDIR)/include
DEPENDSPATH += $(OPIEDIR)/include
-LIBS += -lqpe
+LIBS += -lqpe -lopieui2
include ( $(OPIEDIR)/include.pro )
diff --git a/examples/applet/simpleimpl.cpp b/examples/applet/simpleimpl.cpp
index 82fc6e5..62d9bf7 100644
--- a/examples/applet/simpleimpl.cpp
+++ b/examples/applet/simpleimpl.cpp
@@ -1,162 +1,90 @@
+
+#include "simpleimpl.h"
+
+#include <opie2/otaskbarapplet.h>
+
+#include <qpe/applnk.h> // for AppLnk
+#include <qpe/resource.h> // for Resource loading
+
#include <qlabel.h>
#include <qpainter.h>
#include <qmessagebox.h>
-#include <qpe/applnk.h> // for AppLnk
-#include <qpe/resource.h> // for Resource loading
-#include "simpleimpl.h"
SimpleApplet::SimpleApplet(QWidget *parent)
: QWidget( parent, "Simple Applet" ) {
/*
* we will load an Image, scale it for the right usage
* remember your applet might be used by different
* resolutions.
* Then we will convert the image back to an Pixmap
* and draw this Pimxap. We need to use Image because its
* the only class that allows scaling.
*/
QImage image = Resource::loadImage("Tux");
/*
* smooth scale to AppLnk smallIconSize for applest
* smallIconSize gets adjusted to the resolution
* so on some displays like SIMpad and a C-750 the smallIconSize
* is greater than on a iPAQ h3870
*/
image = image.smoothScale(AppLnk::smallIconSize(), AppLnk::smallIconSize() );
/*
* now we need to convert the Image to a Pixmap cause these
* can be drawn more easily
*/
m_pix = new QPixmap();
m_pix->convertFromImage( image );
/*
* Now we will say that we don't want to be bigger than our
* Pixmap
*/
setFixedHeight(AppLnk::smallIconSize() );
setFixedWidth( AppLnk::smallIconSize() );
}
SimpleApplet::~SimpleApplet() {
delete m_pix;
}
/*
* here you would normal show or do something
* useful. If you want to show a widget at the top left
* of your icon you need to map your rect().topLeft() to
* 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
+ * We need to add this symbol for the plugin exporter!
*/
-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 ) {
- /*
- * 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 {
+int SimpleApplet::position(){
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
- * *iface = this is only in this simple case true you
- * could also support more interfaces.
- * But this example below is the most common use.
- * Now the caller knows that the Interface Pointer
- * is valid and the interface supported
- */
- if ( uuid == IID_QUnknown )
- *iface = this;
- else if ( uuid == IID_TaskbarApplet )
- *iface = this;
- else
- return QS_FALSE;
-
- if ( *iface )
- (*iface)->addRef();
-
- return QS_OK;
-}
-
/*
- * Finally we need to export the Interface.
- * CREATE_INSTANCE creates a interface and calls
- * queryInterface for the QUnknownInterface once
- * With out this function the applet can't be loaded.
- *
- * NOTE: If your applet does not load it's likely you've an
- * unresolved symbol. Change the .pro TEMPLATE = lib to TEMPLATE= app
- * and recompile. If the linker only complains about a missing
- * main method the problem is more complex. In most cases it'll say
- * you which symbols are missing and you can implement them.
- * The main(int argc, char* argv[] ) does not need to be
- * included in a library so it's ok that the linker complains
+ * Here comes the implementation of the interface
*/
-Q_EXPORT_INTERFACE() {
- Q_CREATE_INSTANCE( SimpleAppletImpl )
-}
-
+EXPORT_OPIE_APPLET_v1( SimpleApplet ) \ No newline at end of file
diff --git a/examples/applet/simpleimpl.h b/examples/applet/simpleimpl.h
index f58e2af..90c632f 100644
--- a/examples/applet/simpleimpl.h
+++ b/examples/applet/simpleimpl.h
@@ -1,77 +1,58 @@
/*
* You may use, modify and distribute without any limitation
*/
/**
* Opie and Qtopia uses a component system called QCOM
* which was first part of the Qt 3.0 API but was made
* 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
+ * the OTaskBarAppletWrapper implements the factory for us
*/
#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();
+ static int position();
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