[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