32 files changed, 1565 insertions, 0 deletions
diff --git a/core/pim/today/plugins/datebook/datebook.pro b/core/pim/today/plugins/datebook/datebook.pro new file mode 100644 index 0000000..615059a --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebook.pro | |||
@@ -0,0 +1,19 @@ | |||
1 | TEMPLATE = lib | ||
2 | CONFIG -= moc | ||
3 | CONFIG += qt debug | ||
4 | |||
5 | # Input | ||
6 | HEADERS = datebookplugin.h datebookpluginimpl.h datebookpluginconfig.h \ | ||
7 | datebookevent.h datebookpluginwidget.h | ||
8 | SOURCES = datebookplugin.cpp datebookpluginimpl.cpp datebookpluginconfig.cpp \ | ||
9 | datebookevent.cpp datebookpluginwidget.cpp | ||
10 | |||
11 | INCLUDEPATH += $(OPIEDIR)/include \ | ||
12 | ../ ../library | ||
13 | DEPENDPATH += $(OPIEDIR)/include \ | ||
14 | ../ ../library | ||
15 | |||
16 | LIBS+= -lqpe -lopie | ||
17 | |||
18 | DESTDIR = $(OPIEDIR)/plugins/today | ||
19 | TARGET = todaydatebookplugin \ No newline at end of file | ||
diff --git a/core/pim/today/plugins/datebook/datebookevent.cpp b/core/pim/today/plugins/datebook/datebookevent.cpp new file mode 100644 index 0000000..1caf061 --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookevent.cpp | |||
@@ -0,0 +1,118 @@ | |||
1 | /* | ||
2 | * datebookevent.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #include "datebookevent.h" | ||
18 | #include <qpe/config.h> | ||
19 | #include <qpe/timestring.h> | ||
20 | #include <qpe/qcopenvelope_qws.h> | ||
21 | #include <qpe/qpeapplication.h> | ||
22 | |||
23 | DateBookEvent::DateBookEvent(const EffectiveEvent &ev, | ||
24 | QWidget* parent, | ||
25 | int show_location, | ||
26 | int show_notes, | ||
27 | // int onlyLater, | ||
28 | int maxCharClip, | ||
29 | const char* name, | ||
30 | WFlags fl) : | ||
31 | OClickableLabel(parent,name,fl), event(ev) { | ||
32 | |||
33 | QString msg; | ||
34 | |||
35 | Config config( "qpe" ); | ||
36 | config.setGroup( "Time" ); | ||
37 | // if 24 h format | ||
38 | ampm = config.readBoolEntry( "AMPM", TRUE ); | ||
39 | |||
40 | msg += "<B>" + (ev).description() + "</B>"; | ||
41 | if ( (ev).event().hasAlarm() ) { | ||
42 | msg += " <b>[with alarm]</b>"; | ||
43 | } | ||
44 | |||
45 | // include location or not | ||
46 | if ( show_location == 1) { | ||
47 | msg += "<BR><i>" + (ev).location() + "</i>"; | ||
48 | } | ||
49 | |||
50 | if ( ( TimeString::timeString( QTime( (ev).event().start().time() ) ) == "00:00" ) | ||
51 | && ( TimeString::timeString( QTime( (ev).event().end().time() ) ) == "23:59") ) { | ||
52 | msg += "<br>All day"; | ||
53 | } else { | ||
54 | // start time of event | ||
55 | msg += "<br>" + ampmTime(QTime( (ev).event().start().time() ) ) | ||
56 | // end time of event | ||
57 | + "<b> - </b>" + ampmTime(QTime( (ev).event().end().time() ) ); | ||
58 | } | ||
59 | |||
60 | // include possible note or not | ||
61 | if ( show_notes == 1) { | ||
62 | msg += "<br> <i>note</i>:" +( (ev).notes() ).mid( 0, maxCharClip ); | ||
63 | } | ||
64 | |||
65 | setText( msg ); | ||
66 | connect( this, SIGNAL( clicked() ), this, SLOT( editMe() ) ); | ||
67 | setAlignment( int( QLabel::WordBreak | QLabel::AlignLeft ) ); | ||
68 | } | ||
69 | |||
70 | |||
71 | QString DateBookEvent::ampmTime( QTime tm ) { | ||
72 | |||
73 | QString s; | ||
74 | if( ampm ) { | ||
75 | int hour = tm.hour(); | ||
76 | if ( hour == 0 ) { | ||
77 | hour = 12; | ||
78 | } | ||
79 | if ( hour > 12 ) { | ||
80 | hour -= 12; | ||
81 | } | ||
82 | s.sprintf( "%2d:%02d %s", hour, tm.minute(), | ||
83 | (tm.hour() >= 12) ? "PM" : "AM" ); | ||
84 | return s; | ||
85 | } else { | ||
86 | s.sprintf( "%2d:%02d", tm.hour(), tm.minute() ); | ||
87 | return s; | ||
88 | } | ||
89 | |||
90 | } | ||
91 | |||
92 | |||
93 | //extern QPEApplication *todayApp; | ||
94 | |||
95 | /* | ||
96 | * starts the edit dialog as known from datebook | ||
97 | */ | ||
98 | void DateBookEvent::editEventSlot( const Event &e ) { | ||
99 | startDatebook(); | ||
100 | |||
101 | while( !QCopChannel::isRegistered( "QPE/Datebook" ) ) qApp->processEvents(); | ||
102 | QCopEnvelope env( "QPE/Datebook", "editEvent(int)" ); | ||
103 | env << e.uid(); | ||
104 | } | ||
105 | |||
106 | |||
107 | /** | ||
108 | * launches datebook | ||
109 | */ | ||
110 | void DateBookEvent::startDatebook() { | ||
111 | QCopEnvelope e("QPE/System", "execute(QString)"); | ||
112 | e << QString("datebook"); | ||
113 | } | ||
114 | |||
115 | void DateBookEvent::editMe() { | ||
116 | emit editEvent(event.event()); | ||
117 | } | ||
118 | |||
diff --git a/core/pim/today/plugins/datebook/datebookevent.h b/core/pim/today/plugins/datebook/datebookevent.h new file mode 100644 index 0000000..1168f7c --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookevent.h | |||
@@ -0,0 +1,50 @@ | |||
1 | /* | ||
2 | * datebookplugin.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #ifndef DATEBOOKEVENT_PLUGIN_H | ||
18 | #define DATEBOOKEVENT_PLUGIN_H | ||
19 | |||
20 | #include <opie/oclickablelabel.h> | ||
21 | #include <qpe/datebookdb.h> | ||
22 | |||
23 | |||
24 | class DateBookEvent: public OClickableLabel { | ||
25 | |||
26 | Q_OBJECT | ||
27 | |||
28 | public: | ||
29 | DateBookEvent(const EffectiveEvent &ev, | ||
30 | QWidget* parent = 0, | ||
31 | int show_location = 0, | ||
32 | int show_notes = 0, | ||
33 | // int onlyLater = 0, | ||
34 | int maxCharClip = 0, | ||
35 | const char* name = 0, | ||
36 | WFlags fl = 0); | ||
37 | signals: | ||
38 | void editEvent(const Event &e); | ||
39 | private slots: | ||
40 | void editEventSlot(const Event &e); | ||
41 | void editMe(); | ||
42 | private: | ||
43 | void startDatebook(); | ||
44 | DateBookDB *db; | ||
45 | QString ampmTime(QTime); | ||
46 | const EffectiveEvent event; | ||
47 | bool ampm; | ||
48 | }; | ||
49 | |||
50 | #endif | ||
diff --git a/core/pim/today/plugins/datebook/datebookplugin.cpp b/core/pim/today/plugins/datebook/datebookplugin.cpp new file mode 100644 index 0000000..d2a73df --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookplugin.cpp | |||
@@ -0,0 +1,73 @@ | |||
1 | /* | ||
2 | * datebookplugin.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | |||
18 | |||
19 | #include "datebookevent.h" | ||
20 | #include "datebookplugin.h" | ||
21 | #include "datebookpluginwidget.h" | ||
22 | #include "datebookpluginconfig.h" | ||
23 | |||
24 | #include "../../configwidget.h" | ||
25 | |||
26 | #include <qpe/timestring.h> | ||
27 | #include <qpe/config.h> | ||
28 | |||
29 | |||
30 | DatebookPlugin::DatebookPlugin() { | ||
31 | } | ||
32 | |||
33 | DatebookPlugin::~DatebookPlugin() { | ||
34 | } | ||
35 | |||
36 | QString DatebookPlugin::pluginName() const { | ||
37 | return "Datebook plugin"; | ||
38 | } | ||
39 | |||
40 | double DatebookPlugin::versionNumber() const { | ||
41 | return 0.1; | ||
42 | } | ||
43 | |||
44 | QString DatebookPlugin::pixmapNameWidget() const { | ||
45 | return "DateBook"; | ||
46 | } | ||
47 | |||
48 | QWidget* DatebookPlugin::widget( QWidget* wid ) { | ||
49 | return new DatebookPluginWidget( wid, "Datebook" ); | ||
50 | } | ||
51 | |||
52 | QString DatebookPlugin::pixmapNameConfig() const { | ||
53 | return "DateBook"; | ||
54 | } | ||
55 | |||
56 | ConfigWidget* DatebookPlugin::configWidget( QWidget* wid ) { | ||
57 | return new DatebookPluginConfig( wid , "Datebook" ); | ||
58 | } | ||
59 | |||
60 | QString DatebookPlugin::appName() const { | ||
61 | return "datebook"; | ||
62 | } | ||
63 | |||
64 | int DatebookPlugin::minHeight() const { | ||
65 | return 10; | ||
66 | } | ||
67 | |||
68 | int DatebookPlugin::maxHeight() const { | ||
69 | return 100; | ||
70 | } | ||
71 | |||
72 | |||
73 | |||
diff --git a/core/pim/today/plugins/datebook/datebookplugin.h b/core/pim/today/plugins/datebook/datebookplugin.h new file mode 100644 index 0000000..f2c4446 --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookplugin.h | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * datebookplugin.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #ifndef DATEBOOK_PLUGIN_H | ||
18 | #define DATEBOOK_PLUGIN_H | ||
19 | |||
20 | #include <qstring.h> | ||
21 | #include <qwidget.h> | ||
22 | |||
23 | #include <qpe/datebookdb.h> | ||
24 | #include <opie/oclickablelabel.h> | ||
25 | |||
26 | #include "../../todayplugininterface.h" | ||
27 | |||
28 | class DatebookPlugin : public TodayPluginObject { | ||
29 | |||
30 | public: | ||
31 | DatebookPlugin(); | ||
32 | ~DatebookPlugin(); | ||
33 | |||
34 | QString pluginName() const; | ||
35 | double versionNumber() const; | ||
36 | QString pixmapNameWidget() const; | ||
37 | QWidget* widget( QWidget *); | ||
38 | QString pixmapNameConfig() const; | ||
39 | ConfigWidget* configWidget( QWidget *); | ||
40 | QString appName() const; | ||
41 | virtual int minHeight() const; | ||
42 | virtual int maxHeight() const; | ||
43 | |||
44 | }; | ||
45 | |||
46 | |||
47 | #endif | ||
diff --git a/core/pim/today/plugins/datebook/datebookpluginconfig.cpp b/core/pim/today/plugins/datebook/datebookpluginconfig.cpp new file mode 100644 index 0000000..7482f5e --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookpluginconfig.cpp | |||
@@ -0,0 +1,82 @@ | |||
1 | |||
2 | |||
3 | #include "datebookpluginconfig.h" | ||
4 | |||
5 | |||
6 | #include <qpe/config.h> | ||
7 | |||
8 | #include <qlayout.h> | ||
9 | #include <qtoolbutton.h> | ||
10 | #include <qlabel.h> | ||
11 | #include <qhbox.h> | ||
12 | #include <qvbox.h> | ||
13 | |||
14 | DatebookPluginConfig::DatebookPluginConfig( QWidget* parent, const char* name) | ||
15 | : ConfigWidget( parent, name ) { | ||
16 | |||
17 | QVBoxLayout * layout = new QVBoxLayout( this ); | ||
18 | |||
19 | QHBox *box1 = new QHBox( this ); | ||
20 | QLabel* TextLabel4 = new QLabel( box1, "TextLabel4" ); | ||
21 | TextLabel4->setText( tr( "Show location" ) ); | ||
22 | CheckBox1 = new QCheckBox( box1, "CheckBox1" ); | ||
23 | |||
24 | QHBox *box2 = new QHBox( this ); | ||
25 | QLabel* TextLabel5 = new QLabel( box2 , "TextLabel5" ); | ||
26 | TextLabel5->setText( tr( "Show notes" ) ); | ||
27 | CheckBox2 = new QCheckBox( box2, "CheckBox2" ); | ||
28 | |||
29 | QHBox *box3 = new QHBox( this ); | ||
30 | QLabel* TextLabel6 = new QLabel( box3, "All Day"); | ||
31 | TextLabel6->setText( tr( "Show only later\n" | ||
32 | "appointments") ); | ||
33 | CheckBox3 = new QCheckBox ( box3, "CheckBox3" ); | ||
34 | |||
35 | QHBox *box4 = new QHBox( this ); | ||
36 | QLabel *TextLabel3 = new QLabel( box4, "TextLabel3" ); | ||
37 | TextLabel3->setText( tr( "How many \nappointment\n" | ||
38 | "should be \nshown?" ) ); | ||
39 | SpinBox1 = new QSpinBox( box4, "SpinBox1" ); | ||
40 | SpinBox1->setMaxValue( 10 ); | ||
41 | SpinBox1->setValue( 5 ); | ||
42 | |||
43 | layout->addWidget( box1 ); | ||
44 | layout->addWidget( box2 ); | ||
45 | layout->addWidget( box3 ); | ||
46 | layout->addWidget( box4 ); | ||
47 | |||
48 | readConfig(); | ||
49 | } | ||
50 | |||
51 | void DatebookPluginConfig::readConfig() { | ||
52 | Config cfg( "todaydatebookplugin" ); | ||
53 | cfg.setGroup( "config" ); | ||
54 | |||
55 | m_max_lines_meet = cfg.readNumEntry( "maxlinesmeet", 5 ); | ||
56 | SpinBox1->setValue( m_max_lines_meet ); | ||
57 | m_show_location = cfg.readNumEntry( "showlocation", 1 ); | ||
58 | CheckBox1->setChecked( m_show_location ); | ||
59 | m_show_notes = cfg.readNumEntry( "shownotes", 0 ); | ||
60 | CheckBox2->setChecked( m_show_notes ); | ||
61 | m_only_later = cfg.readNumEntry( "onlylater", 1 ); | ||
62 | CheckBox3->setChecked( m_only_later ); | ||
63 | } | ||
64 | |||
65 | |||
66 | void DatebookPluginConfig::writeConfig() { | ||
67 | Config cfg( "todaydatebookplugin" ); | ||
68 | cfg.setGroup( "config" ); | ||
69 | |||
70 | m_max_lines_meet = SpinBox1->value(); | ||
71 | cfg.writeEntry( "maxlinesmeet", m_max_lines_meet); | ||
72 | m_show_location = CheckBox1->isChecked(); | ||
73 | cfg.writeEntry( "showlocation", m_show_location); | ||
74 | m_show_notes = CheckBox2->isChecked(); | ||
75 | cfg.writeEntry( "shownotes", m_show_notes ); | ||
76 | m_only_later = CheckBox3->isChecked(); | ||
77 | cfg.writeEntry( "onlylater", m_only_later ); | ||
78 | cfg.write(); | ||
79 | } | ||
80 | |||
81 | DatebookPluginConfig::~DatebookPluginConfig() { | ||
82 | } | ||
diff --git a/core/pim/today/plugins/datebook/datebookpluginconfig.h b/core/pim/today/plugins/datebook/datebookpluginconfig.h new file mode 100644 index 0000000..33d3c4e --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookpluginconfig.h | |||
@@ -0,0 +1,48 @@ | |||
1 | |||
2 | #ifndef DATEBOOK_PLUGIN_CONFIG_H | ||
3 | #define DATEBOOK_PLUGIN_CONFIG_H | ||
4 | |||
5 | #include <qwidget.h> | ||
6 | #include <qcheckbox.h> | ||
7 | #include <qspinbox.h> | ||
8 | |||
9 | #include "../../configwidget.h" | ||
10 | |||
11 | class DatebookPluginConfig : public ConfigWidget { | ||
12 | |||
13 | Q_OBJECT | ||
14 | |||
15 | public: | ||
16 | DatebookPluginConfig( QWidget *parent, const char *name ); | ||
17 | ~DatebookPluginConfig(); | ||
18 | |||
19 | void writeConfig(); | ||
20 | private: | ||
21 | /** | ||
22 | * if changed then save | ||
23 | */ | ||
24 | bool changed(); | ||
25 | void readConfig(); | ||
26 | |||
27 | QCheckBox* CheckBox2; | ||
28 | QCheckBox* CheckBox1; | ||
29 | QCheckBox* CheckBox3; | ||
30 | QSpinBox* SpinBox1; | ||
31 | |||
32 | // how many lines should be showed in the datebook section | ||
33 | int m_max_lines_meet; | ||
34 | // If location is to be showed too, 1 to activate it. | ||
35 | int m_show_location; | ||
36 | // if notes should be shown | ||
37 | int m_show_notes; | ||
38 | // should only later appointments be shown or all for the current day. | ||
39 | int m_only_later; | ||
40 | |||
41 | |||
42 | }; | ||
43 | |||
44 | |||
45 | |||
46 | |||
47 | |||
48 | #endif | ||
diff --git a/core/pim/today/plugins/datebook/datebookpluginimpl.cpp b/core/pim/today/plugins/datebook/datebookpluginimpl.cpp new file mode 100644 index 0000000..4159b49 --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookpluginimpl.cpp | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * datebookpluginimpl.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #include "datebookplugin.h" | ||
18 | #include "datebookpluginimpl.h" | ||
19 | |||
20 | DatebookPluginImpl::DatebookPluginImpl() { | ||
21 | datebookPlugin = new DatebookPlugin(); | ||
22 | } | ||
23 | |||
24 | DatebookPluginImpl::~DatebookPluginImpl() { | ||
25 | } | ||
26 | |||
27 | TodayPluginObject* DatebookPluginImpl::guiPart() { | ||
28 | return datebookPlugin; | ||
29 | } | ||
30 | |||
31 | QRESULT DatebookPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { | ||
32 | *iface = 0; | ||
33 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_TodayPluginInterface ) ) { | ||
34 | *iface = this, (*iface)->addRef(); | ||
35 | } | ||
36 | return QS_OK; | ||
37 | |||
38 | } | ||
39 | |||
40 | Q_EXPORT_INTERFACE() { | ||
41 | Q_CREATE_INSTANCE( DatebookPluginImpl ); | ||
42 | } | ||
diff --git a/core/pim/today/plugins/datebook/datebookpluginimpl.h b/core/pim/today/plugins/datebook/datebookpluginimpl.h new file mode 100644 index 0000000..037dff4 --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookpluginimpl.h | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * datebookpluginimpl.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #ifndef DATEBOOK_PLUGIN_IMPL_H | ||
18 | #define DATEBOOK_PLUGIN_IMPL_H | ||
19 | |||
20 | #include "../../todayplugininterface.h" | ||
21 | |||
22 | class DatebookPlugin; | ||
23 | |||
24 | class DatebookPluginImpl : public TodayPluginInterface{ | ||
25 | |||
26 | public: | ||
27 | DatebookPluginImpl(); | ||
28 | virtual ~DatebookPluginImpl(); | ||
29 | |||
30 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); | ||
31 | Q_REFCOUNT | ||
32 | |||
33 | virtual TodayPluginObject *guiPart(); | ||
34 | |||
35 | private: | ||
36 | DatebookPlugin *datebookPlugin; | ||
37 | ulong ref; | ||
38 | |||
39 | |||
40 | }; | ||
41 | |||
42 | #endif | ||
diff --git a/core/pim/today/plugins/datebook/datebookpluginwidget.cpp b/core/pim/today/plugins/datebook/datebookpluginwidget.cpp new file mode 100644 index 0000000..e4667ae --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookpluginwidget.cpp | |||
@@ -0,0 +1,114 @@ | |||
1 | /* | ||
2 | * datebookpluginwidget.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | |||
18 | #include "datebookpluginwidget.h" | ||
19 | #include "datebookevent.h" | ||
20 | |||
21 | #include <qpe/timestring.h> | ||
22 | #include <qpe/config.h> | ||
23 | |||
24 | #include <qdatetime.h> | ||
25 | #include <qlabel.h> | ||
26 | #include <qlayout.h> | ||
27 | #include <qtl.h> | ||
28 | #include <qscrollview.h> | ||
29 | #include <qtimer.h> | ||
30 | |||
31 | DatebookPluginWidget::DatebookPluginWidget( QWidget *parent, const char* name) | ||
32 | : QWidget(parent, name ) { | ||
33 | db = 0l; | ||
34 | readConfig(); | ||
35 | getDates(); | ||
36 | } | ||
37 | |||
38 | DatebookPluginWidget::~DatebookPluginWidget() { | ||
39 | delete db; | ||
40 | } | ||
41 | |||
42 | |||
43 | void DatebookPluginWidget::readConfig() { | ||
44 | Config cfg( "todaydatebookplugin" ); | ||
45 | cfg.setGroup( "config" ); | ||
46 | m_max_lines_meet = cfg.readNumEntry( "maxlinesmeet", 5 ); | ||
47 | m_show_location = cfg.readNumEntry( "showlocation", 1 ); | ||
48 | m_show_notes = cfg.readNumEntry( "shownotes", 0 ); | ||
49 | m_onlyLater = cfg.readNumEntry( "onlylater", 1 ); | ||
50 | } | ||
51 | |||
52 | |||
53 | /** | ||
54 | * Get all events that are in the datebook xml file for today | ||
55 | */ | ||
56 | void DatebookPluginWidget::getDates() { | ||
57 | |||
58 | |||
59 | QDate date = QDate::currentDate(); | ||
60 | |||
61 | QVBoxLayout* layoutDates = new QVBoxLayout( this ); | ||
62 | |||
63 | if ( db ) { | ||
64 | delete db; | ||
65 | } | ||
66 | |||
67 | db = new DateBookDB; | ||
68 | |||
69 | QValueList<EffectiveEvent> list = db->getEffectiveEvents( date, date ); | ||
70 | |||
71 | qBubbleSort( list ); | ||
72 | |||
73 | Config config( "qpe" ); | ||
74 | |||
75 | int count=0; | ||
76 | |||
77 | if ( list.count() > 0 ) { | ||
78 | |||
79 | for ( QValueList<EffectiveEvent>::ConstIterator it=list.begin(); it!=list.end(); ++it ) { | ||
80 | |||
81 | if ( count <= m_max_lines_meet ) { | ||
82 | QTime time = QTime::currentTime(); | ||
83 | |||
84 | if ( !m_onlyLater ) { | ||
85 | count++; | ||
86 | DateBookEvent *l = new DateBookEvent( *it, this, m_show_location, m_show_notes ); | ||
87 | layoutDates->addWidget( l ); | ||
88 | QObject::connect ( l, SIGNAL( editEvent( const Event &) ), l, SLOT( editEventSlot( const Event &) ) ); | ||
89 | } else if ( ( time.toString() <= TimeString::dateString( (*it).event().end() ) ) ) { | ||
90 | count++; | ||
91 | // show only later appointments | ||
92 | DateBookEvent *l = new DateBookEvent( *it, this, m_show_location, m_show_notes ); | ||
93 | layoutDates->addWidget( l ); | ||
94 | QObject::connect ( l, SIGNAL( editEvent( const Event &) ), l, SLOT( editEventSlot( const Event &) ) ); | ||
95 | } | ||
96 | } | ||
97 | } | ||
98 | if ( m_onlyLater && count == 0 ) { | ||
99 | QLabel* noMoreEvents = new QLabel( this ); | ||
100 | noMoreEvents->setText( QObject::tr( "No more appointments today" ) ); | ||
101 | layoutDates->addWidget( noMoreEvents ); | ||
102 | } | ||
103 | } else { | ||
104 | QLabel* noEvents = new QLabel( this ); | ||
105 | noEvents->setText( QObject::tr( "No appointments today" ) ); | ||
106 | layoutDates->addWidget( noEvents ); | ||
107 | } | ||
108 | |||
109 | layoutDates->addItem( new QSpacerItem( 1,1, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); | ||
110 | |||
111 | // how often refresh - later have qcop update calls in *db | ||
112 | //QTimer::singleShot( 20*1000, this , SLOT( getDates() ) ); | ||
113 | } | ||
114 | |||
diff --git a/core/pim/today/plugins/datebook/datebookpluginwidget.h b/core/pim/today/plugins/datebook/datebookpluginwidget.h new file mode 100644 index 0000000..e0213ec --- a/dev/null +++ b/core/pim/today/plugins/datebook/datebookpluginwidget.h | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | * datebookpluginwidget.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #ifndef DATEBOOK_PLUGIN_WIDGET_H | ||
18 | #define DATEBOOK_PLUGIN_WIDGET_H | ||
19 | |||
20 | #include <qstring.h> | ||
21 | #include <qwidget.h> | ||
22 | |||
23 | #include <qpe/datebookdb.h> | ||
24 | #include <opie/oclickablelabel.h> | ||
25 | |||
26 | |||
27 | class DatebookPluginWidget : public QWidget { | ||
28 | |||
29 | Q_OBJECT | ||
30 | |||
31 | public: | ||
32 | DatebookPluginWidget( QWidget *parent, const char *name ); | ||
33 | ~DatebookPluginWidget(); | ||
34 | |||
35 | |||
36 | private: | ||
37 | DateBookDB* db; | ||
38 | void readConfig(); | ||
39 | void getDates(); | ||
40 | |||
41 | // how many lines should be showed in the datebook section | ||
42 | int m_max_lines_meet; | ||
43 | // If location is to be showed too, 1 to activate it. | ||
44 | int m_show_location; | ||
45 | // if notes should be shown | ||
46 | int m_show_notes; | ||
47 | // should only later appointments be shown or all for the current day. | ||
48 | int m_onlyLater; | ||
49 | |||
50 | }; | ||
51 | |||
52 | #endif | ||
diff --git a/core/pim/today/plugins/datebook/opie-today-datebookplugin.control b/core/pim/today/plugins/datebook/opie-today-datebookplugin.control new file mode 100644 index 0000000..3ee523b --- a/dev/null +++ b/core/pim/today/plugins/datebook/opie-today-datebookplugin.control | |||
@@ -0,0 +1,8 @@ | |||
1 | Files: $OPIEDIR/lib/today/libtodaydatebookplugin.so* | ||
2 | Priority: optional | ||
3 | Section: opie/applications | ||
4 | Maintainer: Maximilian Reiss <harlekin@handhelds.org> | ||
5 | Architecture: arm | ||
6 | Version: $QPE_VERSION-$SUB_VERSION | ||
7 | Depends: qt-embedded (>=$QTE_VERSION) | ||
8 | Description: Datebook plugin for today | ||
diff --git a/core/pim/today/plugins/mail/mail.pro b/core/pim/today/plugins/mail/mail.pro new file mode 100644 index 0000000..58bda54 --- a/dev/null +++ b/core/pim/today/plugins/mail/mail.pro | |||
@@ -0,0 +1,17 @@ | |||
1 | TEMPLATE = lib | ||
2 | CONFIG -= moc | ||
3 | CONFIG += qt debug | ||
4 | |||
5 | # Input | ||
6 | HEADERS = mailplugin.h mailpluginimpl.h mailpluginwidget.h | ||
7 | SOURCES = mailplugin.cpp mailpluginimpl.cpp mailpluginwidget.cpp | ||
8 | |||
9 | INCLUDEPATH += $(OPIEDIR)/include \ | ||
10 | ../ ../library | ||
11 | DEPENDPATH += $(OPIEDIR)/include \ | ||
12 | ../ ../library | ||
13 | |||
14 | LIBS+= -lqpe -lopie | ||
15 | |||
16 | DESTDIR = $(OPIEDIR)/plugins/today | ||
17 | TARGET = todaymailplugin \ No newline at end of file | ||
diff --git a/core/pim/today/plugins/mail/mailplugin.cpp b/core/pim/today/plugins/mail/mailplugin.cpp new file mode 100644 index 0000000..a594361 --- a/dev/null +++ b/core/pim/today/plugins/mail/mailplugin.cpp | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * mailplugin.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | |||
18 | #include "mailplugin.h" | ||
19 | #include "mailpluginwidget.h" | ||
20 | |||
21 | |||
22 | MailPlugin::MailPlugin() { | ||
23 | } | ||
24 | |||
25 | MailPlugin::~MailPlugin() { | ||
26 | } | ||
27 | |||
28 | QString MailPlugin::pluginName() const { | ||
29 | return "Mail plugin"; | ||
30 | } | ||
31 | |||
32 | double MailPlugin::versionNumber() const { | ||
33 | return 0.1; | ||
34 | } | ||
35 | |||
36 | QString MailPlugin::pixmapNameWidget() const { | ||
37 | return "mail/desktopicon"; | ||
38 | } | ||
39 | |||
40 | QWidget* MailPlugin::widget( QWidget * wid ) { | ||
41 | return new MailPluginWidget( wid, "Mail" ); | ||
42 | } | ||
43 | |||
44 | QString MailPlugin::pixmapNameConfig() const { | ||
45 | return 0l; | ||
46 | } | ||
47 | |||
48 | QWidget* MailPlugin::configWidget( QWidget* wid ) { | ||
49 | return 0l; | ||
50 | } | ||
51 | |||
52 | QString MailPlugin::appName() const { | ||
53 | return "Mail"; | ||
54 | } | ||
55 | |||
56 | int MailPlugin::minHeight() const { | ||
57 | return 10; | ||
58 | } | ||
59 | |||
60 | int MailPlugin::maxHeight() const { | ||
61 | return 10; | ||
62 | } | ||
63 | |||
diff --git a/core/pim/today/plugins/mail/mailplugin.h b/core/pim/today/plugins/mail/mailplugin.h new file mode 100644 index 0000000..113102e --- a/dev/null +++ b/core/pim/today/plugins/mail/mailplugin.h | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * mailplugin.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | |||
18 | #ifndef MAIL_PLUGIN_H | ||
19 | #define MAIL_PLUGIN_H | ||
20 | |||
21 | #include <qstring.h> | ||
22 | #include <qwidget.h> | ||
23 | |||
24 | #include <opie/tododb.h> | ||
25 | #include <opie/oclickablelabel.h> | ||
26 | |||
27 | #include "../../todayplugininterface.h" | ||
28 | |||
29 | class MailPlugin : public TodayPluginObject { | ||
30 | |||
31 | public: | ||
32 | MailPlugin(); | ||
33 | ~MailPlugin(); | ||
34 | |||
35 | QString pluginName() const; | ||
36 | double versionNumber() const; | ||
37 | QString pixmapNameWidget() const; | ||
38 | QWidget* widget(QWidget *); | ||
39 | QString pixmapNameConfig() const; | ||
40 | QWidget* configWidget(QWidget *); | ||
41 | QString appName() const; | ||
42 | virtual int minHeight() const; | ||
43 | virtual int maxHeight() const; | ||
44 | |||
45 | }; | ||
46 | |||
47 | #endif | ||
diff --git a/core/pim/today/plugins/mail/mailpluginimpl.cpp b/core/pim/today/plugins/mail/mailpluginimpl.cpp new file mode 100644 index 0000000..e5a1e05 --- a/dev/null +++ b/core/pim/today/plugins/mail/mailpluginimpl.cpp | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * mailpluginimpl.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | |||
18 | |||
19 | #include "mailplugin.h" | ||
20 | #include "mailpluginimpl.h" | ||
21 | |||
22 | MailPluginImpl::MailPluginImpl() { | ||
23 | mailPlugin = new MailPlugin(); | ||
24 | } | ||
25 | |||
26 | MailPluginImpl::~MailPluginImpl() { | ||
27 | } | ||
28 | |||
29 | |||
30 | TodayPluginObject* MailPluginImpl::guiPart() { | ||
31 | return mailPlugin; | ||
32 | } | ||
33 | |||
34 | QRESULT MailPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { | ||
35 | *iface = 0; | ||
36 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_TodayPluginInterface ) ) { | ||
37 | *iface = this, (*iface)->addRef(); | ||
38 | } | ||
39 | return QS_OK; | ||
40 | |||
41 | } | ||
42 | |||
43 | Q_EXPORT_INTERFACE() { | ||
44 | Q_CREATE_INSTANCE( MailPluginImpl ); | ||
45 | } | ||
diff --git a/core/pim/today/plugins/mail/mailpluginimpl.h b/core/pim/today/plugins/mail/mailpluginimpl.h new file mode 100644 index 0000000..9930e6e --- a/dev/null +++ b/core/pim/today/plugins/mail/mailpluginimpl.h | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * mailpluginimpl.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #ifndef MAIL_PLUGIN_IMPL_H | ||
18 | #define MAIL_PLUGIN_IMPL_H | ||
19 | |||
20 | #include "../../todayplugininterface.h" | ||
21 | |||
22 | class MailPlugin; | ||
23 | |||
24 | class MailPluginImpl : public TodayPluginInterface{ | ||
25 | |||
26 | public: | ||
27 | MailPluginImpl(); | ||
28 | virtual ~MailPluginImpl(); | ||
29 | |||
30 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); | ||
31 | Q_REFCOUNT | ||
32 | |||
33 | virtual TodayPluginObject *guiPart(); | ||
34 | |||
35 | private: | ||
36 | MailPlugin *mailPlugin; | ||
37 | ulong ref; | ||
38 | }; | ||
39 | |||
40 | #endif | ||
diff --git a/core/pim/today/plugins/mail/mailpluginwidget.cpp b/core/pim/today/plugins/mail/mailpluginwidget.cpp new file mode 100644 index 0000000..a6f3562 --- a/dev/null +++ b/core/pim/today/plugins/mail/mailpluginwidget.cpp | |||
@@ -0,0 +1,73 @@ | |||
1 | /* | ||
2 | * mailpluginwidget.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | |||
18 | #include <qvaluelist.h> | ||
19 | #include <qtl.h> | ||
20 | #include <qstring.h> | ||
21 | #include <qobject.h> | ||
22 | #include <qlayout.h> | ||
23 | |||
24 | #include <qpe/config.h> | ||
25 | #include <qpe/timestring.h> | ||
26 | #include <qpe/qcopenvelope_qws.h> | ||
27 | |||
28 | #include "mailpluginwidget.h" | ||
29 | |||
30 | MailPluginWidget::MailPluginWidget( QWidget *parent, const char* name) | ||
31 | : QWidget(parent, name ) { | ||
32 | |||
33 | readConfig(); | ||
34 | getInfo(); | ||
35 | } | ||
36 | |||
37 | MailPluginWidget::~MailPluginWidget() { | ||
38 | } | ||
39 | |||
40 | |||
41 | void MailPluginWidget::readConfig() { | ||
42 | Config cfg( "todaymailplugin" ); | ||
43 | cfg.setGroup( "config" ); | ||
44 | } | ||
45 | |||
46 | |||
47 | void MailPluginWidget::getInfo() { | ||
48 | |||
49 | QHBoxLayout* layout = new QHBoxLayout( this ); | ||
50 | |||
51 | mailLabel = new OClickableLabel( this ); | ||
52 | mailLabel->setMaximumHeight( 15 ); | ||
53 | connect( mailLabel, SIGNAL( clicked() ), this, SLOT( startMail() ) ); | ||
54 | |||
55 | Config cfg( "opiemail" ); | ||
56 | cfg.setGroup( "today" ); | ||
57 | |||
58 | int NEW_MAILS = cfg.readNumEntry( "newmails", 0 ); | ||
59 | int OUTGOING = cfg.readNumEntry( "outgoing", 0 ); | ||
60 | |||
61 | QString output = QObject::tr( "<b>%1</b> new mail(s), <b>%2</b> outgoing" ).arg( NEW_MAILS ).arg( OUTGOING ); | ||
62 | |||
63 | mailLabel->setText( output ); | ||
64 | layout->addWidget( mailLabel ); | ||
65 | } | ||
66 | |||
67 | /** | ||
68 | * launches datebook | ||
69 | */ | ||
70 | void MailPluginWidget::startMail() { | ||
71 | QCopEnvelope e("QPE/System", "execute(QString)"); | ||
72 | e << QString( "mail" ); | ||
73 | } | ||
diff --git a/core/pim/today/plugins/mail/mailpluginwidget.h b/core/pim/today/plugins/mail/mailpluginwidget.h new file mode 100644 index 0000000..2feef80 --- a/dev/null +++ b/core/pim/today/plugins/mail/mailpluginwidget.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * mailpluginwidget.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | |||
18 | #ifndef MAIL_PLUGIN_WIDGET_H | ||
19 | #define MAIL_PLUGIN_WIDGET_H | ||
20 | |||
21 | #include <qstring.h> | ||
22 | #include <qwidget.h> | ||
23 | |||
24 | #include <opie/tododb.h> | ||
25 | #include <opie/oclickablelabel.h> | ||
26 | |||
27 | class MailPluginWidget : public QWidget { | ||
28 | |||
29 | Q_OBJECT | ||
30 | |||
31 | |||
32 | public: | ||
33 | MailPluginWidget( QWidget *parent, const char *name ); | ||
34 | ~MailPluginWidget(); | ||
35 | |||
36 | protected slots: | ||
37 | void startMail(); | ||
38 | |||
39 | private: | ||
40 | OClickableLabel *mailLabel; | ||
41 | void readConfig(); | ||
42 | void getInfo(); | ||
43 | }; | ||
44 | |||
45 | #endif | ||
diff --git a/core/pim/today/plugins/mail/opie-today-todolistplugin.control b/core/pim/today/plugins/mail/opie-today-todolistplugin.control new file mode 100644 index 0000000..7fb8cbf --- a/dev/null +++ b/core/pim/today/plugins/mail/opie-today-todolistplugin.control | |||
@@ -0,0 +1,8 @@ | |||
1 | Files: $OPIEDIR/lib/today/libtodaymailplugin.so* | ||
2 | Priority: optional | ||
3 | Section: opie/applications | ||
4 | Maintainer: Maximilian Reiss <harlekin@handhelds.org> | ||
5 | Architecture: arm | ||
6 | Version: $QPE_VERSION-$SUB_VERSION | ||
7 | Depends: qt-embedded (>=$QTE_VERSION) | ||
8 | Description: Mail plugin for today | ||
diff --git a/core/pim/today/plugins/todolist/moc_todoplugin.cpp b/core/pim/today/plugins/todolist/moc_todoplugin.cpp new file mode 100644 index 0000000..e69de29 --- a/dev/null +++ b/core/pim/today/plugins/todolist/moc_todoplugin.cpp | |||
diff --git a/core/pim/today/plugins/todolist/moc_todoplugin.o b/core/pim/today/plugins/todolist/moc_todoplugin.o new file mode 100644 index 0000000..1e6a22f --- a/dev/null +++ b/core/pim/today/plugins/todolist/moc_todoplugin.o | |||
Binary files differ | |||
diff --git a/core/pim/today/plugins/todolist/opie-today-todolistplugin.control b/core/pim/today/plugins/todolist/opie-today-todolistplugin.control new file mode 100644 index 0000000..91a7202 --- a/dev/null +++ b/core/pim/today/plugins/todolist/opie-today-todolistplugin.control | |||
@@ -0,0 +1,8 @@ | |||
1 | Files: $OPIEDIR/lib/today/libtodaytodolistplugin.so* | ||
2 | Priority: optional | ||
3 | Section: opie/applications | ||
4 | Maintainer: Maximilian Reiss <harlekin@handhelds.org> | ||
5 | Architecture: arm | ||
6 | Version: $QPE_VERSION-$SUB_VERSION | ||
7 | Depends: qt-embedded (>=$QTE_VERSION) | ||
8 | Description: Todolist plugin for today | ||
diff --git a/core/pim/today/plugins/todolist/todolist.pro b/core/pim/today/plugins/todolist/todolist.pro new file mode 100644 index 0000000..1f9c61c --- a/dev/null +++ b/core/pim/today/plugins/todolist/todolist.pro | |||
@@ -0,0 +1,20 @@ | |||
1 | TEMPLATE = lib | ||
2 | #TEMPLATE = app | ||
3 | CONFIG -= moc | ||
4 | CONFIG += qt debug | ||
5 | |||
6 | # Input | ||
7 | HEADERS = todoplugin.h todopluginimpl.h todopluginconfig.h \ | ||
8 | todopluginwidget.h | ||
9 | SOURCES = todoplugin.cpp todopluginimpl.cpp todopluginconfig.cpp \ | ||
10 | todopluginwidget.cpp | ||
11 | |||
12 | INCLUDEPATH += $(OPIEDIR)/include \ | ||
13 | ../ ../library | ||
14 | DEPENDPATH += $(OPIEDIR)/include \ | ||
15 | ../ ../library | ||
16 | |||
17 | LIBS+= -lqpe -lopie | ||
18 | |||
19 | DESTDIR = $(OPIEDIR)/plugins/today | ||
20 | TARGET = todaytodolistplugin \ No newline at end of file | ||
diff --git a/core/pim/today/plugins/todolist/todoplugin.cpp b/core/pim/today/plugins/todolist/todoplugin.cpp new file mode 100644 index 0000000..f5f6ed6 --- a/dev/null +++ b/core/pim/today/plugins/todolist/todoplugin.cpp | |||
@@ -0,0 +1,71 @@ | |||
1 | /* | ||
2 | * todoplugin.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | |||
18 | |||
19 | #include "todoplugin.h" | ||
20 | #include "todopluginconfig.h" | ||
21 | #include "todopluginwidget.h" | ||
22 | |||
23 | |||
24 | TodolistPlugin::TodolistPlugin() { | ||
25 | } | ||
26 | |||
27 | TodolistPlugin::~TodolistPlugin() { | ||
28 | } | ||
29 | |||
30 | QString TodolistPlugin::pluginName() const { | ||
31 | return "Todolist plugin"; | ||
32 | } | ||
33 | |||
34 | double TodolistPlugin::versionNumber() const { | ||
35 | return 0.1; | ||
36 | } | ||
37 | |||
38 | QString TodolistPlugin::pixmapNameWidget() const { | ||
39 | return "TodoList"; | ||
40 | } | ||
41 | |||
42 | QWidget* TodolistPlugin::widget( QWidget *wid ) { | ||
43 | return new TodolistPluginWidget( wid, "Todolist" ); | ||
44 | } | ||
45 | |||
46 | QString TodolistPlugin::pixmapNameConfig() const { | ||
47 | return "TodoList"; | ||
48 | } | ||
49 | |||
50 | ConfigWidget* TodolistPlugin::configWidget( QWidget* wid ) { | ||
51 | return new TodolistPluginConfig( wid , "Todolist" ); | ||
52 | } | ||
53 | |||
54 | QString TodolistPlugin::appName() const { | ||
55 | return "Todolist"; | ||
56 | } | ||
57 | |||
58 | int TodolistPlugin::minHeight() const { | ||
59 | return 10; | ||
60 | } | ||
61 | |||
62 | int TodolistPlugin::maxHeight() const { | ||
63 | return 100; | ||
64 | } | ||
65 | |||
66 | |||
67 | |||
68 | |||
69 | int main() { | ||
70 | } | ||
71 | |||
diff --git a/core/pim/today/plugins/todolist/todoplugin.h b/core/pim/today/plugins/todolist/todoplugin.h new file mode 100644 index 0000000..77889d6 --- a/dev/null +++ b/core/pim/today/plugins/todolist/todoplugin.h | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * todoplugin.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #ifndef TODOLIST_PLUGIN_H | ||
18 | #define TODOLIST_PLUGIN_H | ||
19 | |||
20 | #include <qstring.h> | ||
21 | #include <qwidget.h> | ||
22 | |||
23 | #include <opie/tododb.h> | ||
24 | #include <opie/oclickablelabel.h> | ||
25 | |||
26 | #include "../../todayplugininterface.h" | ||
27 | #include "../../configwidget.h" | ||
28 | |||
29 | class TodolistPlugin : public TodayPluginObject { | ||
30 | |||
31 | |||
32 | public: | ||
33 | TodolistPlugin(); | ||
34 | ~TodolistPlugin(); | ||
35 | |||
36 | QString pluginName() const; | ||
37 | double versionNumber() const; | ||
38 | QString pixmapNameWidget() const; | ||
39 | QWidget* widget(QWidget *); | ||
40 | QString pixmapNameConfig() const; | ||
41 | ConfigWidget* configWidget(QWidget *); | ||
42 | QString appName() const; | ||
43 | virtual int minHeight() const; | ||
44 | virtual int maxHeight() const; | ||
45 | }; | ||
46 | |||
47 | #endif | ||
diff --git a/core/pim/today/plugins/todolist/todopluginconfig.cpp b/core/pim/today/plugins/todolist/todopluginconfig.cpp new file mode 100644 index 0000000..da81600 --- a/dev/null +++ b/core/pim/today/plugins/todolist/todopluginconfig.cpp | |||
@@ -0,0 +1,69 @@ | |||
1 | /* | ||
2 | * todopluginconfig.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #include "todopluginconfig.h" | ||
18 | |||
19 | #include <qpe/config.h> | ||
20 | |||
21 | #include <qlayout.h> | ||
22 | #include <qtoolbutton.h> | ||
23 | #include <qlabel.h> | ||
24 | |||
25 | |||
26 | TodolistPluginConfig::TodolistPluginConfig( QWidget *parent, const char* name) | ||
27 | : ConfigWidget(parent, name ) { | ||
28 | |||
29 | QVBoxLayout * layout = new QVBoxLayout( this ); | ||
30 | |||
31 | QFrame* Frame9 = new QFrame( this, "Frame9" ); | ||
32 | Frame9->setGeometry( QRect( -5, 0, 230, 310 ) ); | ||
33 | Frame9->setFrameShape( QFrame::StyledPanel ); | ||
34 | Frame9->setFrameShadow( QFrame::Raised ); | ||
35 | |||
36 | QLabel* TextLabel6 = new QLabel( Frame9, "TextLabel6" ); | ||
37 | TextLabel6->setGeometry( QRect( 20, 10, 100, 60 ) ); | ||
38 | TextLabel6->setText( tr( "How many\n" | ||
39 | "tasks should \n" | ||
40 | "be shown?" ) ); | ||
41 | |||
42 | SpinBox2 = new QSpinBox( Frame9, "SpinBox2" ); | ||
43 | SpinBox2->setGeometry( QRect( 115, 20, 58, 25 ) ); | ||
44 | SpinBox2->setMaxValue( 20 ); | ||
45 | SpinBox2->setValue( 5 ); | ||
46 | |||
47 | layout->addWidget( Frame9 ); | ||
48 | |||
49 | readConfig(); | ||
50 | } | ||
51 | |||
52 | void TodolistPluginConfig::readConfig() { | ||
53 | Config cfg( "todaydatebookplugin" ); | ||
54 | cfg.setGroup( "config" ); | ||
55 | m_max_lines_task = cfg.readNumEntry( "maxlinestask", 5 ); | ||
56 | SpinBox2->setValue( m_max_lines_task ); | ||
57 | } | ||
58 | |||
59 | |||
60 | void TodolistPluginConfig::writeConfig() { | ||
61 | Config cfg( "todaydatebookplugin" ); | ||
62 | cfg.setGroup( "config" ); | ||
63 | cfg.writeEntry( "maxlinestask", m_max_lines_task ); | ||
64 | cfg.write(); | ||
65 | } | ||
66 | |||
67 | |||
68 | TodolistPluginConfig::~TodolistPluginConfig() { | ||
69 | } | ||
diff --git a/core/pim/today/plugins/todolist/todopluginconfig.h b/core/pim/today/plugins/todolist/todopluginconfig.h new file mode 100644 index 0000000..a46cc7c --- a/dev/null +++ b/core/pim/today/plugins/todolist/todopluginconfig.h | |||
@@ -0,0 +1,55 @@ | |||
1 | /* | ||
2 | * todopluginconfig.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #ifndef TODOLIST_PLUGIN_CONFIG_H | ||
18 | #define TODOLIST_PLUGIN_CONFIG_H | ||
19 | |||
20 | #include <qwidget.h> | ||
21 | #include <qspinbox.h> | ||
22 | |||
23 | #include "../../configwidget.h" | ||
24 | |||
25 | class TodolistPluginConfig : public ConfigWidget { | ||
26 | |||
27 | Q_OBJECT | ||
28 | |||
29 | public: | ||
30 | |||
31 | TodolistPluginConfig( QWidget *parent, const char *name ); | ||
32 | ~TodolistPluginConfig(); | ||
33 | |||
34 | private: | ||
35 | /** | ||
36 | * if changed then save | ||
37 | */ | ||
38 | bool changed(); | ||
39 | void readConfig(); | ||
40 | void writeConfig(); | ||
41 | |||
42 | QSpinBox* SpinBox2; | ||
43 | |||
44 | // how many lines should be showed in the todolist section | ||
45 | int m_max_lines_task; | ||
46 | |||
47 | |||
48 | |||
49 | }; | ||
50 | |||
51 | |||
52 | |||
53 | |||
54 | |||
55 | #endif | ||
diff --git a/core/pim/today/plugins/todolist/todopluginimpl.cpp b/core/pim/today/plugins/todolist/todopluginimpl.cpp new file mode 100644 index 0000000..b1849ff --- a/dev/null +++ b/core/pim/today/plugins/todolist/todopluginimpl.cpp | |||
@@ -0,0 +1,43 @@ | |||
1 | /* | ||
2 | * todopluginimpl.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #include "todoplugin.h" | ||
18 | #include "todopluginimpl.h" | ||
19 | |||
20 | TodolistPluginImpl::TodolistPluginImpl() { | ||
21 | todolistPlugin = new TodolistPlugin(); | ||
22 | } | ||
23 | |||
24 | TodolistPluginImpl::~TodolistPluginImpl() { | ||
25 | } | ||
26 | |||
27 | |||
28 | TodayPluginObject* TodolistPluginImpl::guiPart() { | ||
29 | return todolistPlugin; | ||
30 | } | ||
31 | |||
32 | QRESULT TodolistPluginImpl::queryInterface( const QUuid & uuid, QUnknownInterface **iface ) { | ||
33 | *iface = 0; | ||
34 | if ( ( uuid == IID_QUnknown ) || ( uuid == IID_TodayPluginInterface ) ) { | ||
35 | *iface = this, (*iface)->addRef(); | ||
36 | } | ||
37 | return QS_OK; | ||
38 | |||
39 | } | ||
40 | |||
41 | Q_EXPORT_INTERFACE() { | ||
42 | Q_CREATE_INSTANCE( TodolistPluginImpl ); | ||
43 | } | ||
diff --git a/core/pim/today/plugins/todolist/todopluginimpl.h b/core/pim/today/plugins/todolist/todopluginimpl.h new file mode 100644 index 0000000..29e0294 --- a/dev/null +++ b/core/pim/today/plugins/todolist/todopluginimpl.h | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * todopluginimpl.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #ifndef TODOLIST_PLUGIN_IMPL_H | ||
18 | #define TODOLIST_PLUGIN_IMPL_H | ||
19 | |||
20 | #include "../../todayplugininterface.h" | ||
21 | |||
22 | class TodolistPlugin; | ||
23 | |||
24 | class TodolistPluginImpl : public TodayPluginInterface{ | ||
25 | |||
26 | public: | ||
27 | TodolistPluginImpl(); | ||
28 | virtual ~TodolistPluginImpl(); | ||
29 | |||
30 | QRESULT queryInterface( const QUuid &, QUnknownInterface** ); | ||
31 | Q_REFCOUNT | ||
32 | |||
33 | virtual TodayPluginObject *guiPart(); | ||
34 | |||
35 | private: | ||
36 | TodolistPlugin *todolistPlugin; | ||
37 | ulong ref; | ||
38 | }; | ||
39 | |||
40 | #endif | ||
diff --git a/core/pim/today/plugins/todolist/todopluginwidget.cpp b/core/pim/today/plugins/todolist/todopluginwidget.cpp new file mode 100644 index 0000000..2a0e5a3 --- a/dev/null +++ b/core/pim/today/plugins/todolist/todopluginwidget.cpp | |||
@@ -0,0 +1,132 @@ | |||
1 | /* | ||
2 | * todopluginwidget.cpp | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #include "todopluginwidget.h" | ||
18 | |||
19 | #include <qvaluelist.h> | ||
20 | #include <qtl.h> | ||
21 | #include <qstring.h> | ||
22 | #include <qscrollview.h> | ||
23 | #include <qobject.h> | ||
24 | #include <qlayout.h> | ||
25 | |||
26 | #include <qpe/config.h> | ||
27 | #include <qpe/timestring.h> | ||
28 | #include <qpe/qcopenvelope_qws.h> | ||
29 | |||
30 | TodolistPluginWidget::TodolistPluginWidget( QWidget *parent, const char* name) | ||
31 | : QWidget(parent, name ) { | ||
32 | |||
33 | todoLabel= 0l; | ||
34 | |||
35 | todo = 0l; | ||
36 | if ( todo ) { | ||
37 | delete todo; | ||
38 | } | ||
39 | todo = new ToDoDB(); | ||
40 | |||
41 | readConfig(); | ||
42 | m_maxCharClip = 36; | ||
43 | getTodo(); | ||
44 | } | ||
45 | |||
46 | TodolistPluginWidget::~TodolistPluginWidget() { | ||
47 | delete todo; | ||
48 | } | ||
49 | |||
50 | void TodolistPluginWidget::readConfig() { | ||
51 | Config cfg( "todaytodolistplugin" ); | ||
52 | cfg.setGroup( "config" ); | ||
53 | m_maxLinesTask = cfg.readNumEntry( "maxlinestask", 5 ); | ||
54 | } | ||
55 | |||
56 | |||
57 | /** | ||
58 | * Get the todos | ||
59 | */ | ||
60 | void TodolistPluginWidget::getTodo() { | ||
61 | |||
62 | QVBoxLayout* layoutTodo = new QVBoxLayout( this ); | ||
63 | |||
64 | if ( todoLabel ) { | ||
65 | delete todoLabel; | ||
66 | } | ||
67 | |||
68 | todoLabel = new OClickableLabel( this ); | ||
69 | todoLabel->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ) ); | ||
70 | connect( todoLabel, SIGNAL( clicked() ), this, SLOT( startTodolist() ) ); | ||
71 | QString output; | ||
72 | QString tmpout; | ||
73 | int count = 0; | ||
74 | int ammount = 0; | ||
75 | |||
76 | // get overdue todos first | ||
77 | QValueList<ToDoEvent> overDueList = todo->overDue(); | ||
78 | qBubbleSort(overDueList); | ||
79 | for ( QValueList<ToDoEvent>::Iterator it = overDueList.begin(); | ||
80 | it!=overDueList.end(); ++it ) { | ||
81 | if (!(*it).isCompleted() && ( ammount < m_maxLinesTask ) ) { | ||
82 | QString desc = (*it).summary(); | ||
83 | if( desc.isEmpty() ) { | ||
84 | desc = (*it).description(); | ||
85 | } | ||
86 | tmpout += "<font color=#e00000><b>-" + desc.mid(0, m_maxCharClip) + "</b></font><br>"; | ||
87 | ammount++; | ||
88 | } | ||
89 | } | ||
90 | |||
91 | // get total number of still open todos | ||
92 | QValueList<ToDoEvent> openTodo = todo->rawToDos(); | ||
93 | qBubbleSort( openTodo ); | ||
94 | for ( QValueList<ToDoEvent>::Iterator it=openTodo.begin(); | ||
95 | it!=openTodo.end(); ++it ) { | ||
96 | if ( !(*it).isCompleted() ){ | ||
97 | count +=1; | ||
98 | // not the overdues, we allready got them, and not if we are | ||
99 | // over the maxlines | ||
100 | if ( !(*it).isOverdue() && ( ammount < m_maxLinesTask ) ) { | ||
101 | QString desc = (*it).summary(); | ||
102 | if( desc.isEmpty() ) { | ||
103 | desc = (*it).description(); | ||
104 | } | ||
105 | tmpout += "<b>-</b>" + desc.mid(0, m_maxCharClip) + "<br>"; | ||
106 | ammount++; | ||
107 | } | ||
108 | } | ||
109 | } | ||
110 | |||
111 | |||
112 | if ( count > 0 ) { | ||
113 | if( count == 1 ) { | ||
114 | output += QObject::tr( "There is <b> 1</b> active task: <br>" ); | ||
115 | } else { | ||
116 | output += QObject::tr( "There are <b> %1</b> active tasks: <br>" ).arg(count); | ||
117 | } | ||
118 | output += tmpout; | ||
119 | } else { | ||
120 | output = QObject::tr( "No active tasks" ); | ||
121 | } | ||
122 | todoLabel->setText( output ); | ||
123 | layoutTodo->addWidget( todoLabel ); | ||
124 | } | ||
125 | |||
126 | /** | ||
127 | * start the todolist | ||
128 | */ | ||
129 | void TodolistPluginWidget::startTodolist() { | ||
130 | QCopEnvelope e("QPE/System", "execute(QString)"); | ||
131 | e << QString("todolist"); | ||
132 | } | ||
diff --git a/core/pim/today/plugins/todolist/todopluginwidget.h b/core/pim/today/plugins/todolist/todopluginwidget.h new file mode 100644 index 0000000..ccc312a --- a/dev/null +++ b/core/pim/today/plugins/todolist/todopluginwidget.h | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * todopluginwidget.h | ||
3 | * | ||
4 | * copyright : (c) 2002 by Maximilian Reiß | ||
5 | * email : harlekin@handhelds.org | ||
6 | * | ||
7 | */ | ||
8 | /*************************************************************************** | ||
9 | * * | ||
10 | * This program is free software; you can redistribute it and/or modify * | ||
11 | * it under the terms of the GNU General Public License as published by * | ||
12 | * the Free Software Foundation; either version 2 of the License, or * | ||
13 | * (at your option) any later version. * | ||
14 | * * | ||
15 | ***************************************************************************/ | ||
16 | |||
17 | #ifndef TODOLIST_PLUGIN_WIDGET_H | ||
18 | #define TODOLIST_PLUGIN_WIDGET_H | ||
19 | |||
20 | #include <qstring.h> | ||
21 | #include <qwidget.h> | ||
22 | |||
23 | #include <opie/tododb.h> | ||
24 | #include <opie/oclickablelabel.h> | ||
25 | |||
26 | |||
27 | class TodolistPluginWidget : public QWidget { | ||
28 | |||
29 | Q_OBJECT | ||
30 | |||
31 | public: | ||
32 | TodolistPluginWidget( QWidget *parent, const char *name ); | ||
33 | ~TodolistPluginWidget(); | ||
34 | |||
35 | protected slots: | ||
36 | void startTodolist(); | ||
37 | |||
38 | private: | ||
39 | OClickableLabel *todoLabel; | ||
40 | ToDoDB *todo; | ||
41 | void readConfig(); | ||
42 | void getTodo(); | ||
43 | int m_maxLinesTask; | ||
44 | int m_maxCharClip; | ||
45 | }; | ||
46 | |||
47 | #endif | ||