Analizo
view release on metacpan or search on metacpan
t/samples/kdelibs/daterange.cpp view on Meta::CPAN
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "daterange.h"
#include "kglobal.h"
#include "klocale.h"
#include "kcalendarsystem.h"
#include <QtCore/QSharedData>
#include <QtCore/QDebug>
class DateRange::Private : public QSharedData
{
public:
QDate m_start;
t/samples/kdelibs/daterange.cpp view on Meta::CPAN
QDate DateRange::end() const
{
return d->m_end;
}
bool DateRange::isValid() const
{
return KGlobal::locale()->calendar()->isValid(d->m_start) && KGlobal::locale()->calendar()->isValid(d->m_end) && d->m_start <= d->m_end;
}
void DateRange::setStart( const QDate& date )
{
d->m_start = date;
}
void DateRange::setEnd( const QDate& date )
t/samples/kdelibs/daterange.cpp view on Meta::CPAN
// static
DateRange DateRange::thisWeek( DateRangeFlags flags )
{
return weekOf( QDate::currentDate(), flags );
}
// static
DateRange DateRange::weekOf( const QDate& date, DateRangeFlags flags )
{
const int daysInWeek = KGlobal::locale()->calendar()->daysInWeek( date );
const int weekStartDay = KGlobal::locale()->weekStartDay();
const int weekEndDay = dateModulo( weekStartDay+daysInWeek-1, daysInWeek );
const int dayOfWeek = KGlobal::locale()->calendar()->dayOfWeek( date );
DateRange range;
if ( weekStartDay > dayOfWeek )
range.d->m_start = date.addDays( - (dayOfWeek + daysInWeek - weekStartDay) );
else
range.d->m_start = date.addDays( - (dayOfWeek - weekStartDay) );
if ( weekEndDay < dayOfWeek )
range.d->m_end = date.addDays( weekEndDay + daysInWeek - dayOfWeek );
t/samples/kdelibs/daterange.cpp view on Meta::CPAN
// static
DateRange DateRange::thisMonth( DateRangeFlags flags )
{
return monthOf( QDate::currentDate(), flags );
}
// static
DateRange DateRange::monthOf( const QDate& date, DateRangeFlags flags )
{
DateRange range( KGlobal::locale()->calendar()->firstDayOfMonth( date ),
KGlobal::locale()->calendar()->lastDayOfMonth( date ) );
if( flags & ExcludeFutureDays ) {
const QDate today = QDate::currentDate();
if( range.start() <= today && range.end() >= today )
range.setEnd( today );
}
return range;
}
// static
DateRange DateRange::thisYear( DateRangeFlags flags )
{
return yearOf( QDate::currentDate(), flags );
}
// static
DateRange DateRange::yearOf( const QDate& date, DateRangeFlags flags )
{
DateRange range( KGlobal::locale()->calendar()->firstDayOfYear( date ),
KGlobal::locale()->calendar()->lastDayOfYear( date ) );
if( flags & ExcludeFutureDays ) {
const QDate today = QDate::currentDate();
if( date.year() == today.year() )
range.setEnd( today );
}
return range;
}
// static
t/samples/kdelibs/daterange.cpp view on Meta::CPAN
{
// This week is the first week
DateRange range = thisWeek( false );
// go into the previous week
range.setStart( range.start().addDays( -1 ) );
// from that on we go back n-1 weeks, for each of those we call daysInWeek
for( int i = 1; i < n; ++i ) {
QDate weekDay = range.start();
weekDay.addDays( -KGlobal::locale()->calendar()->daysInWeek( weekDay ) );
range.setStart( weekDay );
}
// go back to the start of the next week, thus, reverting the -1 we did above
range.setStart( range.start().addDays( 1 ) );
return range;
}
// static
DateRange DateRange::lastNMonths( int n )
{
// This month is the first month
DateRange range = thisMonth( false );
// move the start n-1 months back
range.setStart( KGlobal::locale()->calendar()->addMonths(range.start(), n-1 ) );
return range;
}
bool operator==( const DateRange& r1, const DateRange& r2 )
{
return r1.start() == r2.start() && r1.end() == r2.end();
}
( run in 0.745 second using v1.01-cache-2.11-cpan-ceb78f64989 )