// This method MUST be re-implemented in any new Calendar System bool KCalendarSystem::isValid( int y, int month, int day ) const { // Default to true Gregorian if ( y < year( earliestValidDate() ) || y > year( latestValidDate() ) ) { return false; } if ( month < 1 || month > 12 ) { return false; } if ( month == 2 ) { if ( isLeapYear( y ) ) { return ( day >= 1 && day <= 29 ); } else { return ( day >= 1 && day <= 28 ); } } if ( month == 4 || month == 6 || month == 9 || month == 11 ) { return ( day >= 1 && day <= 30 ); } return ( day >= 1 && day <= 31 ); }
bool KCalendarSystem::isValid( const QDate &date ) const { if ( date.isNull() || date < earliestValidDate() || date > latestValidDate() ) { return false; } return true; }
bool KCalendarSystemJalali::isValid( int y, int month, int day ) const { // taken from setYMD below, adapted to use new methods if ( y < year( earliestValidDate() ) || y > year( latestValidDate() ) ) { return false; } if ( month < 1 || month > 12 ) { // Fix me! return false; } if ( day < 1 || day > hndays( month, y ) ) { return false; } return true; }