summaryrefslogtreecommitdiff
authorharlekin <harlekin>2004-02-03 22:25:41 (UTC)
committer harlekin <harlekin>2004-02-03 22:25:41 (UTC)
commit8a796b594669c54a34b2e416ff0d931aaa3cc76d (patch) (side-by-side diff)
tree9e8465a881932a2c3da9ca9018bb2fcbc346b163
parentca3580f98de6e68cc595234859691df997b60a98 (diff)
downloadopie-8a796b594669c54a34b2e416ff0d931aaa3cc76d.zip
opie-8a796b594669c54a34b2e416ff0d931aaa3cc76d.tar.gz
opie-8a796b594669c54a34b2e416ff0d931aaa3cc76d.tar.bz2
today example plugin
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--examples/todayplugin/config.in5
-rw-r--r--examples/todayplugin/example.pro19
-rw-r--r--examples/todayplugin/exampleplugin.cpp76
-rw-r--r--examples/todayplugin/exampleplugin.h51
-rw-r--r--examples/todayplugin/examplepluginimpl.cpp48
-rw-r--r--examples/todayplugin/examplepluginimpl.h40
-rw-r--r--examples/todayplugin/examplepluginwidget.cpp71
-rw-r--r--examples/todayplugin/examplepluginwidget.h44
-rw-r--r--examples/todayplugin/opie-today-exampleplugin.control9
9 files changed, 363 insertions, 0 deletions
diff --git a/examples/todayplugin/config.in b/examples/todayplugin/config.in
new file mode 100644
index 0000000..1f1efd9
--- a/dev/null
+++ b/examples/todayplugin/config.in
@@ -0,0 +1,5 @@
+ config TODAY_EXAMPLE
+ boolean "example"
+ default "n"
+ depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE
+ comment "opie today example plugin"
diff --git a/examples/todayplugin/example.pro b/examples/todayplugin/example.pro
new file mode 100644
index 0000000..931e056
--- a/dev/null
+++ b/examples/todayplugin/example.pro
@@ -0,0 +1,19 @@
+TEMPLATE = lib
+CONFIG -= moc
+CONFIG += qt release
+
+# Input
+HEADERS = exampleplugin.h examplepluginimpl.h examplepluginwidget.h
+SOURCES = exampleplugin.cpp examplepluginimpl.cpp examplepluginwidget.cpp
+
+INCLUDEPATH += $(OPIEDIR)/include \
+ ../ ../library
+DEPENDPATH += $(OPIEDIR)/include \
+ ../ ../library
+
+LIBS+= -lqpe -lopie
+
+DESTDIR = $(OPIEDIR)/plugins/today
+TARGET = todayexampleplugin
+
+include ( $(OPIEDIR)/include.pro )
diff --git a/examples/todayplugin/exampleplugin.cpp b/examples/todayplugin/exampleplugin.cpp
new file mode 100644
index 0000000..e5d75df
--- a/dev/null
+++ b/examples/todayplugin/exampleplugin.cpp
@@ -0,0 +1,76 @@
+/*
+ * exampleplugin.cpp
+ *
+ * copyright : (c) 2002,2003,2004 by Maximilian Reiß
+ * email : harlekin@handhelds.org
+ *
+ */
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+
+#include "exampleplugin.h"
+
+ExamplePlugin::ExamplePlugin() {
+ m_widget = 0l;
+}
+
+ExamplePlugin::~ExamplePlugin() {
+ delete (ExamplePluginWidget*)m_widget;
+}
+
+QString ExamplePlugin::pluginName() const {
+ return QObject::tr( "Example plugin" );
+}
+
+double ExamplePlugin::versionNumber() const {
+ return 0.1;
+}
+
+// this sets the image that will be shown on the left side of the plugin
+QString ExamplePlugin::pixmapNameWidget() const {
+ return "Tux";
+}
+
+QWidget* ExamplePlugin::widget( QWidget * wid ) {
+ if(!m_widget) {
+ m_widget = new ExamplePluginWidget( wid, "Example" );
+ }
+ return m_widget;
+}
+
+
+// that would be the icon of the config widget in todays config view
+QString ExamplePlugin::pixmapNameConfig() const {
+ return 0l;
+}
+
+// No config widget yet, look at the datebook plugin for an example of that
+TodayConfigWidget* ExamplePlugin::configWidget( QWidget* ) {
+ return 0l;
+}
+
+// add the binary name of the app to launch here
+QString ExamplePlugin::appName() const {
+ return "";
+}
+
+// if the plugin should be excluded form the refresh cycles that can be set in the today app
+bool ExamplePlugin::excludeFromRefresh() const {
+ return false;
+}
+
+void ExamplePlugin::refresh() {
+ if ( m_widget ) {
+ m_widget->refresh();
+ }
+}
+
+void ExamplePlugin::reinitialize() {
+}
diff --git a/examples/todayplugin/exampleplugin.h b/examples/todayplugin/exampleplugin.h
new file mode 100644
index 0000000..0d9f11d
--- a/dev/null
+++ b/examples/todayplugin/exampleplugin.h
@@ -0,0 +1,51 @@
+/*
+ * exampleplugin.h
+ *
+ * copyright : (c) 2004 by Maximilian Reiß
+ * email : harlekin@handhelds.org
+ *
+ */
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+
+#ifndef EXAMPLE_PLUGIN_H
+#define EXAMPLE_PLUGIN_H
+
+#include <qwidget.h>
+#include <qguardedptr.h>
+
+#include <opie/todayplugininterface.h>
+#include <opie/todayconfigwidget.h>
+
+#include "examplepluginwidget.h"
+
+// implementation of the today plugin interface
+class ExamplePlugin : public TodayPluginObject {
+
+public:
+ ExamplePlugin();
+ ~ExamplePlugin();
+
+ QString pluginName() const;
+ double versionNumber() const;
+ QString pixmapNameWidget() const;
+ QWidget* widget(QWidget *);
+ QString pixmapNameConfig() const;
+ TodayConfigWidget* configWidget(QWidget *);
+ QString appName() const;
+ bool excludeFromRefresh() const;
+ void refresh();
+ void reinitialize();
+
+ private:
+ QGuardedPtr<ExamplePluginWidget> m_widget;
+};
+
+#endif
diff --git a/examples/todayplugin/examplepluginimpl.cpp b/examples/todayplugin/examplepluginimpl.cpp
new file mode 100644
index 0000000..9ab6164
--- a/dev/null
+++ b/examples/todayplugin/examplepluginimpl.cpp
@@ -0,0 +1,48 @@
+/*
+ * examplepluginimpl.cpp
+ *
+ * copyright : (c) 2004 by Maximilian Reiß
+ * email : harlekin@handhelds.org
+ *
+ */
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+
+
+#include "exampleplugin.h"
+#include "examplepluginimpl.h"
+
+ExamplePluginImpl::ExamplePluginImpl() {
+ examplePlugin = new ExamplePlugin();
+}
+
+ExamplePluginImpl::~ExamplePluginImpl() {
+ delete examplePlugin;
+}
+
+
+TodayPluginObject* ExamplePluginImpl::guiPart() {
+ return examplePlugin;
+}
+
+QRESULT ExamplePluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) {
+ *iface = 0;
+ if ( ( uuid == IID_QUnknown ) || ( uuid == IID_TodayPluginInterface ) ) {
+ *iface = this, (*iface)->addRef();
+ }else
+ return QS_FALSE;
+
+ return QS_OK;
+
+}
+
+Q_EXPORT_INTERFACE() {
+ Q_CREATE_INSTANCE( ExamplePluginImpl );
+}
diff --git a/examples/todayplugin/examplepluginimpl.h b/examples/todayplugin/examplepluginimpl.h
new file mode 100644
index 0000000..2c10583
--- a/dev/null
+++ b/examples/todayplugin/examplepluginimpl.h
@@ -0,0 +1,40 @@
+/*
+ * examplepluginimpl.h
+ *
+ * copyright : (c) 2004 by Maximilian Reiß
+ * email : harlekin@handhelds.org
+ *
+ */
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef EXAMPLE_PLUGIN_IMPL_H
+#define EXAMPLE_PLUGIN_IMPL_H
+
+#include <opie/todayplugininterface.h>
+
+class ExamplePlugin;
+
+class ExamplePluginImpl : public TodayPluginInterface{
+
+public:
+ ExamplePluginImpl();
+ virtual ~ExamplePluginImpl();
+
+ QRESULT queryInterface( const QUuid &, QUnknownInterface** );
+ Q_REFCOUNT
+
+ virtual TodayPluginObject *guiPart();
+
+private:
+ ExamplePlugin *examplePlugin;
+ ulong ref;
+};
+
+#endif
diff --git a/examples/todayplugin/examplepluginwidget.cpp b/examples/todayplugin/examplepluginwidget.cpp
new file mode 100644
index 0000000..14f1020
--- a/dev/null
+++ b/examples/todayplugin/examplepluginwidget.cpp
@@ -0,0 +1,71 @@
+/*
+ * examplepluginwidget.cpp
+ *
+ * copyright : (c) 2004 by Maximilian Reiß
+ * email : harlekin@handhelds.org
+ *
+ */
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <qpe/config.h>
+#include <qpe/qcopenvelope_qws.h>
+
+#include "examplepluginwidget.h"
+
+ExamplePluginWidget::ExamplePluginWidget( QWidget *parent, const char* name)
+ : QWidget(parent, name ) {
+
+ m_exampleLabel = 0l;
+ m_layout = 0l;
+
+ if ( m_exampleLabel ) {
+ delete m_exampleLabel;
+ }
+
+ // since here a OClickableLabel is used, the plugin part will be clickable, and the actions
+ // that should be triggered when clicked are defined in slotClicked()
+ // of course also normal widgets can be used.
+ m_exampleLabel = new OClickableLabel( this );
+ connect( m_exampleLabel, SIGNAL( clicked() ), this, SLOT( slotClicked() ) );
+
+ if ( m_layout ) {
+ delete m_layout;
+ }
+ m_layout = new QHBoxLayout( this );
+ m_layout->setAutoAdd( true );
+
+ readConfig();
+ getInfo();
+}
+
+
+ExamplePluginWidget::~ExamplePluginWidget() {
+ delete m_exampleLabel;
+ delete m_layout;
+}
+
+
+void ExamplePluginWidget::readConfig() {
+// we dont have any config entries in this plugin
+// normally this method is used after today config was used
+}
+
+
+void ExamplePluginWidget::refresh() {
+
+}
+
+void ExamplePluginWidget::getInfo() {
+ m_exampleLabel->setText( "Example text" );
+}
+
+void ExamplePluginWidget::slotClicked() {
+ getInfo();
+}
diff --git a/examples/todayplugin/examplepluginwidget.h b/examples/todayplugin/examplepluginwidget.h
new file mode 100644
index 0000000..c94d2cf
--- a/dev/null
+++ b/examples/todayplugin/examplepluginwidget.h
@@ -0,0 +1,44 @@
+/*
+ * examplepluginwidget.h
+ *
+ * copyright : (c) 2004 by Maximilian Reiß
+ * email : harlekin@handhelds.org
+ *
+ */
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef EXAMPLE_PLUGIN_WIDGET_H
+#define EXAMPLE_PLUGIN_WIDGET_H
+
+#include <qlayout.h>
+
+#include <opie/oclickablelabel.h>
+
+class ExamplePluginWidget : public QWidget {
+
+ Q_OBJECT
+
+public:
+ ExamplePluginWidget( QWidget *parent, const char *name );
+ ~ExamplePluginWidget();
+
+ void refresh();
+
+private slots:
+ void slotClicked();
+
+private:
+ OClickableLabel* m_exampleLabel;
+ QHBoxLayout* m_layout;
+ void readConfig();
+ void getInfo();
+};
+
+#endif
diff --git a/examples/todayplugin/opie-today-exampleplugin.control b/examples/todayplugin/opie-today-exampleplugin.control
new file mode 100644
index 0000000..b4e591f
--- a/dev/null
+++ b/examples/todayplugin/opie-today-exampleplugin.control
@@ -0,0 +1,9 @@
+Package: opie-today-exampleplugin
+Files: plugins/today/libtodayexampleplugin.so*
+Priority: optional
+Section: opie/applications
+Maintainer: Maximilian Reiss <harlekin@handhelds.org>
+Architecture: arm
+Version: $QPE_VERSION-$SUB_VERSION
+Depends: libqte2, opie-today
+Description: an example plugin for today