summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-02-07 10:32:40 (UTC)
committer zautrix <zautrix>2005-02-07 10:32:40 (UTC)
commitafc19166fcdc09d3d5b757a84abfeb0b2746f35f (patch) (unidiff)
tree91b1de5d4154eace5ddb2c0dc5c3243a53ed8661 /korganizer
parent363a0e27d630452762e76131b4606e14a3231f01 (diff)
downloadkdepimpi-afc19166fcdc09d3d5b757a84abfeb0b2746f35f.zip
kdepimpi-afc19166fcdc09d3d5b757a84abfeb0b2746f35f.tar.gz
kdepimpi-afc19166fcdc09d3d5b757a84abfeb0b2746f35f.tar.bz2
month fixes
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/komonthview.cpp216
-rw-r--r--korganizer/komonthview.h8
-rw-r--r--korganizer/koviewmanager.cpp2
3 files changed, 122 insertions, 104 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 70cbf96..234375b 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -19,13 +19,12 @@
19 19
20#include <qpopupmenu.h> 20#include <qpopupmenu.h>
21#include <qfont.h> 21#include <qfont.h>
22#include <qfontmetrics.h> 22#include <qfontmetrics.h>
23#include <qkeycode.h> 23#include <qkeycode.h>
24#include <qhbox.h> 24#include <qhbox.h>
25#include <qtimer.h>
26#include <qvbox.h> 25#include <qvbox.h>
27#include <qwidgetstack.h> 26#include <qwidgetstack.h>
28#include <qpushbutton.h> 27#include <qpushbutton.h>
29#include <qtooltip.h> 28#include <qtooltip.h>
30#include <qpainter.h> 29#include <qpainter.h>
31#include <qwhatsthis.h> 30#include <qwhatsthis.h>
@@ -71,13 +70,13 @@ protected:
71 return _wid->getWhatsThisText(p) ; 70 return _wid->getWhatsThisText(p) ;
72 }; 71 };
73private: 72private:
74 KNoScrollListBox* _wid; 73 KNoScrollListBox* _wid;
75 74
76}; 75};
77 76
78 77
79KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name) 78KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name)
80 : QListBox(parent, name, WRepaintNoErase) 79 : QListBox(parent, name, WRepaintNoErase)
81{ 80{
82#ifndef DESKTOP_VERSION 81#ifndef DESKTOP_VERSION
83 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 82 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
@@ -89,13 +88,13 @@ KNoScrollListBox::~KNoScrollListBox()
89 88
90} 89}
91QString KNoScrollListBox::getWhatsThisText(QPoint p) 90QString KNoScrollListBox::getWhatsThisText(QPoint p)
92{ 91{
93 QListBoxItem* item = itemAt ( p ); 92 QListBoxItem* item = itemAt ( p );
94 if ( ! item ) { 93 if ( ! item ) {
95 return i18n("Click in the cell\nto add an event!"); 94 return i18n("Click in the cell\nto add an event!");
96 } 95 }
97 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence()); 96 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence());
98} 97}
99void KNoScrollListBox::keyPressEvent(QKeyEvent *e) 98void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
100{ 99{
101 100
@@ -316,13 +315,13 @@ MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par )
316 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), 315 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ),
317 SLOT( defaultAction( QListBoxItem * ) ) ); 316 SLOT( defaultAction( QListBoxItem * ) ) );
318 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *, 317 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *,
319 const QPoint &) ), 318 const QPoint &) ),
320 SLOT( contextMenu( QListBoxItem * ) ) ); 319 SLOT( contextMenu( QListBoxItem * ) ) );
321 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ), 320 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ),
322 SLOT( selection( QListBoxItem * ) ) ); 321 SLOT( selection( QListBoxItem * ) ) );
323 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 322 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
324 SLOT( cellClicked( QListBoxItem * ) ) ); 323 SLOT( cellClicked( QListBoxItem * ) ) );
325 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 324 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
326 SLOT( selection( QListBoxItem * ) ) ); 325 SLOT( selection( QListBoxItem * ) ) );
327} 326}
328#ifdef DESKTOP_VERSION 327#ifdef DESKTOP_VERSION
@@ -404,19 +403,12 @@ void MonthViewCell::setHoliday( const QString &holiday )
404void MonthViewCell::keyPressEvent ( QKeyEvent * e ) 403void MonthViewCell::keyPressEvent ( QKeyEvent * e )
405{ 404{
406 405
407 e->ignore(); 406 e->ignore();
408 407
409} 408}
410void MonthViewCell::clear()
411{
412 mItemList->clear();
413 QApplication::removePostedEvents ( mItemList );
414 QApplication::removePostedEvents ( mLabel );
415 QApplication::removePostedEvents ( this );
416}
417 409
418void MonthViewCell::startUpdateCell() 410void MonthViewCell::startUpdateCell()
419{ 411{
420 412
421 mItemList->setFocusPolicy(NoFocus); 413 mItemList->setFocusPolicy(NoFocus);
422 if ( !mMonthView->isUpdatePossible() ) 414 if ( !mMonthView->isUpdatePossible() )
@@ -549,50 +541,50 @@ void MonthViewCell::insertEvent(Event *event)
549#endif 541#endif
550 mItemList->insertItem( item ); 542 mItemList->insertItem( item );
551 mToolTip += "\n"; 543 mToolTip += "\n";
552} 544}
553void MonthViewCell::insertTodo(Todo *todo) 545void MonthViewCell::insertTodo(Todo *todo)
554{ 546{
555 QString text;
556 mItemList->setFocusPolicy(WheelFocus); 547 mItemList->setFocusPolicy(WheelFocus);
557 if (todo->hasDueDate()) { 548 QString text;
558 if (!todo->doesFloat()) { 549 if (todo->hasDueDate()) {
559 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 550 if (!todo->doesFloat()) {
560 text += " "; 551 text += KGlobal::locale()->formatTime(todo->dtDue().time());
552 text += " ";
553 }
561 } 554 }
562 } 555 text += i18n("Td: %1").arg(todo->summary());
563 text += i18n("T: %1").arg(todo->summary()); 556
564 557 MonthViewItem *item = new MonthViewItem( todo, mDate, text );
565 MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 558 //item->setPalette( mStandardPalette );
566 //item->setPalette( mStandardPalette ); 559 QPalette pal;
567 QPalette pal; 560 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
568 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 561 QStringList categories = todo->categories();
569 QStringList categories = todo->categories(); 562 QString cat = categories.first();
570 QString cat = categories.first(); 563 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
571 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 564 pal = getPalette();
572 pal = getPalette(); 565 if (cat.isEmpty()) {
573 if (cat.isEmpty()) { 566 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
574 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 567 } else {
568 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
569 }
570
575 } else { 571 } else {
576 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 572 if (cat.isEmpty()) {
573 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
574 } else {
575 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
576 }
577 } 577 }
578 578
579 } else { 579 } else {
580 if (cat.isEmpty()) { 580 pal = mStandardPalette ;
581 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
582 } else {
583 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
584 }
585 } 581 }
586 582 item->setPalette( pal );
587 } else { 583 mItemList->insertItem( item );
588 pal = mStandardPalette ; 584 mToolTip += text+"\n";
589 }
590 item->setPalette( pal );
591 mItemList->insertItem( item );
592 mToolTip += text+"\n";
593} 585}
594void MonthViewCell::finishUpdateCell() 586void MonthViewCell::finishUpdateCell()
595{ 587{
596#ifdef DESKTOP_VERSION 588#ifdef DESKTOP_VERSION
597 if (mToolTip != "") 589 if (mToolTip != "")
598 QToolTip::add(this,mToolTip,toolTipGroup(),""); 590 QToolTip::add(this,mToolTip,toolTipGroup(),"");
@@ -613,12 +605,13 @@ void MonthViewCell::finishUpdateCell()
613 605
614 mLabel->setText( text ); 606 mLabel->setText( text );
615 resizeEvent( 0 ); 607 resizeEvent( 0 );
616} 608}
617void MonthViewCell::updateCell() 609void MonthViewCell::updateCell()
618{ 610{
611 qDebug("MonthViewCell::updateCell() ");
619 if ( !mMonthView->isUpdatePossible() ) 612 if ( !mMonthView->isUpdatePossible() )
620 return; 613 return;
621 startUpdateCell(); 614 startUpdateCell();
622 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 615 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
623 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 616 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
624 Event *event; 617 Event *event;
@@ -780,29 +773,28 @@ void MonthViewCell::contextMenu( QListBoxItem *item )
780 if ( incidence ) mMonthView->showContextMenu( incidence ); 773 if ( incidence ) mMonthView->showContextMenu( incidence );
781} 774}
782 775
783void MonthViewCell::selection( QListBoxItem *item ) 776void MonthViewCell::selection( QListBoxItem *item )
784{ 777{
785 if ( !item ) return; 778 if ( !item ) return;
779
786 mMonthView->setSelectedCell( this ); 780 mMonthView->setSelectedCell( this );
787} 781}
788 782
789 783
790// ******************************************************************************* 784// *******************************************************************************
791// ******************************************************************************* 785// *******************************************************************************
792// ******************************************************************************* 786// *******************************************************************************
793 787
794 788
795KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 789KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
796 : KOEventView( calendar, parent, name ), 790 : KOEventView( calendar, parent, name ),
797 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 791 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
798 mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 792 mShortDayLabels( false ), mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
799{ 793{
800 ignoreResizeEvent = 0; 794 skipResize = false;
801 mShortDayLabelsW = false;
802 mShortDayLabelsM = false;
803 clPending = true; 795 clPending = true;
804 mWidStack = new QWidgetStack( this ); 796 mWidStack = new QWidgetStack( this );
805 QHBoxLayout* hb = new QHBoxLayout( this ); 797 QHBoxLayout* hb = new QHBoxLayout( this );
806 mMonthView = new QWidget( mWidStack ); 798 mMonthView = new QWidget( mWidStack );
807 mWeekView = new QWidget( mWidStack ); 799 mWeekView = new QWidget( mWidStack );
808#if QT_VERSION >= 0x030000 800#if QT_VERSION >= 0x030000
@@ -816,12 +808,13 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
816 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 808 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
817 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 809 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
818 if ( mShowWeekView ) 810 if ( mShowWeekView )
819 mWeekStartsMonday = true; 811 mWeekStartsMonday = true;
820 updatePossible = false; 812 updatePossible = false;
821 mCells.setAutoDelete( true ); 813 mCells.setAutoDelete( true );
814 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
822 mDayLabels.resize( mDaysPerWeek ); 815 mDayLabels.resize( mDaysPerWeek );
823 mDayLabelsW.resize( mDaysPerWeek ); 816 mDayLabelsW.resize( mDaysPerWeek );
824 QFont bfont = font(); 817 QFont bfont = font();
825 if ( QApplication::desktop()->width() < 650 ) { 818 if ( QApplication::desktop()->width() < 650 ) {
826 bfont.setPointSize( bfont.pointSize() - 2 ); 819 bfont.setPointSize( bfont.pointSize() - 2 );
827 } 820 }
@@ -904,13 +897,13 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
904 SIGNAL( showDaySignal( QDate ) ) ); 897 SIGNAL( showDaySignal( QDate ) ) );
905 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 898 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
906 } 899 }
907 900
908 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 901 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
909 mContextMenu = eventPopup(); 902 mContextMenu = eventPopup();
910 //updateConfig(); //useless here ... 903 // updateConfig(); //useless here...
911 // ... but we need mWidthLongDayLabel computed 904 // ... but we need mWidthLongDayLabel computed
912 QFontMetrics fontmetric(mDayLabels[0]->font()); 905 QFontMetrics fontmetric(mDayLabels[0]->font());
913 mWidthLongDayLabel = 0; 906 mWidthLongDayLabel = 0;
914 for (int i = 0; i < 7; i++) { 907 for (int i = 0; i < 7; i++) {
915 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 908 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
916 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 909 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
@@ -1011,17 +1004,21 @@ void KOMonthView::updateConfig()
1011 1004
1012 if ( mShowWeekView ) { 1005 if ( mShowWeekView ) {
1013 mWeekStartsMonday = true; 1006 mWeekStartsMonday = true;
1014 } 1007 }
1015 QFontMetrics fontmetric(mDayLabels[0]->font()); 1008 QFontMetrics fontmetric(mDayLabels[0]->font());
1016 mWidthLongDayLabel = 0; 1009 mWidthLongDayLabel = 0;
1010
1017 for (int i = 0; i < 7; i++) { 1011 for (int i = 0; i < 7; i++) {
1018 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1012 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1019 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1013 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1020 } 1014 }
1015 bool temp = mShowSatSunComp ;
1016 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1021 if ( ! mShowWeekView ) { 1017 if ( ! mShowWeekView ) {
1018 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
1022 computeLayout(); 1019 computeLayout();
1023 } 1020 }
1024 updateDayLabels(); 1021 updateDayLabels();
1025 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 1022 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
1026 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 1023 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
1027 //resizeEvent( 0 ); 1024 //resizeEvent( 0 );
@@ -1043,32 +1040,32 @@ void KOMonthView::updateDayLabels()
1043 1040
1044 QPtrVector<QLabel> *mDayLabelsT; 1041 QPtrVector<QLabel> *mDayLabelsT;
1045 1042
1046 mDayLabelsT = &mDayLabelsW; 1043 mDayLabelsT = &mDayLabelsW;
1047 for (int i = 0; i < 7; i++) { 1044 for (int i = 0; i < 7; i++) {
1048 if (mWeekStartsMonday) { 1045 if (mWeekStartsMonday) {
1049 bool show = mShortDayLabelsW; 1046 bool show = mShortDayLabels;
1050 if ( i > 4 && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1047 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1051 show = true; 1048 show = true;
1052 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1049 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1053 } else { 1050 } else {
1054 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsW)); 1051 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels));
1055 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsW)); 1052 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels));
1056 1053
1057 } 1054 }
1058 } 1055 }
1059 mDayLabelsT = &mDayLabels; 1056 mDayLabelsT = &mDayLabels;
1060 for (int i = 0; i < 7; i++) { 1057 for (int i = 0; i < 7; i++) {
1061 if (mWeekStartsMonday) { 1058 if (mWeekStartsMonday) {
1062 bool show = mShortDayLabelsM; 1059 bool show = mShortDayLabels;
1063 if ( i > 4 && KOPrefs::instance()->mMonthViewSatSunTog && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1060 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1064 show = true; 1061 show = true;
1065 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1062 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1066 } else { 1063 } else {
1067 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM)); 1064 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels));
1068 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM)); 1065 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels));
1069 1066
1070 } 1067 }
1071 } 1068 }
1072 1069
1073} 1070}
1074 1071
@@ -1260,45 +1257,59 @@ void KOMonthView::updateView()
1260 1257
1261 //qDebug("update time %d ", ti.elapsed()); 1258 //qDebug("update time %d ", ti.elapsed());
1262} 1259}
1263 1260
1264void KOMonthView::resizeEvent(QResizeEvent * e) 1261void KOMonthView::resizeEvent(QResizeEvent * e)
1265{ 1262{
1266 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height()); 1263 qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height());
1267 if ( ignoreResizeEvent ) { 1264 if ( skipResize ) {
1268 //qDebug("KOMonthView::resizeEvent ignored "); 1265 skipResize = false;
1269 --ignoreResizeEvent; 1266 qDebug("skipResize ");
1270 return; 1267 return;
1271 } 1268 }
1272 if ( e->size().width()+ e->size().height() < 240 )
1273 return;
1274 computeLayout(); 1269 computeLayout();
1275 clPending = true; 1270 clPending = true;
1276 if ( mShowWeekView ) 1271 if ( mShowWeekView )
1277 mCellsW[0]->setFocus(); 1272 mCellsW[0]->setFocus();
1278 else 1273 else
1279 mCells[0]->setFocus(); 1274 mCells[0]->setFocus();
1280} 1275}
1281void KOMonthView::computeLayoutWeek() 1276void KOMonthView::computeLayoutWeek()
1282{ 1277{
1283 static int widd = 0; 1278 static int lastWid = 0;
1284 static int heigg = 0; 1279 static int lastHei = 0;
1285 if ( widd == width() && heigg == height () ) {
1286 return;
1287 }
1288 widd = width() ;
1289 heigg = height ();
1290 int daysToShow; 1280 int daysToShow;
1281 bool combinedSatSun = false;
1282 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1283 daysToShow = 6;
1284 combinedSatSun = true;
1285 }
1286 int tWid = topLevelWidget()->size().width();
1287 int tHei = topLevelWidget()->size().height();
1288
1291 int wid = size().width();//e 1289 int wid = size().width();//e
1292 int hei = size().height()-1; 1290 int hei = size().height()-1;
1291
1292 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1293 return;
1294
1295
1296 if ( lastWid == width() && lastHei ==height() )
1297 return;
1298 lastWid =width();
1299 lastHei = height();
1300
1301
1293 if ( wid < hei ) 1302 if ( wid < hei )
1294 daysToShow = 2; 1303 daysToShow = 2;
1295 else 1304 else
1296 daysToShow = 3; 1305 daysToShow = 3;
1297 bool combinedSatSun = true; 1306 mShowSatSunComp = true;
1307 combinedSatSun = true;
1298 1308
1309 qDebug("KOMonthView::computeLayout() WWW ------------------------------------ ");
1299 QFontMetrics fm ( mWeekLabels[0]->font() ); 1310 QFontMetrics fm ( mWeekLabels[0]->font() );
1300 int weeklabelwid = fm.width( "888" ); 1311 int weeklabelwid = fm.width( "888" );
1301 wid -= weeklabelwid; 1312 wid -= weeklabelwid;
1302 1313
1303 int colWid = wid / daysToShow; 1314 int colWid = wid / daysToShow;
1304 int lastCol = wid - ( colWid*6 ); 1315 int lastCol = wid - ( colWid*6 );
@@ -1369,56 +1380,52 @@ void KOMonthView::computeLayoutWeek()
1369 } 1380 }
1370 } 1381 }
1371 y= dayLabelHei; 1382 y= dayLabelHei;
1372 h = cellHei ; 1383 h = cellHei ;
1373 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); 1384 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei);
1374 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1385 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1375 1386 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1376 mShortDayLabelsW = mDayLabelsW[0]->width() < mWidthLongDayLabel ; 1387 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1388 mShortDayLabels = mDayLabelsW[0]->width() < mWidthLongDayLabel ;
1377 updateDayLabels(); 1389 updateDayLabels();
1378 bool forceUpdate = !updatePossible; 1390 bool forceUpdate = !updatePossible;
1379 updatePossible = true; 1391 updatePossible = true;
1380 //mWeekLabels[mNumWeeks]->setText( i18n("M")); 1392 //mWeekLabels[mNumWeeks]->setText( i18n("M"));
1381 if ( forceUpdate ) 1393 if ( forceUpdate )
1382 updateView(); 1394 updateView();
1383} 1395}
1384void KOMonthView::computeLayout() 1396void KOMonthView::computeLayout()
1385{ 1397{
1386 // select the appropriate heading string size. E.g. "Wednesday" or "Wed". 1398
1387 // note this only changes the text if the requested size crosses the
1388 // threshold between big enough to support the full name and not big
1389 // enough.
1390
1391 int tWid = topLevelWidget()->size().width();
1392 int tHei = topLevelWidget()->size().height();
1393
1394 int wid = size().width();//e
1395 int hei = size().height()-1;
1396 1399
1397 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1400 static int lastWid = 0;
1398 return; 1401 static int lastHei = 0;
1399 1402
1400
1401 if ( mShowWeekView ){ 1403 if ( mShowWeekView ){
1402 computeLayoutWeek(); 1404 computeLayoutWeek();
1403 return; 1405 return;
1404 } 1406 }
1405 static int widd = 0;
1406 static int heigg = 0;
1407 if ( widd == width() && heigg == height () ) {
1408 return;
1409 }
1410 widd = width() ;
1411 heigg = height ();
1412
1413 int daysToShow = 7; 1407 int daysToShow = 7;
1414 bool combinedSatSun = false; 1408 bool combinedSatSun = false;
1415 if (KOPrefs::instance()->mMonthViewSatSunTog ) { 1409 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1416 daysToShow = 6; 1410 daysToShow = 6;
1417 combinedSatSun = true; 1411 combinedSatSun = true;
1418 } 1412 }
1413 int tWid = topLevelWidget()->size().width();
1414 int tHei = topLevelWidget()->size().height();
1415
1416 int wid = size().width();//e
1417 int hei = size().height()-1;
1418
1419 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1420 return;
1421 if ( lastWid == width() && lastHei ==height() )
1422 return;
1423 lastWid =width();
1424 lastHei = height();
1425 qDebug("KOMonthView::computeLayout() MMM ------------------------------------ ");
1419 QFontMetrics fm ( mWeekLabels[0]->font() ); 1426 QFontMetrics fm ( mWeekLabels[0]->font() );
1420 int weeklabelwid = fm.width( "888" ); 1427 int weeklabelwid = fm.width( "888" );
1421 wid -= weeklabelwid; 1428 wid -= weeklabelwid;
1422 1429
1423 int colWid = wid / daysToShow; 1430 int colWid = wid / daysToShow;
1424 int lastCol = wid - ( colWid*6 ); 1431 int lastCol = wid - ( colWid*6 );
@@ -1449,12 +1456,13 @@ void KOMonthView::computeLayout()
1449 } 1456 }
1450 x= 0; 1457 x= 0;
1451 y= dayLabelHei; 1458 y= dayLabelHei;
1452 w = colWid; 1459 w = colWid;
1453 h = cellHei ; 1460 h = cellHei ;
1454 for ( i = 0; i < mCells.count(); ++i) { 1461 for ( i = 0; i < mCells.count(); ++i) {
1462 //qDebug("iii %d ", i);
1455 w = colWid; 1463 w = colWid;
1456 if ( ((i) % 7) >= 7-colModulo ) { 1464 if ( ((i) % 7) >= 7-colModulo ) {
1457 ++w; 1465 ++w;
1458 } 1466 }
1459 if ( i == (6-rowModulo)*7) 1467 if ( i == (6-rowModulo)*7)
1460 ++h; 1468 ++h;
@@ -1485,38 +1493,50 @@ void KOMonthView::computeLayout()
1485 if ( i == (6-rowModulo)) 1493 if ( i == (6-rowModulo))
1486 ++h; 1494 ++h;
1487 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h); 1495 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h);
1488 y += h; 1496 y += h;
1489 } 1497 }
1490 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1498 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1491 mShortDayLabelsM = mDayLabels[0]->width() < mWidthLongDayLabel ; 1499 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1492 qDebug("dlwid %d %d ",mDayLabels[0]->width() , mWidthLongDayLabel); 1500 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1501 mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ;
1493 updateDayLabels(); 1502 updateDayLabels();
1494 bool forceUpdate = !updatePossible; 1503 bool forceUpdate = !updatePossible;
1495 updatePossible = true; 1504 updatePossible = true;
1505 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1496 if ( forceUpdate ) 1506 if ( forceUpdate )
1497 updateView(); 1507 updateView();
1498} 1508}
1499 1509
1500void KOMonthView::showContextMenu( Incidence *incidence ) 1510void KOMonthView::showContextMenu( Incidence *incidence )
1501{ 1511{
1502 mContextMenu->showIncidencePopup(incidence); 1512 mContextMenu->showIncidencePopup(incidence);
1503 1513 /*
1514 if( incidence && incidence->type() == "Event" ) {
1515 Event *event = static_cast<Event *>(incidence);
1516 mContextMenu->showEventPopup(event);
1517 } else {
1518 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
1519 }
1520 */
1504} 1521}
1505MonthViewCell * KOMonthView::selectedCell( ) 1522MonthViewCell * KOMonthView::selectedCell( )
1506{ 1523{
1507 return mSelectedCell; 1524 return mSelectedCell;
1508} 1525}
1509void KOMonthView::setSelectedCell( MonthViewCell *cell ) 1526void KOMonthView::setSelectedCell( MonthViewCell *cell )
1510{ 1527{
1528 // qDebug("KOMonthView::setSelectedCell ");
1511 if ( mSelectedCell && mSelectedCell != cell ) { 1529 if ( mSelectedCell && mSelectedCell != cell ) {
1512 MonthViewCell * mvc = mSelectedCell; 1530 MonthViewCell * mvc = mSelectedCell;
1513 mSelectedCell = cell; 1531 mSelectedCell = cell;
1514 mvc->deselect(); 1532 mvc->deselect();
1515 } else 1533 } else
1516 mSelectedCell = cell; 1534 mSelectedCell = cell;
1535 // if ( mSelectedCell )
1536 // mSelectedCell->select();
1517 if ( !mSelectedCell ) 1537 if ( !mSelectedCell )
1518 emit incidenceSelected( 0 ); 1538 emit incidenceSelected( 0 );
1519 else 1539 else
1520 emit incidenceSelected( mSelectedCell->selectedIncidence() ); 1540 emit incidenceSelected( mSelectedCell->selectedIncidence() );
1521} 1541}
1522 1542
@@ -1555,13 +1575,13 @@ void KOMonthView::keyPressEvent ( QKeyEvent * e )
1555 { 1575 {
1556 emit nextMonth(); 1576 emit nextMonth();
1557 if ( mShowWeekView ) 1577 if ( mShowWeekView )
1558 mCellsW[0]->setFocus(); 1578 mCellsW[0]->setFocus();
1559 else 1579 else
1560 mCells[0]->setFocus(); 1580 mCells[0]->setFocus();
1561 1581
1562 } 1582 }
1563 e->accept(); 1583 e->accept();
1564 break; 1584 break;
1565 case Key_Return: 1585 case Key_Return:
1566 case Key_Enter: 1586 case Key_Enter:
1567 { 1587 {
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index 9dbe319..a29a1a8 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -151,13 +151,12 @@ class MonthViewCell : public QWidget
151 151
152 Incidence *selectedIncidence(); 152 Incidence *selectedIncidence();
153 QDate selectedIncidenceDate(); 153 QDate selectedIncidenceDate();
154 154
155 void deselect(); 155 void deselect();
156 void select(); 156 void select();
157 void clear();
158 157
159#ifdef DESKTOP_VERSION 158#ifdef DESKTOP_VERSION
160 static QToolTipGroup *toolTipGroup(); 159 static QToolTipGroup *toolTipGroup();
161#endif 160#endif
162 signals: 161 signals:
163 void defaultAction( Incidence * ); 162 void defaultAction( Incidence * );
@@ -223,15 +222,15 @@ class KOMonthView: public KOEventView
223 virtual DateList selectedDates(); 222 virtual DateList selectedDates();
224 223
225 virtual void printPreview(CalPrinter *calPrinter, 224 virtual void printPreview(CalPrinter *calPrinter,
226 const QDate &, const QDate &); 225 const QDate &, const QDate &);
227 bool isMonthView() { return true; } 226 bool isMonthView() { return true; }
228 bool isUpdatePossible() { return updatePossible; } 227 bool isUpdatePossible() { return updatePossible; }
229 void setIgnoreResizeEvent( int c ) { ignoreResizeEvent = c ;}
230 228
231 MonthViewCell * selectedCell(); 229 MonthViewCell * selectedCell();
230 bool skipResize;
232 public slots: 231 public slots:
233 virtual void updateView(); 232 virtual void updateView();
234 virtual void updateConfig(); 233 virtual void updateConfig();
235 virtual void showDates(const QDate &start, const QDate &end); 234 virtual void showDates(const QDate &start, const QDate &end);
236 virtual void showEvents(QPtrList<Event> eventList); 235 virtual void showEvents(QPtrList<Event> eventList);
237 236
@@ -256,36 +255,35 @@ class KOMonthView: public KOEventView
256 protected: 255 protected:
257 void resizeEvent(QResizeEvent *); 256 void resizeEvent(QResizeEvent *);
258 void viewChanged(); 257 void viewChanged();
259 void updateDayLabels(); 258 void updateDayLabels();
260 259
261 private: 260 private:
262 int ignoreResizeEvent;
263 int currentWeek(); 261 int currentWeek();
264 bool clPending; 262 bool clPending;
265 QWidgetStack * mWidStack; 263 QWidgetStack * mWidStack;
266 QWidget* mMonthView; 264 QWidget* mMonthView;
267 QWidget* mWeekView; 265 QWidget* mWeekView;
268 bool mShowWeekView; 266 bool mShowWeekView;
269 bool updatePossible; 267 bool updatePossible;
270 int mDaysPerWeek; 268 int mDaysPerWeek;
271 int mNumWeeks; 269 int mNumWeeks;
272 int mNumCells; 270 int mNumCells;
273 bool mWeekStartsMonday; 271 bool mWeekStartsMonday;
272 bool mShowSatSunComp;
274 void computeLayout(); 273 void computeLayout();
275 void computeLayoutWeek(); 274 void computeLayoutWeek();
276 275
277 QPtrVector<MonthViewCell> mCells; 276 QPtrVector<MonthViewCell> mCells;
278 QPtrVector<QLabel> mDayLabels; 277 QPtrVector<QLabel> mDayLabels;
279 QPtrVector<KOWeekButton> mWeekLabels; 278 QPtrVector<KOWeekButton> mWeekLabels;
280 QPtrVector<MonthViewCell> mCellsW; 279 QPtrVector<MonthViewCell> mCellsW;
281 QPtrVector<QLabel> mDayLabelsW; 280 QPtrVector<QLabel> mDayLabelsW;
282 QPtrVector<KOWeekButton> mWeekLabelsW; 281 QPtrVector<KOWeekButton> mWeekLabelsW;
283 282
284 bool mShortDayLabelsM; 283 bool mShortDayLabels;
285 bool mShortDayLabelsW;
286 int mWidthLongDayLabel; 284 int mWidthLongDayLabel;
287 285
288 QDate mStartDate; 286 QDate mStartDate;
289 287
290 MonthViewCell *mSelectedCell; 288 MonthViewCell *mSelectedCell;
291 289
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp
index 62d3e7f..ba15f7f 100644
--- a/korganizer/koviewmanager.cpp
+++ b/korganizer/koviewmanager.cpp
@@ -198,13 +198,13 @@ void KOViewManager::showView(KOrg::BaseView *view, bool fullScreen )
198 if(view == mCurrentView && view != mWhatsNextView ) { 198 if(view == mCurrentView && view != mWhatsNextView ) {
199 if ( mCurrentAgendaView < 0 ) 199 if ( mCurrentAgendaView < 0 )
200 return; 200 return;
201 full = mMainView->leftFrame()->isVisible(); 201 full = mMainView->leftFrame()->isVisible();
202 } else { 202 } else {
203 if ( view == mMonthView && mMonthView) 203 if ( view == mMonthView && mMonthView)
204 mMonthView->setIgnoreResizeEvent( 1 ); 204 mMonthView->skipResize = true ;
205 mCurrentView = view; 205 mCurrentView = view;
206 // bool full = fullScreen; 206 // bool full = fullScreen;
207 bool isFull = !mMainView->leftFrame()->isVisible(); 207 bool isFull = !mMainView->leftFrame()->isVisible();
208 if ( isFull && KOPrefs::instance()->mViewChangeHoldFullscreen ) 208 if ( isFull && KOPrefs::instance()->mViewChangeHoldFullscreen )
209 full = true; 209 full = true;
210 if ( !isFull && KOPrefs::instance()->mViewChangeHoldNonFullscreen ) 210 if ( !isFull && KOPrefs::instance()->mViewChangeHoldNonFullscreen )