summaryrefslogtreecommitdiffabout
path: root/korganizer/komonthview.cpp
Unidiff
Diffstat (limited to 'korganizer/komonthview.cpp') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/komonthview.cpp25
1 files changed, 12 insertions, 13 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 9085775..d825493 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -980,52 +980,49 @@ void MonthViewCell::selection( QListBoxItem *item )
980 980
981KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 981KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
982 : KOEventView( calendar, parent, name ), 982 : KOEventView( calendar, parent, name ),
983 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 983 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
984 mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 984 mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
985{ 985{
986 mShortDayLabelsM = false; 986 mShortDayLabelsM = false;
987 mShortDayLabelsW = false; 987 mShortDayLabelsW = false;
988 skipResize = false; 988 skipResize = false;
989 clPending = true; 989 clPending = true;
990 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" ); 990 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" );
991 mWidStack = new QWidgetStack( this ); 991 mWidStack = new QWidgetStack( this );
992 QVBoxLayout* hb = new QVBoxLayout( this ); 992 QVBoxLayout* hb = new QVBoxLayout( this );
993 mMonthView = new QWidget( mWidStack ); 993 mMonthView = new QWidget( mWidStack );
994 mWeekView = new QWidget( mWidStack ); 994 mWeekView = new QWidget( mWidStack );
995#if QT_VERSION >= 0x030000 995#if QT_VERSION >= 0x030000
996 mWidStack->addWidget(mMonthView ); 996 mWidStack->addWidget(mMonthView );
997 mWidStack->addWidget(mWeekView ); 997 mWidStack->addWidget(mWeekView );
998#else 998#else
999 mWidStack->addWidget( mMonthView, 1 ); 999 mWidStack->addWidget( mMonthView, 1 );
1000 mWidStack->addWidget( mWeekView , 1 ); 1000 mWidStack->addWidget( mWeekView , 1 );
1001#endif 1001#endif
1002 hb->addWidget( mNavigatorBar ); 1002 hb->addWidget( mNavigatorBar );
1003 hb->addWidget( mWidStack ); 1003 hb->addWidget( mWidStack );
1004 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1005 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 1004 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
1006 if ( mShowWeekView )
1007 mWeekStartsMonday = true;
1008 updatePossible = false; 1005 updatePossible = false;
1009 //updatePossible = true; 1006 //updatePossible = true;
1010 mCells.setAutoDelete( true ); 1007 mCells.setAutoDelete( true );
1011 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1008 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1012 mDayLabels.resize( mDaysPerWeek ); 1009 mDayLabels.resize( mDaysPerWeek );
1013 mDayLabelsW.resize( mDaysPerWeek ); 1010 mDayLabelsW.resize( mDaysPerWeek );
1014 QFont bfont = font(); 1011 QFont bfont = font();
1015 if ( QApplication::desktop()->width() < 650 ) { 1012 if ( QApplication::desktop()->width() < 650 ) {
1016 bfont.setPointSize( bfont.pointSize() - 2 ); 1013 bfont.setPointSize( bfont.pointSize() - 2 );
1017 } 1014 }
1018 bfont.setBold( true ); 1015 bfont.setBold( true );
1019 int i; 1016 int i;
1020 1017
1021 for( i = 0; i < mDaysPerWeek; i++ ) { 1018 for( i = 0; i < mDaysPerWeek; i++ ) {
1022 QLabel *label = new QLabel( mMonthView ); 1019 QLabel *label = new QLabel( mMonthView );
1023 label->setFont(bfont); 1020 label->setFont(bfont);
1024 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1021 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1025 label->setLineWidth(1); 1022 label->setLineWidth(1);
1026 label->setAlignment(AlignCenter); 1023 label->setAlignment(AlignCenter);
1027 mDayLabels.insert( i, label ); 1024 mDayLabels.insert( i, label );
1028 label = new QLabel( mWeekView ); 1025 label = new QLabel( mWeekView );
1029 label->setFont(bfont); 1026 label->setFont(bfont);
1030 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1027 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1031 label->setLineWidth(1); 1028 label->setLineWidth(1);
@@ -1196,144 +1193,146 @@ QPtrList<Incidence> KOMonthView::selectedIncidences()
1196 1193
1197DateList KOMonthView::selectedDates() 1194DateList KOMonthView::selectedDates()
1198{ 1195{
1199 DateList selected; 1196 DateList selected;
1200 1197
1201 if ( mSelectedCell ) { 1198 if ( mSelectedCell ) {
1202 QDate qd = mSelectedCell->selectedIncidenceDate(); 1199 QDate qd = mSelectedCell->selectedIncidenceDate();
1203 if ( qd.isValid() ) selected.append( qd ); 1200 if ( qd.isValid() ) selected.append( qd );
1204 } 1201 }
1205 1202
1206 return selected; 1203 return selected;
1207} 1204}
1208 1205
1209void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1206void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1210 const QDate &td) 1207 const QDate &td)
1211{ 1208{
1212#ifndef KORG_NOPRINTER 1209#ifndef KORG_NOPRINTER
1213 calPrinter->preview(CalPrinter::Month, fd, td); 1210 calPrinter->preview(CalPrinter::Month, fd, td);
1214#endif 1211#endif
1215} 1212}
1216 1213
1217void KOMonthView::updateConfig() 1214void KOMonthView::updateConfig()
1218{ 1215{
1219 1216
1220 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1217 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1221 1218
1222 if ( mShowWeekView ) { 1219 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1223 mWeekStartsMonday = true; 1220 mWeekStartsMonday = true;
1224 } 1221 }
1225 QFontMetrics fontmetric(mDayLabels[0]->font()); 1222 QFontMetrics fontmetric(mDayLabels[0]->font());
1226 mWidthLongDayLabel = 0; 1223 mWidthLongDayLabel = 0;
1227 1224
1228 for (int i = 0; i < 7; i++) { 1225 for (int i = 0; i < 7; i++) {
1229 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1226 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1230 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1227 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1231 } 1228 }
1232 bool temp = mShowSatSunComp ; 1229 bool temp = mShowSatSunComp ;
1233 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1230 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1234 if ( ! mShowWeekView ) { 1231 if ( ! mShowWeekView ) {
1235 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) 1232 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
1236 computeLayout(); 1233 computeLayout();
1237 } 1234 }
1238 updateDayLabels(); 1235 updateDayLabels();
1239 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 1236 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
1240 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 1237 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
1241 //resizeEvent( 0 ); 1238 //resizeEvent( 0 );
1242 for (uint i = 0; i < mCells.count(); ++i) { 1239 for (uint i = 0; i < mCells.count(); ++i) {
1243 mCells[i]->updateConfig(); 1240 mCells[i]->updateConfig();
1244 } 1241 }
1245 1242
1246 for (uint i = 0; i < mCellsW.count(); ++i) { 1243 for (uint i = 0; i < mCellsW.count(); ++i) {
1247 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont); 1244 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont);
1248 } 1245 }
1249#ifdef DESKTOP_VERSION 1246#ifdef DESKTOP_VERSION
1250 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); 1247 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
1251#endif 1248#endif
1252 updateView(); 1249 updateView();
1253} 1250}
1254 1251
1255void KOMonthView::updateDayLabels() 1252void KOMonthView::updateDayLabels()
1256{ 1253{
1257 1254
1258 QPtrVector<QLabel> *mDayLabelsT; 1255 QPtrVector<QLabel> *mDayLabelsT;
1259 1256
1260 mDayLabelsT = &mDayLabelsW; 1257 mDayLabelsT = &mDayLabelsW;
1261 for (int i = 0; i < 7; i++) { 1258 for (int i = 0; i < 7; i++) {
1262 if (mWeekStartsMonday) { 1259 {
1263 bool show = mShortDayLabelsW; 1260 bool show = mShortDayLabelsW;
1264 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1261 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1265 show = true; 1262 show = true;
1266 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1263 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1267 } else {
1268 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsW));
1269 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsW));
1270
1271 } 1264 }
1272 } 1265 }
1273 mDayLabelsT = &mDayLabels; 1266 mDayLabelsT = &mDayLabels;
1274 for (int i = 0; i < 7; i++) { 1267 for (int i = 0; i < 7; i++) {
1275 if (mWeekStartsMonday) { 1268 if (KGlobal::locale()->weekStartsMonday() || KOPrefs::instance()->mMonthViewSatSunTog ) {
1276 bool show = mShortDayLabelsM; 1269 bool show = mShortDayLabelsM;
1277 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1270 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1278 show = true; 1271 show = true;
1279 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1272 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1280 } else { 1273 } else {
1281 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM)); 1274 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM));
1282 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM)); 1275 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM));
1283 1276
1284 } 1277 }
1285 } 1278 }
1286 1279
1287} 1280}
1288 1281
1289void KOMonthView::showDates(const QDate &start, const QDate &) 1282void KOMonthView::showDates(const QDate &start, const QDate &)
1290{ 1283{
1291 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; 1284 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
1292 1285
1293 QPtrVector<MonthViewCell> *cells; 1286 QPtrVector<MonthViewCell> *cells;
1294 QPtrVector<QLabel> *dayLabels; 1287 QPtrVector<QLabel> *dayLabels;
1295 QPtrVector<KOWeekButton> *weekLabels; 1288 QPtrVector<KOWeekButton> *weekLabels;
1296 int weekNum = 6; 1289 int weekNum = 6;
1290 mStartDate = start;
1297 if ( mShowWeekView ) { 1291 if ( mShowWeekView ) {
1298 weekNum = 1; 1292 weekNum = 1;
1299 cells = &mCellsW; 1293 cells = &mCellsW;
1300 dayLabels = &mDayLabelsW; 1294 dayLabels = &mDayLabelsW;
1301 weekLabels = &mWeekLabelsW; 1295 weekLabels = &mWeekLabelsW;
1296 if ( !KGlobal::locale()->weekStartsMonday() ) {
1297 mStartDate = mStartDate.addDays( 1 );
1298 }
1302 } else { 1299 } else {
1303 cells = &mCells; 1300 cells = &mCells;
1304 dayLabels = &mDayLabels; 1301 dayLabels = &mDayLabels;
1305 weekLabels = &mWeekLabels; 1302 weekLabels = &mWeekLabels;
1306 } 1303 }
1307 1304
1308 mStartDate = start; 1305 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1309 1306
1307 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1308 mWeekStartsMonday = true;
1309 }
1310 int startWeekDay = mWeekStartsMonday ? 1 : 7; 1310 int startWeekDay = mWeekStartsMonday ? 1 : 7;
1311 1311
1312 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 1312 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
1313 mStartDate = mStartDate.addDays( -1 ); 1313 mStartDate = mStartDate.addDays( -1 );
1314 } 1314 }
1315
1316 bool primary = false; 1315 bool primary = false;
1317 uint i; 1316 uint i;
1318 for( i = 0; i < (*cells).size(); ++i ) { 1317 for( i = 0; i < (*cells).size(); ++i ) {
1319 QDate date = mStartDate.addDays( i ); 1318 QDate date = mStartDate.addDays( i );
1320 (*cells)[i]->setDate( date ); 1319 (*cells)[i]->setDate( date );
1321 1320
1322#ifndef KORG_NOPLUGINS 1321#ifndef KORG_NOPLUGINS
1323 // add holiday, if present 1322 // add holiday, if present
1324 QString hstring(KOCore::self()->holiday(date)); 1323 QString hstring(KOCore::self()->holiday(date));
1325 (*cells)[i]->setHoliday( hstring ); 1324 (*cells)[i]->setHoliday( hstring );
1326#endif 1325#endif
1327 1326
1328 } 1327 }
1329 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 1328 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
1330 for( i = 0; i < weekNum; ++i ) { 1329 for( i = 0; i < weekNum; ++i ) {
1331 int wno; 1330 int wno;
1332 // remember, according to ISO 8601, the first week of the year is the 1331 // remember, according to ISO 8601, the first week of the year is the
1333 // first week that contains a thursday. Thus we must subtract off 4, 1332 // first week that contains a thursday. Thus we must subtract off 4,
1334 // not just 1. 1333 // not just 1.
1335 int dayOfYear = date.dayOfYear(); 1334 int dayOfYear = date.dayOfYear();
1336 if (dayOfYear % 7 != 0) 1335 if (dayOfYear % 7 != 0)
1337 wno = dayOfYear / 7 + 1; 1336 wno = dayOfYear / 7 + 1;
1338 else 1337 else
1339 wno =dayOfYear / 7; 1338 wno =dayOfYear / 7;