From kde-commits Tue Aug 31 22:59:34 2010 From: Artur Duque de Souza Date: Tue, 31 Aug 2010 22:59:34 +0000 To: kde-commits Subject: KDE/kdepim/mobile/lib/calendar Message-Id: <20100831225934.DF3F7AC857 () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=128329536116793 SVN commit 1170447 by asouza: Check for wrong values in set(Day/Month/Year) in Calendar Helper We need to validate the input before setting it. M +25 -3 calendarhelper.cpp --- trunk/KDE/kdepim/mobile/lib/calendar/calendarhelper.cpp #1170446:1170447 @@ -22,12 +22,14 @@ #define MAX_DAYS_ON_WIDGET 35 #define MAX_WEEKS_ON_WIDGET 5 +#include + CalendarHelper::CalendarHelper( QObject *parent ) : QObject( parent ) { //setDate(QDateTime::currentDateTime()); - setDate(QDateTime(QDate(2010, 8, 31))); + setDate(QDateTime(QDate(2010, 8, 10))); } CalendarHelper::~CalendarHelper() @@ -51,7 +53,6 @@ QDate firstDay = QDate(m_year, m_month, 1); m_offset = firstDay.dayOfWeek(); m_weekOffset = firstDay.weekNumber(); - emit dateChanged(); } @@ -65,6 +66,11 @@ if ( m_day == day ) return; + QDate newDate(m_year, m_month, day); + if ( !newDate.isValid() ) + return; + + m_original.setDate( newDate ); m_day = day; emit dayChanged(); } @@ -84,6 +90,11 @@ if ( m_month == month ) return; + QDate newDate(m_year, month, m_day); + if ( !newDate.isValid() ) + return; + + m_original.setDate( newDate ); m_month = month; m_daysInMonth = m_original.date().daysInMonth(); emit monthChanged(); @@ -99,6 +110,11 @@ if ( m_year == year ) return; + QDate newDate(year, m_month, m_day); + if ( !newDate.isValid() ) + return; + + m_original.setDate( newDate ); m_year = year; emit yearChanged(); } @@ -112,9 +128,15 @@ return QString(); // if the position is the firsts days (0 to m_offset) - if ( pos <= m_offset ) + if ( pos < m_offset ) return QString::number(pos); + // the current day + if ( pos == m_offset ) { + const QString rpos = QString::number(pos); + emit activeDay( rpos ); + return rpos; + } if ( res >= m_daysInMonth ) return QString();