CVS commit by djarvie: Fix validation of dates entered not working any more in KAlarm's derived class, due to the virtual method validate() being removed in the rewrite. Now assignDate() is made virtual instead. M +24 -19 kdateedit.cpp 1.37 M +13 -1 kdateedit.h 1.16 --- kdepim/libkdepim/kdateedit.cpp #1.36:1.37 @@ -188,5 +188,5 @@ void KDateEdit::popup() void KDateEdit::dateSelected( QDate date ) { - assignDate( date ); + if (assignDate( date ) ) { updateView(); emit dateChanged( date ); @@ -194,11 +194,13 @@ void KDateEdit::dateSelected( QDate date if ( date.isValid() ) mDateFrame->hide(); + } } void KDateEdit::dateEntered( QDate date ) { - assignDate( date ); + if (assignDate( date ) ) { updateView(); emit dateChanged( date ); + } } @@ -209,9 +211,10 @@ void KDateEdit::lineEnterPressed() QDate date = parseDate( &replaced ); - assignDate( date ); + if (assignDate( date ) ) { if ( replaced ) updateView(); emit dateChanged( date ); + } } @@ -282,5 +285,5 @@ bool KDateEdit::eventFilter( QObject *ob if ( date.isValid() ) { date = date.addDays( step ); - assignDate( date ); + if ( assignDate( date ) ) { updateView(); emit dateChanged( date ); @@ -289,4 +292,5 @@ bool KDateEdit::eventFilter( QObject *ob } } + } } else { // It's a date picker event @@ -328,5 +332,5 @@ void KDateEdit::slotTextChanged( const Q QDate date = parseDate(); - assignDate( date ); + if ( assignDate( date ) ) emit dateChanged( date ); @@ -349,8 +353,9 @@ void KDateEdit::setupKeywords() } -void KDateEdit::assignDate( const QDate& date ) +bool KDateEdit::assignDate( const QDate& date ) { mDate = date; mTextChanged = false; + return true; } --- kdepim/libkdepim/kdateedit.h #1.15:1.16 @@ -106,4 +106,17 @@ class KDE_EXPORT KDateEdit : public QCom /** + Sets the date, without altering the display. + This method is used internally to set the widget's date value. + As a virtual method, it allows derived classes to perform additional validation + on the date value before it is set. Derived classes should return true if + QDate::isValid(@p date) returns false. + + @param date The new date to set. + @return True if the date was set, false if it was considered invalid and + remains unchanged. + */ + virtual bool assignDate( const QDate &date ); + + /** Fills the keyword map. Reimplement it if you want additional keywords. @@ -114,5 +127,4 @@ class KDE_EXPORT KDateEdit : public QCom QDate parseDate( bool* = 0 ) const; void updateView(); - void assignDate( const QDate& ); KDatePicker *mDatePicker;