-rw-r--r-- | korganizer/komonthview.cpp | 25 |
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 | ||
981 | KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) | 981 | KOMonthView::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 | ||
1197 | DateList KOMonthView::selectedDates() | 1194 | DateList 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 | ||
1209 | void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, | 1206 | void 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 | ||
1217 | void KOMonthView::updateConfig() | 1214 | void 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 | ||
1255 | void KOMonthView::updateDayLabels() | 1252 | void 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 | ||
1289 | void KOMonthView::showDates(const QDate &start, const QDate &) | 1282 | void 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; |