summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kdatenavigator.cpp2
-rw-r--r--korganizer/komonthview.cpp52
-rw-r--r--korganizer/komonthview.h4
3 files changed, 46 insertions, 12 deletions
diff --git a/korganizer/kdatenavigator.cpp b/korganizer/kdatenavigator.cpp
index f31e50a..c08f44f 100644
--- a/korganizer/kdatenavigator.cpp
+++ b/korganizer/kdatenavigator.cpp
@@ -13,97 +13,97 @@
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qstring.h> 24#include <qstring.h>
25#include <qkeycode.h> 25#include <qkeycode.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qtimer.h> 27#include <qtimer.h>
28#include <qframe.h> 28#include <qframe.h>
29#include <qlabel.h> 29#include <qlabel.h>
30#include <qapplication.h> 30#include <qapplication.h>
31 31
32#include <kdebug.h> 32#include <kdebug.h>
33#include <klocale.h> 33#include <klocale.h>
34#include <kglobal.h> 34#include <kglobal.h>
35 35
36#include "koglobals.h" 36#include "koglobals.h"
37#include "koprefs.h" 37#include "koprefs.h"
38#ifndef KORG_NOPLUGINS 38#ifndef KORG_NOPLUGINS
39#include "kocore.h" 39#include "kocore.h"
40#endif 40#endif
41 41
42#include <kcalendarsystem.h> 42#include <kcalendarsystem.h>
43 43
44#include "navigatorbar.h" 44#include "navigatorbar.h"
45 45
46#include "kdatenavigator.h" 46#include "kdatenavigator.h"
47 47
48KDateNavigator::KDateNavigator( QWidget *parent, Calendar *calendar, 48KDateNavigator::KDateNavigator( QWidget *parent, Calendar *calendar,
49 bool show_week_nums, const char *name, 49 bool show_week_nums, const char *name,
50 QDate startDate ) 50 QDate startDate )
51 : QFrame(parent, name), 51 : QFrame(parent, name),
52 updateTimer(0L) 52 updateTimer(0L)
53{ 53{
54 mCalendar = calendar; 54 mCalendar = calendar;
55 55
56 setFrameStyle(QFrame::NoFrame); 56 setFrameStyle(QFrame::NoFrame);
57 57
58 QGridLayout *topLayout = new QGridLayout(this,8,8); 58 QGridLayout *topLayout = new QGridLayout(this,8,8);
59 59
60 if (! startDate.isValid()) { 60 if (! startDate.isValid()) {
61 kdDebug() << "KDateNavigator::KDateNavigator(): an invalid date was passed as a parameter!" << endl; 61 qDebug("KDateNavigator::invalid startdate ");
62 startDate = QDate::currentDate(); 62 startDate = QDate::currentDate();
63 } 63 }
64 64
65 mSelectedDates.append(startDate); 65 mSelectedDates.append(startDate);
66 m_MthYr = startDate; 66 m_MthYr = startDate;
67 m_bShowWeekNums = show_week_nums; 67 m_bShowWeekNums = show_week_nums;
68 68
69 setFont( KOPrefs::instance()->mDateNavigatorFont ); 69 setFont( KOPrefs::instance()->mDateNavigatorFont );
70 mNavigatorBar = new NavigatorBar( startDate, this ); 70 mNavigatorBar = new NavigatorBar( startDate, this );
71 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 ); 71 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 );
72 //mNavigatorBar->resize( 1,1); 72 //mNavigatorBar->resize( 1,1);
73 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) ); 73 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) );
74 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); 74 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
75 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); 75 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
76 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) ); 76 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) );
77 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) ); 77 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) );
78 78
79 // get the day of the week on the first day 79 // get the day of the week on the first day
80 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); 80 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1);
81 m_fstDayOfWk = dayone.dayOfWeek(); 81 m_fstDayOfWk = dayone.dayOfWeek();
82 82
83 int i; 83 int i;
84 84
85 // Set up the heading fields. 85 // Set up the heading fields.
86 for( i = 0; i < 7; i++ ) { 86 for( i = 0; i < 7; i++ ) {
87 headings[i] = new QLabel("",this); 87 headings[i] = new QLabel("",this);
88 //headings[i]->setFont(QFont("Arial", 10, QFont::Bold)); 88 //headings[i]->setFont(QFont("Arial", 10, QFont::Bold));
89 headings[i]->setAlignment(AlignCenter); 89 headings[i]->setAlignment(AlignCenter);
90 90
91 topLayout->addWidget(headings[i],1,i+1); 91 topLayout->addWidget(headings[i],1,i+1);
92 } 92 }
93 93
94 // Create the weeknumber labels 94 // Create the weeknumber labels
95 for( i = 0; i < 6; i++ ) { 95 for( i = 0; i < 6; i++ ) {
96 weeknos[i] = new QLabel(this); 96 weeknos[i] = new QLabel(this);
97 weeknos[i]->setAlignment(AlignCenter); 97 weeknos[i]->setAlignment(AlignCenter);
98 //weeknos[i]->setFont(QFont("Arial", 10)); 98 //weeknos[i]->setFont(QFont("Arial", 10));
99 if(!show_week_nums) { 99 if(!show_week_nums) {
100 weeknos[i]->hide(); 100 weeknos[i]->hide();
101 } 101 }
102 weeknos[i]->installEventFilter(this); 102 weeknos[i]->installEventFilter(this);
103 103
104 topLayout->addWidget(weeknos[i],i+2,0); 104 topLayout->addWidget(weeknos[i],i+2,0);
105 } 105 }
106 106
107 daymatrix = new KODayMatrix( this, mCalendar, dayone, 107 daymatrix = new KODayMatrix( this, mCalendar, dayone,
108 "KDateNavigator::DayMatrix"); 108 "KDateNavigator::DayMatrix");
109 daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken); 109 daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken);
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index dfa89e2..df5e060 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -55,148 +55,163 @@
55#include "komonthview.h" 55#include "komonthview.h"
56 56
57#define PIXMAP_SIZE 5 57#define PIXMAP_SIZE 5
58#ifdef DESKTOP_VERSION 58#ifdef DESKTOP_VERSION
59QToolTipGroup *MonthViewCell::mToolTipGroup = 0; 59QToolTipGroup *MonthViewCell::mToolTipGroup = 0;
60#endif 60#endif
61class KNOWhatsThis :public QWhatsThis 61class KNOWhatsThis :public QWhatsThis
62{ 62{
63public: 63public:
64 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { }; 64 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { };
65 //~KNOWhatsThis( ) {qDebug("~KNOWhatsThis( ) "); }; 65 //~KNOWhatsThis( ) {qDebug("~KNOWhatsThis( ) "); };
66 66
67protected: 67protected:
68 virtual QString text( const QPoint& p) 68 virtual QString text( const QPoint& p)
69 { 69 {
70 return _wid->getWhatsThisText(p) ; 70 return _wid->getWhatsThisText(p) ;
71 }; 71 };
72private: 72private:
73 KNoScrollListBox* _wid; 73 KNoScrollListBox* _wid;
74 74
75}; 75};
76 76
77 77
78KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name) 78KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name)
79 : QListBox(parent, name, WRepaintNoErase) 79 : QListBox(parent, name, WRepaintNoErase)
80{ 80{
81#ifndef DESKTOP_VERSION 81#ifndef DESKTOP_VERSION
82 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 82 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
83#endif 83#endif
84 mWT = new KNOWhatsThis(this); 84 mWT = new KNOWhatsThis(this);
85} 85}
86KNoScrollListBox::~KNoScrollListBox() 86KNoScrollListBox::~KNoScrollListBox()
87{ 87{
88 88
89} 89}
90QString KNoScrollListBox::getWhatsThisText(QPoint p) 90QString KNoScrollListBox::getWhatsThisText(QPoint p)
91{ 91{
92 QListBoxItem* item = itemAt ( p ); 92 QListBoxItem* item = itemAt ( p );
93 if ( ! item ) { 93 if ( ! item ) {
94 return i18n("Click in the cell\nto add an event!"); 94 return i18n("Click in the cell\nto add an event!");
95 } 95 }
96 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence()); 96 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence());
97} 97}
98void KNoScrollListBox::keyPressEvent(QKeyEvent *e) 98void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
99{ 99{
100 100
101 switch(e->key()) { 101 switch(e->key()) {
102 case Key_Right: 102 case Key_Right:
103 // if ( e->state() == Qt::ControlButton ) 103 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
104 { 104 {
105 e->ignore(); 105 e->ignore();
106 return; 106 return;
107 } 107 }
108 scrollBy(4,0); 108 scrollBy(10,0);
109 break; 109 break;
110 case Key_Left: 110 case Key_Left:
111 // if ( e->state() == Qt::ControlButton ) 111 if (e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
112 { 112 {
113 e->ignore(); 113 e->ignore();
114 return; 114 return;
115 } 115 }
116 scrollBy(-4,0); 116 scrollBy(-10,0);
117 break; 117 break;
118 case Key_Up: 118 case Key_Up:
119 if(count() < 2) { 119 if( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
120 e->ignore(); 120 e->ignore();
121 break; 121 break;
122 } 122 }
123 setCurrentItem((currentItem()+count()-1)%count()); 123 setCurrentItem((currentItem()+count()-1)%count());
124 if(!itemVisible(currentItem())) { 124 if(!itemVisible(currentItem())) {
125 if((unsigned int) currentItem() == (count()-1)) { 125 if((unsigned int) currentItem() == (count()-1)) {
126 setTopItem(currentItem()-numItemsVisible()+1); 126 setTopItem(currentItem()-numItemsVisible()+1);
127 } else { 127 } else {
128 setTopItem(topItem()-1); 128 setTopItem(topItem()-1);
129 } 129 }
130 } 130 }
131 break; 131 break;
132 case Key_Down: 132 case Key_Down:
133 if(count() < 2) { 133 if(e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
134 e->ignore(); 134 e->ignore();
135 break; 135 break;
136 } 136 }
137 setCurrentItem((currentItem()+1)%count()); 137 setCurrentItem((currentItem()+1)%count());
138 if(!itemVisible(currentItem())) { 138 if(!itemVisible(currentItem())) {
139 if(currentItem() == 0) { 139 if(currentItem() == 0) {
140 setTopItem(0); 140 setTopItem(0);
141 } else { 141 } else {
142 setTopItem(topItem()+1); 142 setTopItem(topItem()+1);
143 } 143 }
144 } 144 }
145 break; 145 break;
146 case Key_I:
147 QTimer::singleShot( 11, this, SLOT ( oneDown() ) );
148 e->ignore();
149 break;
146 case Key_Shift: 150 case Key_Shift:
147 emit shiftDown(); 151 emit shiftDown();
148 break; 152 break;
149 default: 153 default:
150 e->ignore(); 154 e->ignore();
151 break; 155 break;
152 } 156 }
153} 157}
154 158
159void KNoScrollListBox::oneDown()
160{
161 setCurrentItem((currentItem()+1)%count());
162 if(!itemVisible(currentItem())) {
163 if(currentItem() == 0) {
164 setTopItem(0);
165 } else {
166 setTopItem(topItem()+1);
167 }
168 }
169}
155void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) 170void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
156{ 171{
157 switch(e->key()) { 172 switch(e->key()) {
158 case Key_Shift: 173 case Key_Shift:
159 emit shiftUp(); 174 emit shiftUp();
160 break; 175 break;
161 default: 176 default:
162 break; 177 break;
163 } 178 }
164} 179}
165 180
166void KNoScrollListBox::mousePressEvent(QMouseEvent *e) 181void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
167{ 182{
168 QListBox::mousePressEvent(e); 183 QListBox::mousePressEvent(e);
169 184
170 if(e->button() == RightButton) { 185 if(e->button() == RightButton) {
171 emit rightClick(); 186 emit rightClick();
172 } 187 }
173} 188}
174 189
175MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) 190MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
176 : QListBoxItem() 191 : QListBoxItem()
177{ 192{
178 setText( s ); 193 setText( s );
179 194
180 mIncidence = incidence; 195 mIncidence = incidence;
181 mDate = qd; 196 mDate = qd;
182 // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence )); 197 // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence ));
183 mRecur = false; 198 mRecur = false;
184 mAlarm = false; 199 mAlarm = false;
185 mReply = false; 200 mReply = false;
186 mInfo = false; 201 mInfo = false;
187} 202}
188 203
189void MonthViewItem::paint(QPainter *p) 204void MonthViewItem::paint(QPainter *p)
190{ 205{
191#if QT_VERSION >= 0x030000 206#if QT_VERSION >= 0x030000
192 bool sel = isSelected(); 207 bool sel = isSelected();
193#else 208#else
194 bool sel = selected(); 209 bool sel = selected();
195#endif 210#endif
196 211
197 212
198 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) 213 if (KOPrefs::instance()->mMonthViewUsesCategoryColor)
199 { 214 {
200 p->setBackgroundColor( palette().color( QPalette::Normal, \ 215 p->setBackgroundColor( palette().color( QPalette::Normal, \
201 sel ? QColorGroup::Highlight : QColorGroup::Background ) ); 216 sel ? QColorGroup::Highlight : QColorGroup::Background ) );
202 p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) ); 217 p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) );
@@ -237,96 +252,97 @@ void MonthViewItem::paint(QPainter *p)
237 if ( mIncidence->cancelled() ) { 252 if ( mIncidence->cancelled() ) {
238 int wid = fm.width( text() ); 253 int wid = fm.width( text() );
239 p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2); 254 p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2);
240 } 255 }
241 256
242} 257}
243 258
244int MonthViewItem::height(const QListBox *lb) const 259int MonthViewItem::height(const QListBox *lb) const
245{ 260{
246 return lb->fontMetrics().lineSpacing()+1; 261 return lb->fontMetrics().lineSpacing()+1;
247} 262}
248 263
249int MonthViewItem::width(const QListBox *lb) const 264int MonthViewItem::width(const QListBox *lb) const
250{ 265{
251 int size = PIXMAP_SIZE; 266 int size = PIXMAP_SIZE;
252 if ( QApplication::desktop()->width() < 300 ) 267 if ( QApplication::desktop()->width() < 300 )
253 size = 3; 268 size = 3;
254 int x = 1; 269 int x = 1;
255 if ( mInfo ) { 270 if ( mInfo ) {
256 x += size + 1; 271 x += size + 1;
257 } 272 }
258 if( mRecur ) { 273 if( mRecur ) {
259 x += size+1; 274 x += size+1;
260 } 275 }
261 if( mAlarm ) { 276 if( mAlarm ) {
262 x += size+1; 277 x += size+1;
263 } 278 }
264 if( mReply ) { 279 if( mReply ) {
265 x += size+1; 280 x += size+1;
266 } 281 }
267 282
268 return( x + lb->fontMetrics().width( text() ) + 1 ); 283 return( x + lb->fontMetrics().width( text() ) + 1 );
269} 284}
270 285
271 286
272MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par ) 287MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par )
273 : QWidget( par ), 288 : QWidget( par ),
274 mMonthView( parent ) 289 mMonthView( parent )
275{ 290{
276 291
277 QVBoxLayout *topLayout = new QVBoxLayout( this ); 292 QVBoxLayout *topLayout = new QVBoxLayout( this );
278 293
279 // mLabel = new QLabel( this );QPushButton 294 // mLabel = new QLabel( this );QPushButton
280 mLabel = new QPushButton( this ); 295 mLabel = new QPushButton( this );
281 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); 296 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
282 //mLabel->setLineWidth( 1 ); 297 //mLabel->setLineWidth( 1 );
283 //mLabel->setAlignment( AlignCenter ); 298 //mLabel->setAlignment( AlignCenter );
284 mLabel->setFlat( true ); 299 mLabel->setFlat( true );
300 mLabel->setFocusPolicy(NoFocus);
285 mItemList = new KNoScrollListBox( this ); 301 mItemList = new KNoScrollListBox( this );
286 mItemList->setMinimumSize( 10, 10 ); 302 mItemList->setMinimumSize( 10, 10 );
287 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain ); 303 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain );
288 mItemList->setLineWidth( 1 ); 304 mItemList->setLineWidth( 1 );
289 topLayout->addWidget( mItemList ); 305 topLayout->addWidget( mItemList );
290 mLabel->raise(); 306 mLabel->raise();
291 // QColor( 0,0,255 ) QColor( 160,1600,255 ) 307 // QColor( 0,0,255 ) QColor( 160,1600,255 )
292 mStandardPalette = palette(); 308 mStandardPalette = palette();
293 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); 309 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
294 310
295 enableScrollBars( false ); 311 enableScrollBars( false );
296 updateConfig(); 312 updateConfig();
297 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); 313 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() ));
298 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); 314 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() ));
299 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), 315 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ),
300 SLOT( defaultAction( QListBoxItem * ) ) ); 316 SLOT( defaultAction( QListBoxItem * ) ) );
301 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *, 317 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *,
302 const QPoint &) ), 318 const QPoint &) ),
303 SLOT( contextMenu( QListBoxItem * ) ) ); 319 SLOT( contextMenu( QListBoxItem * ) ) );
304 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ), 320 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ),
305 SLOT( selection( QListBoxItem * ) ) ); 321 SLOT( selection( QListBoxItem * ) ) );
306 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 322 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
307 SLOT( cellClicked( QListBoxItem * ) ) ); 323 SLOT( cellClicked( QListBoxItem * ) ) );
308 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 324 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
309 SLOT( selection( QListBoxItem * ) ) ); 325 SLOT( selection( QListBoxItem * ) ) );
310} 326}
311#ifdef DESKTOP_VERSION 327#ifdef DESKTOP_VERSION
312QToolTipGroup *MonthViewCell::toolTipGroup() 328QToolTipGroup *MonthViewCell::toolTipGroup()
313{ 329{
314 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0); 330 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
315 return mToolTipGroup; 331 return mToolTipGroup;
316} 332}
317#endif 333#endif
318 334
319void MonthViewCell::setDate( const QDate &date ) 335void MonthViewCell::setDate( const QDate &date )
320{ 336{
321 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; 337 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl;
322 mDate = date; 338 mDate = date;
323 339
324 340
325 341
326 //resizeEvent( 0 ); 342 //resizeEvent( 0 );
327} 343}
328 344
329QDate MonthViewCell::date() const 345QDate MonthViewCell::date() const
330{ 346{
331 return mDate; 347 return mDate;
332} 348}
@@ -356,128 +372,132 @@ QPalette MonthViewCell::getPalette ()
356{ 372{
357 if ( !KOPrefs::instance()->mMonthViewUsesDayColors ) 373 if ( !KOPrefs::instance()->mMonthViewUsesDayColors )
358 return mStandardPalette; 374 return mStandardPalette;
359 if ( mHoliday) { 375 if ( mHoliday) {
360 return mHolidayPalette ; 376 return mHolidayPalette ;
361 } else { 377 } else {
362 if ( mPrimary ) { 378 if ( mPrimary ) {
363 return mPrimaryPalette ; 379 return mPrimaryPalette ;
364 } 380 }
365 } 381 }
366 return mNonPrimaryPalette; 382 return mNonPrimaryPalette;
367} 383}
368bool MonthViewCell::isPrimary() const 384bool MonthViewCell::isPrimary() const
369{ 385{
370 return mPrimary; 386 return mPrimary;
371} 387}
372 388
373void MonthViewCell::setHoliday( bool holiday ) 389void MonthViewCell::setHoliday( bool holiday )
374{ 390{
375 mHoliday = holiday; 391 mHoliday = holiday;
376 //setMyPalette(); 392 //setMyPalette();
377} 393}
378 394
379void MonthViewCell::setHoliday( const QString &holiday ) 395void MonthViewCell::setHoliday( const QString &holiday )
380{ 396{
381 mHolidayString = holiday; 397 mHolidayString = holiday;
382 398
383 if ( !holiday.isEmpty() ) { 399 if ( !holiday.isEmpty() ) {
384 setHoliday( true ); 400 setHoliday( true );
385 } 401 }
386} 402}
387void MonthViewCell::keyPressEvent ( QKeyEvent * e ) 403void MonthViewCell::keyPressEvent ( QKeyEvent * e )
388{ 404{
389 405
390 e->ignore(); 406 e->ignore();
391 407
392} 408}
393void MonthViewCell::clear() 409void MonthViewCell::clear()
394{ 410{
395 mItemList->clear(); 411 mItemList->clear();
396 QApplication::removePostedEvents ( mItemList ); 412 QApplication::removePostedEvents ( mItemList );
397 QApplication::removePostedEvents ( mLabel ); 413 QApplication::removePostedEvents ( mLabel );
398 QApplication::removePostedEvents ( this ); 414 QApplication::removePostedEvents ( this );
399} 415}
400 416
401void MonthViewCell::startUpdateCell() 417void MonthViewCell::startUpdateCell()
402{ 418{
403 419
420 mItemList->setFocusPolicy(NoFocus);
404 if ( !mMonthView->isUpdatePossible() ) 421 if ( !mMonthView->isUpdatePossible() )
405 return; 422 return;
423
406 /* 424 /*
407 if ( !isVisible() ){ 425 if ( !isVisible() ){
408 return; 426 return;
409 } 427 }
410 */ 428 */
411 // qDebug("MonthViewCell::updateCell() "); 429 // qDebug("MonthViewCell::updateCell() ");
412 setPrimary( mDate.month()%2 ); 430 setPrimary( mDate.month()%2 );
413 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 431 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
414 if ( mDate == QDate::currentDate() ) { 432 if ( mDate == QDate::currentDate() ) {
415 mItemList->setLineWidth( 3 ); 433 mItemList->setLineWidth( 3 );
416 } else { 434 } else {
417 mItemList->setLineWidth( 1 ); 435 mItemList->setLineWidth( 1 );
418 } 436 }
419 mItemList->clear(); 437 mItemList->clear();
420 438
421#ifdef DESKTOP_VERSION 439#ifdef DESKTOP_VERSION
422 QToolTip::remove(this); 440 QToolTip::remove(this);
423#endif 441#endif
424 mToolTip = ""; 442 mToolTip = "";
425 //qApp->processEvents(); 443 //qApp->processEvents();
426 if ( !mHolidayString.isEmpty() ) { 444 if ( !mHolidayString.isEmpty() ) {
427 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 445 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
428 item->setPalette( mHolidayPalette ); 446 item->setPalette( mHolidayPalette );
429 mItemList->insertItem( item ); 447 mItemList->insertItem( item );
430 mToolTip += mHolidayString+"\n"; 448 mToolTip += mHolidayString+"\n";
431 } 449 }
432} 450}
433 451
434void MonthViewCell::insertEvent(Event *event) 452void MonthViewCell::insertEvent(Event *event)
435{ 453{
454
455 mItemList->setFocusPolicy(WheelFocus);
436 if ( !(event->doesRecur() == Recurrence::rNone) ) { 456 if ( !(event->doesRecur() == Recurrence::rNone) ) {
437 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 457 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
438 return; 458 return;
439 else 459 else
440 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 460 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
441 return; 461 return;
442 } 462 }
443 463
444 if ( event->categories().contains("Holiday") || 464 if ( event->categories().contains("Holiday") ||
445 event->categories().contains(i18n("Holiday"))) { 465 event->categories().contains(i18n("Holiday"))) {
446 setHoliday( true ); 466 setHoliday( true );
447 if ( mDate.dayOfWeek() == 7 ) 467 if ( mDate.dayOfWeek() == 7 )
448 mItemList->setLineWidth( 3 ); 468 mItemList->setLineWidth( 3 );
449 } 469 }
450 QString text; 470 QString text;
451 if (event->isMultiDay()) { 471 if (event->isMultiDay()) {
452 QString prefix = "<->"; 472 QString prefix = "<->";
453 if ( event->doesRecur() ) { 473 if ( event->doesRecur() ) {
454 if ( event->recursOn( mDate) ) 474 if ( event->recursOn( mDate) )
455 prefix ="->" ; 475 prefix ="->" ;
456 else { 476 else {
457 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 477 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
458 if ( event->recursOn( mDate.addDays( -days)) ) 478 if ( event->recursOn( mDate.addDays( -days)) )
459 prefix ="<-" ; 479 prefix ="<-" ;
460 } 480 }
461 481
462 } else { 482 } else {
463 if (mDate == event->dtStart().date()) { 483 if (mDate == event->dtStart().date()) {
464 prefix ="->" ; 484 prefix ="->" ;
465 } else if (mDate == event->dtEnd().date()) { 485 } else if (mDate == event->dtEnd().date()) {
466 prefix ="<-" ; 486 prefix ="<-" ;
467 } 487 }
468 } 488 }
469 if ( !event->doesFloat() ) { 489 if ( !event->doesFloat() ) {
470 if ( mDate == event->dtStart().date () ) 490 if ( mDate == event->dtStart().date () )
471 prefix += KGlobal::locale()->formatTime(event->dtStart().time())+" "; 491 prefix += KGlobal::locale()->formatTime(event->dtStart().time())+" ";
472 else if ( mDate == event->dtEnd().date () ) 492 else if ( mDate == event->dtEnd().date () )
473 prefix += KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 493 prefix += KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
474 494
475 } 495 }
476 text = prefix + event->summary(); 496 text = prefix + event->summary();
477 mToolTip += text; 497 mToolTip += text;
478 } else { 498 } else {
479 if (event->doesFloat()) { 499 if (event->doesFloat()) {
480 text = event->summary(); 500 text = event->summary();
481 mToolTip += text; 501 mToolTip += text;
482 } 502 }
483 else { 503 else {
@@ -493,97 +513,97 @@ void MonthViewCell::insertEvent(Event *event)
493 QStringList categories = event->categories(); 513 QStringList categories = event->categories();
494 QString cat = categories.first(); 514 QString cat = categories.first();
495 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 515 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
496 pal = getPalette(); 516 pal = getPalette();
497 if (cat.isEmpty()) { 517 if (cat.isEmpty()) {
498 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 518 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
499 } else { 519 } else {
500 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 520 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
501 } 521 }
502 522
503 } else { 523 } else {
504 if (cat.isEmpty()) { 524 if (cat.isEmpty()) {
505 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 525 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
506 } else { 526 } else {
507 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 527 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
508 } 528 }
509 } 529 }
510 530
511 } else { 531 } else {
512 pal = mStandardPalette ; 532 pal = mStandardPalette ;
513 } 533 }
514 item->setPalette( pal ); 534 item->setPalette( pal );
515 item->setRecur( event->recurrence()->doesRecur() ); 535 item->setRecur( event->recurrence()->doesRecur() );
516 item->setAlarm( event->isAlarmEnabled() ); 536 item->setAlarm( event->isAlarmEnabled() );
517 item->setMoreInfo( event->description().length() > 0 ); 537 item->setMoreInfo( event->description().length() > 0 );
518#ifdef DESKTOP_VERSION 538#ifdef DESKTOP_VERSION
519 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 539 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
520 KOPrefs::instance()->email()); 540 KOPrefs::instance()->email());
521 if ( me != 0 ) { 541 if ( me != 0 ) {
522 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 542 if ( me->status() == Attendee::NeedsAction && me->RSVP())
523 item->setReply(true); 543 item->setReply(true);
524 else 544 else
525 item->setReply(false); 545 item->setReply(false);
526 } else 546 } else
527 item->setReply(false); 547 item->setReply(false);
528#endif 548#endif
529 mItemList->insertItem( item ); 549 mItemList->insertItem( item );
530 mToolTip += "\n"; 550 mToolTip += "\n";
531} 551}
532void MonthViewCell::insertTodo(Todo *todo) 552void MonthViewCell::insertTodo(Todo *todo)
533{ 553{
534 QString text; 554 QString text;
535 if (todo->hasDueDate()) { 555 if (todo->hasDueDate()) {
536 if (!todo->doesFloat()) { 556 if (!todo->doesFloat()) {
537 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 557 text += KGlobal::locale()->formatTime(todo->dtDue().time());
538 text += " "; 558 text += " ";
539 } 559 }
540 } 560 }
541 text += i18n("To-Do: %1").arg(todo->summary()); 561 text += i18n("Td: %1").arg(todo->summary());
542 562
543 MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 563 MonthViewItem *item = new MonthViewItem( todo, mDate, text );
544 //item->setPalette( mStandardPalette ); 564 //item->setPalette( mStandardPalette );
545 QPalette pal; 565 QPalette pal;
546 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 566 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
547 QStringList categories = todo->categories(); 567 QStringList categories = todo->categories();
548 QString cat = categories.first(); 568 QString cat = categories.first();
549 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 569 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
550 pal = getPalette(); 570 pal = getPalette();
551 if (cat.isEmpty()) { 571 if (cat.isEmpty()) {
552 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 572 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
553 } else { 573 } else {
554 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 574 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
555 } 575 }
556 576
557 } else { 577 } else {
558 if (cat.isEmpty()) { 578 if (cat.isEmpty()) {
559 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 579 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
560 } else { 580 } else {
561 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 581 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
562 } 582 }
563 } 583 }
564 584
565 } else { 585 } else {
566 pal = mStandardPalette ; 586 pal = mStandardPalette ;
567 } 587 }
568 item->setPalette( pal ); 588 item->setPalette( pal );
569 mItemList->insertItem( item ); 589 mItemList->insertItem( item );
570 mToolTip += text+"\n"; 590 mToolTip += text+"\n";
571} 591}
572void MonthViewCell::finishUpdateCell() 592void MonthViewCell::finishUpdateCell()
573{ 593{
574#ifdef DESKTOP_VERSION 594#ifdef DESKTOP_VERSION
575 if (mToolTip != "") 595 if (mToolTip != "")
576 QToolTip::add(this,mToolTip,toolTipGroup(),""); 596 QToolTip::add(this,mToolTip,toolTipGroup(),"");
577#endif 597#endif
578 mItemList->sort(); 598 mItemList->sort();
579 //setMyPalette(); 599 //setMyPalette();
580 setMyPalette(); 600 setMyPalette();
581 QString text; 601 QString text;
582 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 602 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
583 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 603 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
584 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " "; 604 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " ";
585 mLabel->resize( mLabelBigSize ); 605 mLabel->resize( mLabelBigSize );
586 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 606 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
587 } else { 607 } else {
588 mLabel->resize( mLabelSize ); 608 mLabel->resize( mLabelSize );
589 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 609 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
@@ -781,183 +801,188 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
781 mWidStack = new QWidgetStack( this ); 801 mWidStack = new QWidgetStack( this );
782 QHBoxLayout* hb = new QHBoxLayout( this ); 802 QHBoxLayout* hb = new QHBoxLayout( this );
783 mMonthView = new QWidget( mWidStack ); 803 mMonthView = new QWidget( mWidStack );
784 mWeekView = new QWidget( mWidStack ); 804 mWeekView = new QWidget( mWidStack );
785#if QT_VERSION >= 0x030000 805#if QT_VERSION >= 0x030000
786 mWidStack->addWidget(mMonthView ); 806 mWidStack->addWidget(mMonthView );
787 mWidStack->addWidget(mWeekView ); 807 mWidStack->addWidget(mWeekView );
788#else 808#else
789 mWidStack->addWidget( mMonthView, 1 ); 809 mWidStack->addWidget( mMonthView, 1 );
790 mWidStack->addWidget( mWeekView , 1 ); 810 mWidStack->addWidget( mWeekView , 1 );
791#endif 811#endif
792 hb->addWidget( mWidStack ); 812 hb->addWidget( mWidStack );
793 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 813 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
794 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 814 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
795 if ( mShowWeekView ) 815 if ( mShowWeekView )
796 mWeekStartsMonday = true; 816 mWeekStartsMonday = true;
797 updatePossible = false; 817 updatePossible = false;
798 mCells.setAutoDelete( true ); 818 mCells.setAutoDelete( true );
799 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 819 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
800 mDayLabels.resize( mDaysPerWeek ); 820 mDayLabels.resize( mDaysPerWeek );
801 mDayLabelsW.resize( mDaysPerWeek ); 821 mDayLabelsW.resize( mDaysPerWeek );
802 QFont bfont = font(); 822 QFont bfont = font();
803 if ( QApplication::desktop()->width() < 650 ) { 823 if ( QApplication::desktop()->width() < 650 ) {
804 bfont.setPointSize( bfont.pointSize() - 2 ); 824 bfont.setPointSize( bfont.pointSize() - 2 );
805 } 825 }
806 bfont.setBold( true ); 826 bfont.setBold( true );
807 int i; 827 int i;
808 828
809 for( i = 0; i < mDaysPerWeek; i++ ) { 829 for( i = 0; i < mDaysPerWeek; i++ ) {
810 QLabel *label = new QLabel( mMonthView ); 830 QLabel *label = new QLabel( mMonthView );
811 label->setFont(bfont); 831 label->setFont(bfont);
812 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 832 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
813 label->setLineWidth(1); 833 label->setLineWidth(1);
814 label->setAlignment(AlignCenter); 834 label->setAlignment(AlignCenter);
815 mDayLabels.insert( i, label ); 835 mDayLabels.insert( i, label );
816 label = new QLabel( mWeekView ); 836 label = new QLabel( mWeekView );
817 label->setFont(bfont); 837 label->setFont(bfont);
818 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 838 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
819 label->setLineWidth(1); 839 label->setLineWidth(1);
820 label->setAlignment(AlignCenter); 840 label->setAlignment(AlignCenter);
821 mDayLabelsW.insert( i, label ); 841 mDayLabelsW.insert( i, label );
822 } 842 }
823 843
824 bfont.setBold( false ); 844 bfont.setBold( false );
825 mWeekLabels.resize( mNumWeeks+1 ); 845 mWeekLabels.resize( mNumWeeks+1 );
826 mWeekLabelsW.resize( 2 ); 846 mWeekLabelsW.resize( 2 );
827 for( i = 0; i < mNumWeeks+1; i++ ) { 847 for( i = 0; i < mNumWeeks+1; i++ ) {
828 KOWeekButton *label = new KOWeekButton( mMonthView ); 848 KOWeekButton *label = new KOWeekButton( mMonthView );
849 label->setFocusPolicy(NoFocus);
829 label->setFont(bfont); 850 label->setFont(bfont);
830 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 851 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
831 label->setFlat(true); 852 label->setFlat(true);
832 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 853 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
833 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 854 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
834 //label->setLineWidth(1); 855 //label->setLineWidth(1);
835 //label->setAlignment(AlignCenter); 856 //label->setAlignment(AlignCenter);
836 mWeekLabels.insert( i, label ); 857 mWeekLabels.insert( i, label );
837 } 858 }
838 mWeekLabels[mNumWeeks]->setText( i18n("W")); 859 mWeekLabels[mNumWeeks]->setText( i18n("W"));
839 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 860 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
840 861
841 for( i = 0; i < 1+1; i++ ) { 862 for( i = 0; i < 1+1; i++ ) {
842 KOWeekButton *label = new KOWeekButton( mWeekView ); 863 KOWeekButton *label = new KOWeekButton( mWeekView );
864 label->setFocusPolicy(NoFocus);
843 label->setFont(bfont); 865 label->setFont(bfont);
844 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 866 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
845 label->setFlat(true); 867 label->setFlat(true);
846 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 868 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
847 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 869 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
848 //label->setLineWidth(1); 870 //label->setLineWidth(1);
849 //label->setAlignment(AlignCenter); 871 //label->setAlignment(AlignCenter);
850 mWeekLabelsW.insert( i, label ); 872 mWeekLabelsW.insert( i, label );
851 } 873 }
852 mWeekLabelsW[1]->setText( i18n("W")); 874 mWeekLabelsW[1]->setText( i18n("W"));
853 875
854 876
855 int row, col; 877 int row, col;
856 mCells.resize( mNumCells ); 878 mCells.resize( mNumCells );
857 for( row = 0; row < mNumWeeks; ++row ) { 879 for( row = 0; row < mNumWeeks; ++row ) {
858 for( col = 0; col < mDaysPerWeek; ++col ) { 880 for( col = 0; col < mDaysPerWeek; ++col ) {
859 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 881 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
860 mCells.insert( row * mDaysPerWeek + col, cell ); 882 mCells.insert( row * mDaysPerWeek + col, cell );
861 883
862 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 884 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
863 SLOT( defaultAction( Incidence * ) ) ); 885 SLOT( defaultAction( Incidence * ) ) );
864 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 886 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
865 SIGNAL( newEventSignal( QDateTime ) ) ); 887 SIGNAL( newEventSignal( QDateTime ) ) );
866 connect( cell, SIGNAL( showDaySignal( QDate ) ), 888 connect( cell, SIGNAL( showDaySignal( QDate ) ),
867 SIGNAL( showDaySignal( QDate ) ) ); 889 SIGNAL( showDaySignal( QDate ) ) );
868 } 890 }
869 } 891 }
870 mCellsW.resize( mDaysPerWeek ); 892 mCellsW.resize( mDaysPerWeek );
871 for( col = 0; col < mDaysPerWeek; ++col ) { 893 for( col = 0; col < mDaysPerWeek; ++col ) {
872 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 894 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
873 mCellsW.insert( col, cell ); 895 mCellsW.insert( col, cell );
874 896
875 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 897 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
876 SLOT( defaultAction( Incidence * ) ) ); 898 SLOT( defaultAction( Incidence * ) ) );
877 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 899 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
878 SIGNAL( newEventSignal( QDateTime ) ) ); 900 SIGNAL( newEventSignal( QDateTime ) ) );
879 connect( cell, SIGNAL( showDaySignal( QDate ) ), 901 connect( cell, SIGNAL( showDaySignal( QDate ) ),
880 SIGNAL( showDaySignal( QDate ) ) ); 902 SIGNAL( showDaySignal( QDate ) ) );
881 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 903 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
882 } 904 }
883 905
884 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 906 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
885 mContextMenu = eventPopup(); 907 mContextMenu = eventPopup();
886 // updateConfig(); //useless here 908 // updateConfig(); //useless here
887 909
888 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 910 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
889#if 0 911#if 0
890 mWidStack = new QWidgetStack( this ); 912 mWidStack = new QWidgetStack( this );
891 mMonthView = new QWidget( mWidStack ); 913 mMonthView = new QWidget( mWidStack );
892 mWeekView = new QWidget( mWidStack ); 914 mWeekView = new QWidget( mWidStack );
893#endif 915#endif
894 if ( mShowWeekView ) 916 if ( mShowWeekView )
895 mWidStack->raiseWidget( mWeekView ); 917 mWidStack->raiseWidget( mWeekView );
896 else 918 else
897 mWidStack->raiseWidget( mMonthView ); 919 mWidStack->raiseWidget( mMonthView );
898 920
899 emit incidenceSelected( 0 ); 921 emit incidenceSelected( 0 );
900} 922}
901 923
902KOMonthView::~KOMonthView() 924KOMonthView::~KOMonthView()
903{ 925{
904 delete mContextMenu; 926 delete mContextMenu;
905} 927}
906void KOMonthView::selectDateWeekNum ( int )
907{
908 928
909}
910void KOMonthView::selectInternalWeekNum ( int n ) 929void KOMonthView::selectInternalWeekNum ( int n )
911{ 930{
912 switchView(); 931 switchView();
913 emit selectWeekNum ( n ); 932 emit selectWeekNum ( n );
914} 933}
915 934
935int KOMonthView::currentWeek()
936{
937 if ( mShowWeekView )
938 return mWeekLabelsW[0]->getWeekNum();
939 return mWeekLabels[0]->getWeekNum();
940}
916void KOMonthView::switchView() 941void KOMonthView::switchView()
917{ 942{
918 943
919 if ( selectedCell( ) ) 944 if ( selectedCell( ) )
920 selectedCell()->deselect(); 945 selectedCell()->deselect();
921 mShowWeekView = !mShowWeekView; 946 mShowWeekView = !mShowWeekView;
922 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 947 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
923 //emit showNavigator( !mShowWeekView ); 948 //emit showNavigator( !mShowWeekView );
924 if ( clPending ) { 949 if ( clPending ) {
925 computeLayout(); 950 computeLayout();
926 updateConfig(); 951 updateConfig();
927 } 952 }
928 if ( mShowWeekView ) 953 if ( mShowWeekView )
929 mWidStack->raiseWidget( mWeekView ); 954 mWidStack->raiseWidget( mWeekView );
930 else 955 else
931 mWidStack->raiseWidget( mMonthView ); 956 mWidStack->raiseWidget( mMonthView );
932 clPending = false; 957 clPending = false;
933} 958}
934 959
935int KOMonthView::maxDatesHint() 960int KOMonthView::maxDatesHint()
936{ 961{
937 return mNumCells; 962 return mNumCells;
938} 963}
939 964
940int KOMonthView::currentDateCount() 965int KOMonthView::currentDateCount()
941{ 966{
942 return mNumCells; 967 return mNumCells;
943} 968}
944 969
945QPtrList<Incidence> KOMonthView::selectedIncidences() 970QPtrList<Incidence> KOMonthView::selectedIncidences()
946{ 971{
947 QPtrList<Incidence> selected; 972 QPtrList<Incidence> selected;
948 973
949 if ( mSelectedCell ) { 974 if ( mSelectedCell ) {
950 Incidence *incidence = mSelectedCell->selectedIncidence(); 975 Incidence *incidence = mSelectedCell->selectedIncidence();
951 if ( incidence ) selected.append( incidence ); 976 if ( incidence ) selected.append( incidence );
952 } 977 }
953 978
954 return selected; 979 return selected;
955} 980}
956 981
957DateList KOMonthView::selectedDates() 982DateList KOMonthView::selectedDates()
958{ 983{
959 DateList selected; 984 DateList selected;
960 985
961 if ( mSelectedCell ) { 986 if ( mSelectedCell ) {
962 QDate qd = mSelectedCell->selectedIncidenceDate(); 987 QDate qd = mSelectedCell->selectedIncidenceDate();
963 if ( qd.isValid() ) selected.append( qd ); 988 if ( qd.isValid() ) selected.append( qd );
@@ -1494,53 +1519,60 @@ void KOMonthView::setSelectedCell( MonthViewCell *cell )
1494 mSelectedCell = cell; 1519 mSelectedCell = cell;
1495 mvc->deselect(); 1520 mvc->deselect();
1496 } else 1521 } else
1497 mSelectedCell = cell; 1522 mSelectedCell = cell;
1498 // if ( mSelectedCell ) 1523 // if ( mSelectedCell )
1499 // mSelectedCell->select(); 1524 // mSelectedCell->select();
1500 if ( !mSelectedCell ) 1525 if ( !mSelectedCell )
1501 emit incidenceSelected( 0 ); 1526 emit incidenceSelected( 0 );
1502 else 1527 else
1503 emit incidenceSelected( mSelectedCell->selectedIncidence() ); 1528 emit incidenceSelected( mSelectedCell->selectedIncidence() );
1504} 1529}
1505 1530
1506void KOMonthView::processSelectionChange() 1531void KOMonthView::processSelectionChange()
1507{ 1532{
1508 QPtrList<Incidence> incidences = selectedIncidences(); 1533 QPtrList<Incidence> incidences = selectedIncidences();
1509 if (incidences.count() > 0) { 1534 if (incidences.count() > 0) {
1510 emit incidenceSelected( incidences.first() ); 1535 emit incidenceSelected( incidences.first() );
1511 } else { 1536 } else {
1512 emit incidenceSelected( 0 ); 1537 emit incidenceSelected( 0 );
1513 } 1538 }
1514} 1539}
1515 1540
1516void KOMonthView::clearSelection() 1541void KOMonthView::clearSelection()
1517{ 1542{
1518 if ( mSelectedCell ) { 1543 if ( mSelectedCell ) {
1519 mSelectedCell->deselect(); 1544 mSelectedCell->deselect();
1520 mSelectedCell = 0; 1545 mSelectedCell = 0;
1521 } 1546 }
1522} 1547}
1523void KOMonthView::keyPressEvent ( QKeyEvent * e ) 1548void KOMonthView::keyPressEvent ( QKeyEvent * e )
1524{ 1549{
1525 //qDebug("KOMonthView::keyPressEvent "); 1550 //qDebug("KOMonthView::keyPressEvent ");
1526 switch(e->key()) { 1551 switch(e->key()) {
1527 case Key_Up: 1552 case Key_Up:
1528 { 1553 {
1529 emit prevMonth(); 1554 emit prevMonth();
1530 mCells[0]->setFocus(); 1555 mCells[0]->setFocus();
1531 } 1556 }
1532 e->accept(); 1557 e->accept();
1533 break; 1558 break;
1534 case Key_Down: 1559 case Key_Down:
1535 { 1560 {
1536 emit nextMonth(); 1561 emit nextMonth();
1537 mCells[0]->setFocus(); 1562 mCells[0]->setFocus();
1538 1563
1539 } 1564 }
1540 e->accept(); 1565 e->accept();
1541 break; 1566 break;
1567 case Key_Return:
1568 case Key_Enter:
1569 {
1570 selectInternalWeekNum ( currentWeek() );
1571 }
1572 e->accept();
1573 break;
1542 default: 1574 default:
1543 e->ignore(); 1575 e->ignore();
1544 break; 1576 break;
1545 } 1577 }
1546} 1578}
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index 700f098..51eb9e6 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -9,118 +9,120 @@
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#ifndef _KOMONTHVIEW_H 20#ifndef _KOMONTHVIEW_H
21#define _KOMONTHVIEW_H 21#define _KOMONTHVIEW_H
22 22
23#include <qlabel.h> 23#include <qlabel.h>
24#include <qframe.h> 24#include <qframe.h>
25#include <qdatetime.h> 25#include <qdatetime.h>
26#include <qlistbox.h> 26#include <qlistbox.h>
27#include <qpoint.h> 27#include <qpoint.h>
28#include <qwidgetstack.h> 28#include <qwidgetstack.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qintdict.h> 30#include <qintdict.h>
31#include <qpushbutton.h> 31#include <qpushbutton.h>
32#include <qvaluelist.h> 32#include <qvaluelist.h>
33#include <qptrvector.h> 33#include <qptrvector.h>
34 34
35#include <libkcal/calendar.h> 35#include <libkcal/calendar.h>
36#include <libkcal/event.h> 36#include <libkcal/event.h>
37 37
38#include "koeventview.h" 38#include "koeventview.h"
39 39
40#ifdef DESKTOP_VERSION 40#ifdef DESKTOP_VERSION
41class QToolTipGroup; 41class QToolTipGroup;
42#endif 42#endif
43 43
44class KNOWhatsThis; 44class KNOWhatsThis;
45class KOWeekButton : public QPushButton 45class KOWeekButton : public QPushButton
46{ 46{
47 Q_OBJECT 47 Q_OBJECT
48 public: 48 public:
49 KOWeekButton( QWidget *parent=0, const char *name=0 ) : 49 KOWeekButton( QWidget *parent=0, const char *name=0 ) :
50 QPushButton( parent, name) 50 QPushButton( parent, name)
51 { 51 {
52 connect( this, SIGNAL( clicked() ), 52 connect( this, SIGNAL( clicked() ),
53 SLOT( bottonClicked() )); 53 SLOT( bottonClicked() ));
54 mNumber = -1; 54 mNumber = -1;
55 } 55 }
56 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));} 56 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));}
57 int getWeekNum() { return mNumber;}
57 signals: 58 signals:
58 void selectWeekNum ( int ); 59 void selectWeekNum ( int );
59private: 60private:
60 int mNumber; 61 int mNumber;
61private slots : 62private slots :
62 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); } 63 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); }
63}; 64};
64 65
65class KNoScrollListBox: public QListBox 66class KNoScrollListBox: public QListBox
66{ 67{
67 Q_OBJECT 68 Q_OBJECT
68 public: 69 public:
69 KNoScrollListBox(QWidget *parent=0, const char *name=0); 70 KNoScrollListBox(QWidget *parent=0, const char *name=0);
70 ~KNoScrollListBox(); 71 ~KNoScrollListBox();
71 QString getWhatsThisText(QPoint p) ; 72 QString getWhatsThisText(QPoint p) ;
72 73
73 signals: 74 signals:
74 void shiftDown(); 75 void shiftDown();
75 void shiftUp(); 76 void shiftUp();
76 void rightClick(); 77 void rightClick();
77 78
78 protected slots: 79 protected slots:
80 void oneDown();
79 void keyPressEvent(QKeyEvent *); 81 void keyPressEvent(QKeyEvent *);
80 void keyReleaseEvent(QKeyEvent *); 82 void keyReleaseEvent(QKeyEvent *);
81 void mousePressEvent(QMouseEvent *); 83 void mousePressEvent(QMouseEvent *);
82 84
83 private: 85 private:
84 KNOWhatsThis * mWT; 86 KNOWhatsThis * mWT;
85}; 87};
86 88
87 89
88class MonthViewItem: public QListBoxItem 90class MonthViewItem: public QListBoxItem
89{ 91{
90 public: 92 public:
91 MonthViewItem( Incidence *, QDate qd, const QString & title ); 93 MonthViewItem( Incidence *, QDate qd, const QString & title );
92 94
93 void setRecur(bool on) { mRecur = on; } 95 void setRecur(bool on) { mRecur = on; }
94 void setAlarm(bool on) { mAlarm = on; } 96 void setAlarm(bool on) { mAlarm = on; }
95 void setReply(bool on) { mReply = on; } 97 void setReply(bool on) { mReply = on; }
96 void setMoreInfo(bool on) { mInfo = on; } 98 void setMoreInfo(bool on) { mInfo = on; }
97 99
98 100
99 void setPalette(const QPalette &p) { mPalette = p; } 101 void setPalette(const QPalette &p) { mPalette = p; }
100 QPalette palette() const { return mPalette; } 102 QPalette palette() const { return mPalette; }
101 103
102 Incidence *incidence() const { return mIncidence; } 104 Incidence *incidence() const { return mIncidence; }
103 QDate incidenceDate() { return mDate; } 105 QDate incidenceDate() { return mDate; }
104 106
105 protected: 107 protected:
106 virtual void paint(QPainter *); 108 virtual void paint(QPainter *);
107 virtual int height(const QListBox *) const; 109 virtual int height(const QListBox *) const;
108 virtual int width(const QListBox *) const; 110 virtual int width(const QListBox *) const;
109 111
110 private: 112 private:
111 bool mRecur; 113 bool mRecur;
112 bool mAlarm; 114 bool mAlarm;
113 bool mReply; 115 bool mReply;
114 bool mInfo; 116 bool mInfo;
115 117
116 QPalette mPalette; 118 QPalette mPalette;
117 QDate mDate; 119 QDate mDate;
118 120
119 Incidence *mIncidence; 121 Incidence *mIncidence;
120}; 122};
121 123
122 124
123class KOMonthView; 125class KOMonthView;
124 126
125class MonthViewCell : public QWidget 127class MonthViewCell : public QWidget
126{ 128{
@@ -196,98 +198,98 @@ class MonthViewCell : public QWidget
196 QPalette mNonPrimaryPalette; 198 QPalette mNonPrimaryPalette;
197 void setMyPalette(); 199 void setMyPalette();
198 QPalette getPalette (); 200 QPalette getPalette ();
199 void keyPressEvent ( QKeyEvent * ) ; 201 void keyPressEvent ( QKeyEvent * ) ;
200 202
201}; 203};
202 204
203 205
204class KOMonthView: public KOEventView 206class KOMonthView: public KOEventView
205{ 207{
206 Q_OBJECT 208 Q_OBJECT
207 public: 209 public:
208 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 ); 210 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 );
209 ~KOMonthView(); 211 ~KOMonthView();
210 212
211 /** Returns maximum number of days supported by the komonthview */ 213 /** Returns maximum number of days supported by the komonthview */
212 virtual int maxDatesHint(); 214 virtual int maxDatesHint();
213 215
214 /** Returns number of currently shown dates. */ 216 /** Returns number of currently shown dates. */
215 virtual int currentDateCount(); 217 virtual int currentDateCount();
216 218
217 /** returns the currently selected events */ 219 /** returns the currently selected events */
218 virtual QPtrList<Incidence> selectedIncidences(); 220 virtual QPtrList<Incidence> selectedIncidences();
219 221
220 /** returns dates of the currently selected events */ 222 /** returns dates of the currently selected events */
221 virtual DateList selectedDates(); 223 virtual DateList selectedDates();
222 224
223 virtual void printPreview(CalPrinter *calPrinter, 225 virtual void printPreview(CalPrinter *calPrinter,
224 const QDate &, const QDate &); 226 const QDate &, const QDate &);
225 bool isMonthView() { return true; } 227 bool isMonthView() { return true; }
226 bool isUpdatePossible() { return updatePossible; } 228 bool isUpdatePossible() { return updatePossible; }
227 229
228 MonthViewCell * selectedCell(); 230 MonthViewCell * selectedCell();
229 public slots: 231 public slots:
230 virtual void updateView(); 232 virtual void updateView();
231 virtual void updateConfig(); 233 virtual void updateConfig();
232 virtual void showDates(const QDate &start, const QDate &end); 234 virtual void showDates(const QDate &start, const QDate &end);
233 virtual void showEvents(QPtrList<Event> eventList); 235 virtual void showEvents(QPtrList<Event> eventList);
234 236
235 void changeEventDisplay(Event *, int); 237 void changeEventDisplay(Event *, int);
236 238
237 void clearSelection(); 239 void clearSelection();
238 240
239 void showContextMenu( Incidence * ); 241 void showContextMenu( Incidence * );
240 242
241 void setSelectedCell( MonthViewCell * ); 243 void setSelectedCell( MonthViewCell * );
242 244
243 protected slots: 245 protected slots:
244 void selectDateWeekNum ( int );
245 void selectInternalWeekNum ( int ); 246 void selectInternalWeekNum ( int );
246 void switchView(); 247 void switchView();
247 void processSelectionChange(); 248 void processSelectionChange();
248 signals: 249 signals:
249 void nextMonth(); 250 void nextMonth();
250 void prevMonth(); 251 void prevMonth();
251 void showNavigator( bool ); 252 void showNavigator( bool );
252 void selectWeekNum ( int ); 253 void selectWeekNum ( int );
253 void showDaySignal( QDate ); 254 void showDaySignal( QDate );
254 protected: 255 protected:
255 void resizeEvent(QResizeEvent *); 256 void resizeEvent(QResizeEvent *);
256 void viewChanged(); 257 void viewChanged();
257 void updateDayLabels(); 258 void updateDayLabels();
258 259
259 private: 260 private:
261 int currentWeek();
260 bool clPending; 262 bool clPending;
261 QWidgetStack * mWidStack; 263 QWidgetStack * mWidStack;
262 QWidget* mMonthView; 264 QWidget* mMonthView;
263 QWidget* mWeekView; 265 QWidget* mWeekView;
264 bool mShowWeekView; 266 bool mShowWeekView;
265 bool updatePossible; 267 bool updatePossible;
266 int mDaysPerWeek; 268 int mDaysPerWeek;
267 int mNumWeeks; 269 int mNumWeeks;
268 int mNumCells; 270 int mNumCells;
269 bool mWeekStartsMonday; 271 bool mWeekStartsMonday;
270 bool mShowSatSunComp; 272 bool mShowSatSunComp;
271 void computeLayout(); 273 void computeLayout();
272 void computeLayoutWeek(); 274 void computeLayoutWeek();
273 275
274 QPtrVector<MonthViewCell> mCells; 276 QPtrVector<MonthViewCell> mCells;
275 QPtrVector<QLabel> mDayLabels; 277 QPtrVector<QLabel> mDayLabels;
276 QPtrVector<KOWeekButton> mWeekLabels; 278 QPtrVector<KOWeekButton> mWeekLabels;
277 QPtrVector<MonthViewCell> mCellsW; 279 QPtrVector<MonthViewCell> mCellsW;
278 QPtrVector<QLabel> mDayLabelsW; 280 QPtrVector<QLabel> mDayLabelsW;
279 QPtrVector<KOWeekButton> mWeekLabelsW; 281 QPtrVector<KOWeekButton> mWeekLabelsW;
280 282
281 bool mShortDayLabels; 283 bool mShortDayLabels;
282 int mWidthLongDayLabel; 284 int mWidthLongDayLabel;
283 285
284 QDate mStartDate; 286 QDate mStartDate;
285 287
286 MonthViewCell *mSelectedCell; 288 MonthViewCell *mSelectedCell;
287 289
288 KOEventPopupMenu *mContextMenu; 290 KOEventPopupMenu *mContextMenu;
289 void keyPressEvent ( QKeyEvent * ) ; 291 void keyPressEvent ( QKeyEvent * ) ;
290 292
291}; 293};
292 294
293#endif 295#endif