[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/3.5/kdepim/korganizer
From: Allen Winter <winter () kde ! org>
Date: 2007-04-15 0:27:42
Message-ID: 1176596862.621695.9263.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 654061 by winterz:
Fix "Working days views won't follow the configured work days"
Patch provided by Dmitry Kagan. Thanks!
BUG: 128435
M +2 -3 calendarview.cpp
M +17 -9 datenavigator.cpp
M +5 -0 koglobals.cpp
M +1 -1 koglobals.h
--- branches/KDE/3.5/kdepim/korganizer/calendarview.cpp #654060:654061
@@ -494,9 +494,8 @@
config->setGroup( "Views" );
int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
- if ( dateCount == 5 ) mNavigator->selectWorkWeek();
- else if ( dateCount == 7 ) mNavigator->selectWeek();
- else mNavigator->selectDates( dateCount );
+ if ( dateCount == 7 ) mNavigator->selectWeek();
+ else mNavigator->selectDates( mNavigator->selectedDates().first(), dateCount );
}
--- branches/KDE/3.5/kdepim/korganizer/datenavigator.cpp #654060:654061
@@ -101,8 +101,7 @@
{
int dateCount = mSelectedDates.count();
bool weekStart = ( weekDay == KGlobal::locale()->weekStartDay() );
- if ( weekDay == 1 && dateCount == 5 ) selectWorkWeek( d );
- else if ( weekStart && dateCount == 7 ) selectWeek( d );
+ if ( weekStart && dateCount == 7 ) selectWeek( d );
else selectDates( d, dateCount );
}
@@ -133,16 +132,26 @@
void DateNavigator::selectWorkWeek( const QDate &d )
{
+ int weekStart = KGlobal::locale()->weekStartDay();
+
int dayOfWeek = KOGlobals::self()->calendarSystem()->dayOfWeek( d );
- QDate firstDate = d.addDays( 1 - dayOfWeek );
+ QDate currentDate = d.addDays( weekStart - dayOfWeek );
- int weekStart = KGlobal::locale()->weekStartDay();
- if ( weekStart != 1 && dayOfWeek >= weekStart ) {
- firstDate = firstDate.addDays( 7 );
+ if ( weekStart != 1 && dayOfWeek < weekStart ) {
+ currentDate = currentDate.addDays( -7 );
}
- selectDates( firstDate, 5 );
+ mSelectedDates.clear();
+ int mask = KOGlobals::self()->getWorkWeekMask();
+
+ for ( int i = 0; i < 7; ++i ) {
+ if( (1<< ((i + weekStart + 6) % 7)) & (mask) ) {
+ mSelectedDates.append(currentDate.addDays(i));
+ }
+ }
+
+ emitSelected();
}
void DateNavigator::selectToday()
@@ -151,8 +160,7 @@
int dateCount = mSelectedDates.count();
- if ( dateCount == 5 ) selectWorkWeek( d );
- else if ( dateCount == 7 ) selectWeek( d );
+ if ( dateCount == 7 ) selectWeek( d );
else selectDates( d, dateCount );
}
--- branches/KDE/3.5/kdepim/korganizer/koglobals.cpp #654060:654061
@@ -172,6 +172,11 @@
return !nonWorkDay;
}
+int KOGlobals::getWorkWeekMask()
+{
+ return KOPrefs::instance()->mWorkWeekMask;
+}
+
void KOGlobals::setHolidays( KHolidays *h )
{
delete mHolidays;
--- branches/KDE/3.5/kdepim/korganizer/koglobals.h #654060:654061
@@ -61,7 +61,7 @@
QStringList holiday( const QDate & );
bool isWorkDay( const QDate & );
-
+ int getWorkWeekMask();
/**
Set which holidays the user wants to use.
@param h a KHolidays object initialized with the desired locale.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic