summaryrefslogtreecommitdiff
authoreilers <eilers>2003-01-03 13:15:30 (UTC)
committer eilers <eilers>2003-01-03 13:15:30 (UTC)
commit19ee7f3b3e06fcf434dcd6a104e912b12220af3b (patch) (side-by-side diff)
treebf813eecb39d52da95591b561e9bd1c3cc329432
parent54ebecbfd86a9ce6782dc55dad7ae15c73adef21 (diff)
downloadopie-19ee7f3b3e06fcf434dcd6a104e912b12220af3b.zip
opie-19ee7f3b3e06fcf434dcd6a104e912b12220af3b.tar.gz
opie-19ee7f3b3e06fcf434dcd6a104e912b12220af3b.tar.bz2
NEW: This plugin shows the next birthdays and anniversaries for the next
n days !
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/today/plugins/addressbook/addressbook.pro19
-rw-r--r--core/pim/today/plugins/addressbook/addressplugin.cpp63
-rw-r--r--core/pim/today/plugins/addressbook/addressplugin.h44
-rw-r--r--core/pim/today/plugins/addressbook/addresspluginconfig.cpp97
-rw-r--r--core/pim/today/plugins/addressbook/addresspluginconfig.h60
-rw-r--r--core/pim/today/plugins/addressbook/addresspluginimpl.cpp46
-rw-r--r--core/pim/today/plugins/addressbook/addresspluginimpl.h42
-rw-r--r--core/pim/today/plugins/addressbook/addresspluginwidget.cpp149
-rw-r--r--core/pim/today/plugins/addressbook/addresspluginwidget.h57
-rw-r--r--core/pim/today/plugins/addressbook/config.in4
-rw-r--r--core/pim/today/plugins/addressbook/opie-today-addressbookplugin.control8
11 files changed, 589 insertions, 0 deletions
diff --git a/core/pim/today/plugins/addressbook/addressbook.pro b/core/pim/today/plugins/addressbook/addressbook.pro
new file mode 100644
index 0000000..5d971e8
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/addressbook.pro
@@ -0,0 +1,19 @@
+TEMPLATE = lib
+CONFIG -= moc
+CONFIG += qt release
+
+# Input
+HEADERS = addressplugin.h addresspluginimpl.h addresspluginconfig.h \
+ addresspluginwidget.h
+SOURCES = addressplugin.cpp addresspluginimpl.cpp addresspluginconfig.cpp \
+ addresspluginwidget.cpp
+
+INCLUDEPATH += $(OPIEDIR)/include \
+ ../ ../library
+DEPENDPATH += $(OPIEDIR)/include \
+ ../ ../library
+
+LIBS+= -lqpe -lopie
+
+DESTDIR = $(OPIEDIR)/plugins/today
+TARGET = todayaddressbookplugin
diff --git a/core/pim/today/plugins/addressbook/addressplugin.cpp b/core/pim/today/plugins/addressbook/addressplugin.cpp
new file mode 100644
index 0000000..b78a54c
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/addressplugin.cpp
@@ -0,0 +1,63 @@
+/*
+ * addressplugin.cpp
+ *
+ * copyright : (c) 2003 by Stefan Eilers
+ * email : eilers.stefan@epost.de
+ *
+ * This implementation was derived from the todolist plugin implementation
+ *
+ */
+/***************************************************************************
+ * *
+ * 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 "addressplugin.h"
+#include "addresspluginconfig.h"
+#include "addresspluginwidget.h"
+
+
+AddressBookPlugin::AddressBookPlugin() {
+}
+
+AddressBookPlugin::~AddressBookPlugin() {
+}
+
+QString AddressBookPlugin::pluginName() const {
+ return QObject::tr( "AddressBook plugin" );
+}
+
+double AddressBookPlugin::versionNumber() const {
+ return 0.1;
+}
+
+QString AddressBookPlugin::pixmapNameWidget() const {
+ return "AddressBook";
+}
+
+QWidget* AddressBookPlugin::widget( QWidget *wid ) {
+ return new AddressBookPluginWidget( wid, "AddressBook" );
+}
+
+QString AddressBookPlugin::pixmapNameConfig() const {
+ return "AddressBook";
+}
+
+TodayConfigWidget* AddressBookPlugin::configWidget( QWidget* wid ) {
+ return new AddressBookPluginConfig( wid , "AddressBook" );
+}
+
+QString AddressBookPlugin::appName() const {
+ return "addressbook";
+}
+
+
+bool AddressBookPlugin::excludeFromRefresh() const {
+ return true;
+}
diff --git a/core/pim/today/plugins/addressbook/addressplugin.h b/core/pim/today/plugins/addressbook/addressplugin.h
new file mode 100644
index 0000000..5b655f5
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/addressplugin.h
@@ -0,0 +1,44 @@
+/*
+ * addressplugin.h
+ *
+ * copyright : (c) 2003 by Stefan Eilers
+ * email : eilers.stefan@epost.de
+ *
+ * This implementation was derived from the todolist plugin implementation
+ *
+ */
+/***************************************************************************
+ * *
+ * 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 ADDRESSBOOK_PLUGIN_H
+#define ADDRESSBOOK_PLUGIN_H
+
+#include <qstring.h>
+#include <qwidget.h>
+
+#include <opie/oclickablelabel.h>
+#include <opie/todayplugininterface.h>
+
+class AddressBookPlugin : public TodayPluginObject {
+
+public:
+ AddressBookPlugin();
+ ~AddressBookPlugin();
+
+ QString pluginName() const;
+ double versionNumber() const;
+ QString pixmapNameWidget() const;
+ QWidget* widget(QWidget *);
+ QString pixmapNameConfig() const;
+ TodayConfigWidget* configWidget(QWidget *);
+ QString appName() const;
+ bool excludeFromRefresh() const;
+};
+
+#endif
diff --git a/core/pim/today/plugins/addressbook/addresspluginconfig.cpp b/core/pim/today/plugins/addressbook/addresspluginconfig.cpp
new file mode 100644
index 0000000..686d72c
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/addresspluginconfig.cpp
@@ -0,0 +1,97 @@
+/*
+ * addresspluginconfig.cpp
+ *
+ * copyright : (c) 2003 by Stefan Eilers
+ * email : eilers.stefan@epost.de
+ *
+ * This implementation was derived from the todolist plugin implementation
+ *
+ */
+/***************************************************************************
+ * *
+ * 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 "addresspluginconfig.h"
+
+#include <qpe/config.h>
+
+#include <qlayout.h>
+#include <qhbox.h>
+#include <qtoolbutton.h>
+#include <qlabel.h>
+#include <qwhatsthis.h>
+
+
+
+AddressBookPluginConfig::AddressBookPluginConfig( QWidget *parent, const char* name)
+ : TodayConfigWidget(parent, name ) {
+
+ QVBoxLayout * layout = new QVBoxLayout( this );
+ layout->setMargin( 20 );
+
+ QHBox *box1 = new QHBox( this );
+
+ QLabel* TextLabel6 = new QLabel( box1, "TextLabel6" );
+ TextLabel6->setText( tr( "Max Lines " ) );
+
+ SpinBox2 = new QSpinBox( box1, "SpinBox2" );
+ SpinBox2->setMaxValue( 40 );
+ QWhatsThis::add( SpinBox2 , tr( "Set the maximum number of lines that should be shown for each" ) );
+
+ QHBox *box2 = new QHBox( this );
+
+ QLabel* clipLabel = new QLabel( box2, "" );
+ clipLabel->setText( tr( "Clip line after X chars" ) );
+
+ SpinBoxClip = new QSpinBox( box2, "SpinClip" );
+ SpinBoxClip->setMaxValue( 200 );
+ QWhatsThis::add( SpinBoxClip , tr( "After how many chars should be the info about the task be cut off" ) );
+
+ QHBox *box3 = new QHBox( this );
+
+ QLabel* daysLabel = new QLabel( box3, "" );
+ daysLabel->setText( tr( "Days look ahead" ) );
+
+ SpinDaysClip = new QSpinBox( box3, "SpinDays" );
+ SpinDaysClip->setMaxValue( 200 );
+ QWhatsThis::add( SpinDaysClip , tr( "How many days we should search forward" ) );
+
+ layout->addWidget( box1 );
+ layout->addWidget( box2 );
+ layout->addWidget( box3 );
+
+ readConfig();
+}
+
+void AddressBookPluginConfig::readConfig() {
+ Config cfg( "todayaddressplugin" );
+ cfg.setGroup( "config" );
+ m_max_lines_task = cfg.readNumEntry( "maxlinestask", 5 );
+ SpinBox2->setValue( m_max_lines_task );
+ m_maxCharClip = cfg.readNumEntry( "maxcharclip", 38 );
+ SpinBoxClip->setValue( m_maxCharClip );
+ m_daysLookAhead = cfg.readNumEntry( "dayslookahead", 14 );
+ SpinDaysClip->setValue( m_daysLookAhead );
+}
+
+
+void AddressBookPluginConfig::writeConfig() {
+ Config cfg( "todayaddressplugin" );
+ cfg.setGroup( "config" );
+ m_max_lines_task = SpinBox2->value();
+ cfg.writeEntry( "maxlinestask", m_max_lines_task );
+ m_maxCharClip = SpinBoxClip->value();
+ cfg.writeEntry( "maxcharclip", m_maxCharClip );
+ m_daysLookAhead = SpinDaysClip->value();
+ cfg.writeEntry( "dayslookahead", m_daysLookAhead );
+ cfg.write();
+}
+
+
+AddressBookPluginConfig::~AddressBookPluginConfig() {
+}
diff --git a/core/pim/today/plugins/addressbook/addresspluginconfig.h b/core/pim/today/plugins/addressbook/addresspluginconfig.h
new file mode 100644
index 0000000..6f128d4
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/addresspluginconfig.h
@@ -0,0 +1,60 @@
+/*
+ * addresspluginconfig.h
+ *
+ * copyright : (c) 2003 by Stefan Eilers
+ * email : eilers.stefan@epost.de
+ *
+ * This implementation was derived from the todolist plugin implementation
+ *
+ */
+/***************************************************************************
+ * *
+ * 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 ADDRESSBOOK_PLUGIN_CONFIG_H
+#define ADDRESSBOOK_PLUGIN_CONFIG_H
+
+#include <qwidget.h>
+#include <qspinbox.h>
+
+#include <opie/todayconfigwidget.h>
+
+class AddressBookPluginConfig : public TodayConfigWidget {
+
+
+public:
+
+ AddressBookPluginConfig( QWidget *parent, const char *name );
+ ~AddressBookPluginConfig();
+
+private:
+ /**
+ * if changed then save
+ */
+ bool changed();
+ void readConfig();
+ void writeConfig();
+
+ QSpinBox* SpinBox2;
+ QSpinBox* SpinBoxClip;
+ QSpinBox* SpinDaysClip;
+
+ // how many lines should be showed in the AddressBook section
+ int m_max_lines_task;
+ // clip the lines after X chars
+ int m_maxCharClip;
+ // How many days look ahead
+ int m_daysLookAhead;
+
+};
+
+
+
+
+
+#endif
diff --git a/core/pim/today/plugins/addressbook/addresspluginimpl.cpp b/core/pim/today/plugins/addressbook/addresspluginimpl.cpp
new file mode 100644
index 0000000..54e620e
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/addresspluginimpl.cpp
@@ -0,0 +1,46 @@
+/*
+ * addresspluginimpl.cpp
+ *
+ * copyright : (c) 2003 by Stefan Eilers
+ * email : eilers.stefan@epost.de
+ *
+ * This implementation was derived from the todolist plugin implementation
+ *
+ */
+/***************************************************************************
+ * *
+ * 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 "addressplugin.h"
+#include "addresspluginimpl.h"
+
+AddressBookPluginImpl::AddressBookPluginImpl() {
+ addressbookPlugin = new AddressBookPlugin();
+}
+
+AddressBookPluginImpl::~AddressBookPluginImpl() {
+ delete addressbookPlugin;
+}
+
+
+TodayPluginObject* AddressBookPluginImpl::guiPart() {
+ return addressbookPlugin;
+}
+
+QRESULT AddressBookPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) {
+ *iface = 0;
+ if ( ( uuid == IID_QUnknown ) || ( uuid == IID_TodayPluginInterface ) ) {
+ *iface = this, (*iface)->addRef();
+ }
+ return QS_OK;
+
+}
+
+Q_EXPORT_INTERFACE() {
+ Q_CREATE_INSTANCE( AddressBookPluginImpl );
+}
diff --git a/core/pim/today/plugins/addressbook/addresspluginimpl.h b/core/pim/today/plugins/addressbook/addresspluginimpl.h
new file mode 100644
index 0000000..a52c021
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/addresspluginimpl.h
@@ -0,0 +1,42 @@
+/*
+ * addresspluginimpl.h
+ *
+ * copyright : (c) 2003 by Stefan Eilers
+ * email : eilers.stefan@epost.de
+ *
+ * This implementation was derived from the todolist plugin implementation
+ *
+ */
+/***************************************************************************
+ * *
+ * 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 ADDRESSBOOK_PLUGIN_IMPL_H
+#define ADDRESSBOOK_PLUGIN_IMPL_H
+
+#include <opie/todayplugininterface.h>
+
+class AddressBookPlugin;
+
+class AddressBookPluginImpl : public TodayPluginInterface{
+
+public:
+ AddressBookPluginImpl();
+ virtual ~AddressBookPluginImpl();
+
+ QRESULT queryInterface( const QUuid &, QUnknownInterface** );
+ Q_REFCOUNT
+
+ virtual TodayPluginObject *guiPart();
+
+private:
+ AddressBookPlugin *addressbookPlugin;
+ ulong ref;
+};
+
+#endif
diff --git a/core/pim/today/plugins/addressbook/addresspluginwidget.cpp b/core/pim/today/plugins/addressbook/addresspluginwidget.cpp
new file mode 100644
index 0000000..015ac6a
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/addresspluginwidget.cpp
@@ -0,0 +1,149 @@
+/*
+ * addresspluginwidget.cpp
+ *
+ * copyright : (c) 2003 by Stefan Eilers
+ * email : eilers.stefan@epost.de
+ *
+ * This implementation was derived from the todolist plugin implementation
+ *
+ */
+/***************************************************************************
+ * *
+ * 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 "addresspluginwidget.h"
+
+#include <qvaluelist.h>
+#include <qtl.h>
+#include <qstring.h>
+#include <qscrollview.h>
+#include <qobject.h>
+#include <qdatetime.h>
+
+#include <qpe/config.h>
+#include <qpe/timestring.h>
+#include <qpe/qcopenvelope_qws.h>
+
+#include <opie/ocontact.h>
+
+AddressBookPluginWidget::AddressBookPluginWidget( QWidget *parent, const char* name )
+ : QWidget( parent, name ) {
+
+ addressLabel = 0l;
+ m_contactdb = 0l;
+ layoutTodo = 0l;
+
+ // Hä ? Nonsense ! (se)
+ if ( m_contactdb ) {
+ delete m_contactdb;
+ }
+
+ m_contactdb = new OContactAccess("addressplugin");
+
+ connect( m_contactdb, SIGNAL( signalChanged( const OContactAccess * ) ),
+ this, SLOT( refresh( const OContactAccess * ) ) );
+
+
+ readConfig();
+ getAddress();
+}
+
+AddressBookPluginWidget::~AddressBookPluginWidget() {
+ delete m_contactdb;
+}
+
+void AddressBookPluginWidget::refresh( const OContactAccess* )
+{
+ qWarning(" AddressBookPluginWidget::Database was changed externally ! ");
+ m_contactdb->reload();
+ getAddress();
+}
+
+
+void AddressBookPluginWidget::readConfig() {
+ Config cfg( "todayaddressplugin" );
+ cfg.setGroup( "config" );
+ m_maxLinesTask = cfg.readNumEntry( "maxlinestask", 5 );
+ m_maxCharClip = cfg.readNumEntry( "maxcharclip", 38 );
+ m_daysLookAhead = cfg.readNumEntry( "dayslookahead", 14 );
+}
+
+
+/**
+ * Get the addresss
+ */
+void AddressBookPluginWidget::getAddress() {
+
+ if ( ! layoutTodo ){
+ layoutTodo = new QVBoxLayout( this );
+ }
+
+ if ( ! addressLabel ) {
+ addressLabel = new OClickableLabel( this );
+ connect( addressLabel, SIGNAL( clicked() ), this, SLOT( startAddressBook() ) );
+ layoutTodo->addWidget( addressLabel );
+ }
+
+ QString output;
+
+ // Check whether the database provide the search option..
+ if ( ! m_contactdb->hasQuerySettings( OContactAccess::DateDiff ) ){
+
+ // Define the query for birthdays and start search..
+ QDate lookAheadDate = QDate::currentDate().addDays( m_daysLookAhead );
+ qWarning("Searching from now (%s) until %s ! ", QDate::currentDate().toString().latin1(),
+ lookAheadDate.toString().latin1() );
+ OContact querybirthdays;
+ querybirthdays.setBirthday( lookAheadDate );
+
+ int ammount = 0;
+
+ m_list = m_contactdb->queryByExample( querybirthdays, OContactAccess::DateDiff );
+ if ( m_list.count() > 0 ){
+ output = QObject::tr( "Next birthdays in <b> %1 </b> days: <br>" ).arg( m_daysLookAhead );
+ for ( m_it = m_list.begin(); m_it != m_list.end(); ++m_it ) {
+ if ( ammount++ < m_maxLinesTask )
+ output += "<font color=#e00000><b>-" + (*m_it).fullName() + "</b></font><br>";
+ }
+ } else {
+ output = QObject::tr( "No birthdays in <b> %1 </b> days! <br>" ).arg( m_daysLookAhead );
+ }
+
+ // Define the query for anniversaries and start search..
+ OContact queryanniversaries;
+ queryanniversaries.setAnniversary( lookAheadDate );
+
+ m_list = m_contactdb->queryByExample( queryanniversaries, OContactAccess::DateDiff );
+
+ ammount = 0;
+ if ( m_list.count() > 0 ){
+ output += QObject::tr( "Next anniversaries in <b> %1 </b> days: <br>" ).arg( m_daysLookAhead );
+ for ( m_it = m_list.begin(); m_it != m_list.end(); ++m_it ) {
+ if ( ammount++ < m_maxLinesTask )
+ output += "<font color=#e00000><b>-" + (*m_it).fullName() + "</b></font><br>";
+ }
+ } else {
+ output += QObject::tr( "No anniversaries in <b> %1 </b> days! <br>" ).arg( m_daysLookAhead );
+ }
+
+
+ }else{
+ // Libopie seems to be old..
+ output = QObject::tr( "Database does not provide this search query ! Please upgrade libOpie !<br>" );
+ }
+
+ addressLabel->setText( output );
+}
+
+/**
+ * start the todolist
+ */
+void AddressBookPluginWidget::startAddressBook() {
+ QCopEnvelope e( "QPE/System", "execute(QString)" );
+ e << QString( "addressbook" );
+}
diff --git a/core/pim/today/plugins/addressbook/addresspluginwidget.h b/core/pim/today/plugins/addressbook/addresspluginwidget.h
new file mode 100644
index 0000000..75e223a
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/addresspluginwidget.h
@@ -0,0 +1,57 @@
+/*
+ * addresspluginwidget.h
+ *
+ * copyright : (c) 2003 by Stefan Eilers
+ * email : eilers.stefan@epost.de
+ *
+ * This implementation was derived from the todolist plugin implementation
+ *
+ */
+/***************************************************************************
+ * *
+ * 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 ADDRESSBOOK_PLUGIN_WIDGET_H
+#define ADDRESSBOOK_PLUGIN_WIDGET_H
+
+#include <qstring.h>
+#include <qwidget.h>
+#include <qlayout.h>
+
+#include <opie/ocontactaccess.h>
+#include <opie/oclickablelabel.h>
+
+
+class AddressBookPluginWidget : public QWidget {
+
+ Q_OBJECT
+
+public:
+ AddressBookPluginWidget( QWidget *parent, const char *name );
+ ~AddressBookPluginWidget();
+
+protected slots:
+ void startAddressBook();
+ void refresh( const OContactAccess* db );
+
+private:
+ OClickableLabel* addressLabel;
+ QVBoxLayout* layoutTodo;
+ OContactAccess * m_contactdb;
+
+ OContactAccess::List m_list;
+ OContactAccess::List::Iterator m_it;
+
+ void readConfig();
+ void getAddress();
+ int m_maxLinesTask;
+ int m_maxCharClip;
+ int m_daysLookAhead;
+};
+
+#endif
diff --git a/core/pim/today/plugins/addressbook/config.in b/core/pim/today/plugins/addressbook/config.in
new file mode 100644
index 0000000..bdba33a
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/config.in
@@ -0,0 +1,4 @@
+ config TODAY_ADDRESSBOOK
+ boolean "addressbook
+ default "y"
+ depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE
diff --git a/core/pim/today/plugins/addressbook/opie-today-addressbookplugin.control b/core/pim/today/plugins/addressbook/opie-today-addressbookplugin.control
new file mode 100644
index 0000000..89e9792
--- a/dev/null
+++ b/core/pim/today/plugins/addressbook/opie-today-addressbookplugin.control
@@ -0,0 +1,8 @@
+Files: plugins/today/libtodayaddressbookplugin.so*
+Priority: optional
+Section: opie/applications
+Maintainer: Stefan Eilers <eilers.stefan@epost.de>
+Architecture: arm
+Version: $QPE_VERSION-$SUB_VERSION
+Depends: qt-embedded (>=$QTE_VERSION), opie-today
+Description: Addressbook plugin for today shows Birthdays and Anniversaries