summaryrefslogtreecommitdiff
path: root/core/pim/datebook/dateentryimpl.cpp
Unidiff
Diffstat (limited to 'core/pim/datebook/dateentryimpl.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/dateentryimpl.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/pim/datebook/dateentryimpl.cpp b/core/pim/datebook/dateentryimpl.cpp
index 1122f79..b2e3e3a 100644
--- a/core/pim/datebook/dateentryimpl.cpp
+++ b/core/pim/datebook/dateentryimpl.cpp
@@ -20,65 +20,68 @@
20 20
21#include "dateentryimpl.h" 21#include "dateentryimpl.h"
22#include "repeatentry.h" 22#include "repeatentry.h"
23 23
24#include <qpe/qpeapplication.h> 24#include <qpe/qpeapplication.h>
25#include <qpe/categoryselect.h> 25#include <qpe/categoryselect.h>
26#include <qpe/datebookmonth.h> 26#include <qpe/datebookmonth.h>
27#include <qpe/global.h> 27#include <qpe/global.h>
28#include <qpe/timeconversion.h> 28#include <qpe/timeconversion.h>
29#include <qpe/timestring.h> 29#include <qpe/timestring.h>
30#include <qpe/tzselect.h> 30#include <qpe/tzselect.h>
31 31
32#include <qcheckbox.h> 32#include <qcheckbox.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qlineedit.h> 35#include <qlineedit.h>
36#include <qmultilineedit.h> 36#include <qmultilineedit.h>
37#include <qpopupmenu.h> 37#include <qpopupmenu.h>
38#include <qscrollview.h> 38#include <qscrollview.h>
39#include <qspinbox.h> 39#include <qspinbox.h>
40#include <qtoolbutton.h> 40#include <qtoolbutton.h>
41 41
42#include <stdlib.h> 42#include <stdlib.h>
43 43
44#include <stdiostream.h>
45
44/* 46/*
45 * Constructs a DateEntry which is a child of 'parent', with the 47 * Constructs a DateEntry which is a child of 'parent', with the
46 * name 'name' and widget flags set to 'f' 48 * name 'name' and widget flags set to 'f'
47 * 49 *
48 * The dialog will by default be modeless, unless you set 'modal' to 50 * The dialog will by default be modeless, unless you set 'modal' to
49 * TRUE to construct a modal dialog. 51 * TRUE to construct a modal dialog.
50 */ 52 */
51 53
52DateEntry::DateEntry( bool startOnMonday, const QDateTime &start, 54DateEntry::DateEntry( bool startOnMonday, const QDateTime &start,
53 const QDateTime &end, bool whichClock, QWidget* parent, 55 const QDateTime &end, bool whichClock, QWidget* parent,
54 const char* name ) 56 const char* name )
55 : DateEntryBase( parent, name ), 57 : DateEntryBase( parent, name ),
56 ampm( whichClock ), 58 ampm( whichClock ),
57 startWeekOnMonday( startOnMonday ) 59 startWeekOnMonday( startOnMonday )
58{ 60{
59 init(); 61 init();
60 setDates(start,end); 62 setDates(start,end);
63 setFocusProxy(comboDescription);
61} 64}
62 65
63static void addOrPick( QComboBox* combo, const QString& t ) 66static void addOrPick( QComboBox* combo, const QString& t )
64{ 67{
65 for (int i=0; i<combo->count(); i++) { 68 for (int i=0; i<combo->count(); i++) {
66 if ( combo->text(i) == t ) { 69 if ( combo->text(i) == t ) {
67 combo->setCurrentItem(i); 70 combo->setCurrentItem(i);
68 return; 71 return;
69 } 72 }
70 } 73 }
71 combo->setEditText(t); 74 combo->setEditText(t);
72} 75}
73 76
74DateEntry::DateEntry( bool startOnMonday, const Event &event, bool whichClock, 77DateEntry::DateEntry( bool startOnMonday, const Event &event, bool whichClock,
75 QWidget* parent, const char* name ) 78 QWidget* parent, const char* name )
76 : DateEntryBase( parent, name ), 79 : DateEntryBase( parent, name ),
77 ampm( whichClock ), 80 ampm( whichClock ),
78 startWeekOnMonday( startOnMonday ) 81 startWeekOnMonday( startOnMonday )
79{ 82{
80 init(); 83 init();
81 setDates(event.start(),event.end()); 84 setDates(event.start(),event.end());
82 comboCategory->setCategories( event.categories(), "Calendar", tr("Calendar") ); 85 comboCategory->setCategories( event.categories(), "Calendar", tr("Calendar") );
83 if(!event.description().isEmpty()) 86 if(!event.description().isEmpty())
84 addOrPick( comboDescription, event.description() ); 87 addOrPick( comboDescription, event.description() );
@@ -155,48 +158,49 @@ void DateEntry::init()
155 this, SLOT( startDateChanged( int, int, int ) ) ); 158 this, SLOT( startDateChanged( int, int, int ) ) );
156 159
157 //Let start button change both start and end dates 160 //Let start button change both start and end dates
158 connect( startPicker, SIGNAL( dateClicked( int, int, int ) ), 161 connect( startPicker, SIGNAL( dateClicked( int, int, int ) ),
159 this, SLOT( endDateChanged( int, int, int ) ) ); 162 this, SLOT( endDateChanged( int, int, int ) ) );
160 connect( qApp, SIGNAL( clockChanged( bool ) ), 163 connect( qApp, SIGNAL( clockChanged( bool ) ),
161 this, SLOT( slotChangeClock( bool ) ) ); 164 this, SLOT( slotChangeClock( bool ) ) );
162 connect( qApp, SIGNAL(weekChanged(bool)), 165 connect( qApp, SIGNAL(weekChanged(bool)),
163 this, SLOT(slotChangeStartOfWeek(bool)) ); 166 this, SLOT(slotChangeStartOfWeek(bool)) );
164 167
165 QPopupMenu *m2 = new QPopupMenu( this ); 168 QPopupMenu *m2 = new QPopupMenu( this );
166 endPicker = new DateBookMonth( m2, 0, TRUE ); 169 endPicker = new DateBookMonth( m2, 0, TRUE );
167 m2->insertItem( endPicker ); 170 m2->insertItem( endPicker );
168 buttonEnd->setPopup( m2 ); 171 buttonEnd->setPopup( m2 );
169 connect( endPicker, SIGNAL( dateClicked( int, int, int ) ), 172 connect( endPicker, SIGNAL( dateClicked( int, int, int ) ),
170 this, SLOT( endDateChanged( int, int, int ) ) ); 173 this, SLOT( endDateChanged( int, int, int ) ) );
171} 174}
172 175
173/* 176/*
174 * Destroys the object and frees any allocated resources 177 * Destroys the object and frees any allocated resources
175 */ 178 */
176DateEntry::~DateEntry() 179DateEntry::~DateEntry()
177{ 180{
178 // no need to delete child widgets, Qt does it all for us 181 // no need to delete child widgets, Qt does it all for us
182 //cout << "Del: " << comboStart->currentText() << endl;
179} 183}
180 184
181/* 185/*
182 * public slot 186 * public slot
183 */ 187 */
184void DateEntry::endDateChanged( int y, int m, int d ) 188void DateEntry::endDateChanged( int y, int m, int d )
185{ 189{
186 endDate.setYMD( y, m, d ); 190 endDate.setYMD( y, m, d );
187 if ( endDate < startDate ) { 191 if ( endDate < startDate ) {
188 endDate = startDate; 192 endDate = startDate;
189 } 193 }
190 194
191 buttonEnd->setText( TimeString::shortDate( endDate ) ); 195 buttonEnd->setText( TimeString::shortDate( endDate ) );
192 196
193 endPicker->setDate( endDate.year(), endDate.month(), endDate.day() ); 197 endPicker->setDate( endDate.year(), endDate.month(), endDate.day() );
194} 198}
195 199
196static QTime parseTime( const QString& s, bool ampm ) 200static QTime parseTime( const QString& s, bool ampm )
197{ 201{
198 QTime tmpTime; 202 QTime tmpTime;
199 QStringList l = QStringList::split( ':', s ); 203 QStringList l = QStringList::split( ':', s );
200 int hour = l[0].toInt(); 204 int hour = l[0].toInt();
201 if ( ampm ) { 205 if ( ampm ) {
202 int i=0; 206 int i=0;
@@ -249,48 +253,49 @@ void DateEntry::startDateChanged( int y, int m, int d )
249 startDate.setYMD( y, m, d ); 253 startDate.setYMD( y, m, d );
250 if ( rp.type == Event::Weekly && 254 if ( rp.type == Event::Weekly &&
251 startDate.dayOfWeek() != prev.dayOfWeek() ) { 255 startDate.dayOfWeek() != prev.dayOfWeek() ) {
252 // if we change the start of a weekly repeating event 256 // if we change the start of a weekly repeating event
253 // set the repeating day appropriately 257 // set the repeating day appropriately
254 char mask = 1 << (prev.dayOfWeek()-1); 258 char mask = 1 << (prev.dayOfWeek()-1);
255 rp.days &= (~mask); 259 rp.days &= (~mask);
256 rp.days |= 1 << (startDate.dayOfWeek()-1); 260 rp.days |= 1 << (startDate.dayOfWeek()-1);
257 } 261 }
258 262
259 buttonStart->setText( TimeString::shortDate( startDate ) ); 263 buttonStart->setText( TimeString::shortDate( startDate ) );
260 264
261 // our pickers must be reset... 265 // our pickers must be reset...
262 startPicker->setDate( y, m, d ); 266 startPicker->setDate( y, m, d );
263 endPicker->setDate( y, m, d ); 267 endPicker->setDate( y, m, d );
264} 268}
265 269
266/* 270/*
267 * public slot 271 * public slot
268 */ 272 */
269void DateEntry::startTimeChanged( int index ) 273void DateEntry::startTimeChanged( int index )
270{ 274{
271 startTime = parseTime(comboStart->text(index),ampm); 275 startTime = parseTime(comboStart->text(index),ampm);
272 changeEndCombo( index ); 276 changeEndCombo( index );
277 //cout << "Start: " << comboStart->currentText() << endl;
273} 278}
274/* 279/*
275 * public slot 280 * public slot
276 */ 281 */
277void DateEntry::typeChanged( const QString &s ) 282void DateEntry::typeChanged( const QString &s )
278{ 283{
279 bool b = s != "All Day"; 284 bool b = s != "All Day";
280 buttonStart->setEnabled( b ); 285 buttonStart->setEnabled( b );
281 comboStart->setEnabled( b ); 286 comboStart->setEnabled( b );
282 comboEnd->setEnabled( b ); 287 comboEnd->setEnabled( b );
283} 288}
284/* 289/*
285 * public slot 290 * public slot
286 */ 291 */
287void DateEntry::changeEndCombo( int change ) 292void DateEntry::changeEndCombo( int change )
288{ 293{
289 if ( change + 2 < comboEnd->count() ) 294 if ( change + 2 < comboEnd->count() )
290 change += 2; 295 change += 2;
291 comboEnd->setCurrentItem( change ); 296 comboEnd->setCurrentItem( change );
292 endTimeChanged( comboEnd->currentText() ); 297 endTimeChanged( comboEnd->currentText() );
293} 298}
294 299
295void DateEntry::slotRepeat() 300void DateEntry::slotRepeat()
296{ 301{
@@ -361,48 +366,51 @@ Event DateEntry::event()
361 366
362 // convert to UTC based on selected TZ (calling tzset internally) 367 // convert to UTC based on selected TZ (calling tzset internally)
363 start_utc = TimeConversion::toUTC( start ); 368 start_utc = TimeConversion::toUTC( start );
364 end_utc = TimeConversion::toUTC( end ); 369 end_utc = TimeConversion::toUTC( end );
365 370
366 // done playing around... put it all back 371 // done playing around... put it all back
367 unsetenv( "TZ" ); 372 unsetenv( "TZ" );
368 if ( !realTZ.isNull() ) 373 if ( !realTZ.isNull() )
369 if ( setenv( "TZ", realTZ, true ) != 0 ) 374 if ( setenv( "TZ", realTZ, true ) != 0 )
370 qWarning( "There was a problem setting the timezone." ); 375 qWarning( "There was a problem setting the timezone." );
371 376
372 // convert UTC to local time (calling tzset internally) 377 // convert UTC to local time (calling tzset internally)
373 ev.setStart( TimeConversion::fromUTC( start_utc ) ); 378 ev.setStart( TimeConversion::fromUTC( start_utc ) );
374 ev.setEnd( TimeConversion::fromUTC( end_utc ) ); 379 ev.setEnd( TimeConversion::fromUTC( end_utc ) );
375 380
376 // we only have one type of sound at the moment... LOUD!!! 381 // we only have one type of sound at the moment... LOUD!!!
377 if ( comboSound->currentItem() != 0 ) 382 if ( comboSound->currentItem() != 0 )
378 st = Event::Loud; 383 st = Event::Loud;
379 else 384 else
380 st = Event::Silent; 385 st = Event::Silent;
381 ev.setAlarm( checkAlarm->isChecked(), spinAlarm->value(), st ); 386 ev.setAlarm( checkAlarm->isChecked(), spinAlarm->value(), st );
382 if ( rp.type != Event::NoRepeat ) 387 if ( rp.type != Event::NoRepeat )
383 ev.setRepeat( TRUE, rp ); 388 ev.setRepeat( TRUE, rp );
384 ev.setNotes( editNote->text() ); 389 ev.setNotes( editNote->text() );
390
391 //cout << "Start: " << comboStart->currentText() << endl;
392
385 return ev; 393 return ev;
386} 394}
387 395
388void DateEntry::setRepeatLabel() 396void DateEntry::setRepeatLabel()
389{ 397{
390 398
391 switch( rp.type ) { 399 switch( rp.type ) {
392 case Event::Daily: 400 case Event::Daily:
393 cmdRepeat->setText( tr("Daily...") ); 401 cmdRepeat->setText( tr("Daily...") );
394 break; 402 break;
395 case Event::Weekly: 403 case Event::Weekly:
396 cmdRepeat->setText( tr("Weekly...") ); 404 cmdRepeat->setText( tr("Weekly...") );
397 break; 405 break;
398 case Event::MonthlyDay: 406 case Event::MonthlyDay:
399 case Event::MonthlyDate: 407 case Event::MonthlyDate:
400 cmdRepeat->setText( tr("Monthly...") ); 408 cmdRepeat->setText( tr("Monthly...") );
401 break; 409 break;
402 case Event::Yearly: 410 case Event::Yearly:
403 cmdRepeat->setText( tr("Yearly...") ); 411 cmdRepeat->setText( tr("Yearly...") );
404 break; 412 break;
405 default: 413 default:
406 cmdRepeat->setText( tr("No Repeat...") ); 414 cmdRepeat->setText( tr("No Repeat...") );
407 } 415 }
408} 416}