summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeditorgeneralevent.cpp17
-rw-r--r--korganizer/koeditorgeneraltodo.cpp12
-rw-r--r--korganizer/ktimeedit.cpp106
-rw-r--r--korganizer/ktimeedit.h3
4 files changed, 26 insertions, 112 deletions
diff --git a/korganizer/koeditorgeneralevent.cpp b/korganizer/koeditorgeneralevent.cpp
index fc5be71..30b792b 100644
--- a/korganizer/koeditorgeneralevent.cpp
+++ b/korganizer/koeditorgeneralevent.cpp
@@ -333,112 +333,95 @@ void KOEditorGeneralEvent::writeEvent(Event *event)
333 333
334 event->setTransparency(mFreeTimeCombo->currentItem() > 0 334 event->setTransparency(mFreeTimeCombo->currentItem() > 0
335 ? KCal::Event::Transparent 335 ? KCal::Event::Transparent
336 : KCal::Event::Opaque); 336 : KCal::Event::Opaque);
337 337
338// kdDebug() << "KOEditorGeneralEvent::writeEvent() done" << endl; 338// kdDebug() << "KOEditorGeneralEvent::writeEvent() done" << endl;
339} 339}
340 340
341void KOEditorGeneralEvent::setDuration() 341void KOEditorGeneralEvent::setDuration()
342{ 342{
343 QString tmpStr = "", catStr; 343 QString tmpStr = "", catStr;
344 int hourdiff, minutediff; 344 int hourdiff, minutediff;
345 // end<date is an accepted temporary state while typing, but don't show 345 // end<date is an accepted temporary state while typing, but don't show
346 // any duration if this happens 346 // any duration if this happens
347 if(mCurrEndDateTime >= mCurrStartDateTime) { 347 if(mCurrEndDateTime >= mCurrStartDateTime) {
348 348
349 if (mNoTimeButton->isChecked()) { 349 if (mNoTimeButton->isChecked()) {
350 int daydiff = mCurrStartDateTime.date().daysTo(mCurrEndDateTime.date()) + 1; 350 int daydiff = mCurrStartDateTime.date().daysTo(mCurrEndDateTime.date()) + 1;
351 tmpStr = i18n("Duration: "); 351 tmpStr = i18n("Duration: ");
352 tmpStr.append(i18n("1 Day","%n Days",daydiff)); 352 tmpStr.append(i18n("1 Day","%n Days",daydiff));
353 } else { 353 } else {
354 int secto = mCurrStartDateTime.secsTo( mCurrEndDateTime ); 354 int secto = mCurrStartDateTime.secsTo( mCurrEndDateTime );
355 hourdiff = secto / 3600; 355 hourdiff = secto / 3600;
356 minutediff = (secto/60 ) % 60; 356 minutediff = (secto/60 ) % 60;
357 if (hourdiff || minutediff){ 357 if (hourdiff || minutediff){
358 tmpStr = i18n("Duration: "); 358 tmpStr = i18n("Duration: ");
359 if (hourdiff){ 359 if (hourdiff){
360 catStr = i18n("1 h","%n h",hourdiff); 360 catStr = i18n("1 h","%n h",hourdiff);
361 tmpStr.append(catStr); 361 tmpStr.append(catStr);
362 } 362 }
363 if (hourdiff && minutediff){ 363 if (hourdiff && minutediff){
364 tmpStr += i18n(", "); 364 tmpStr += i18n(", ");
365 } 365 }
366 if (minutediff){ 366 if (minutediff){
367 catStr = i18n("1 min","%n min",minutediff); 367 catStr = i18n("1 min","%n min",minutediff);
368 tmpStr += catStr; 368 tmpStr += catStr;
369 } 369 }
370 } else tmpStr = ""; 370 } else tmpStr = "";
371 } 371 }
372 } 372 }
373 mDurationLabel->setText(tmpStr); 373 mDurationLabel->setText(tmpStr);
374} 374}
375 375
376void KOEditorGeneralEvent::emitDateTimeStr() 376void KOEditorGeneralEvent::emitDateTimeStr()
377{ 377{
378 KLocale *l = KGlobal::locale(); 378 KLocale *l = KGlobal::locale();
379 379
380 QString from,to; 380 QString from,to;
381 if (mNoTimeButton->isChecked()) { 381 if (mNoTimeButton->isChecked()) {
382 from = l->formatDate(mCurrStartDateTime.date()); 382 from = l->formatDate(mCurrStartDateTime.date());
383 to = l->formatDate(mCurrEndDateTime.date()); 383 to = l->formatDate(mCurrEndDateTime.date());
384 } else { 384 } else {
385 from = l->formatDateTime(mCurrStartDateTime); 385 from = l->formatDateTime(mCurrStartDateTime);
386 to = l->formatDateTime(mCurrEndDateTime); 386 to = l->formatDateTime(mCurrEndDateTime);
387 } 387 }
388 388
389 QString str = i18n("From: %1 To: %2 %3").arg(from).arg(to) 389 QString str = i18n("From: %1 To: %2 %3").arg(from).arg(to)
390 .arg(mDurationLabel->text()); 390 .arg(mDurationLabel->text());
391 391
392 emit dateTimeStrChanged(str); 392 emit dateTimeStrChanged(str);
393} 393}
394 394
395bool KOEditorGeneralEvent::validateInput() 395bool KOEditorGeneralEvent::validateInput()
396{ 396{
397// kdDebug() << "KOEditorGeneralEvent::validateInput()" << endl;
398
399 if (!mNoTimeButton->isChecked()) {
400 if (!mStartTimeEdit->inputIsValid()) {
401 KMessageBox::sorry( 0,
402 i18n("Please specify a valid start time, for example '%1'.")
403 .arg( KGlobal::locale()->formatTime( QTime::currentTime() ) ) );
404 return false;
405 }
406
407 if (!mEndTimeEdit->inputIsValid()) {
408 KMessageBox::sorry( 0,
409 i18n("Please specify a valid end time, for example '%1'.")
410 .arg( KGlobal::locale()->formatTime( QTime::currentTime() ) ) );
411 return false;
412 }
413 }
414 397
415 if (!mStartDateEdit->inputIsValid()) { 398 if (!mStartDateEdit->inputIsValid()) {
416 KMessageBox::sorry( 0, 399 KMessageBox::sorry( 0,
417 i18n("Please specify a valid start date, for example '%1'.") 400 i18n("Please specify a valid start date, for example '%1'.")
418 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) ); 401 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) );
419 return false; 402 return false;
420 } 403 }
421 404
422 if (!mEndDateEdit->inputIsValid()) { 405 if (!mEndDateEdit->inputIsValid()) {
423 KMessageBox::sorry( 0, 406 KMessageBox::sorry( 0,
424 i18n("Please specify a valid end date, for example '%1'.") 407 i18n("Please specify a valid end date, for example '%1'.")
425 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) ); 408 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) );
426 return false; 409 return false;
427 } 410 }
428 411
429 QDateTime startDt,endDt; 412 QDateTime startDt,endDt;
430 startDt.setDate(mStartDateEdit->date()); 413 startDt.setDate(mStartDateEdit->date());
431 endDt.setDate(mEndDateEdit->date()); 414 endDt.setDate(mEndDateEdit->date());
432 if (!mNoTimeButton->isChecked()) { 415 if (!mNoTimeButton->isChecked()) {
433 startDt.setTime(mStartTimeEdit->getTime()); 416 startDt.setTime(mStartTimeEdit->getTime());
434 endDt.setTime(mEndTimeEdit->getTime()); 417 endDt.setTime(mEndTimeEdit->getTime());
435 } 418 }
436 419
437 if (startDt > endDt) { 420 if (startDt > endDt) {
438 KMessageBox::sorry(0,i18n("The event ends before it starts.\n" 421 KMessageBox::sorry(0,i18n("The event ends before it starts.\n"
439 "Please correct dates and times.")); 422 "Please correct dates and times."));
440 return false; 423 return false;
441 } 424 }
442 425
443 return KOEditorGeneral::validateInput(); 426 return KOEditorGeneral::validateInput();
444} 427}
diff --git a/korganizer/koeditorgeneraltodo.cpp b/korganizer/koeditorgeneraltodo.cpp
index 7db7da0..158a7d3 100644
--- a/korganizer/koeditorgeneraltodo.cpp
+++ b/korganizer/koeditorgeneraltodo.cpp
@@ -323,144 +323,132 @@ void KOEditorGeneralTodo::enableDueEdit(bool enable)
323{ 323{
324 mDueDateEdit->setEnabled( enable ); 324 mDueDateEdit->setEnabled( enable );
325 325
326 if(mDueCheck->isChecked() || mStartCheck->isChecked()) { 326 if(mDueCheck->isChecked() || mStartCheck->isChecked()) {
327 mTimeButton->setEnabled(true); 327 mTimeButton->setEnabled(true);
328 } 328 }
329 else { 329 else {
330 mTimeButton->setEnabled(false); 330 mTimeButton->setEnabled(false);
331 mTimeButton->setChecked(false); 331 mTimeButton->setChecked(false);
332 } 332 }
333 333
334 if (enable) { 334 if (enable) {
335 mDueTimeEdit->setEnabled( mTimeButton->isChecked() ); 335 mDueTimeEdit->setEnabled( mTimeButton->isChecked() );
336 } else { 336 } else {
337 mDueTimeEdit->setEnabled( false ); 337 mDueTimeEdit->setEnabled( false );
338 } 338 }
339} 339}
340 340
341void KOEditorGeneralTodo::enableStartEdit( bool enable ) 341void KOEditorGeneralTodo::enableStartEdit( bool enable )
342{ 342{
343 mStartDateEdit->setEnabled( enable ); 343 mStartDateEdit->setEnabled( enable );
344 344
345 if(mDueCheck->isChecked() || mStartCheck->isChecked()) { 345 if(mDueCheck->isChecked() || mStartCheck->isChecked()) {
346 mTimeButton->setEnabled(true); 346 mTimeButton->setEnabled(true);
347 } 347 }
348 else { 348 else {
349 mTimeButton->setEnabled(false); 349 mTimeButton->setEnabled(false);
350 mTimeButton->setChecked(false); 350 mTimeButton->setChecked(false);
351 } 351 }
352 352
353 if (enable) { 353 if (enable) {
354 mStartTimeEdit->setEnabled( mTimeButton->isChecked() ); 354 mStartTimeEdit->setEnabled( mTimeButton->isChecked() );
355 } else { 355 } else {
356 mStartTimeEdit->setEnabled( false ); 356 mStartTimeEdit->setEnabled( false );
357 } 357 }
358} 358}
359 359
360void KOEditorGeneralTodo::enableTimeEdits(bool enable) 360void KOEditorGeneralTodo::enableTimeEdits(bool enable)
361{ 361{
362 if(mStartCheck->isChecked()) { 362 if(mStartCheck->isChecked()) {
363 mStartTimeEdit->setEnabled( enable ); 363 mStartTimeEdit->setEnabled( enable );
364 } 364 }
365 if(mDueCheck->isChecked()) { 365 if(mDueCheck->isChecked()) {
366 mDueTimeEdit->setEnabled( enable ); 366 mDueTimeEdit->setEnabled( enable );
367 } 367 }
368} 368}
369 369
370void KOEditorGeneralTodo::showAlarm() 370void KOEditorGeneralTodo::showAlarm()
371{ 371{
372 if ( mDueCheck->isChecked() ) { 372 if ( mDueCheck->isChecked() ) {
373 alarmDisable(false); 373 alarmDisable(false);
374 } 374 }
375 else { 375 else {
376 alarmDisable(true); 376 alarmDisable(true);
377 } 377 }
378} 378}
379 379
380bool KOEditorGeneralTodo::validateInput() 380bool KOEditorGeneralTodo::validateInput()
381{ 381{
382 if (mDueCheck->isChecked()) { 382 if (mDueCheck->isChecked()) {
383 if (!mDueDateEdit->inputIsValid()) { 383 if (!mDueDateEdit->inputIsValid()) {
384 KMessageBox::sorry(0,i18n("Please specify a valid due date.")); 384 KMessageBox::sorry(0,i18n("Please specify a valid due date."));
385 return false; 385 return false;
386 } 386 }
387 if (mTimeButton->isChecked()) {
388 if (!mDueTimeEdit->inputIsValid()) {
389 KMessageBox::sorry(0,i18n("Please specify a valid due time."));
390 return false;
391 }
392 }
393 } 387 }
394 388
395 if (mStartCheck->isChecked()) { 389 if (mStartCheck->isChecked()) {
396 if (!mStartDateEdit->inputIsValid()) { 390 if (!mStartDateEdit->inputIsValid()) {
397 KMessageBox::sorry(0,i18n("Please specify a valid start date.")); 391 KMessageBox::sorry(0,i18n("Please specify a valid start date."));
398 return false; 392 return false;
399 } 393 }
400 if (mTimeButton->isChecked()) {
401 if (!mStartTimeEdit->inputIsValid()) {
402 KMessageBox::sorry(0,i18n("Please specify a valid start time."));
403 return false;
404 }
405 }
406 } 394 }
407 395
408 if (mStartCheck->isChecked() && mDueCheck->isChecked()) { 396 if (mStartCheck->isChecked() && mDueCheck->isChecked()) {
409 QDateTime startDate; 397 QDateTime startDate;
410 QDateTime dueDate; 398 QDateTime dueDate;
411 startDate.setDate(mStartDateEdit->date()); 399 startDate.setDate(mStartDateEdit->date());
412 dueDate.setDate(mDueDateEdit->date()); 400 dueDate.setDate(mDueDateEdit->date());
413 if (mTimeButton->isChecked()) { 401 if (mTimeButton->isChecked()) {
414 startDate.setTime(mStartTimeEdit->getTime()); 402 startDate.setTime(mStartTimeEdit->getTime());
415 dueDate.setTime(mDueTimeEdit->getTime()); 403 dueDate.setTime(mDueTimeEdit->getTime());
416 } 404 }
417 if (startDate > dueDate) { 405 if (startDate > dueDate) {
418 KMessageBox::sorry(0, 406 KMessageBox::sorry(0,
419 i18n("The start date cannot be after the due date.")); 407 i18n("The start date cannot be after the due date."));
420 return false; 408 return false;
421 } 409 }
422 } 410 }
423 411
424 return KOEditorGeneral::validateInput(); 412 return KOEditorGeneral::validateInput();
425} 413}
426 414
427void KOEditorGeneralTodo::completedChanged(int index) 415void KOEditorGeneralTodo::completedChanged(int index)
428{ 416{
429 if (index == 5) { 417 if (index == 5) {
430 mCompleted = QDateTime::currentDateTime(); 418 mCompleted = QDateTime::currentDateTime();
431 } 419 }
432 setCompletedDate(); 420 setCompletedDate();
433} 421}
434 422
435void KOEditorGeneralTodo::setCompletedDate() 423void KOEditorGeneralTodo::setCompletedDate()
436{ 424{
437 if (mCompletedCombo->currentItem() == 5 && mCompleted.isValid()) { 425 if (mCompletedCombo->currentItem() == 5 && mCompleted.isValid()) {
438 mCompletedLabel->setText(i18n("completed on %1") 426 mCompletedLabel->setText(i18n("completed on %1")
439 .arg(KGlobal::locale()->formatDateTime(mCompleted))); 427 .arg(KGlobal::locale()->formatDateTime(mCompleted)));
440 } else { 428 } else {
441 mCompletedLabel->setText(i18n("completed")); 429 mCompletedLabel->setText(i18n("completed"));
442 } 430 }
443} 431}
444 432
445void KOEditorGeneralTodo::modified (Todo* todo, int modification) 433void KOEditorGeneralTodo::modified (Todo* todo, int modification)
446{ 434{
447 switch (modification) { 435 switch (modification) {
448 case KOGlobals::PRIORITY_MODIFIED: 436 case KOGlobals::PRIORITY_MODIFIED:
449 mPriorityCombo->setCurrentItem(todo->priority()-1); 437 mPriorityCombo->setCurrentItem(todo->priority()-1);
450 break; 438 break;
451 case KOGlobals::COMPLETION_MODIFIED: 439 case KOGlobals::COMPLETION_MODIFIED:
452 mCompletedCombo->setCurrentItem(todo->percentComplete() / 20); 440 mCompletedCombo->setCurrentItem(todo->percentComplete() / 20);
453 if (todo->isCompleted() && todo->hasCompletedDate()) { 441 if (todo->isCompleted() && todo->hasCompletedDate()) {
454 mCompleted = todo->completed(); 442 mCompleted = todo->completed();
455 } 443 }
456 setCompletedDate(); 444 setCompletedDate();
457 break; 445 break;
458 case KOGlobals::CATEGORY_MODIFIED: 446 case KOGlobals::CATEGORY_MODIFIED:
459 setCategories (todo->categoriesStr ()); 447 setCategories (todo->categoriesStr ());
460 break; 448 break;
461 case KOGlobals::UNKNOWN_MODIFIED: // fall through 449 case KOGlobals::UNKNOWN_MODIFIED: // fall through
462 default: 450 default:
463 readTodo( todo ); 451 readTodo( todo );
464 break; 452 break;
465 } 453 }
466} 454}
diff --git a/korganizer/ktimeedit.cpp b/korganizer/ktimeedit.cpp
index f5a1c50..5222ac9 100644
--- a/korganizer/ktimeedit.cpp
+++ b/korganizer/ktimeedit.cpp
@@ -1,233 +1,189 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1999 Preston Brown, Ian Dawes 3 Copyright (c) 1999 Preston Brown, Ian Dawes
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qkeycode.h> 24#include <qkeycode.h>
25#include <qcombobox.h> 25#include <qcombobox.h>
26#include <qdatetime.h> 26#include <qdatetime.h>
27#include <qlineedit.h> 27#include <qlineedit.h>
28#include <qlistbox.h>
28#include <qapplication.h> 29#include <qapplication.h>
29 30
30#include <kmessagebox.h> 31#include <kmessagebox.h>
31#include <kglobal.h> 32#include <kglobal.h>
32#include <kdebug.h> 33#include <kdebug.h>
33#include <klocale.h> 34#include <klocale.h>
34#include <kpimglobalprefs.h> 35#include <kpimglobalprefs.h>
35 36
36#include "ktimeedit.h" 37#include "ktimeedit.h"
37#include "koprefs.h" 38#include "koprefs.h"
38#include <qvalidator.h> 39#include <qvalidator.h>
39 40
40// Validator for a time value with only hours and minutes (no seconds) 41// Validator for a time value with only hours and minutes (no seconds)
41// Mostly locale aware. Author: David Faure <faure@kde.org> 42// Mostly locale aware. Author: David Faure <faure@kde.org>
42class KOTimeValidator : public QValidator
43{
44public:
45 KOTimeValidator(QWidget* parent, const char* name=0) : QValidator(parent, name) {}
46
47 virtual State validate(QString& str, int& /*cursorPos*/) const
48 {
49 return Acceptable;
50 bool ok = false;
51 // TODO use KLocale::WithoutSeconds in HEAD
52 /*QTime time =*/ KGlobal::locale()->readTime(str, &ok);
53 if ( ok )
54 return Acceptable;
55 // readTime doesn't help knowing when the string is "Intermediate".
56 int length = str.length();
57 if ( !str ) // empty string?
58 return Invalid; // there should always be a ':' in it, right?
59 // HACK. Not fully locale aware etc. (esp. the separator is '.' in sv_SE...)
60 QChar sep = ':';
61 // I want to allow "HH:", ":MM" and ":" to make editing easier
62 if ( str[0] == sep )
63 {
64 if ( length == 1 ) // just ":"
65 return Intermediate;
66 QString minutes = str.mid(1);
67 int m = minutes.toInt(&ok);
68 if ( ok && m >= 0 && m < 60 )
69 return Intermediate;
70 } else if ( str.at(str.length()-1) == sep )
71 {
72 QString hours = str.left(length-1);
73 int h = hours.toInt(&ok);
74 if ( ok && h >= 0 && h < 24 )
75 return Intermediate;
76 }
77 return Invalid;
78 }
79};
80 43
81// KTimeWidget/QTimeEdit provide nicer editing, but don't provide a combobox. 44// KTimeWidget/QTimeEdit provide nicer editing, but don't provide a combobox.
82// Difficult to get all in one... 45// Difficult to get all in one...
83// But Qt-3.2 will offer QLineEdit::setMask, so a "99:99" mask would help. 46// But Qt-3.2 will offer QLineEdit::setMask, so a "99:99" mask would help.
84KOTimeEdit::KOTimeEdit(QWidget *parent, QTime qt, const char *name) 47KOTimeEdit::KOTimeEdit(QWidget *parent, QTime qt, const char *name)
85 : QComboBox(TRUE, parent, name) 48 : QComboBox(TRUE, parent, name)
86{ 49{
87 setInsertionPolicy(NoInsertion); 50 setInsertionPolicy(NoInsertion);
88 setValidator( new KOTimeValidator( this ) );
89 mFlagKeyPressed = false; 51 mFlagKeyPressed = false;
90 52
91 if ( QApplication::desktop()->width() < 650 ) 53 if ( QApplication::desktop()->width() < 650 )
92 setSizeLimit ( 6 ); 54 setSizeLimit ( 6 );
93 mTime = qt; 55 mTime = qt;
94 56
95// mNoTimeString = i18n("No Time"); 57// mNoTimeString = i18n("No Time");
96// insertItem( mNoTimeString ); 58// insertItem( mNoTimeString );
97 59
98 // Fill combo box with selection of times in localized format. 60 // Fill combo box with selection of times in localized format.
99 QTime timeEntry(0,0,0); 61 QTime timeEntry(0,0,0);
100 do { 62 do {
101 insertItem(KGlobal::locale()->formatTime(timeEntry)); 63 insertItem(KGlobal::locale()->formatTime(timeEntry));
102 timeEntry = timeEntry.addSecs(60*15); 64 timeEntry = timeEntry.addSecs(60*15);
103 } while (!timeEntry.isNull()); 65 } while (!timeEntry.isNull());
104 // Add end of day. 66 // Add end of day.
105 insertItem( KGlobal::locale()->formatTime( QTime( 23, 59, 59 ) ) ); 67 insertItem( KGlobal::locale()->formatTime( QTime( 23, 59, 59 ) ) );
106 68
107 updateText(); 69 updateText();
108 setFocusPolicy(QWidget::StrongFocus); 70 setFocusPolicy(QWidget::StrongFocus);
109 71
110 connect(this, SIGNAL(activated(int)), this, SLOT(activ(int))); 72 connect(this, SIGNAL(activated(int)), this, SLOT(activ(int)));
111 connect(this, SIGNAL(highlighted(int)), this, SLOT(hilit(int))); 73 connect(this, SIGNAL(highlighted(int)), this, SLOT(hilit(int)));
112 connect(this,SIGNAL(textChanged(const QString&)),this,SLOT(changedText())); 74 connect(this,SIGNAL(textChanged(const QString&)),this,SLOT(changedText()));
113 QFontMetrics fm ( font() ); 75 QFontMetrics fm ( font() );
114 QString timeString = "24:00"; 76 QString timeString = "24:00";
115 if ( KPimGlobalPrefs::instance()->mPreferredTime == 1 ) 77 if ( KPimGlobalPrefs::instance()->mPreferredTime == 1 )
116 timeString = "02:00pm"; 78 timeString = "02:00pm";
117 int addSpace = 32; 79 int addSpace = 32;
118 if ( QApplication::desktop()->width() > 320 ) 80 if ( QApplication::desktop()->width() > 320 )
119 timeString += ":00"; 81 timeString += ":00";
120 setFixedWidth(fm.width( timeString ) + 32 ); 82 setFixedWidth(fm.width( timeString ) + 32 );
121 83
122 // Highlight Background and Textcolor change from default 84 // Highlight Background and Textcolor change from default
123 QPalette palette = QWidget::palette(); 85 QPalette palette = QWidget::palette();
124 unsigned char red, green, blue; 86 unsigned char red, green, blue;
125 red = palette.color( QPalette::Normal , QColorGroup::Background ).red() - 10; 87 red = palette.color( QPalette::Normal , QColorGroup::Background ).red() - 10;
126 green = palette.color( QPalette::Normal , QColorGroup::Background ).green() - 10; 88 green = palette.color( QPalette::Normal , QColorGroup::Background ).green() - 10;
127 blue = palette.color( QPalette::Normal , QColorGroup::Background ).blue() - 10; 89 blue = palette.color( QPalette::Normal , QColorGroup::Background ).blue() - 10;
128 palette.setColor( QColorGroup::Highlight, QColor(red,green,blue) ); 90 palette.setColor( QColorGroup::Highlight, QColor(red,green,blue) );
129 palette.setColor( QColorGroup::HighlightedText, palette.color( QPalette::Normal , QColorGroup::Foreground ) ); 91 palette.setColor( QColorGroup::HighlightedText, palette.color( QPalette::Normal , QColorGroup::Foreground ) );
130 setPalette( palette ); 92 setPalette( palette );
131} 93}
132 94
133KOTimeEdit::~KOTimeEdit() 95KOTimeEdit::~KOTimeEdit()
134{ 96{
135} 97}
136 98
137bool KOTimeEdit::hasTime() const 99bool KOTimeEdit::hasTime() const
138{ 100{
139 // Can't happen 101 // Can't happen
140 if ( currentText().isEmpty() ) return false; 102 if ( currentText().isEmpty() ) return false;
141 //if ( currentText() == mNoTimeString ) return false; 103 //if ( currentText() == mNoTimeString ) return false;
142 104
143 return true; // always 105 return true; // always
144} 106}
145 107
146QTime KOTimeEdit::getTime() const 108QTime KOTimeEdit::getTime() const
147{ 109{
148 //kdDebug(5850) << "KOTimeEdit::getTime(), currentText() = " << currentText() << endl; 110 return KGlobal::locale()->readTime(currentText());
149 // TODO use KLocale::WithoutSeconds in HEAD
150 QTime time = KGlobal::locale()->readTime(currentText());
151 // kdDebug(5850) << "KOTimeEdit::getTime(): " << time.toString() << endl;
152 return time;
153} 111}
154/* 112/*
155QSizePolicy KOTimeEdit::sizePolicy() const 113QSizePolicy KOTimeEdit::sizePolicy() const
156{ 114{
157 // Set size policy to Fixed, because edit cannot contain more text than the 115 // Set size policy to Fixed, because edit cannot contain more text than the
158 // string representing the time. It doesn't make sense to provide more space. 116 // string representing the time. It doesn't make sense to provide more space.
159 QSizePolicy sizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); 117 QSizePolicy sizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
160 118
161 return sizePolicy; 119 return sizePolicy;
162} 120}
163*/ 121*/
164void KOTimeEdit::setTime(QTime newTime) 122void KOTimeEdit::setTime(QTime newTime)
165{ 123{
166 if ( mTime != newTime ) 124 if ( mTime != newTime )
167 { 125 {
168 kdDebug(5850) << "KOTimeEdit::setTime(): " << newTime.toString() << endl;
169
170 mTime = newTime; 126 mTime = newTime;
171 updateText(); 127 updateText();
172 } 128 }
173 129
174} 130}
175 131
176void KOTimeEdit::activ(int i) 132void KOTimeEdit::activ(int i)
177{ 133{
178 // The last entry, 23:59, is a special case 134 // The last entry, 23:59, is a special case
179 if( i == count() - 1 ) 135 if( i == count() - 1 )
180 mTime = QTime( 23, 59, 0 ); 136 mTime = QTime( 23, 59, 0 );
181 else 137 else
182 mTime = QTime(0,0,0).addSecs(i*15*60); 138 mTime = QTime(0,0,0).addSecs(i*15*60);
183 emit timeChanged(mTime); 139 emit timeChanged(mTime);
184} 140}
185 141
186void KOTimeEdit::hilit(int ) 142void KOTimeEdit::hilit(int )
187{ 143{
188 // we don't currently need to do anything here. 144 // we don't currently need to do anything here.
189} 145}
190 146
191void KOTimeEdit::addTime(QTime qt, bool update) 147void KOTimeEdit::addTime(QTime qt, bool update)
192{ 148{
193 // Calculate the new time. 149 // Calculate the new time.
194 //qDebug("add h %d min %d ", qt.hour(),qt.minute() ); 150 //qDebug("add h %d min %d ", qt.hour(),qt.minute() );
195 mTime = mTime.addSecs(qt.minute()*60+qt.hour()*3600); 151 mTime = mTime.addSecs(qt.minute()*60+qt.hour()*3600);
196 // if ( update ) 152 // if ( update )
197 updateText(); 153 updateText();
198 emit timeChanged(mTime); 154 emit timeChanged(mTime);
199} 155}
200 156
201void KOTimeEdit::subTime(QTime qt, bool update) 157void KOTimeEdit::subTime(QTime qt, bool update)
202{ 158{
203 int h, m; 159 int h, m;
204 //qDebug("sub h %d min %d ", qt.hour(),qt.minute() ); 160 //qDebug("sub h %d min %d ", qt.hour(),qt.minute() );
205 161
206 mTime = mTime.addSecs(-(qt.minute()*60+qt.hour()*3600)); 162 mTime = mTime.addSecs(-(qt.minute()*60+qt.hour()*3600));
207 // store the newly calculated time. 163 // store the newly calculated time.
208 // mTime.setHMS(h, m, 0); 164 // mTime.setHMS(h, m, 0);
209 //if ( update ) 165 //if ( update )
210 updateText(); 166 updateText();
211 emit timeChanged(mTime); 167 emit timeChanged(mTime);
212} 168}
213 169
214// void KOTimeEdit::mouseReleaseEvent ( QMouseEvent * ) 170// void KOTimeEdit::mouseReleaseEvent ( QMouseEvent * )
215// { 171// {
216// qDebug("mouseReleaseEvent ( QMouseEvent * ) "); 172// qDebug("mouseReleaseEvent ( QMouseEvent * ) ");
217// } 173// }
218 174
219// void KOTimeEdit::focusInEvent ( QFocusEvent * ) 175// void KOTimeEdit::focusInEvent ( QFocusEvent * )
220// { 176// {
221// qDebug("focusInEvent ( QFocusEvent * ) "); 177// qDebug("focusInEvent ( QFocusEvent * ) ");
222// } 178// }
223 179
224void KOTimeEdit::keyReleaseEvent(QKeyEvent *e) 180void KOTimeEdit::keyReleaseEvent(QKeyEvent *e)
225{ 181{
226 if ( !e->isAutoRepeat() ) { 182 if ( !e->isAutoRepeat() ) {
227 mFlagKeyPressed = false; 183 mFlagKeyPressed = false;
228 } 184 }
229 185
230} 186}
231void KOTimeEdit::setSelect( int from, int to ) 187void KOTimeEdit::setSelect( int from, int to )
232{ 188{
233 if ( KOPrefs::instance()->mHightlightDateTimeEdit) 189 if ( KOPrefs::instance()->mHightlightDateTimeEdit)
@@ -318,211 +274,201 @@ void KOTimeEdit::keyPressEvent(QKeyEvent *e)
318 else 274 else
319 if ( e->state () == Qt::ShiftButton ) { 275 if ( e->state () == Qt::ShiftButton ) {
320 subTime(QTime(1,0,0), false ); 276 subTime(QTime(1,0,0), false );
321 lineEdit()->setCursorPosition(0); 277 lineEdit()->setCursorPosition(0);
322 setSelect( 0 , 2 ); 278 setSelect( 0 , 2 );
323 } 279 }
324 else 280 else
325 // switch time down, cursor location depend 281 // switch time down, cursor location depend
326 switch (cpos) { 282 switch (cpos) {
327 case 7: 283 case 7:
328 case 6: 284 case 6:
329 case 5: 285 case 5:
330 if(!hour12Format) { 286 if(!hour12Format) {
331 lineEdit()->setCursorPosition(cpos = 4); 287 lineEdit()->setCursorPosition(cpos = 4);
332 } else { 288 } else {
333 subTime(QTime(12,0,0), false ); 289 subTime(QTime(12,0,0), false );
334 setSelect ( 5 , 2 ); 290 setSelect ( 5 , 2 );
335 break; 291 break;
336 } 292 }
337 case 4: 293 case 4:
338 subTime(QTime(0,1,0), false ); 294 subTime(QTime(0,1,0), false );
339 setSelect ( cpos , 1 ); 295 setSelect ( cpos , 1 );
340 break; 296 break;
341 case 3: 297 case 3:
342 subTime(QTime(0,10,0), false ); 298 subTime(QTime(0,10,0), false );
343 setSelect ( cpos , 1 ); 299 setSelect ( cpos , 1 );
344 break; 300 break;
345 case 2: 301 case 2:
346 lineEdit()->setCursorPosition(--cpos); 302 lineEdit()->setCursorPosition(--cpos);
347 case 1: 303 case 1:
348 case 0: 304 case 0:
349 subTime(QTime(1,0,0), false ); 305 subTime(QTime(1,0,0), false );
350 setSelect ( 0 , 2 ); 306 setSelect ( 0 , 2 );
351 break; 307 break;
352 } 308 }
353 break; 309 break;
354 // set cursor to correct place 310 // set cursor to correct place
355 case Key_Left: 311 case Key_Left:
356 if ( cpos == 3 ) 312 if ( cpos == 3 )
357 --cpos; 313 --cpos;
358 if ( cpos > 0) { 314 if ( cpos > 0) {
359 lineEdit()->setCursorPosition(--cpos); 315 lineEdit()->setCursorPosition(--cpos);
360 setSelect ( cpos , 1 ); 316 setSelect ( cpos , 1 );
361 } 317 }
362 else 318 else
363 setSelect ( 0 , 1 ); 319 setSelect ( 0 , 1 );
364 break; 320 break;
365 // set cursor to correct place 321 // set cursor to correct place
366 case Key_Right: 322 case Key_Right:
367 if ( cpos == 1 ) 323 if ( cpos == 1 )
368 ++cpos; 324 ++cpos;
369 if ( cpos < maxpos ) { 325 if ( cpos < maxpos ) {
370 lineEdit()->setCursorPosition(++cpos); 326 lineEdit()->setCursorPosition(++cpos);
371 setSelect ( cpos , 1 ); 327 setSelect ( cpos , 1 );
372 } 328 }
373 break; 329 break;
374 // rest 330 // rest
375 case Key_Prior: 331 case Key_Prior:
376 subTime(QTime(1,0,0)); 332 subTime(QTime(1,0,0));
377 break; 333 break;
378 case Key_Next: 334 case Key_Next:
379 addTime(QTime(1,0,0)); 335 addTime(QTime(1,0,0));
380 break; 336 break;
381 case Key_Backspace: 337 case Key_Backspace:
338 qDebug("+++++++++++back ");
382 if ( cpos > 0) { 339 if ( cpos > 0) {
383 if ( cpos == 3 ) 340 if ( cpos == 3 )
384 --cpos; 341 --cpos;
385 if ( cpos > 5) 342 if ( cpos > 5)
386 cpos = 5; 343 cpos = 5;
387 text.at( cpos-1 ) = '0'; 344 text.at( cpos-1 ) = '0';
388 lineEdit()->setText( text ); 345 lineEdit()->setText( text );
389 lineEdit()->setCursorPosition(--cpos); 346 lineEdit()->setCursorPosition(--cpos);
390 setSelect ( cpos , 1 ); 347 setSelect ( cpos , 1 );
391 changedText(); 348 changedText();
349 qDebug("---------back ");
392 } 350 }
393 break; 351 break;
394 } // switch arrows 352 } // switch arrows
395 353
396 // if cursor at string end, alltext market and keyEvent don't ArrowLeft -> deselect and cpos 354 // if cursor at string end, alltext market and keyEvent don't ArrowLeft -> deselect and cpos
397 if( cpos > 4 && lineEdit()->markedText().length() == 5 && e->key() != Key_Left ) { 355 if( cpos > 4 && lineEdit()->markedText().length() == 5 && e->key() != Key_Left ) {
398 lineEdit()->deselect(); 356 lineEdit()->deselect();
399 cpos = 0; 357 cpos = 0;
400 lineEdit()->setCursorPosition(cpos); 358 lineEdit()->setCursorPosition(cpos);
401 setSelect(cpos , 1); 359 setSelect(cpos , 1);
402 } 360 }
403 361
404 if ( cpos == 2 ) { 362 if ( cpos == 2 ) {
405 lineEdit()->setCursorPosition(++cpos); 363 lineEdit()->setCursorPosition(++cpos);
406 } 364 }
407 365
408 // num keys when cursorPos preEnd 366 // num keys when cursorPos preEnd
409 if ( cpos < 5 ) { 367 if ( cpos < 5 ) {
410 // switch another keys 368 // switch another keys
411 switch(e->key()) { 369 switch(e->key()) {
412 case Key_Delete: 370 case Key_Delete:
413 text.at( cpos ) = '0'; 371 text.at( cpos ) = '0';
414 lineEdit()->setText( text ); 372 lineEdit()->setText( text );
415 lineEdit()->setCursorPosition(cpos); 373 lineEdit()->setCursorPosition(cpos);
416 setSelect ( cpos , 1 ); 374 setSelect ( cpos , 1 );
417 changedText(); 375 changedText();
418 break; 376 break;
419 case Key_9: 377 case Key_9:
420 case Key_8: 378 case Key_8:
421 case Key_7: 379 case Key_7:
422 case Key_6: 380 case Key_6:
423 if ( !(cpos == 1 || cpos == 4) ) 381 if ( !(cpos == 1 || cpos == 4) )
424 return; 382 return;
425 if ( cpos == 1 && text.at( 0 ) > '1') 383 if ( cpos == 1 && text.at( 0 ) > '1')
426 text.at( 0 ) = '1'; 384 text.at( 0 ) = '1';
427 case Key_5: 385 case Key_5:
428 case Key_4: 386 case Key_4:
429 case Key_3: 387 case Key_3:
430 if ( cpos < 1 ) 388 if ( cpos < 1 )
431 return; 389 return;
432 if ( hour12Format && cpos == 1 ) 390 if ( hour12Format && cpos == 1 )
433 return; 391 return;
434 case Key_2: 392 case Key_2:
435 if ( hour12Format && cpos == 0 ) 393 if ( hour12Format && cpos == 0 )
436 return; 394 return;
437 if ( cpos == 0 && text.at( 1 ) > '3') 395 if ( cpos == 0 && text.at( 1 ) > '3')
438 text.at( 1 ) = '3'; 396 text.at( 1 ) = '3';
439 case Key_1: 397 case Key_1:
440 case Key_0: 398 case Key_0:
441 if ( hour12Format ) { 399 if ( hour12Format ) {
442 if ( e->key() == Key_0 && cpos == 1 && text.at( 0 ) == '0' ) 400 if ( e->key() == Key_0 && cpos == 1 && text.at( 0 ) == '0' )
443 return; 401 return;
444 if ( e->key() == Key_0 && cpos == 0 && text.at( 1 ) == '0' ) 402 if ( e->key() == Key_0 && cpos == 0 && text.at( 1 ) == '0' )
445 text.at( 1 ) = '1'; 403 text.at( 1 ) = '1';
446 } 404 }
447 text.at( cpos ) = QChar ( e->key() ); 405 text.at( cpos ) = QChar ( e->key() );
448 lineEdit()->setText( text ); 406 lineEdit()->setText( text );
449 if ( cpos == 1 ) 407 if ( cpos == 1 )
450 ++cpos; 408 ++cpos;
451 if ( cpos < 5) 409 if ( cpos < 5)
452 lineEdit()->setCursorPosition(++cpos); 410 lineEdit()->setCursorPosition(++cpos);
453 setSelect( cpos , 1 ); 411 setSelect( cpos , 1 );
454 changedText(); 412 changedText();
455 break; 413 break;
456 case Key_Home: 414 case Key_Home:
457 lineEdit()->setCursorPosition(0); 415 lineEdit()->setCursorPosition(0);
458 setSelect( cpos , 1 ); 416 setSelect( cpos , 1 );
459 break; 417 break;
460 case Key_End: 418 case Key_End:
461 lineEdit()->setCursorPosition(5); 419 lineEdit()->setCursorPosition(5);
462 lineEdit()->deselect(); 420 lineEdit()->deselect();
463 break; 421 break;
464 default: 422 default:
465// QComboBox::keyPressEvent(e); 423// QComboBox::keyPressEvent(e);
466 break; 424 break;
467 } // switch num keys 425 } // switch num keys
468 } else if ( cpos == 5 ) {// if cpos < 5 426 } else if ( cpos == 5 ) {// if cpos < 5
469 if ( hour12Format ) { 427 if ( hour12Format ) {
470 if ( e->key() == Key_A ) { 428 if ( e->key() == Key_A ) {
471 text.at( 5 ) = 'a'; 429 text.at( 5 ) = 'a';
472 lineEdit()->setText( text ); 430 lineEdit()->setText( text );
473 lineEdit()->setCursorPosition(5); 431 lineEdit()->setCursorPosition(5);
474 432
475 } else if ( e->key() == Key_P ) { 433 } else if ( e->key() == Key_P ) {
476 text.at( 5 ) = 'p'; 434 text.at( 5 ) = 'p';
477 lineEdit()->setText( text ); 435 lineEdit()->setText( text );
478 lineEdit()->setCursorPosition(5); 436 lineEdit()->setCursorPosition(5);
479 437
480 } 438 }
481 } 439 }
482 } 440 }
483 441
484 442
485} 443}
486 444
487void KOTimeEdit::updateText() 445void KOTimeEdit::updateText()
488{ 446{
489// kdDebug(5850) << "KOTimeEdit::updateText() " << endl 447 listBox()->blockSignals( true );
490 QString s = KGlobal::locale()->formatTime(mTime); 448 blockSignals( true );
491 // Set the text but without emitting signals, nor losing the cursor position 449 QString s = KGlobal::locale()->formatTime(mTime);
492 QLineEdit *line = lineEdit(); 450 // Set the text but without emitting signals, nor losing the cursor position
493 line->blockSignals(true); 451 QLineEdit *line = lineEdit();
494 int pos = line->cursorPosition(); 452 line->blockSignals(true);
495 // qDebug(" settext *%s* ", s.latin1()); 453 int pos = line->cursorPosition();
496 line->setText(s);
497 // line->setCursorPosition(pos);
498// line->blockSignals(false);
499
500// kdDebug(5850) << "KOTimeEdit::updateText(): " << s << endl;
501
502 if (!mTime.minute() % 15) {
503 setCurrentItem((mTime.hour()*4)+(mTime.minute()/15)); 454 setCurrentItem((mTime.hour()*4)+(mTime.minute()/15));
504 } 455 line->setText(s);
505 line->setCursorPosition(pos); 456 line->setCursorPosition(pos);
506 line->blockSignals(false); 457 line->blockSignals(false);
507 458 blockSignals( false );
508} 459 listBox()->blockSignals( false );
509 460
510bool KOTimeEdit::inputIsValid() const
511{
512 int cursorPos = lineEdit()->cursorPosition();
513 QString str = currentText();
514 return validator()->validate( str, cursorPos ) == QValidator::Acceptable;
515} 461}
516 462
517void KOTimeEdit::changedText() 463void KOTimeEdit::changedText()
518{ 464{
519 //kdDebug(5850) << "KOTimeEdit::changedText()" << endl; 465 int pos = lineEdit()->cursorPosition();
520 if ( inputIsValid() ) 466 mTime = getTime();
521 { 467 blockSignals( true );
522 int pos = lineEdit()->cursorPosition(); 468 QString text = lineEdit()->text();
523 mTime = getTime(); 469 setCurrentItem((mTime.hour()*4)+(mTime.minute()/15));
524 // updateText(); 470 lineEdit()->setText(text);
525 emit timeChanged(mTime); 471 blockSignals( false );
526 lineEdit()->setCursorPosition(pos); 472 emit timeChanged(mTime);
527 } 473 lineEdit()->setCursorPosition(pos);
528} 474}
diff --git a/korganizer/ktimeedit.h b/korganizer/ktimeedit.h
index 7923070..b3d842d 100644
--- a/korganizer/ktimeedit.h
+++ b/korganizer/ktimeedit.h
@@ -1,97 +1,94 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 1999 Preston Brown, Ian Dawes 3 Copyright (c) 1999 Preston Brown, Ian Dawes
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef _KTIMEEDIT_H 23#ifndef _KTIMEEDIT_H
24#define _KTIMEEDIT_H 24#define _KTIMEEDIT_H
25 25
26#include <qevent.h> 26#include <qevent.h>
27#include <qkeycode.h> 27#include <qkeycode.h>
28#include <qstring.h> 28#include <qstring.h>
29#include <qdatetime.h> 29#include <qdatetime.h>
30#include <qcombobox.h> 30#include <qcombobox.h>
31 31
32#include <kapplication.h> 32#include <kapplication.h>
33 33
34/** 34/**
35 This is a class that provides an easy, user friendly way to edit times. 35 This is a class that provides an easy, user friendly way to edit times.
36 up/down/ increase or decrease time, respectively. 36 up/down/ increase or decrease time, respectively.
37 37
38 @short Provides a way to edit times in a user-friendly manner. 38 @short Provides a way to edit times in a user-friendly manner.
39 @author Preston Brown, Ian Dawes 39 @author Preston Brown, Ian Dawes
40*/ 40*/
41class KOTimeEdit : public QComboBox 41class KOTimeEdit : public QComboBox
42{ 42{
43 Q_OBJECT 43 Q_OBJECT
44 public: 44 public:
45 /** constructs a new time edit. */ 45 /** constructs a new time edit. */
46 KOTimeEdit(QWidget *parent=0, QTime qt=QTime(12,0), const char *name=0); 46 KOTimeEdit(QWidget *parent=0, QTime qt=QTime(12,0), const char *name=0);
47 47
48 virtual ~KOTimeEdit(); 48 virtual ~KOTimeEdit();
49 49
50 /** 50 /**
51 Returns, if a time is selected. Can not return false anymore.... 51 Returns, if a time is selected. Can not return false anymore....
52 */ 52 */
53 bool hasTime() const; 53 bool hasTime() const;
54 54
55 /** returns the time that is currently set in the timeLineEdit. */ 55 /** returns the time that is currently set in the timeLineEdit. */
56 QTime getTime() const; 56 QTime getTime() const;
57 57
58 /** returns the prefered size policy of the KOTimeEdit */ 58 /** returns the prefered size policy of the KOTimeEdit */
59 //QSizePolicy sizePolicy() const; 59 //QSizePolicy sizePolicy() const;
60 60
61 /** return true if input is a valid time and false if not */
62 bool inputIsValid() const;
63
64 signals: 61 signals:
65 /** 62 /**
66 Emitted every time the time displayed changes. "newt" is the new 63 Emitted every time the time displayed changes. "newt" is the new
67 time. 64 time.
68 */ 65 */
69 void timeChanged(QTime newt); 66 void timeChanged(QTime newt);
70 67
71 public slots: 68 public slots:
72 /** used to set the time which is displayed to a specific value. */ 69 /** used to set the time which is displayed to a specific value. */
73 void setTime(QTime qt); 70 void setTime(QTime qt);
74 71
75 protected slots: 72 protected slots:
76 void activ(int); 73 void activ(int);
77 void hilit(int); 74 void hilit(int);
78 void changedText(); 75 void changedText();
79 76
80 protected: 77 protected:
81 void keyPressEvent(QKeyEvent *qke); 78 void keyPressEvent(QKeyEvent *qke);
82 void keyReleaseEvent(QKeyEvent *qke); 79 void keyReleaseEvent(QKeyEvent *qke);
83 void setSelect ( int, int ); 80 void setSelect ( int, int );
84 bool mFlagKeyPressed; 81 bool mFlagKeyPressed;
85 void addTime(QTime qt, bool update = true ); 82 void addTime(QTime qt, bool update = true );
86 void subTime(QTime qt, bool update = true ); 83 void subTime(QTime qt, bool update = true );
87 // Update the lineedit text from mTime 84 // Update the lineedit text from mTime
88 void updateText(); 85 void updateText();
89 // void mouseReleaseEvent ( QMouseEvent * ) ; 86 // void mouseReleaseEvent ( QMouseEvent * ) ;
90 //void focusInEvent ( QFocusEvent * ) ; 87 //void focusInEvent ( QFocusEvent * ) ;
91 88
92private: 89private:
93 QTime mTime; // the widget's displayed time. 90 QTime mTime; // the widget's displayed time.
94 //QString mNoTimeString; 91 //QString mNoTimeString;
95}; 92};
96 93
97#endif 94#endif