summaryrefslogtreecommitdiff
path: root/core/pim/today
authorharlekin <harlekin>2002-09-15 21:03:47 (UTC)
committer harlekin <harlekin>2002-09-15 21:03:47 (UTC)
commit251fd5b1687994c30e8bea1091e893468086223f (patch) (unidiff)
tree3df0ba1775f2c0e7862e9995324d4869ef4b936f /core/pim/today
parentf79126f5ba0b1d1520e5fb07716ffe9e2479aedf (diff)
downloadopie-251fd5b1687994c30e8bea1091e893468086223f.zip
opie-251fd5b1687994c30e8bea1091e893468086223f.tar.gz
opie-251fd5b1687994c30e8bea1091e893468086223f.tar.bz2
new today version, now plugin bases
Diffstat (limited to 'core/pim/today') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/today/TODO2
-rw-r--r--core/pim/today/changelog4
-rw-r--r--core/pim/today/configwidget.h17
-rw-r--r--core/pim/today/opie-today.control7
-rw-r--r--core/pim/today/today.cpp708
-rw-r--r--core/pim/today/today.h97
-rw-r--r--core/pim/today/today.pro4
-rw-r--r--core/pim/today/todaybase.cpp190
-rw-r--r--core/pim/today/todaybase.h48
-rw-r--r--core/pim/today/todayconfig.cpp315
-rw-r--r--core/pim/today/todayconfig.h55
-rw-r--r--core/pim/today/todayplugininterface.h82
12 files changed, 614 insertions, 915 deletions
diff --git a/core/pim/today/TODO b/core/pim/today/TODO
index 30a8bab..1326f88 100644
--- a/core/pim/today/TODO
+++ b/core/pim/today/TODO
@@ -6,6 +6,4 @@ TODO for today:
6 6
7* qcop integration for updating events? 7* qcop integration for updating events?
8 8
9* make Opiezilla a clickable label wich is allway on the far right side of
10the screen , klick will open credits ,)
11 9
diff --git a/core/pim/today/changelog b/core/pim/today/changelog
index 73de50d..5fd3284 100644
--- a/core/pim/today/changelog
+++ b/core/pim/today/changelog
@@ -1,3 +1,7 @@
10.5
2
3* now fully plugin based
4
10.3.4 50.3.4
2 6
3* "fill our business card now a clickable label" 7* "fill our business card now a clickable label"
diff --git a/core/pim/today/configwidget.h b/core/pim/today/configwidget.h
new file mode 100644
index 0000000..f449db4
--- a/dev/null
+++ b/core/pim/today/configwidget.h
@@ -0,0 +1,17 @@
1
2#ifndef CONFIG_WIDGET_H
3#define CONFIG_WIDGET_H
4
5
6
7class ConfigWidget : public QWidget {
8
9public:
10
11 ConfigWidget( QWidget *parent, const char *name ) : QWidget( parent, name ) {};
12 virtual ~ConfigWidget() {};
13
14 virtual void writeConfig() = 0;
15};
16
17#endif
diff --git a/core/pim/today/opie-today.control b/core/pim/today/opie-today.control
index b8e2e02..bcac439 100644
--- a/core/pim/today/opie-today.control
+++ b/core/pim/today/opie-today.control
@@ -1,10 +1,11 @@
1Files: bin/today apps/1Pim/today.desktop pics/today/* 1Files: bin/today apps/1Pim/today.desktop pics/today/*
2Priority: optional 2Priority: optional
3Section: opie/applications 3Section: opie/applications
4Maintainer: Maximilian Reiß <max.reiss@gmx.de> 4Maintainer: Maximilian Reiß <harlekin@handhelds.org>
5Architecture: arm 5Architecture: arm
6Version: 0.3.4-$SUB_VERSION 6Version: 0.5-$SUB_VERSION
7Depends: opie-base ($QPE_VERSION), libopie ($QPE_VERSION) 7Depends: opie-base ($QPE_VERSION), libopie ($QPE_VERSION),
8opie-today-datebookplugin, opie-today-todolistplugin
8License: GPL 9License: GPL
9Description: today screen 10Description: today screen
10 This today screen app gives an overview of appointments 11 This today screen app gives an overview of appointments
diff --git a/core/pim/today/today.cpp b/core/pim/today/today.cpp
index 62becb0..09540bd 100644
--- a/core/pim/today/today.cpp
+++ b/core/pim/today/today.cpp
@@ -1,11 +1,8 @@
1/* 1/*
2 * today.cpp : main class 2 * today.cpp
3 * 3 *
4 * ---------------------
5 *
6 * begin : Sun 10 17:20:00 CEST 2002
7 * copyright : (c) 2002 by Maximilian Reiß 4 * copyright : (c) 2002 by Maximilian Reiß
8 * email : max.reiss@gmx.de 5 * email : harlekin@handhelds.org
9 * 6 *
10 */ 7 */
11/*************************************************************************** 8/***************************************************************************
@@ -17,621 +14,292 @@
17 * * 14 * *
18 ***************************************************************************/ 15 ***************************************************************************/
19 16
17
20#include "today.h" 18#include "today.h"
19#include "configwidget.h"
21 20
22#include <qpe/timestring.h>
23#include <qpe/config.h> 21#include <qpe/config.h>
24#include <qpe/qcopenvelope_qws.h> 22#include <qpe/qcopenvelope_qws.h>
25#include <qpe/resource.h> 23#include <qpe/resource.h>
26#include <qpe/contact.h>
27#include <qpe/global.h> 24#include <qpe/global.h>
28#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26#include <qpe/contact.h>
29 27
30#include <qdir.h> 28#include <qdir.h>
31#include <qfile.h> 29#include <qfile.h>
32#include <qdatetime.h>
33#include <qtextstream.h>
34#include <qcheckbox.h>
35#include <qspinbox.h>
36#include <qpushbutton.h> 30#include <qpushbutton.h>
37#include <qlabel.h> 31#include <qlabel.h>
38#include <qtimer.h> 32#include <qtimer.h>
39#include <qpixmap.h> 33#include <qpixmap.h>
40#include <qlayout.h> 34#include <qlayout.h>
41#include <qtl.h> 35#include <qtabwidget.h>
42 36#include <qdialog.h>
43 37
44#include <unistd.h>
45#include <stdlib.h>
46 38
47int MAX_LINES_TASK; 39static QValueList<TodayPlugin> pluginList;
48int MAX_CHAR_CLIP;
49int MAX_LINES_MEET;
50int SHOW_LOCATION;
51int SHOW_NOTES;
52// show only later dates
53int ONLY_LATER;
54int AUTOSTART;
55int NEW_START=1;
56QString AUTOSTART_TIMER;
57int NEXTDAYS=1;
58 40
59
60/* Constructs a Example which is a child of 'parent', with the
61 * name 'name' and widget flags set to 'f'
62 */
63Today::Today( QWidget* parent, const char* name, WFlags fl ) 41Today::Today( QWidget* parent, const char* name, WFlags fl )
64 : TodayBase( parent, name, fl ), AllDateBookEvents(NULL) { 42 : TodayBase( parent, name, fl ) {
65 QObject::connect( (QObject*)PushButton1, SIGNAL( clicked() ), this, SLOT(startConfig() ) ); 43
66 QObject::connect( (QObject*)TodoButton, SIGNAL( clicked() ), this, SLOT(startTodo() ) ); 44 QObject::connect( (QObject*)ConfigButton, SIGNAL( clicked() ), this, SLOT( startConfig() ) );
67 QObject::connect( (QObject*)DatesButton, SIGNAL( clicked() ), this, SLOT(startDatebook() ) ); 45 QObject::connect( (QObject*)OwnerField, SIGNAL( clicked() ), this, SLOT( editCard() ) );
68 QObject::connect( (QObject*)MailButton, SIGNAL( clicked() ), this, SLOT(startMail() ) );
69 QObject::connect( (QObject*)OwnerField, SIGNAL( clicked() ), this, SLOT(editCard() ) );
70 46
71#if defined(Q_WS_QWS) 47#if defined(Q_WS_QWS)
72#if !defined(QT_NO_COP) 48#if !defined(QT_NO_COP)
73 QCopChannel *todayChannel = new QCopChannel("QPE/Today" , this ); 49 QCopChannel *todayChannel = new QCopChannel( "QPE/Today" , this );
74 connect (todayChannel, SIGNAL( received(const QCString &, const QByteArray &)), 50 connect ( todayChannel, SIGNAL( received( const QCString &, const QByteArray &) ),
75 this, SLOT ( channelReceived(const QCString &, const QByteArray &)) ); 51 this, SLOT ( channelReceived( const QCString &, const QByteArray &) ) );
76#endif 52#endif
77#endif 53#endif
78 54
55 pluginLayout = 0l;
79 56
80 57 setOwnerField();
81 db = NULL; 58 init();
82 setOwnerField(); 59 refresh();
83 todo = new ToDoDB; 60 showMaximized();
84 draw();
85 getTodo();
86 autoStart();
87} 61}
88 62
89/* 63/**
90 * Qcop receive method. 64 * Qcop receive method.
91 */ 65 */
92void Today::channelReceived(const QCString &msg, const QByteArray & data) { 66void Today::channelReceived( const QCString &msg, const QByteArray & data ) {
93 QDataStream stream(data, IO_ReadOnly ); 67 QDataStream stream( data, IO_ReadOnly );
94 if ( msg == "message(QString)" ) { 68 if ( msg == "message(QString)" ) {
95 QString message; 69 QString message;
96 stream >> message; 70 stream >> message;
97 setOwnerField(message); 71 setOwnerField( message );
98 } 72 }
99
100} 73}
101 74
102/* 75/**
103 * Initialises the owner field with the default value, the username 76 * Initialises the owner field with the default value, the username
104 */ 77 */
105void Today::setOwnerField() { 78void Today::setOwnerField() {
106 QString file = Global::applicationFileName("addressbook", "businesscard.vcf"); 79 QString file = Global::applicationFileName( "addressbook", "businesscard.vcf" );
107 if (QFile::exists(file)) { 80 if ( QFile::exists( file ) ) {
108 Contact cont = Contact::readVCard(file)[0]; 81 Contact cont = Contact::readVCard( file )[0];
109 QString returnString = cont.fullName(); 82 QString returnString = cont.fullName();
110 OwnerField->setText( "<b>" +tr ("Owned by ") + returnString + "</b>"); 83 OwnerField->setText( "<b>" + tr ( "Owned by " ) + returnString + "</b>" );
111 } else { 84 } else {
112 OwnerField->setText( "<b>" + tr ("Please fill out the business card")+" </b>"); 85 OwnerField->setText( "<b>" + tr ( "Please fill out the business card" ) + " </b>" );
113 } 86 }
114} 87}
115 88
116/* 89/**
117 * Set the owner field with a given QString, for example per qcop. 90 * Set the owner field with a given QString, for example per qcop.
118 */ 91 */
119void Today::setOwnerField(QString &message) { 92void Today::setOwnerField( QString &message ) {
120 if (!message.isEmpty()) { 93 if ( !message.isEmpty() ) {
121 OwnerField->setText("<b>" + message + "</b>"); 94 OwnerField->setText( "<b>" + message + "</b>" );
122 }
123}
124
125/*
126 * Autostart, uses the new (opie only) autostart method in the launcher code.
127 * If registered against that today ist started on each resume.
128 */
129void Today::autoStart() {
130 Config cfg("today");
131 cfg.setGroup("Autostart");
132 int AUTOSTART = cfg.readNumEntry("autostart",1);
133// qDebug(QString("%1").arg(AUTOSTART));
134 if (AUTOSTART) {
135 QCopEnvelope e("QPE/System", "autoStart(QString,QString,QString)");
136 e << QString("add");
137 e << QString("today");
138 e << AUTOSTART_TIMER;
139 } else {
140 qDebug("Nun in else bei autostart");
141 QCopEnvelope e("QPE/System", "autoStart(QString,QString)");
142 e << QString("remove");
143 e << QString("today");
144 } 95 }
145} 96}
146 97
147/*
148 * Repaint method. Reread all fields.
149 */
150void Today::draw() {
151 init();
152 getDates();
153 getMail();
154
155 // if the todolist.xml file was not modified in between, do not parse it.
156 if (checkIfModified() || NEW_START==1) {
157 if (todo) delete todo;
158 todo = new ToDoDB;
159 getTodo();
160 }
161
162 // how often refresh
163 QTimer::singleShot( 20*1000, this, SLOT(draw() ) );
164}
165 98
166/* 99/**
167 * Check if the todolist.xml was modified (if there are new entries. 100 * Init stuff needed for today. Reads the config file.
168 * Returns true if it was modified.
169 */ 101 */
170bool Today::checkIfModified() { 102void Today::init() {
171 103
172 QDir dir; 104 QDate date = QDate::currentDate();
173 QString homedir = dir.homeDirPath (); 105 QString time = ( tr( date.toString() ) );
174 QString time;
175 106
176 Config cfg("today"); 107 DateLabel->setText( QString( "<font color=#FFFFFF>" + time + "</font>" ) );
177 cfg.setGroup("Files");
178 time = cfg.readEntry("todolisttimestamp", "");
179 108
180 QFileInfo file = (homedir +"/Applications/todolist/todolist.xml"); 109 // read config
181 QDateTime fileTime = file.lastModified(); 110 Config cfg( "today" );
182 if (time.compare(fileTime.toString()) == 0) { 111
183 return false; 112 cfg.setGroup( "Applets" );
184 } else { 113 m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' );
185 cfg.writeEntry("todolisttimestamp", fileTime.toString() );
186 cfg.write();
187 return true;
188 }
189} 114}
190 115
191 116
192/* 117/**
193 * Init stuff needed for today. Reads the config file. 118 * Load the plugins
194 */ 119 */
195void Today::init() { 120void Today::loadPlugins() {
196 QDate date = QDate::currentDate();
197 QString time = (tr( date.toString()) );
198
199 TextLabel1->setText(QString("<font color=#FFFFFF>" + time + "</font>"));
200
201 // read config
202 Config cfg("today");
203 cfg.setGroup("BaseConfig");
204
205 // -- config file section --
206 // how many lines should be showed in the task section
207 MAX_LINES_TASK = cfg.readNumEntry("maxlinestask",5);
208 // after how many chars should the be cut off on tasks and notes
209 MAX_CHAR_CLIP = cfg.readNumEntry("maxcharclip",40);
210 // how many lines should be showed in the datebook section
211 MAX_LINES_MEET = cfg.readNumEntry("maxlinesmeet",5);
212 // If location is to be showed too, 1 to activate it.
213 SHOW_LOCATION = cfg.readNumEntry("showlocation",1);
214 // if notes should be shown
215 SHOW_NOTES = cfg.readNumEntry("shownotes",0);
216 // should only later appointments be shown or all for the current day.
217 ONLY_LATER = cfg.readNumEntry("onlylater",1);
218
219 cfg.setGroup("Autostart");
220 AUTOSTART = cfg.readNumEntry("autostart",1);
221 AUTOSTART_TIMER = cfg.readEntry("autostartdelay", "0");
222
223 //db = new DateBookDB;
224}
225 121
226/* 122 QValueList<TodayPlugin>::Iterator tit;
227 * The method for the configuration dialog. 123 for ( tit = pluginList.begin(); tit != pluginList.end(); ++tit ) {
228 */ 124 (*tit).library->unload();
229void Today::startConfig() { 125 delete (*tit).library;
126 }
230 127
231 conf = new todayconfig ( this, "", true ); 128 QString path = QPEApplication::qpeDir() + "/plugins/today";
232 // read the config 129 QDir dir( path, "lib*.so" );
233 Config cfg("today"); 130
234 cfg.setGroup("BaseConfig"); 131 QStringList list = dir.entryList();
235 132 QStringList::Iterator it;
236 //init(); 133
237 134 uint count = 0;
238 conf->SpinBox1->setValue(MAX_LINES_MEET); 135 for ( it = list.begin(); it != list.end(); ++it ) {
239 // location show box 136 TodayPluginInterface *iface = 0;
240 conf->CheckBox1->setChecked(SHOW_LOCATION); 137 QLibrary *lib = new QLibrary( path + "/" + *it );
241 // notes show box 138
242 conf->CheckBox2->setChecked(SHOW_NOTES); 139 qDebug( "querying: %s", QString( path + "/" + *it ).latin1() );
243 // task lines 140 if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) {
244 conf->SpinBox2->setValue(MAX_LINES_TASK); 141 qDebug( "loading: %s", QString( path + "/" + *it ).latin1() );
245 // clip when? 142 qDebug( QString(*it).latin1() );
246 conf->SpinBox7->setValue(MAX_CHAR_CLIP); 143 TodayPlugin plugin;
247 // only later 144 plugin.library = lib;
248 conf->CheckBox3->setChecked(ONLY_LATER); 145 plugin.iface = iface;
249 // if today should be autostarted 146 plugin.name = QString(*it).latin1();
250 conf->CheckBoxAuto->setChecked(AUTOSTART); 147
251 // autostart only if device has been suspended for X minutes 148 if ( m_excludeApplets.grep( *it ).isEmpty() ) {
252 conf->SpinBoxTime->setValue( AUTOSTART_TIMER.toInt() ); 149 plugin.active = true;
253 150 } else {
254 conf->exec(); 151 plugin.active = false;
255 152 }
256 int maxlinestask = conf->SpinBox2->value(); 153 plugin.guiPart = plugin.iface->guiPart();
257 int maxmeet = conf->SpinBox1->value(); 154 pluginList.append( plugin );
258 int location = conf->CheckBox1->isChecked(); 155 count++;
259 int notes = conf->CheckBox2->isChecked(); 156 } else {
260 int maxcharclip = conf->SpinBox7->value(); 157 qDebug( "could not recognize %s", QString( path + "/" + *it ).latin1() );
261 int onlylater = conf->CheckBox3->isChecked(); 158 delete lib;
262 int autostart = conf->CheckBoxAuto->isChecked(); 159 }
263 int autostartdelay = conf->SpinBoxTime->value(); 160 }
264
265
266 cfg.writeEntry("maxlinestask",maxlinestask);
267 cfg.writeEntry("maxcharclip", maxcharclip);
268 cfg.writeEntry("maxlinesmeet",maxmeet);
269 cfg.writeEntry("showlocation",location);
270 cfg.writeEntry("shownotes", notes);
271 cfg.writeEntry("onlylater", onlylater);
272 cfg.setGroup("Autostart");
273 cfg.writeEntry("autostart", autostart);
274 cfg.writeEntry("autostartdelay", autostartdelay);
275
276 // sync it to "disk"
277 cfg.write();
278 NEW_START=1;
279 draw();
280 AUTOSTART=autostart;
281 autoStart();
282} 161}
283 162
284 163
285/* 164/**
286 * Get all events that are in the datebook xml file for today 165 * Repaint method. Reread all fields.
287 */ 166 */
288void Today::getDates() { 167void Today::draw() {
289 QDate date = QDate::currentDate();
290
291 if (AllDateBookEvents) delete AllDateBookEvents;
292 AllDateBookEvents = new QWidget( );
293 QVBoxLayout* layoutDates = new QVBoxLayout(AllDateBookEvents);
294
295 if (db) {
296 delete db;
297 }
298 db = new DateBookDB;
299
300 QValueList<EffectiveEvent> list = db->getEffectiveEvents(date, date);
301
302 qBubbleSort(list);
303 // printf("Get dates\n");
304
305 Config config( "qpe" );
306 // if 24 h format
307 //bool ampm = config.readBoolEntry( "AMPM", TRUE );
308
309 int count=0;
310
311 if ( list.count() > 0 ) {
312
313 for ( QValueList<EffectiveEvent>::ConstIterator it=list.begin();
314 it!=list.end(); ++it ) {
315
316
317 if ( count <= MAX_LINES_MEET ) {
318 168
319 QTime time = QTime::currentTime(); 169 if ( pluginLayout ) {
170 delete pluginLayout;
171 }
172 pluginLayout = new QVBoxLayout( layout );
320 173
321 if (!ONLY_LATER) { 174 if ( pluginList.count() == 0 ) {
322 count++; 175 QLabel *noPlugins = new QLabel( this );
323 DateBookEvent *l=new DateBookEvent(*it, AllDateBookEvents, SHOW_LOCATION, SHOW_NOTES); 176 noPlugins->setText( tr( "No plugins found" ) );
324 layoutDates->addWidget(l); 177 layout->addWidget( noPlugins );
325 connect (l, SIGNAL(editEvent(const Event &)), 178 return;
326 this, SLOT(editEvent(const Event &))); 179 }
327 } else if ((time.toString() <= TimeString::dateString((*it).event().end())) ) {
328 count++;
329 180
330 // show only later appointments 181 uint count = 0;
331 DateBookEventLater *l=new DateBookEventLater(*it, AllDateBookEvents, SHOW_LOCATION, SHOW_NOTES); 182 TodayPlugin plugin;
332 layoutDates->addWidget(l); 183 for ( uint i = 0; i < pluginList.count(); i++ ) {
333 connect (l, SIGNAL(editEvent(const Event &)), 184 plugin = pluginList[i];
334 this, SLOT(editEvent(const Event &))); 185
186 if ( plugin.active ) {
187 QHBoxLayout* plugLayout = new QHBoxLayout( this );
188 QPixmap plugPix;
189 plugPix.convertFromImage( Resource::loadImage( plugin.guiPart->pixmapNameWidget() ).smoothScale( 18, 18 ), 0 );
190 OClickableLabel* plugIcon = new OClickableLabel( this );
191 plugIcon->setPixmap( plugPix );
192 QScrollView* sv = new QScrollView( this );
193 QWidget* plugWidget = plugin.guiPart->widget( sv->viewport() );
194 // plugWidget->reparent( sv->viewport(), QPoint( 0, 0 ) );
195 sv->setMinimumHeight( plugin.guiPart->minHeight() );
196 //sv->setMaximumHeight( plugin.guiPart->maxHeight() );
197
198 sv->setResizePolicy( QScrollView::AutoOneFit );
199 sv->setHScrollBarMode( QScrollView::AlwaysOff );
200 sv->setFrameShape( QFrame::NoFrame );
201 sv->addChild( plugWidget );
202
203 plugLayout->addWidget( plugIcon, 0, AlignTop );
204 plugLayout->addWidget( sv, 0, AlignTop );
205 plugLayout->setStretchFactor( plugIcon, 1 );
206 plugLayout->setStretchFactor( sv, 9 );
207 pluginLayout->addLayout( plugLayout );
208 count++;
335 } 209 }
336 }
337 } 210 }
338 if (ONLY_LATER && count==0) {
339 QLabel* noMoreEvents = new QLabel(AllDateBookEvents);
340 noMoreEvents->setText(tr("No more appointments today"));
341 layoutDates->addWidget(noMoreEvents);
342 }
343 } else {
344 QLabel* noEvents = new QLabel(AllDateBookEvents);
345 noEvents->setText(tr("No appointments today"));
346 layoutDates->addWidget(noEvents);
347 }
348 211
349 layoutDates->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding)); 212 if ( count == 0 ) {
350 sv1->addChild(AllDateBookEvents); 213 QLabel *noPluginsActive = new QLabel( this );
351 AllDateBookEvents->show(); 214 noPluginsActive->setText( tr( "No plugins activated" ) );
352} 215 layout->addWidget( noPluginsActive );
216 }
353 217
218 layout->addItem( new QSpacerItem( 1,1, QSizePolicy::Minimum, QSizePolicy::Expanding ) );
354 219
355void Today::getMail() {
356 Config cfg("opiemail");
357 cfg.setGroup("today");
358 220
359 // how many lines should be showed in the task section 221 // how often refresh - later have qcop update calls in *db
360 int NEW_MAILS = cfg.readNumEntry("newmails",0); 222 // QTimer::singleShot( 20*1000, this, SLOT( draw() ) );
361 int OUTGOING = cfg.readNumEntry("outgoing",0); 223}
362 224
363 QString output = tr("<b>%1</b> new mail(s), <b>%2</b> outgoing").arg(NEW_MAILS).arg(OUTGOING);
364 225
365 MailField->setText(output); 226void Today::refresh() {
227 loadPlugins();
228 draw();
229 qDebug( "redraw" );
230// QTimer::singleShot( 30*1000, this, SLOT( refresh() ) );
366} 231}
367 232
368 233
369/* 234/**
370 * Get the todos 235 * The method for the configuration dialog.
371 */ 236 */
372void Today::getTodo() { 237void Today::startConfig() {
373 238 conf = new TodayConfig ( this, "", true );
374 QString output; 239
375 QString tmpout; 240 uint count = 0;
376 int count = 0; 241 TodayPlugin plugin;
377 int ammount = 0; 242
378 243 QList<ConfigWidget> configWidgetList;
379 // get overdue todos first 244 for ( uint i = 0; i < pluginList.count(); i++ ) {
380 QValueList<ToDoEvent> overDueList = todo->overDue(); 245 plugin = pluginList[i];
381 qBubbleSort(overDueList);
382 for ( QValueList<ToDoEvent>::Iterator it=overDueList.begin();
383 it!=overDueList.end(); ++it ) {
384 if (!(*it).isCompleted() && ( ammount < MAX_LINES_TASK) ) {
385 QString desc = (*it).summary();
386 if( desc.isEmpty() ) {
387 desc = (*it).description();
388 }
389 tmpout += "<font color=#e00000><b>-" + desc.mid(0, MAX_CHAR_CLIP) + "</b></font><br>";
390
391 ammount++;
392 }
393 }
394 246
395 // get total number of still open todos 247 // load the config widgets in the tabs
396 QValueList<ToDoEvent> openTodo = todo->rawToDos(); 248 if ( plugin.guiPart->configWidget( this ) != 0l ) {
397 qBubbleSort(openTodo); 249 ConfigWidget* widget = plugin.guiPart->configWidget( this );
398 for ( QValueList<ToDoEvent>::Iterator it=openTodo.begin(); 250 widget->reparent( conf , QPoint( 0,0 ) );
399 it!=openTodo.end(); ++it ) { 251 configWidgetList.append( widget );
400 if (!(*it).isCompleted()){ 252 conf->TabWidget3->insertTab( widget, plugin.guiPart->appName() );
401 count +=1;
402 // not the overdues, we allready got them, and not if we are
403 // over the maxlines
404 if (!(*it).isOverdue() && ( ammount < MAX_LINES_TASK) ) {
405 QString desc = (*it).summary();
406 if( desc.isEmpty() ) {
407 desc = (*it).description();
408 }
409 tmpout += "<b>-</b>" + desc.mid(0, MAX_CHAR_CLIP) + "<br>";
410 ammount++;
411 }
412 } 253 }
254 // set the order/activate tab
255 conf->pluginManagement( plugin.name, plugin.guiPart->pluginName(),
256 Resource::loadPixmap( plugin.guiPart->pixmapNameWidget() ) );
257 count++;
413 } 258 }
414 259
260 conf->showMaximized();
415 261
416 if (count > 0) { 262 if ( conf->exec() == QDialog::Accepted ) {
417 if( count == 1 ) { 263 ConfigWidget *confWidget;
418 output = tr("There is <b> 1</b> active task: <br>" ); 264 for ( confWidget=configWidgetList.first(); confWidget != 0;
419 } else { 265 confWidget = configWidgetList.next() ) {
420 output = tr("There are <b> %1</b> active tasks: <br>").arg(count); 266 confWidget->writeConfig();
421 } 267 }
422 output += tmpout; 268 conf->writeConfig();
423 } else {
424 output = tr("No active tasks");
425 }
426 269
427 TodoField->setText(tr(output)); 270 init();
271 loadPlugins();
272 draw();
273 }
274 delete conf;
428} 275}
429 276
430 277
431void Today::startAddressbook() { 278void Today::startAddressbook() {
432 QCopEnvelope e("QPE/System", "execute(QString)"); 279 QCopEnvelope e( "QPE/System", "execute(QString)" );
433 e << QString("addressbook"); 280 e << QString( "addressbook" );
434} 281}
435 282
436extern QPEApplication *todayApp;
437 283
438/* 284/**
439 * launch addressbook (personal card) 285 * launch addressbook (personal card)
440 */ 286 */
441void Today::editCard() { 287void Today::editCard() {
442
443 startAddressbook(); 288 startAddressbook();
444 289 while( !QCopChannel::isRegistered( "QPE/Addressbook" ) ) {
445 while( !QCopChannel::isRegistered("QPE/Addressbook")) todayApp->processEvents(); 290 qApp->processEvents();
446 QCopEnvelope v("QPE/Addressbook", "editPersonalAndClose()"); 291 }
447} 292 QCopEnvelope v( "QPE/Addressbook", "editPersonalAndClose()" );
448
449/*
450 * launches datebook
451 */
452void Today::startDatebook() {
453 QCopEnvelope e("QPE/System", "execute(QString)");
454 e << QString("datebook");
455}
456
457/*
458 * starts the edit dialog as known from datebook
459 */
460void Today::editEvent(const Event &e) {
461 startDatebook();
462
463 while(!QCopChannel::isRegistered("QPE/Datebook")) todayApp->processEvents();
464 QCopEnvelope env("QPE/Datebook", "editEvent(int)");
465 env << e.uid();
466}
467
468/*
469 * launches todolist
470 */
471void Today::startTodo() {
472 QCopEnvelope e("QPE/System", "execute(QString)");
473 e << QString("todolist");
474} 293}
475 294
476/* 295/*
477 * launch opiemail 296 * launches an App
478 */ 297 */
479void Today::startMail() { 298void Today::launchApp( QString appName ) {
480 QCopEnvelope e("QPE/System", "execute(QString)"); 299 QCopEnvelope e( "QPE/System", "execute(QString)" );
481 e << QString("opiemail"); 300 e << QString( appName );
482//Right now start both, maybe decide which to rum via config file ..
483 QCopEnvelope f("QPE/System", "execute(QString)");
484 f << QString("qtmail");
485} 301}
486 302
487
488Today::~Today() { 303Today::~Today() {
489} 304}
490 305
491/*
492 * Gets the events for the current day, if it should get all dates
493 */
494DateBookEvent::DateBookEvent(const EffectiveEvent &ev,
495 QWidget* parent,
496 int SHOW_LOCATION,
497 int SHOW_NOTES,
498 const char* name,
499 WFlags fl) :
500 OClickableLabel(parent,name,fl), event(ev) {
501
502 QString msg;
503 //QTime time = QTime::currentTime();
504
505 Config config( "qpe" );
506 config.setGroup( "Time" );
507 // if 24 h format
508 ampm = config.readBoolEntry( "AMPM", TRUE );
509
510
511 if (!ONLY_LATER) {
512 msg += "<B>" + (ev).description() + "</B>";
513 if ( (ev).event().hasAlarm() ) {
514 msg += " <b>[with alarm]</b>";
515 }
516 // include location or not
517 if (SHOW_LOCATION == 1) {
518 msg += "<BR><i>" + (ev).location() + "</i>";
519 }
520
521 if ( (TimeString::timeString(QTime((ev).event().start().time()) ) == "00:00") && (TimeString::timeString(QTime((ev).event().end().time()) ) == "23:59") ) {
522 msg += "<br>All day";
523 } else {
524 // start time of event
525 msg += "<br>" + ampmTime(QTime((ev).event().start().time()) )
526 // end time of event
527 + "<b> - </b>" + ampmTime(QTime((ev).event().end().time()) );
528 }
529
530 // include possible note or not
531 if (SHOW_NOTES == 1) {
532 msg += "<br> <i>note</i>:" +((ev).notes()).mid(0, MAX_CHAR_CLIP);
533 }
534 }
535 setText(msg);
536 connect(this, SIGNAL(clicked()), this, SLOT(editMe()));
537 setAlignment( int( QLabel::WordBreak | QLabel::AlignLeft ) );
538}
539
540
541QString DateBookEvent::ampmTime(QTime tm) {
542
543 QString s;
544 if( ampm ) {
545 int hour = tm.hour();
546 if (hour == 0)
547 hour = 12;
548 if (hour > 12)
549 hour -= 12;
550 s.sprintf( "%2d:%02d %s", hour, tm.minute(),
551 (tm.hour() >= 12) ? "PM" : "AM" );
552 return s;
553 } else {
554 s.sprintf( "%2d:%02d", tm.hour(), tm.minute() );
555 return s;
556 }
557
558}
559
560
561DateBookEventLater::DateBookEventLater(const EffectiveEvent &ev,
562 QWidget* parent,
563 int SHOW_LOCATION,
564 int SHOW_NOTES,
565 const char* name,
566 WFlags fl) :
567 OClickableLabel(parent,name,fl), event(ev) {
568
569 QString msg;
570 QTime time = QTime::currentTime();
571
572 Config config( "qpe" );
573 config.setGroup( "Time" );
574 // if 24 h format
575 ampm = config.readBoolEntry( "AMPM", TRUE );
576
577
578 if ((time.toString() <= TimeString::dateString((ev).event().end())) ) {
579 // show only later appointments
580 msg += "<B>" + (ev).description() + "</B>";
581 if ( (ev).event().hasAlarm() ) {
582 msg += " <b>[with alarm]</b>";
583 }
584 // include location or not
585 if (SHOW_LOCATION == 1) {
586 msg += "<BR><i>" + (ev).location() + "</i>";
587 }
588
589 if ( (TimeString::timeString(QTime((ev).event().start().time()) ) == "00:00") && (TimeString::timeString(QTime((ev).event().end().time()) ) == "23:59") ) {
590 msg += "<br>All day";
591 } else {
592 // start time of event
593 msg += "<br>" + ampmTime(QTime((ev).event().start().time()) )
594 // end time of event
595 + "<b> - </b>" + ampmTime(QTime((ev).event().end().time()) );
596 }
597 // include possible note or not
598 if (SHOW_NOTES == 1) {
599 msg += "<br> <i>note</i>:" +((ev).notes()).mid(0, MAX_CHAR_CLIP);
600 }
601 }
602
603 setText(msg);
604 connect(this, SIGNAL(clicked()), this, SLOT(editMe()));
605 setAlignment( int( QLabel::WordBreak | QLabel::AlignLeft ) );
606}
607
608
609QString DateBookEventLater::ampmTime(QTime tm) {
610
611 QString s;
612 if( ampm ) {
613 int hour = tm.hour();
614 if (hour == 0)
615 hour = 12;
616 if (hour > 12)
617 hour -= 12;
618 s.sprintf( "%2d:%02d %s", hour, tm.minute(),
619 (tm.hour() >= 12) ? "PM" : "AM" );
620 return s;
621 } else {
622 s.sprintf( "%2d:%02d", tm.hour(), tm.minute() );
623 return s;
624 }
625
626}
627
628
629void DateBookEvent::editMe() {
630 emit editEvent(event.event());
631}
632
633void DateBookEventLater::editMe() {
634 emit editEvent(event.event());
635}
636
637
diff --git a/core/pim/today/today.h b/core/pim/today/today.h
index f28c029..ca17020 100644
--- a/core/pim/today/today.h
+++ b/core/pim/today/today.h
@@ -1,11 +1,8 @@
1/* 1/*
2 * today.h 2 * today.h
3 * 3 *
4 * ---------------------
5 *
6 * begin : Sun 10 17:20:00 CEST 2002
7 * copyright : (c) 2002 by Maximilian Reiß 4 * copyright : (c) 2002 by Maximilian Reiß
8 * email : max.reiss@gmx.de 5 * email : harlekin@handhelds.org
9 * 6 *
10 */ 7 */
11/*************************************************************************** 8/***************************************************************************
@@ -21,21 +18,31 @@
21#ifndef TODAY_H 18#ifndef TODAY_H
22#define TODAY_H 19#define TODAY_H
23 20
24#include <qpe/datebookdb.h>
25#include <qpe/event.h>
26
27#include <opie/tododb.h> 21#include <opie/tododb.h>
28#include <opie/oclickablelabel.h>
29 22
30#include <qdatetime.h> 23#include <qdatetime.h>
31#include <qlist.h> 24#include <qlist.h>
32 25
26#include <qpe/qlibrary.h>
27#include <qpe/event.h>
28
33#include "todayconfig.h" 29#include "todayconfig.h"
34#include "todaybase.h" 30#include "todaybase.h"
31#include "todayplugininterface.h"
35 32
36class QVBoxLayout; 33class QVBoxLayout;
37 34
35struct TodayPlugin {
36 QLibrary *library;
37 TodayPluginInterface *iface;
38 TodayPluginObject *guiPart;
39 QString name;
40 bool active;
41 int pos;
42};
43
38class Today : public TodayBase { 44class Today : public TodayBase {
45
39 Q_OBJECT 46 Q_OBJECT
40 47
41 public: 48 public:
@@ -44,75 +51,31 @@ class Today : public TodayBase {
44 51
45 private slots: 52 private slots:
46 void startConfig(); 53 void startConfig();
47 void startTodo();
48 void startDatebook();
49 void startAddressbook(); 54 void startAddressbook();
50 void startMail(); 55 void launchApp( QString appName );
51 void editCard(); 56 void editCard();
52 void draw(); 57 void draw();
53 void editEvent(const Event &e); 58 void refresh();
54 private: 59
60private:
55 void init(); 61 void init();
56 void getDates();
57 void getTodo();
58 void getMail();
59 void autoStart();
60 bool checkIfModified();
61 void setOwnerField(); 62 void setOwnerField();
62 void setOwnerField(QString &string); 63 void setOwnerField(QString &string);
63 private slots: 64 void loadPlugins();
65
66private slots:
64 void channelReceived(const QCString &msg, const QByteArray & data); 67 void channelReceived(const QCString &msg, const QByteArray & data);
65 68
66 private: 69 private:
67 DateBookDB *db; 70 TodayConfig *conf;
68 ToDoDB *todo; 71 QStringList m_excludeApplets;
69 todayconfig *conf;
70 QWidget* AllDateBookEvents;
71 //Config cfg;
72 int MAX_LINES_TASK;
73 int MAX_CHAR_CLIP;
74 int MAX_LINES_MEET;
75 int SHOW_LOCATION;
76 int SHOW_NOTES;
77};
78 72
79class DateBookEvent: public OClickableLabel { 73 QVBoxLayout *pluginLayout;
80 Q_OBJECT
81public:
82 DateBookEvent(const EffectiveEvent &ev,
83 QWidget* parent = 0,
84 int SHOW_LOCATION = 0,
85 int SHOW_NOTES = 0,
86 const char* name = 0,
87 WFlags fl = 0);
88signals:
89 void editEvent(const Event &e);
90private slots:
91 void editMe();
92private:
93 QString ampmTime(QTime);
94 const EffectiveEvent event;
95 bool ampm;
96};
97 74
98class DateBookEventLater: public OClickableLabel { 75 // QString m_autoStartTimer;
99 Q_OBJECT 76 int m_newStart;
100public: 77 // int m_autoStart;
101 DateBookEventLater(const EffectiveEvent &ev, 78 int m_maxCharClip;
102 QWidget* parent = 0,
103 int SHOW_LOCATION = 0,
104 int SHOW_NOTES = 0,
105 const char* name = 0,
106 WFlags fl = 0);
107signals:
108 void editEvent(const Event &e);
109private slots:
110 void editMe();
111private:
112 QString ampmTime(QTime);
113 const EffectiveEvent event;
114 bool ampm;
115}; 79};
116 80
117#endif // TODAY_H 81#endif
118
diff --git a/core/pim/today/today.pro b/core/pim/today/today.pro
index 46e5d2a..8596da3 100644
--- a/core/pim/today/today.pro
+++ b/core/pim/today/today.pro
@@ -1,6 +1,6 @@
1 TEMPLATE= app 1 TEMPLATE= app
2 #CONFIG = qt warn_on debug 2 CONFIG = qt warn_on debug
3 CONFIG = qt warn_on release 3 #CONFIG = qt warn_on release
4 HEADERS = today.h todaybase.h todayconfig.h 4 HEADERS = today.h todaybase.h todayconfig.h
5 SOURCES = main.cpp today.cpp todaybase.cpp todayconfig.cpp 5 SOURCES = main.cpp today.cpp todaybase.cpp todayconfig.cpp
6 INCLUDEPATH+= $(OPIEDIR)/include 6 INCLUDEPATH+= $(OPIEDIR)/include
diff --git a/core/pim/today/todaybase.cpp b/core/pim/today/todaybase.cpp
index bc1651d..74f4fa0 100644
--- a/core/pim/today/todaybase.cpp
+++ b/core/pim/today/todaybase.cpp
@@ -1,10 +1,8 @@
1/* 1/*
2 * todaybase.cpp * 2 * todaybase.cpp
3 * ---------------------
4 * 3 *
5 * begin : Sun 10 17:20:00 CEST 2002
6 * copyright : (c) 2002 by Maximilian Reiß 4 * copyright : (c) 2002 by Maximilian Reiß
7 * email : max.reiss@gmx.de 5 * email : harlekin@handhelds.org
8 * 6 *
9 */ 7 */
10/*************************************************************************** 8/***************************************************************************
@@ -20,56 +18,35 @@
20 18
21#include <qframe.h> 19#include <qframe.h>
22#include <qlabel.h> 20#include <qlabel.h>
23#include <qpushbutton.h>
24#include <qlayout.h>
25#include <qvariant.h>
26#include <qwhatsthis.h>
27#include <qimage.h> 21#include <qimage.h>
28#include <qpixmap.h> 22#include <qpixmap.h>
29#include <qscrollview.h>
30#include <qvbox.h>
31#include <qapplication.h> 23#include <qapplication.h>
32 24
33#include <qpe/resource.h> 25#include <qpe/resource.h>
34 26
35/* 27
36 * Constructs a TodayBase which is a child of 'parent', with the
37 * name 'name' and widget flags set to 'f'
38 */
39TodayBase::TodayBase( QWidget* parent, const char* name, WFlags fl ) 28TodayBase::TodayBase( QWidget* parent, const char* name, WFlags fl )
40 : QWidget( parent, name, fl ) 29 : QWidget( parent, name, fl ) {
41{ 30
42 QPixmap logo = Resource::loadPixmap( "today/today_logo"); // logo 31 QPixmap logo = Resource::loadPixmap( "today/today_logo"); // logo
43 QPixmap datebook = Resource::loadPixmap("DateBook"); // datebook
44 QPixmap todo = Resource::loadPixmap( "TodoList" ); // todo
45 QPixmap config = Resource::loadPixmap( "today/config" ); // config icon
46 QPixmap mail = Resource::loadPixmap( "today/mail" ); // mail icon
47 QPixmap opiezilla = Resource::loadPixmap("today/opiezilla" ); //the opiezilla 32 QPixmap opiezilla = Resource::loadPixmap("today/opiezilla" ); //the opiezilla
33 QPixmap config = Resource::loadPixmap( "today/config" ); // config icon
48 34
49 QWidget *d = QApplication::desktop(); 35 layout = new QVBoxLayout( this );
50 int w=d->width();
51 int h=d->height();
52 resize( w , h );
53
54 // hehe, qt is ...
55 getridoffuckingstrippeldlinesbutton = new QPushButton (this, "asdfsad" );
56 getridoffuckingstrippeldlinesbutton->setGeometry( QRect( -5, 10, 0, 0 ) );
57
58 QVBoxLayout * layout = new QVBoxLayout(this);
59 36
60 QPalette pal = this->palette(); 37 QPalette pal = this->palette();
61 QColor col = pal.color(QPalette::Active, QColorGroup::Background); 38 QColor col = pal.color( QPalette::Active, QColorGroup::Background );
62 pal.setColor(QPalette::Active, QColorGroup::Button, col); 39 pal.setColor( QPalette::Active, QColorGroup::Button, col );
63 pal.setColor(QPalette::Inactive, QColorGroup::Button, col); 40 pal.setColor( QPalette::Inactive, QColorGroup::Button, col );
64 pal.setColor(QPalette::Normal, QColorGroup::Button, col); 41 pal.setColor( QPalette::Normal, QColorGroup::Button, col );
65 pal.setColor(QPalette::Disabled, QColorGroup::Button, col); 42 pal.setColor( QPalette::Disabled, QColorGroup::Button, col );
66 this->setPalette(pal); 43 this->setPalette( pal );
67 44
68 // --- logo Section --- 45 // --- logo Section ---
69 QPalette pal2; 46 QPalette pal2;
70 QColorGroup cg; 47 QColorGroup cg;
71 cg.setColor( QColorGroup::Text, white ); 48 cg.setColor( QColorGroup::Text, white );
72 cg.setBrush( QColorGroup::Background, QBrush( QColor( 238, 238, 230), logo ) ); 49 cg.setBrush( QColorGroup::Background, QBrush( QColor( 238, 238, 230 ), logo ) );
73 pal2.setActive( cg ); 50 pal2.setActive( cg );
74 // today logo 51 // today logo
75 Frame = new QLabel( this, "Frame" ); 52 Frame = new QLabel( this, "Frame" );
@@ -77,135 +54,54 @@ TodayBase::TodayBase( QWidget* parent, const char* name, WFlags fl )
77 Frame->setFrameShape( QFrame::StyledPanel ); 54 Frame->setFrameShape( QFrame::StyledPanel );
78 Frame->setFrameShadow( QFrame::Raised ); 55 Frame->setFrameShadow( QFrame::Raised );
79 Frame->setLineWidth( 0 ); 56 Frame->setLineWidth( 0 );
80 Frame->setMaximumHeight(50); 57 Frame->setMaximumHeight( 50 );
81 Frame->setMinimumHeight(50); 58 Frame->setMinimumHeight( 50 );
82 59
83 // Today text 60 // Today text
84 QLabel* TodayLabel = new QLabel( Frame, "TodayText" ); 61 QLabel* TodayLabel = new QLabel( Frame, "TodayText" );
85 TodayLabel->setGeometry( QRect( 10, 0, 168, 40 ) ); 62 TodayLabel->setGeometry( QRect( 10, 0, 168, 40 ) );
86 QFont TodayLabel_font( TodayLabel->font() ); 63 QFont TodayLabel_font( TodayLabel->font() );
87 TodayLabel_font.setBold( TRUE ); 64 TodayLabel_font.setBold( TRUE );
88 TodayLabel_font.setPointSize(40); 65 TodayLabel_font.setPointSize( 40 );
89 TodayLabel->setFont( TodayLabel_font ); 66 TodayLabel->setFont( TodayLabel_font );
90 TodayLabel->setBackgroundOrigin( QLabel::ParentOrigin ); 67 TodayLabel->setBackgroundOrigin( QLabel::ParentOrigin );
91 TodayLabel->setText("<font color=#FFFFFF>" + tr("Today") +"</font>"); 68 TodayLabel->setText( "<font color=#FFFFFF>" + tr("Today²") +"</font>" );
69
70 // date
71 DateLabel = new QLabel( Frame, "TextLabel1" );
72 DateLabel->setGeometry( QRect( 10, 35, 168, 12 ) );
73 QFont DateLabel_font( DateLabel->font() );
74 DateLabel_font.setBold( TRUE );
75 DateLabel->setFont( DateLabel_font );
76 DateLabel->setBackgroundOrigin( QLabel::ParentOrigin );
77 DateLabel->setTextFormat( RichText );
92 78
93 // Opiezilla 79 // Opiezilla
94 QLabel* Opiezilla = new QLabel( Frame, "OpieZilla"); 80 QLabel* Opiezilla = new QLabel( Frame, "OpieZilla");
95 Opiezilla->setPixmap( opiezilla ); 81 Opiezilla->setPixmap( opiezilla );
96 Opiezilla->setGeometry( this->width()-50 ,1, 45, 47); 82 Opiezilla->setGeometry( QApplication::desktop()->width()-50 ,1, 45, 47);
97 Opiezilla->setBackgroundOrigin( QLabel::ParentOrigin ); 83 Opiezilla->setBackgroundOrigin( QLabel::ParentOrigin );
98 84
99 // date 85 // Ownerfield
100 TextLabel1 = new QLabel( Frame, "TextLabel1" ); 86 OwnerField = new OClickableLabel( this , "Owner" );
101 TextLabel1->setGeometry( QRect( 10, 35, 168, 12 ) ); 87 OwnerField->setGeometry( QRect( 0,0, this->width(), 12 ));
102 QFont TextLabel1_font( TextLabel1->font() ); 88 OwnerField->setAlignment( int (QLabel::AlignTop | QLabel::AlignLeft ) );
103 TextLabel1_font.setBold( TRUE );
104 TextLabel1->setFont( TextLabel1_font );
105 TextLabel1->setBackgroundOrigin( QLabel::ParentOrigin );
106 TextLabel1->setTextFormat( RichText );
107
108 OwnerField = new OClickableLabel(this , "Owner" );
109 OwnerField->setGeometry(QRect(0,0, this->width(), 12 ));
110 OwnerField->setAlignment(int (QLabel::AlignTop | QLabel::AlignLeft ) );
111 OwnerField->setMaximumHeight(12); 89 OwnerField->setMaximumHeight(12);
112 90
113 // --- dates section --- 91 // config
114 Frame4 = new QFrame( this, "Frame4" ); 92 ConfigButton = new OClickableLabel ( Frame, "PushButton1" );
115// Frame4->setPalette( pal ); 93 ConfigButton->setGeometry( QRect( QApplication::desktop()->width()-80, 30, 25, 21 ) );
116 Frame4->setFrameShape( QScrollView::StyledPanel ); 94 ConfigButton->setPixmap( config );
117 Frame4->setFrameShadow( QScrollView::Sunken ); 95 ConfigButton->setBackgroundOrigin( QLabel::ParentOrigin );
118 Frame4->setBackgroundOrigin( QScrollView::ParentOrigin );
119 Frame4->setFrameStyle( QFrame::NoFrame );
120 Frame4->setGeometry (QRect( 0, 8, this->width() , this->height()) );
121
122 sv1 = new QScrollView( Frame4 );
123 sv1->setResizePolicy(QScrollView::AutoOneFit);
124 sv1->setHScrollBarMode( QScrollView::AlwaysOff );
125 // need to find a better way!!!
126 sv1->setGeometry (QRect( 40, 2, Frame4->width()-40 , (Frame4->height()/3)+20 ) );
127 sv1->setFrameShape(QFrame::NoFrame);
128
129 DatesButton = new QPushButton (Frame4, "DatesButton" );
130 DatesButton->setGeometry( QRect( 2, 4, 36, 32 ) );
131 DatesButton->setBackgroundOrigin( QPushButton::WidgetOrigin );
132 DatesButton->setPalette( pal );
133 DatesButton->setPixmap( datebook );
134 DatesButton->setFlat( TRUE );
135
136 // --- mail section ---)
137 MailFrame = new QFrame( this ,"MailFrame" );
138 MailFrame->setBackgroundOrigin( QScrollView::ParentOrigin );
139 MailFrame->setGeometry (QRect( 0, 0, this->width() , 15) );
140 MailFrame->setFrameStyle( QFrame::NoFrame );
141
142 QFrame* Line1 = new QFrame( MailFrame);
143 Line1->setGeometry( QRect( -5, 0, MailFrame->width()+5, 5 ) );
144 Line1->setFrameStyle( QFrame::HLine | QFrame::Sunken );
145
146 MailButton = new QPushButton (MailFrame, "MailButton" );
147 MailButton->setGeometry( QRect( 2, 3, 36, 19 ) );
148 MailButton->setPalette( pal );
149 MailButton->setPixmap( mail );
150 MailButton->setFlat( TRUE );
151
152 MailField = new QLabel( MailFrame, "MailField" );
153 MailField->setGeometry( QRect( 40, 4, MailFrame->width(), 12) );
154 MailField->setText( tr( "Opiemail not installed" ) );
155 MailField->setAlignment( int( QLabel::AlignTop | QLabel::AlignLeft ) );
156 MailField->setMaximumHeight(40);
157 MailField->setMinimumHeight(15);
158
159 // --- todo section --
160 Frame15 = new QFrame( this, "Frame15" );
161 Frame15->setFrameStyle( QFrame::NoFrame );
162 Frame15->setGeometry (QRect( 40, 3, this->width() , this->height()) );
163
164 QFrame* Line2 = new QFrame( Frame15);
165 Line2->setGeometry( QRect( -5, 0, MailFrame->width()+5, 5 ) );
166 Line2->setFrameStyle( QFrame::HLine | QFrame::Sunken );
167
168 TodoButton = new QPushButton (Frame15, "TodoButton" );
169 TodoButton->setGeometry( QRect( 2, 4, 36, 32 ) );
170 TodoButton->setPalette( pal );
171 TodoButton->setPixmap( todo );
172 TodoButton->setFlat( TRUE );
173
174 QScrollView* sv2 = new QScrollView( Frame15 );
175 sv2->setResizePolicy(QScrollView::AutoOneFit);
176 sv2->setHScrollBarMode( QScrollView::AlwaysOff );
177 sv2->setGeometry (QRect( 40, 3, Frame15->width()-40 , (Frame15->height()/3) ) );
178 sv2->setFrameShape(QFrame::NoFrame);
179
180 TodoField = new QLabel( sv2->viewport(), "TodoField" );
181 sv2->addChild(TodoField);
182 TodoField->setFrameShadow( QLabel::Plain );
183 //TodoField->setText( tr( "No current todos" ) );
184 TodoField->setAlignment( int( QLabel::AlignTop | QLabel::AlignLeft ) );
185
186 PushButton1 = new QPushButton (Frame15, "PushButton1" );
187 PushButton1->setGeometry( QRect( 2, 68, 25, 21 ) );
188 PushButton1->setPixmap( config );
189 PushButton1->setPalette( pal );
190 PushButton1->setAutoDefault( TRUE );
191 PushButton1->setFlat( TRUE );
192 96
193 // -- layout -- 97 // -- layout --
194 layout->addWidget(Frame); 98 layout->addWidget( Frame );
195 layout->addWidget(OwnerField); 99 layout->addWidget( OwnerField );
196 layout->addWidget(Frame4);
197 layout->addWidget(MailFrame);
198 layout->addWidget(Frame15);
199
200 layout->setStretchFactor(Frame4,5);
201 layout->setStretchFactor(MailFrame,1);
202 layout->setStretchFactor(Frame15,4);
203} 100}
204 101
205/* 102/**
206 * Destroys the object and frees any allocated resources 103 * D' tor
207 */ 104 */
208TodayBase::~TodayBase() 105TodayBase::~TodayBase() {
209{
210} 106}
211 107
diff --git a/core/pim/today/todaybase.h b/core/pim/today/todaybase.h
index ec06281..7c50f32 100644
--- a/core/pim/today/todaybase.h
+++ b/core/pim/today/todaybase.h
@@ -1,26 +1,32 @@
1/**************************************************************************** 1/*
2** Form interface generated from reading ui file 'todaybase.ui' 2 * todaybase.h
3** 3 *
4** Created: Wed Feb 13 19:36:45 2002 4 * copyright : (c) 2002 by Maximilian Reiß
5** by: The User Interface Compiler (uic) 5 * email : harlekin@handhelds.org
6** 6 *
7** WARNING! All changes made in this file will be lost! 7 */
8****************************************************************************/ 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
9#ifndef TODAYBASE_H 17#ifndef TODAYBASE_H
10#define TODAYBASE_H 18#define TODAYBASE_H
11 19
12#include <qvariant.h> 20#include <qlayout.h>
13#include <qwidget.h>
14#include <qscrollview.h>
15#include <qsplitter.h>
16#include <opie/oclickablelabel.h> 21#include <opie/oclickablelabel.h>
17 22
18class QVBox; 23class QVBox;
19class QHBoxLayout;
20class QGridLayout; 24class QGridLayout;
21class QFrame; 25class QFrame;
22class QLabel; 26class QLabel;
23class QPushButton; 27class QPushButton;
28class QBoxLayout;
29
24 30
25class TodayBase : public QWidget 31class TodayBase : public QWidget
26{ 32{
@@ -30,26 +36,18 @@ public:
30 TodayBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 36 TodayBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
31 ~TodayBase(); 37 ~TodayBase();
32 38
33 //QScrollView* Frame4;
34 QFrame* Frame4; 39 QFrame* Frame4;
35 QPushButton* DatesButton; 40 QPushButton* DatesButton;
41 QVBoxLayout* layout;
36 OClickableLabel* OwnerField; 42 OClickableLabel* OwnerField;
37 QLabel* Frame; 43 QLabel* Frame;
38 QFrame* MailFrame; 44 QLabel* DateLabel;
39 QLabel* TextLabel1;
40 QScrollView* sv1;
41 QVBox* DatesField;
42 QFrame* Frame15; 45 QFrame* Frame15;
43 QLabel* TodoField; 46 OClickableLabel* ConfigButton;
44 QLabel* MailField;
45 QPushButton* PushButton1;
46 QPushButton* TodoButton;
47 QPushButton* MailButton;
48 QPushButton* getridoffuckingstrippeldlinesbutton;
49 47
50protected: 48protected:
51 49
52 50
53}; 51};
54 52
55#endif // TODAYBASE_H 53#endif
diff --git a/core/pim/today/todayconfig.cpp b/core/pim/today/todayconfig.cpp
index 905ec4b..08e59c0 100644
--- a/core/pim/today/todayconfig.cpp
+++ b/core/pim/today/todayconfig.cpp
@@ -1,11 +1,8 @@
1/* 1/*
2 * todayconfig.cpp 2 * todayconfig.cpp
3 * 3 *
4 * ---------------------
5 *
6 * begin : Sun 10 17:20:00 CEST 2002
7 * copyright : (c) 2002 by Maximilian Reiß 4 * copyright : (c) 2002 by Maximilian Reiß
8 * email : max.reiss@gmx.de 5 * email : harlekin@handhelds.org
9 * 6 *
10 */ 7 */
11/*************************************************************************** 8/***************************************************************************
@@ -19,133 +16,205 @@
19 16
20#include "todayconfig.h" 17#include "todayconfig.h"
21 18
19#include <qpe/config.h>
20#include <qpe/resource.h>
21#include <qpe/qcopenvelope_qws.h>
22
22#include <qcheckbox.h> 23#include <qcheckbox.h>
23#include <qframe.h>
24#include <qlabel.h> 24#include <qlabel.h>
25#include <qspinbox.h> 25#include <qspinbox.h>
26#include <qtabwidget.h> 26#include <qtabwidget.h>
27#include <qwidget.h>
28#include <qlayout.h> 27#include <qlayout.h>
29#include <qvariant.h> 28#include <qheader.h>
30//#include <qwhatsthis.h> 29#include <qhbox.h>
31 30#include <qvbox.h>
32todayconfig::todayconfig( QWidget* parent, const char* name, bool modal, WFlags fl ) 31#include <qtoolbutton.h>
32
33// for getenv
34#include <stdlib.h>
35
36class ToolButton : public QToolButton {
37public:
38 ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE )
39 : QToolButton( parent, name ) {
40 setTextLabel( name );
41 setPixmap( Resource::loadPixmap( icon ) );
42 setAutoRaise( TRUE );
43 setFocusPolicy( QWidget::NoFocus );
44 setToggleButton( t );
45 connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot );
46 }
47};
48
49
50/**
51 * The class has currently quite some duplicate code.
52 * By that way it would be real easy to have it as seperate app in settings tab
53 *
54 */
55TodayConfig::TodayConfig( QWidget* parent, const char* name, bool modal, WFlags fl )
33 : QDialog( parent, name, modal, fl ) { 56 : QDialog( parent, name, modal, fl ) {
34 if ( !name )
35 setName( "todayconfig" );
36 resize( 175, 232 );
37 setCaption( tr( "Today config" ) );
38
39 TabWidget3 = new QTabWidget( this, "TabWidget3" );
40 TabWidget3->setGeometry( QRect( 0, 0, 220, 320 ) );
41 TabWidget3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, TabWidget3->sizePolicy().hasHeightForWidth() ) );
42 TabWidget3->setAutoMask( FALSE );
43 TabWidget3->setTabShape( QTabWidget::Rounded );
44
45 tab = new QWidget( TabWidget3, "tab" );
46
47 Frame8 = new QFrame( tab, "Frame8" );
48 Frame8->setGeometry( QRect( -5, 0, 200, 300 ) );
49 Frame8->setFrameShape( QFrame::StyledPanel );
50 Frame8->setFrameShadow( QFrame::Raised );
51
52 TextLabel4 = new QLabel( Frame8, "TextLabel4" );
53 TextLabel4->setGeometry( QRect( 20, 65, 100, 60 ) );
54 TextLabel4->setText( tr( "Should the \n"
55 "location \n"
56 "be shown?" ) );
57
58 TextLabel5 = new QLabel( Frame8, "TextLabel5" );
59 TextLabel5->setGeometry( QRect( 20, 160, 120, 40 ) );
60 TextLabel5->setText( tr( "Should the notes \n"
61 "be shown?" ) );
62
63 CheckBox2 = new QCheckBox( Frame8, "CheckBox2" );
64 CheckBox2->setGeometry( QRect( 158, 170, 27, 21 ) );
65 //CheckBox2->setText( tr( "" ) );
66
67 CheckBox1 = new QCheckBox( Frame8, "CheckBox1" );
68 CheckBox1->setGeometry( QRect( 158, 65, 27, 50 ) );
69 //CheckBox1->setText( tr( "" ) );
70
71 CheckBox3 = new QCheckBox (Frame8, "CheckBox3" );
72 CheckBox3->setGeometry( QRect( 158, 125, 27, 21 ) );
73
74 TextLabel6 = new QLabel( Frame8, "All Day");
75 TextLabel6->setGeometry( QRect( 20, 120, 100, 30 ) );
76 TextLabel6->setText( tr( "Show only later\n"
77 "appointments") );
78
79 SpinBox1 = new QSpinBox( Frame8, "SpinBox1" );
80 SpinBox1->setGeometry( QRect( 115, 20, 58, 25 ) );
81 SpinBox1->setMaxValue( 10 );
82 SpinBox1->setValue( 5 );
83
84 TextLabel3 = new QLabel( Frame8, "TextLabel3" );
85 TextLabel3->setGeometry( QRect( 20, 10, 90, 60 ) );
86 TextLabel3->setText( tr( "How many \n"
87 "appointment\n"
88 "should\n"
89 "be shown?" ) );
90 TabWidget3->insertTab( tab, tr( "Calendar" ) );
91
92 tab_2 = new QWidget( TabWidget3, "tab_2" );
93
94 Frame9 = new QFrame( tab_2, "Frame9" );
95 Frame9->setGeometry( QRect( -5, 0, 230, 310 ) );
96 Frame9->setFrameShape( QFrame::StyledPanel );
97 Frame9->setFrameShadow( QFrame::Raised );
98
99 TextLabel6 = new QLabel( Frame9, "TextLabel6" );
100 TextLabel6->setGeometry( QRect( 20, 10, 100, 60 ) );
101 TextLabel6->setText( tr( "How many\n"
102 "tasks should \n"
103 "be shown?" ) );
104
105 SpinBox2 = new QSpinBox( Frame9, "SpinBox2" );
106 SpinBox2->setGeometry( QRect( 115, 20, 58, 25 ) );
107 SpinBox2->setMaxValue( 20 );
108 SpinBox2->setValue( 5 );
109 TabWidget3->insertTab( tab_2, tr( "Tasks" ) );
110
111 tab_3 = new QWidget( TabWidget3, "tab_3" );
112
113 Frame14 = new QFrame( tab_3, "Frame14" );
114 Frame14->setGeometry( QRect( -5, 0, 200, 220 ) );
115 Frame14->setFrameShape( QFrame::StyledPanel );
116 Frame14->setFrameShadow( QFrame::Raised );
117
118 TextLabel1 = new QLabel( Frame14, "TextLabel1" );
119 TextLabel1->setGeometry( QRect( 20, 20, 100, 30 ) );
120 TextLabel1->setText( tr( "Clip after how\n"
121 "many letters" ) );
122
123 SpinBox7 = new QSpinBox( Frame14, "SpinBox7" );
124 SpinBox7->setGeometry( QRect( 115, 20, 58, 25 ) );
125 SpinBox7->setMaxValue( 80 );
126
127 TextLabel2 = new QLabel( Frame14, "AutoStart" );
128 TextLabel2->setGeometry( QRect( 20, 60, 100, 45 ) );
129 TextLabel2->setText( tr( "Should today be\n"
130 "autostarted on\n"
131 "resume?"
132 " (Opie only)" ) );
133
134 CheckBoxAuto = new QCheckBox (Frame14, "CheckBoxAuto" );
135 CheckBoxAuto->setGeometry( QRect( 158, 60, 27, 21 ) );
136
137 TimeLabel = new QLabel( Frame14, "TimeLabel" );
138 TimeLabel->setGeometry( QRect ( 20, 120, 120, 45 ) );
139 TimeLabel->setText( tr( "Activate the \n"
140 "autostart after how\n"
141 "many minutes?" ) );
142 SpinBoxTime = new QSpinBox( Frame14, "TimeSpinner");
143 SpinBoxTime->setGeometry( QRect( 115, 120, 58, 25 ) );
144
145 TabWidget3->insertTab( tab_3, tr( "Misc" ) );
146 57
58 if ( !name ) {
59 setName( "todayconfig" );
60 }
61 setCaption( tr( "Today config" ) );
62
63 QVBoxLayout *layout = new QVBoxLayout( this );
64 TabWidget3 = new QTabWidget( this, "TabWidget3" );
65 TabWidget3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, TabWidget3->sizePolicy().hasHeightForWidth() ) );
66 TabWidget3->setAutoMask( FALSE );
67 TabWidget3->setTabShape( QTabWidget::Rounded );
68 layout->addWidget( TabWidget3 );
69
70 tab_2 = new QWidget( TabWidget3, "tab_2" );
71 QVBoxLayout *tab2Layout = new QVBoxLayout( tab_2, 4 ,4 );
72 QLabel *l = new QLabel( tr( "Load which plugins in what order:" ), tab_2 );
73 tab2Layout->addWidget( l );
74 QHBox *hbox1 = new QHBox( tab_2 );
75 m_appletListView = new QListView( hbox1 );
76 m_appletListView->addColumn( "PluginList" );
77 m_appletListView->header()->hide();
78 QVBox *vbox1 = new QVBox( hbox1 );
79 new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", this , SLOT( moveSelectedUp() ) );
80 new ToolButton( vbox1, tr( "Move Down" ),"opieplayer/down", this , SLOT( moveSelectedDown() ) );
81 tab2Layout->addWidget( hbox1 );
82
83 TabWidget3->insertTab( tab_2, tr( "active/order" ) );
84 tab_3 = new QWidget( TabWidget3, "tab_3" );
85 QVBoxLayout *tab3Layout = new QVBoxLayout( tab_3 );
86 QHBox *hbox_clip = new QHBox( tab_3 );
87 TextLabel1 = new QLabel( hbox_clip, "TextLabel1" );
88 TextLabel1->setText( tr( "Clip after how\n"
89 "many letters" ) );
90 SpinBox7 = new QSpinBox( hbox_clip, "SpinBox7" );
91 SpinBox7->setMaxValue( 80 );
92 QHBox *hbox_auto = new QHBox( tab_3 );
93 TextLabel2 = new QLabel( hbox_auto, "AutoStart" );
94 TextLabel2->setText( tr( "autostart on \nresume? (Opie only)" ) );
95 CheckBoxAuto = new QCheckBox( hbox_auto, "CheckBoxAuto" );
96 QHBox *hbox_inactive = new QHBox( tab_3 );
97 TimeLabel = new QLabel( hbox_inactive , "TimeLabel" );
98 TimeLabel->setText( tr( "minutes inactive" ) );
99 SpinBoxTime = new QSpinBox( hbox_inactive, "TimeSpinner");
100 tab3Layout->addWidget( hbox_clip );
101 tab3Layout->addWidget( hbox_auto );
102 tab3Layout->addWidget( hbox_inactive );
103 TabWidget3->insertTab( tab_3, tr( "Misc" ) );
104
105 m_applets_changed = false;
106
107 connect ( m_appletListView , SIGNAL( clicked ( QListViewItem * ) ), this, SLOT( appletChanged ( ) ) );
108
109 readConfig();
110}
111
112
113/**
114 * Autostart, uses the new (opie only) autostart method in the launcher code.
115 * If registered against that today ist started on each resume.
116 */
117void TodayConfig::setAutoStart() {
118 Config cfg( "today" );
119 cfg.setGroup( "Autostart" );
120 int autostart = cfg.readNumEntry( "autostart", 1);
121 if ( autostart ) {
122 QCopEnvelope e( "QPE/System", "autoStart(QString,QString,QString)" );
123 e << QString( "add" );
124 e << QString( "today" );
125 e << m_autoStartTimer;
126 } else {
127 QCopEnvelope e( "QPE/System", "autoStart(QString,QString)" );
128 e << QString( "remove");
129 e << QString( "today" );
130 }
131}
132
133/**
134 * Read the config part
135 */
136void TodayConfig::readConfig() {
137 Config cfg( "today" );
138 cfg.setGroup( "Autostart" );
139 m_autoStart = cfg.readNumEntry( "autostart", 1 );
140 CheckBoxAuto->setChecked( m_autoStart );
141 m_autoStartTimer = cfg.readEntry( "autostartdelay", "0" );
142 SpinBoxTime->setValue( m_autoStartTimer.toInt() );
143
144 cfg.setGroup( "Applets" );
145 m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' );
146}
147
148/**
149 * Write the config part
150 */
151void TodayConfig::writeConfig() {
152 Config cfg( "today" );
153 cfg. setGroup ( "Applets" );
154 if ( m_applets_changed ) {
155 QStringList exclude;
156 QStringList include;
157 QMap <QString, QCheckListItem *>::Iterator it;
158 for ( it = m_applets.begin(); it != m_applets. end (); ++it ) {
159 if ( !(*it)-> isOn () ) {
160 exclude << it.key();
161 } else {
162 include << it.key();
163 }
164 }
165 cfg.writeEntry( "ExcludeApplets", exclude, ',' );
166 cfg.writeEntry( "IncludeApplets", include, ',' );
167 }
168
169 cfg.setGroup( "Autostart" );
170 m_autoStart = CheckBoxAuto->isChecked();
171 cfg.writeEntry( "autostart", m_autoStart );
172 m_autoStartTimer = SpinBoxTime->value();
173 cfg.readEntry( "autostartdelay", m_autoStartTimer );
174}
175
176
177void TodayConfig::moveSelectedUp() {
178 QListViewItem *item = m_appletListView->selectedItem();
179 if ( item && item->itemAbove() ) {
180 item->itemAbove()->moveItem( item );
181 }
182}
183
184
185void TodayConfig::moveSelectedDown() {
186 QListViewItem *item = m_appletListView->selectedItem();
187 if ( item && item->itemBelow() ) {
188 item->moveItem( item->itemBelow() );
189 }
190}
191
192
193/**
194 * Set up the
195 */
196void TodayConfig::pluginManagement( QString libName, QString name, QPixmap icon ) {
197
198 QCheckListItem *item;
199 item = new QCheckListItem( m_appletListView, name, QCheckListItem::CheckBox );
200
201 if ( !icon.isNull() ) {
202 item->setPixmap( 0, icon );
203 }
204
205 qDebug (" SUCHNAME: " + name );
206 if ( m_excludeApplets.find( libName ) == m_excludeApplets.end() ) {
207 item->setOn( TRUE );
208 }
209 m_applets[libName] = item;
147} 210}
148 211
149todayconfig::~todayconfig() { 212
213void TodayConfig::appletChanged() {
214 m_applets_changed = true;
215}
216
217
218TodayConfig::~TodayConfig() {
150} 219}
151 220
diff --git a/core/pim/today/todayconfig.h b/core/pim/today/todayconfig.h
index 2986c4c..d5bdb4b 100644
--- a/core/pim/today/todayconfig.h
+++ b/core/pim/today/todayconfig.h
@@ -1,11 +1,8 @@
1/* 1/*
2 * todayconfig.h 2 * todayconfig.h
3 * 3 *
4 * ---------------------
5 *
6 * begin : Sun 10 17:20:00 CEST 2002
7 * copyright : (c) 2002 by Maximilian Reiß 4 * copyright : (c) 2002 by Maximilian Reiß
8 * email : max.reiss@gmx.de 5 * email : harlekin@handhelds.org
9 * 6 *
10 */ 7 */
11/*************************************************************************** 8/***************************************************************************
@@ -16,51 +13,57 @@
16 * (at your option) any later version. * 13 * (at your option) any later version. *
17 * * 14 * *
18 ***************************************************************************/ 15 ***************************************************************************/
16
19#ifndef TODAYCONFIG_H 17#ifndef TODAYCONFIG_H
20#define TODAYCONFIG_H 18#define TODAYCONFIG_H
21 19
22#include <qvariant.h> 20#include <qvariant.h>
23#include <qdialog.h> 21#include <qdialog.h>
24//class QVBoxLayout; 22#include <qlistview.h>
25class QHBoxLayout; 23
26class QGridLayout;
27class QCheckBox; 24class QCheckBox;
28class QFrame;
29class QLabel; 25class QLabel;
30class QSpinBox; 26class QSpinBox;
31class QTabWidget; 27class QTabWidget;
32class QWidget;
33 28
34class todayconfig : public QDialog { 29class TodayConfig : public QDialog {
30
35 Q_OBJECT 31 Q_OBJECT
36 32
37public: 33public:
38 todayconfig( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); 34 TodayConfig( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
39 ~todayconfig(); 35 ~TodayConfig();
40 36
41 QTabWidget* TabWidget3; 37 QTabWidget* TabWidget3;
42 QWidget* tab; 38
43 QFrame* Frame8; 39 void writeConfig();
44 QLabel* TextLabel4; 40 void pluginManagement( QString libName, QString name, QPixmap icon );
45 QLabel* TextLabel5; 41
42protected slots:
43 void appletChanged();
44 void moveSelectedUp();
45 void moveSelectedDown();
46
47private:
48 void setAutoStart();
49 void readConfig();
50
51 QListView* m_appletListView;
52 QMap<QString,QCheckListItem*> m_applets;
53
54 int m_autoStart;
55 QString m_autoStartTimer;
56 QStringList m_excludeApplets;
57 bool m_applets_changed;
58
46 QLabel* TextLabel2; 59 QLabel* TextLabel2;
47 QCheckBox* CheckBox3;
48 QCheckBox* CheckBox2;
49 QCheckBox* CheckBox1;
50 QCheckBox* CheckBoxAuto; 60 QCheckBox* CheckBoxAuto;
51 QSpinBox* SpinBox1;
52 QLabel* TextLabel3;
53 QWidget* tab_2; 61 QWidget* tab_2;
54 QFrame* Frame9;
55 QLabel* TextLabel6;
56 QSpinBox* SpinBox2;
57 QWidget* tab_3; 62 QWidget* tab_3;
58 QFrame* Frame14;
59 QLabel* TextLabel1; 63 QLabel* TextLabel1;
60 QSpinBox* SpinBox7; 64 QSpinBox* SpinBox7;
61 QLabel* TimeLabel; 65 QLabel* TimeLabel;
62 QSpinBox* SpinBoxTime; 66 QSpinBox* SpinBoxTime;
63
64}; 67};
65 68
66#endif 69#endif
diff --git a/core/pim/today/todayplugininterface.h b/core/pim/today/todayplugininterface.h
new file mode 100644
index 0000000..01e7d58
--- a/dev/null
+++ b/core/pim/today/todayplugininterface.h
@@ -0,0 +1,82 @@
1
2#ifndef TODAY_PLUGIN_INTERFACE
3#define TODAY_PLUGIN_INTERFACE
4
5#include <qpe/qcom.h>
6#include "configwidget.h"
7
8class QString;
9class QWidget;
10
11#ifndef IID_TodayPluginInterface
12#define IID_TodayPluginInterface QUuid( 0x70481804, 0x2b50, 0x4fba, 0x80, 0xbb, 0x0b, 0xf8, 0xdc, 0x72, 0x04, 0x14)
13#endif
14
15/**
16 *
17 *
18 *
19 */
20class TodayPluginObject {
21
22 Q_OBJECT
23
24public:
25
26 virtual ~TodayPluginObject() {};
27
28 /**
29 * The name if the plugin
30 */
31 virtual QString pluginName() const = 0;
32
33 /**
34 * Version numbering
35 */
36 virtual double versionNumber() const = 0;
37
38 /**
39 * the path and name of the identifer icon that should be shown
40 * in "Resource" notation, that means only subdir/picname form $QPEDIR/pics
41 */
42 virtual QString pixmapNameWidget() const = 0;
43
44 /** widget for the today view
45 * It _needs_ a parent here.
46 */
47 virtual QWidget* widget( QWidget * ) = 0;
48
49 /**
50 * Pixmap used in the config widget
51 */
52 virtual QString pixmapNameConfig() const = 0;
53
54 /**
55 * Config plugin widget - optional
56 * If the plugin has a config widget, it _needs_ a parent here.
57 */
58 virtual ConfigWidget* configWidget( QWidget * ) = 0;
59
60 /**
61 * The application that should be assigned to the button (pixmap)
62 */
63 virtual QString appName() const = 0;
64
65 /**
66 * minimum height the plugin at least should have
67 */
68 virtual int minHeight() const = 0;
69
70 /**
71 * maximum height that should be used before starting scrolling
72 */
73 virtual int maxHeight() const = 0;
74
75};
76
77
78struct TodayPluginInterface : public QUnknownInterface {
79 virtual TodayPluginObject *guiPart() = 0;
80};
81
82#endif