author | eilers <eilers> | 2003-01-03 13:15:30 (UTC) |
---|---|---|
committer | eilers <eilers> | 2003-01-03 13:15:30 (UTC) |
commit | 19ee7f3b3e06fcf434dcd6a104e912b12220af3b (patch) (side-by-side diff) | |
tree | bf813eecb39d52da95591b561e9bd1c3cc329432 | |
parent | 54ebecbfd86a9ce6782dc55dad7ae15c73adef21 (diff) | |
download | opie-19ee7f3b3e06fcf434dcd6a104e912b12220af3b.zip opie-19ee7f3b3e06fcf434dcd6a104e912b12220af3b.tar.gz opie-19ee7f3b3e06fcf434dcd6a104e912b12220af3b.tar.bz2 |
NEW: This plugin shows the next birthdays and anniversaries for the next
n days !
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 |