summaryrefslogtreecommitdiff
path: root/core/pim/datebook/datebookweeklst.cpp
Unidiff
Diffstat (limited to 'core/pim/datebook/datebookweeklst.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/datebookweeklst.cpp43
1 files changed, 41 insertions, 2 deletions
diff --git a/core/pim/datebook/datebookweeklst.cpp b/core/pim/datebook/datebookweeklst.cpp
index fe2ab51..771aa00 100644
--- a/core/pim/datebook/datebookweeklst.cpp
+++ b/core/pim/datebook/datebookweeklst.cpp
@@ -1,33 +1,34 @@
1#include "namespace_hack.h" 1#include "namespace_hack.h"
2#include "datebookweeklst.h" 2#include "datebookweeklst.h"
3 3
4#include "datebook.h" 4#include "datebook.h"
5 5
6#include <opie2/odebug.h> 6#include <opie2/odebug.h>
7 7
8#include <qpe/datebookmonth.h> 8#include <qpe/datebookmonth.h>
9#include <qpe/config.h> 9#include <qpe/config.h>
10#include <qpe/ir.h>
10#include <qpe/resource.h> 11#include <qpe/resource.h>
11 12
12#include <qlayout.h> 13#include <qlayout.h>
13#include <qtoolbutton.h> 14#include <qtoolbutton.h>
14#include <qtl.h> 15#include <qtl.h>
15 16
16bool calcWeek(const QDate &d, int &week, int &year,bool startOnMonday = false); 17bool calcWeek(const QDate &d, int &week, int &year,bool startOnMonday = false);
17 18
18using namespace Opie::Ui; 19using namespace Opie::Ui;
19DateBookWeekLstHeader::DateBookWeekLstHeader(bool onM, QWidget* parent, const char* name, WFlags fl) 20DateBookWeekLstHeader::DateBookWeekLstHeader(bool onM, QWidget* parent, const char* name, WFlags fl)
20 : DateBookWeekLstHeaderBase(parent, name, fl) 21 : DateBookWeekLstHeaderBase(parent, name, fl)
21{ 22{
22 setBackgroundMode( PaletteButton ); 23 setBackgroundMode( PaletteButton );
23 labelDate->setBackgroundMode( PaletteButton ); 24 labelDate->setBackgroundMode( PaletteButton );
24 forwardweek->setBackgroundMode( PaletteButton ); 25 forwardweek->setBackgroundMode( PaletteButton );
25 forwardweek->setPixmap( Resource::loadPixmap("forward") ); 26 forwardweek->setPixmap( Resource::loadPixmap("forward") );
26 forwardmonth->setBackgroundMode( PaletteButton ); 27 forwardmonth->setBackgroundMode( PaletteButton );
27 forwardmonth->setPixmap( Resource::loadPixmap("fastforward") ); 28 forwardmonth->setPixmap( Resource::loadPixmap("fastforward") );
28 backweek->setBackgroundMode( PaletteButton ); 29 backweek->setBackgroundMode( PaletteButton );
29 backweek->setPixmap( Resource::loadPixmap("back") ); 30 backweek->setPixmap( Resource::loadPixmap("back") );
30 backmonth->setBackgroundMode( PaletteButton ); 31 backmonth->setBackgroundMode( PaletteButton );
31 backmonth->setPixmap( Resource::loadPixmap("fastback") ); 32 backmonth->setPixmap( Resource::loadPixmap("fastback") );
32 DateBookWeekLstHeaderBaseLayout->setSpacing(0); 33 DateBookWeekLstHeaderBaseLayout->setSpacing(0);
33 DateBookWeekLstHeaderBaseLayout->setMargin(0); 34 DateBookWeekLstHeaderBaseLayout->setMargin(0);
@@ -171,55 +172,77 @@ DateBookWeekLstEvent::DateBookWeekLstEvent(const EffectiveEvent &ev,
171 middle.sprintf(" |---"); 172 middle.sprintf(" |---");
172 end.sprintf("__|__"); 173 end.sprintf("__|__");
173 day.sprintf("%.2d:%.2d",ev.start().hour(),ev.start().minute()); 174 day.sprintf("%.2d:%.2d",ev.start().hour(),ev.start().minute());
174 } else if(weeklistviewconfig==EXTENDED) { // Extended mode, display start and end times. 175 } else if(weeklistviewconfig==EXTENDED) { // Extended mode, display start and end times.
175 start.sprintf("%.2d:%.2d-",ev.start().hour(),ev.start().minute()); 176 start.sprintf("%.2d:%.2d-",ev.start().hour(),ev.start().minute());
176 middle.sprintf("<--->"); 177 middle.sprintf("<--->");
177 end.sprintf("-%.2d:%.2d",ev.end().hour(),ev.end().minute()); 178 end.sprintf("-%.2d:%.2d",ev.end().hour(),ev.end().minute());
178 day.sprintf("%.2d:%.2d-%.2d:%.2d",ev.start().hour(),ev.start().minute(),ev.end().hour(),ev.end().minute()); 179 day.sprintf("%.2d:%.2d-%.2d:%.2d",ev.start().hour(),ev.start().minute(),ev.end().hour(),ev.end().minute());
179 } 180 }
180 181
181 if(ev.event().type() == Event::Normal) { 182 if(ev.event().type() == Event::Normal) {
182 if(ev.startDate()==ev.date() && ev.endDate()==ev.date()) {// day event. 183 if(ev.startDate()==ev.date() && ev.endDate()==ev.date()) {// day event.
183 s=day; 184 s=day;
184 } else if(ev.startDate()==ev.date()) {// start event. 185 } else if(ev.startDate()==ev.date()) {// start event.
185 s=start; 186 s=start;
186 } else if(ev.endDate()==ev.date()) { // end event. 187 } else if(ev.endDate()==ev.date()) { // end event.
187 s=end; 188 s=end;
188 } else {// middle day. 189 } else {// middle day.
189 s=middle; 190 s=middle;
190 } 191 }
191 } else { 192 } else {
192 s=""; 193 s="";
193 } 194 }
194 setText(QString(s) + " " + ev.description()); 195 setText(QString(s) + " " + ev.description());
195 connect(this, SIGNAL(clicked()), this, SLOT(editMe())); 196 //connect(this, SIGNAL(clicked()), this, SLOT(editMe()));
196 setAlignment( int( QLabel::WordBreak | QLabel::AlignLeft ) ); 197 setAlignment( int( QLabel::WordBreak | QLabel::AlignLeft ) );
197} 198}
198void DateBookWeekLstEvent::editMe() { 199void DateBookWeekLstEvent::editMe() {
199 emit editEvent(event.event()); 200 emit editEvent(event.event());
200} 201}
201 202void DateBookWeekLstEvent::duplicateMe()
203{
204 emit duplicateEvent(event.event());
205}
206void DateBookWeekLstEvent::deleteMe()
207{
208 emit removeEvent(event.event());
209 emit redraw();
210}
211void DateBookWeekLstEvent::beamMe()
212{
213 emit beamEvent( event.event() );
214}
215void DateBookWeekLstEvent::mousePressEvent( QMouseEvent *e )
216{
217 popmenue = new QPopupMenu;
218 popmenue->insertItem( tr( "Edit" ), this, SLOT(editMe()));
219 popmenue->insertItem( tr( "Duplicate" ), this, SLOT(duplicateMe()));
220 popmenue->insertItem( tr( "Delete" ), this, SLOT(deleteMe()));
221 if(Ir::supported())
222 popmenue->insertItem( tr( "Beam" ), this, SLOT(beamMe()));
223 popmenue->popup( mapToGlobal( e->pos() ));
224}
202 225
203DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev, 226DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev,
204 const QDate &d, bool onM, 227 const QDate &d, bool onM,
205 QWidget* parent, 228 QWidget* parent,
206 const char* name, WFlags fl) 229 const char* name, WFlags fl)
207 : QWidget( parent, name, fl ) 230 : QWidget( parent, name, fl )
208{ 231{
209 Config config("DateBook"); 232 Config config("DateBook");
210 config.setGroup("Main"); 233 config.setGroup("Main");
211 int weeklistviewconfig=config.readNumEntry("weeklistviewconfig", NORMAL); 234 int weeklistviewconfig=config.readNumEntry("weeklistviewconfig", NORMAL);
212 odebug << "weeklistviewconfig: " << weeklistviewconfig << oendl; 235 odebug << "weeklistviewconfig: " << weeklistviewconfig << oendl;
213 236
214 bStartOnMonday=onM; 237 bStartOnMonday=onM;
215 setPalette(white); 238 setPalette(white);
216 setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding)); 239 setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding));
217 240
218 QVBoxLayout *layout = new QVBoxLayout( this ); 241 QVBoxLayout *layout = new QVBoxLayout( this );
219 242
220 qBubbleSort(ev); 243 qBubbleSort(ev);
221 QValueListIterator<EffectiveEvent> it; 244 QValueListIterator<EffectiveEvent> it;
222 it=ev.begin(); 245 it=ev.begin();
223 246
224 int dayOrder[7]; 247 int dayOrder[7];
225 if (bStartOnMonday) { 248 if (bStartOnMonday) {
@@ -227,77 +250,89 @@ DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev,
227 } else { 250 } else {
228 for (int d=0; d<7; d++) dayOrder[d]=d; 251 for (int d=0; d<7; d++) dayOrder[d]=d;
229 dayOrder[0]=7; 252 dayOrder[0]=7;
230 } 253 }
231 254
232 // Calculate offset to first day of week. 255 // Calculate offset to first day of week.
233 int dayoffset=d.dayOfWeek(); 256 int dayoffset=d.dayOfWeek();
234 if(bStartOnMonday) dayoffset--; 257 if(bStartOnMonday) dayoffset--;
235 else if( dayoffset == 7 ) dayoffset = 0; 258 else if( dayoffset == 7 ) dayoffset = 0;
236 259
237 for (int i=0; i<7; i++) { 260 for (int i=0; i<7; i++) {
238 // Header 261 // Header
239 DateBookWeekLstDayHdr *hdr=new DateBookWeekLstDayHdr(d.addDays(i-dayoffset), bStartOnMonday,this); 262 DateBookWeekLstDayHdr *hdr=new DateBookWeekLstDayHdr(d.addDays(i-dayoffset), bStartOnMonday,this);
240 connect(hdr, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); 263 connect(hdr, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int)));
241 connect(hdr, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)), 264 connect(hdr, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)),
242 this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&))); 265 this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)));
243 layout->addWidget(hdr); 266 layout->addWidget(hdr);
244 267
245 // Events 268 // Events
246 while ( (*it).date().dayOfWeek() == dayOrder[i] && it!=ev.end() ) { 269 while ( (*it).date().dayOfWeek() == dayOrder[i] && it!=ev.end() ) {
247 if(!(((*it).end().hour()==0) && ((*it).end().minute()==0) && ((*it).startDate()!=(*it).date()))) {// Skip events ending at 00:00 starting at another day. 270 if(!(((*it).end().hour()==0) && ((*it).end().minute()==0) && ((*it).startDate()!=(*it).date()))) {// Skip events ending at 00:00 starting at another day.
248 DateBookWeekLstEvent *l=new DateBookWeekLstEvent(*it,weeklistviewconfig,this); 271 DateBookWeekLstEvent *l=new DateBookWeekLstEvent(*it,weeklistviewconfig,this);
249 layout->addWidget(l); 272 layout->addWidget(l);
250 connect (l, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&))); 273 connect (l, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&)));
274 connect (l, SIGNAL(duplicateEvent(const Event &)), this, SIGNAL(duplicateEvent(const Event &)));
275 connect (l, SIGNAL(removeEvent(const Event &)), this, SIGNAL(removeEvent(const Event &)));
276 connect (l, SIGNAL(beamEvent(const Event &)), this, SIGNAL(beamEvent(const Event &)));
277 connect (l, SIGNAL(redraw()), this, SIGNAL(redraw()));
251 } 278 }
252 it++; 279 it++;
253 } 280 }
254 layout->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding)); 281 layout->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding));
255 } 282 }
256} 283}
257DateBookWeekLstView::~DateBookWeekLstView(){} 284DateBookWeekLstView::~DateBookWeekLstView(){}
258void DateBookWeekLstView::keyPressEvent(QKeyEvent *e) {e->ignore();} 285void DateBookWeekLstView::keyPressEvent(QKeyEvent *e) {e->ignore();}
259 286
260DateBookWeekLstDblView::DateBookWeekLstDblView(QValueList<EffectiveEvent> &ev1, 287DateBookWeekLstDblView::DateBookWeekLstDblView(QValueList<EffectiveEvent> &ev1,
261 QValueList<EffectiveEvent> &ev2, 288 QValueList<EffectiveEvent> &ev2,
262 QDate &d, bool onM, 289 QDate &d, bool onM,
263 QWidget* parent, 290 QWidget* parent,
264 const char* name, WFlags fl) 291 const char* name, WFlags fl)
265 : QWidget( parent, name, fl ) 292 : QWidget( parent, name, fl )
266{ 293{
267 QHBoxLayout *layout = new QHBoxLayout( this ); 294 QHBoxLayout *layout = new QHBoxLayout( this );
268 295
269 DateBookWeekLstView *w=new DateBookWeekLstView(ev1,d,onM,this); 296 DateBookWeekLstView *w=new DateBookWeekLstView(ev1,d,onM,this);
270 layout->addWidget(w); 297 layout->addWidget(w);
271 connect (w, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&))); 298 connect (w, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&)));
299 connect (w, SIGNAL(duplicateEvent(const Event &)), this, SIGNAL(duplicateEvent(const Event &)));
300 connect (w, SIGNAL(removeEvent(const Event &)), this, SIGNAL(removeEvent(const Event &)));
301 connect (w, SIGNAL(beamEvent(const Event &)), this, SIGNAL(beamEvent(const Event &)));
302 connect (w, SIGNAL(redraw()), this, SIGNAL(redraw()));
272 connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); 303 connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int)));
273 connect (w, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)), 304 connect (w, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)),
274 this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&))); 305 this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)));
275 306
276 307
277 w=new DateBookWeekLstView(ev2,d.addDays(7),onM,this); 308 w=new DateBookWeekLstView(ev2,d.addDays(7),onM,this);
278 layout->addWidget(w); 309 layout->addWidget(w);
279 connect (w, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&))); 310 connect (w, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&)));
311 connect (w, SIGNAL(duplicateEvent(const Event &)), this, SIGNAL(duplicateEvent(const Event &)));
312 connect (w, SIGNAL(removeEvent(const Event &)), this, SIGNAL(removeEvent(const Event &)));
313 connect (w, SIGNAL(beamEvent(const Event &)), this, SIGNAL(beamEvent(const Event &)));
314 connect (w, SIGNAL(redraw()), this, SIGNAL(redraw()));
280 connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); 315 connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int)));
281 connect (w, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)), 316 connect (w, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)),
282 this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&))); 317 this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)));
283} 318}
284 319
285DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB, 320DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB,
286 QWidget *parent, 321 QWidget *parent,
287 const char *name ) 322 const char *name )
288 : QWidget( parent, name ), 323 : QWidget( parent, name ),
289 db( newDB ), 324 db( newDB ),
290 startTime( 0 ), 325 startTime( 0 ),
291 ampm( ap ), 326 ampm( ap ),
292 bStartOnMonday(onM) 327 bStartOnMonday(onM)
293{ 328{
294 setFocusPolicy(StrongFocus); 329 setFocusPolicy(StrongFocus);
295 layout = new QVBoxLayout( this ); 330 layout = new QVBoxLayout( this );
296 layout->setMargin(0); 331 layout->setMargin(0);
297 332
298 header=new DateBookWeekLstHeader(onM, this); 333 header=new DateBookWeekLstHeader(onM, this);
299 layout->addWidget( header ); 334 layout->addWidget( header );
300 connect(header, SIGNAL(dateChanged(QDate&)), this, SLOT(dateChanged(QDate&))); 335 connect(header, SIGNAL(dateChanged(QDate&)), this, SLOT(dateChanged(QDate&)));
301 connect(header, SIGNAL(setDbl(bool)), this, SLOT(setDbl(bool))); 336 connect(header, SIGNAL(setDbl(bool)), this, SLOT(setDbl(bool)));
302 337
303 scroll=new QScrollView(this); 338 scroll=new QScrollView(this);
@@ -341,48 +376,52 @@ QDate DateBookWeekLst::weekDate() const
341 int dayoffset=d.dayOfWeek(); 376 int dayoffset=d.dayOfWeek();
342 if(bStartOnMonday) dayoffset--; 377 if(bStartOnMonday) dayoffset--;
343 else if( dayoffset == 7 ) 378 else if( dayoffset == 7 )
344 dayoffset = 0; 379 dayoffset = 0;
345 380
346 return d.addDays(-dayoffset); 381 return d.addDays(-dayoffset);
347} 382}
348 383
349void DateBookWeekLst::getEvents() { 384void DateBookWeekLst::getEvents() {
350 QDate start = weekDate(); //date(); 385 QDate start = weekDate(); //date();
351 QDate stop = start.addDays(6); 386 QDate stop = start.addDays(6);
352 QValueList<EffectiveEvent> el = db->getEffectiveEvents(start, stop); 387 QValueList<EffectiveEvent> el = db->getEffectiveEvents(start, stop);
353 388
354 if (view) delete view; 389 if (view) delete view;
355 if (dbl) { 390 if (dbl) {
356 QDate start2=start.addDays(7); 391 QDate start2=start.addDays(7);
357 stop=start2.addDays(6); 392 stop=start2.addDays(6);
358 QValueList<EffectiveEvent> el2 = db->getEffectiveEvents(start2, stop); 393 QValueList<EffectiveEvent> el2 = db->getEffectiveEvents(start2, stop);
359 view=new DateBookWeekLstDblView(el,el2,start,bStartOnMonday,scroll); 394 view=new DateBookWeekLstDblView(el,el2,start,bStartOnMonday,scroll);
360 } else { 395 } else {
361 view=new DateBookWeekLstView(el,start,bStartOnMonday,scroll); 396 view=new DateBookWeekLstView(el,start,bStartOnMonday,scroll);
362 } 397 }
363 398
364 connect (view, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&))); 399 connect (view, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&)));
400 connect (view, SIGNAL(duplicateEvent(const Event &)), this, SIGNAL(duplicateEvent(const Event &)));
401 connect (view, SIGNAL(removeEvent(const Event &)), this, SIGNAL(removeEvent(const Event &)));
402 connect (view, SIGNAL(beamEvent(const Event &)), this, SIGNAL(beamEvent(const Event &)));
403 connect (view, SIGNAL(redraw()), this, SLOT(redraw()));
365 connect (view, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); 404 connect (view, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int)));
366 connect (view, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)), 405 connect (view, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)),
367 this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&))); 406 this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)));
368 407
369 scroll->addChild(view); 408 scroll->addChild(view);
370 view->show(); 409 view->show();
371 scroll->updateScrollBars(); 410 scroll->updateScrollBars();
372} 411}
373 412
374void DateBookWeekLst::dateChanged(QDate &newdate) { 413void DateBookWeekLst::dateChanged(QDate &newdate) {
375 bdate=newdate; 414 bdate=newdate;
376 getEvents(); 415 getEvents();
377} 416}
378 417
379void DateBookWeekLst::keyPressEvent(QKeyEvent *e) 418void DateBookWeekLst::keyPressEvent(QKeyEvent *e)
380{ 419{
381 switch(e->key()) { 420 switch(e->key()) {
382 case Key_Up: 421 case Key_Up:
383 scroll->scrollBy(0, -20); 422 scroll->scrollBy(0, -20);
384 break; 423 break;
385 case Key_Down: 424 case Key_Down:
386 scroll->scrollBy(0, 20); 425 scroll->scrollBy(0, 20);
387 break; 426 break;
388 case Key_Left: 427 case Key_Left: