[Korganizer-devel] [Bug 128435] Working days views won't follow the configured work days
Allen Winter
winter at kde.org
Sun Apr 15 02:27:47 CEST 2007
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=128435
winter kde org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
------- Additional Comments From winter kde org 2007-04-15 02:27 -------
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.
More information about the Korganizer-devel
mailing list