summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/koagendaitem.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp
index 0f9a38f..d38cb00 100644
--- a/korganizer/koagendaitem.cpp
+++ b/korganizer/koagendaitem.cpp
@@ -1,507 +1,508 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
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#include <qlabel.h> 20#include <qlabel.h>
21#include <qlayout.h> 21#include <qlayout.h>
22#include <q3hbox.h> 22#include <q3hbox.h>
23#include <q3vbox.h> 23#include <q3vbox.h>
24#include <qtooltip.h> 24#include <qtooltip.h>
25#include <q3whatsthis.h> 25#include <q3whatsthis.h>
26#include <q3dragobject.h> 26#include <q3dragobject.h>
27#include <qdrawutil.h> 27#include <qdrawutil.h>
28#include <qpainter.h> 28#include <qpainter.h>
29#include <QDesktopWidget> 29#include <QDesktopWidget>
30//Added by qt3to4: 30//Added by qt3to4:
31#include <Q3PtrList> 31#include <Q3PtrList>
32#include <QPixmap> 32#include <QPixmap>
33#include <QDragEnterEvent> 33#include <QDragEnterEvent>
34#include <QDropEvent> 34#include <QDropEvent>
35#include <QResizeEvent> 35#include <QResizeEvent>
36#include <QMouseEvent> 36#include <QMouseEvent>
37#include <QEvent> 37#include <QEvent>
38#include <QPaintEvent> 38#include <QPaintEvent>
39 39
40#include <kiconloader.h> 40#include <kiconloader.h>
41#include <kdebug.h> 41#include <kdebug.h>
42#include <kglobal.h> 42#include <kglobal.h>
43#include <klocale.h> 43#include <klocale.h>
44#ifndef DESKTOP_VERSION 44#ifndef DESKTOP_VERSION
45#include <qpe/qpeapplication.h> 45#include <qpe/qpeapplication.h>
46#define AGENDA_ICON_SIZE 5 46#define AGENDA_ICON_SIZE 5
47#else 47#else
48#include <qapplication.h> 48#include <qapplication.h>
49#define AGENDA_ICON_SIZE 7 49#define AGENDA_ICON_SIZE 7
50#endif 50#endif
51#include <libkcal/icaldrag.h> 51#include <libkcal/icaldrag.h>
52#include <libkcal/vcaldrag.h> 52#include <libkcal/vcaldrag.h>
53#include <libkcal/kincidenceformatter.h> 53#include <libkcal/kincidenceformatter.h>
54extern int globalFlagBlockAgenda; 54extern int globalFlagBlockAgenda;
55extern int globalFlagBlockAgendaItemPaint; 55extern int globalFlagBlockAgendaItemPaint;
56extern int globalFlagBlockAgendaItemUpdate; 56extern int globalFlagBlockAgendaItemUpdate;
57 57
58#include "koprefs.h" 58#include "koprefs.h"
59 59
60#include "koagendaitem.h" 60#include "koagendaitem.h"
61//#include "koagendaitem.moc" 61//#include "koagendaitem.moc"
62 62
63 63
64//-------------------------------------------------------------------------- 64//--------------------------------------------------------------------------
65 65
66QToolTipGroup *KOAgendaItem::mToolTipGroup = 0; 66QToolTipGroup *KOAgendaItem::mToolTipGroup = 0;
67 67
68//-------------------------------------------------------------------------- 68//--------------------------------------------------------------------------
69 69
70class KOAgendaItemWhatsThis :public Q3WhatsThis 70class KOAgendaItemWhatsThis :public Q3WhatsThis
71{ 71{
72public: 72public:
73 KOAgendaItemWhatsThis( KOAgendaItem* view ) : Q3WhatsThis( view ),_view (view) { }; 73 KOAgendaItemWhatsThis( KOAgendaItem* view ) : Q3WhatsThis( view ),_view (view) { };
74 74
75protected: 75protected:
76 virtual QString text( const QPoint& ) 76 virtual QString text( const QPoint& )
77 { 77 {
78 return _view->getWhatsThisText() ; 78 return _view->getWhatsThisText() ;
79 } 79 }
80private: 80private:
81 KOAgendaItem * _view; 81 KOAgendaItem * _view;
82}; 82};
83 83
84KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday, 84KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool allday,
85 const char *name,Qt::WFlags) : 85 const char *name,Qt::WFlags) :
86 QWidget(parent, name), mIncidence(incidence), mDate(qd) 86 QWidget(parent, name), mIncidence(incidence), mDate(qd)
87{ 87{
88#ifndef DESKTOP_VERSION 88#ifndef DESKTOP_VERSION
89 //QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); 89 //QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold );
90#endif 90#endif
91 mKOAgendaItemWhatsThis = new KOAgendaItemWhatsThis(this); 91 mKOAgendaItemWhatsThis = new KOAgendaItemWhatsThis(this);
92 Qt::WindowFlags wflags = windowFlags() |Qt::WRepaintNoErase;// WResizeNoErase 92 Qt::WindowFlags wflags = windowFlags() |Qt::WRepaintNoErase;// WResizeNoErase
93 setWindowFlags ( wflags); 93 setWindowFlags ( wflags);
94 mAllDay = allday; 94 mAllDay = allday;
95 init ( incidence, qd ); 95 init ( incidence, qd );
96 //setMouseTracking(true); 96 //setMouseTracking(true);
97 //setAcceptDrops(true); 97 //setAcceptDrops(true);
98 xPaintCoord = -1; 98 xPaintCoord = -1;
99 yPaintCoord = -1; 99 yPaintCoord = -1;
100} 100}
101QString KOAgendaItem::getWhatsThisText() 101QString KOAgendaItem::getWhatsThisText()
102{ 102{
103 if ( mIncidence ) 103 if ( mIncidence )
104 return KIncidenceFormatter::instance()->getFormattedText( mIncidence, 104 return KIncidenceFormatter::instance()->getFormattedText( mIncidence,
105 KOPrefs::instance()->mWTshowDetails, 105 KOPrefs::instance()->mWTshowDetails,
106 KOPrefs::instance()->mWTshowCreated, 106 KOPrefs::instance()->mWTshowCreated,
107 KOPrefs::instance()->mWTshowChanged); 107 KOPrefs::instance()->mWTshowChanged);
108 return "KOAgendaItem::getWhatsThisText()::internal error"; 108 return "KOAgendaItem::getWhatsThisText()::internal error";
109} 109}
110 110
111void KOAgendaItem::initColor () 111void KOAgendaItem::initColor ()
112{ 112{
113 if ( (mIncidence->typeID() == todoID ) && 113 if ( (mIncidence->typeID() == todoID ) &&
114 ( !((static_cast<Todo*>(mIncidence))->isCompleted()) && 114 ( !((static_cast<Todo*>(mIncidence))->isCompleted()) &&
115 ((static_cast<Todo*>(mIncidence))->dtDue().date() <= QDate::currentDate()) ) ) { 115 ((static_cast<Todo*>(mIncidence))->dtDue().date() <= QDate::currentDate()) ) ) {
116 if ( (static_cast<Todo*>(mIncidence))->dtDue() < (QDateTime)QDateTime::currentDateTime().date()) 116 if ( (static_cast<Todo*>(mIncidence))->dtDue() < (QDateTime)QDateTime::currentDateTime().date())
117 mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ; 117 mBackgroundColor = KOPrefs::instance()->mTodoOverdueColor ;
118 else 118 else
119 mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor; 119 mBackgroundColor = KOPrefs::instance()->mTodoDueTodayColor;
120 } 120 }
121 else { 121 else {
122 QStringList categories = mIncidence->categories(); 122 QStringList categories = mIncidence->categories();
123 QString cat = categories.first(); 123 QString cat;
124 if(!categories.isEmpty()) cat = categories.first();
124 if (cat.isEmpty()) { 125 if (cat.isEmpty()) {
125 if ( (mIncidence->typeID() == todoID ) &&((static_cast<Todo*>(mIncidence))->isCompleted()) ) 126 if ( (mIncidence->typeID() == todoID ) &&((static_cast<Todo*>(mIncidence))->isCompleted()) )
126 mBackgroundColor =KOPrefs::instance()->mTodoDoneColor; 127 mBackgroundColor =KOPrefs::instance()->mTodoDoneColor;
127 else 128 else
128 mBackgroundColor =KOPrefs::instance()->defaultColor( mIncidence->calID() ); 129 mBackgroundColor =KOPrefs::instance()->defaultColor( mIncidence->calID() );
129 } else { 130 } else {
130 mBackgroundColor = *KOPrefs::instance()->categoryColor(cat); 131 mBackgroundColor = *KOPrefs::instance()->categoryColor(cat);
131 if ( (mIncidence->typeID() == todoID ) &&((static_cast<Todo*>(mIncidence))->isCompleted()) ) { 132 if ( (mIncidence->typeID() == todoID ) &&((static_cast<Todo*>(mIncidence))->isCompleted()) ) {
132 if ( mBackgroundColor == KOPrefs::instance()->mEventColor ) 133 if ( mBackgroundColor == KOPrefs::instance()->mEventColor )
133 mBackgroundColor = KOPrefs::instance()->mTodoDoneColor; 134 mBackgroundColor = KOPrefs::instance()->mTodoDoneColor;
134 } 135 }
135 } 136 }
136 137
137 } 138 }
138 139
139 QColor BackgroundColor ( mBackgroundColor ); 140 QColor BackgroundColor ( mBackgroundColor );
140 if ( mIncidence->calID() > 1 ) { 141 if ( mIncidence->calID() > 1 ) {
141 //BackgroundColor = KOPrefs::instance()->defaultColor( mIncidence->calID() ); 142 //BackgroundColor = KOPrefs::instance()->defaultColor( mIncidence->calID() );
142 } 143 }
143 mColorGroup = QColorGroup( BackgroundColor.light(), 144 mColorGroup = QColorGroup( BackgroundColor.light(),
144 BackgroundColor.dark(),BackgroundColor.light(), 145 BackgroundColor.dark(),BackgroundColor.light(),
145 BackgroundColor.dark(),BackgroundColor, Qt::black, BackgroundColor) ; 146 BackgroundColor.dark(),BackgroundColor, Qt::black, BackgroundColor) ;
146 setBackgroundColor( mBackgroundColor ); 147 setBackgroundColor( mBackgroundColor );
147 mWhiteText = (mBackgroundColor.red() + mBackgroundColor.green() + mBackgroundColor.blue() < 250); 148 mWhiteText = (mBackgroundColor.red() + mBackgroundColor.green() + mBackgroundColor.blue() < 250);
148} 149}
149void KOAgendaItem::init ( Incidence *incidence, QDate qd ) 150void KOAgendaItem::init ( Incidence *incidence, QDate qd )
150{ 151{
151 mIncidence = incidence; 152 mIncidence = incidence;
152 mDate = qd; 153 mDate = qd;
153 mFirstMultiItem = 0; 154 mFirstMultiItem = 0;
154 mNextMultiItem = 0; 155 mNextMultiItem = 0;
155 mLastMultiItem = 0; 156 mLastMultiItem = 0;
156 computeText(); 157 computeText();
157 initColor(); 158 initColor();
158 mConflictItems.clear(); 159 mConflictItems.clear();
159 setCellXY(0,0,1); 160 setCellXY(0,0,1);
160 setCellXWidth(0); 161 setCellXWidth(0);
161 setSubCell(0); 162 setSubCell(0);
162 setSubCells(1); 163 setSubCells(1);
163 setMultiItem(0,0,0); 164 setMultiItem(0,0,0);
164 startMove(); 165 startMove();
165 mSelected = true; 166 mSelected = true;
166 select(false); 167 select(false);
167 QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont); 168 QFontMetrics fontinf(KOPrefs::instance()->mAgendaViewFont);
168 mFontPixelSize = fontinf.height();; 169 mFontPixelSize = fontinf.height();;
169 hide(); 170 hide();
170 xPaintCoord = -1; 171 xPaintCoord = -1;
171 yPaintCoord = -1; 172 yPaintCoord = -1;
172} 173}
173 174
174 175
175KOAgendaItem::~KOAgendaItem() 176KOAgendaItem::~KOAgendaItem()
176{ 177{
177#if QT_VERSION >= 0x030000 178#if QT_VERSION >= 0x030000
178 179
179#else 180#else
180 delete mKOAgendaItemWhatsThis; 181 delete mKOAgendaItemWhatsThis;
181#endif 182#endif
182 183
183} 184}
184 185
185void KOAgendaItem::recreateIncidence() 186void KOAgendaItem::recreateIncidence()
186{ 187{
187#if 0 188#if 0
188 Incidence* newInc = mIncidence->clone(); 189 Incidence* newInc = mIncidence->clone();
189 newInc->recreate(); 190 newInc->recreate();
190 if ( mIncidence->doesRecur() ) { 191 if ( mIncidence->doesRecur() ) {
191 mIncidence->addExDate( mDate ); 192 mIncidence->addExDate( mDate );
192 newInc->recurrence()->unsetRecurs(); 193 newInc->recurrence()->unsetRecurs();
193 int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd()); 194 int len = mIncidence->dtStart().secsTo( ((Event*)mIncidence)->dtEnd());
194 QTime tim = mIncidence->dtStart().time(); 195 QTime tim = mIncidence->dtStart().time();
195 newInc->setDtStart( QDateTime(mDate, tim) ); 196 newInc->setDtStart( QDateTime(mDate, tim) );
196 ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) ); 197 ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) );
197 } 198 }
198#endif 199#endif
199 mIncidence = mIncidence->recreateCloneException( mDate ); 200 mIncidence = mIncidence->recreateCloneException( mDate );
200} 201}
201bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout) 202bool KOAgendaItem::updateIcons(QPainter * p, bool horLayout)
202{ 203{
203 int size = AGENDA_ICON_SIZE; 204 int size = AGENDA_ICON_SIZE;
204 205
205 int yOff = 0; 206 int yOff = 0;
206 int xOff = 0; 207 int xOff = 0;
207 int x = pos().x(); 208 int x = pos().x();
208 209
209 if ( x < 0 ) x = 0; 210 if ( x < 0 ) x = 0;
210 x += 3; 211 x += 3;
211 int y; 212 int y;
212 if ( mAllDay ) 213 if ( mAllDay )
213 y = pos().y()+3; 214 y = pos().y()+3;
214 else 215 else
215 y = mCellYTop * ( height() / cellHeight() ) +3; 216 y = mCellYTop * ( height() / cellHeight() ) +3;
216 217
217 218
218 if ( mIncidence->calID() > 1 ) { 219 if ( mIncidence->calID() > 1 ) {
219 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, KOPrefs::instance()->defaultColor( mIncidence->calID() ) ); 220 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, KOPrefs::instance()->defaultColor( mIncidence->calID() ) );
220 p->drawRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x-1, yOff*( 1 +AGENDA_ICON_SIZE)+y-1, AGENDA_ICON_SIZE+2, AGENDA_ICON_SIZE+2 ); 221 p->drawRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x-1, yOff*( 1 +AGENDA_ICON_SIZE)+y-1, AGENDA_ICON_SIZE+2, AGENDA_ICON_SIZE+2 );
221 if ( horLayout ){ 222 if ( horLayout ){
222 ++xOff; 223 ++xOff;
223 ++x; 224 ++x;
224 } 225 }
225 else { 226 else {
226 ++yOff; 227 ++yOff;
227 ++y; 228 ++y;
228 } 229 }
229 } 230 }
230 if (mIncidence->cancelled() && height() < 20 ) { 231 if (mIncidence->cancelled() && height() < 20 ) {
231 int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x; 232 int xpos = xOff*( 1 +AGENDA_ICON_SIZE )+x;
232 int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y; 233 int ypos = yOff*( 1 +AGENDA_ICON_SIZE)+y;
233 p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 ); 234 p->drawLine( xpos, ypos, xpos+AGENDA_ICON_SIZE-1, ypos+AGENDA_ICON_SIZE-1 );
234 p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos ); 235 p->drawLine( xpos, ypos+AGENDA_ICON_SIZE-1, xpos+AGENDA_ICON_SIZE-1, ypos );
235 if ( horLayout ) 236 if ( horLayout )
236 ++xOff; 237 ++xOff;
237 else 238 else
238 ++yOff; 239 ++yOff;
239 } 240 }
240 if (mIncidence->isAlarmEnabled() && mIncidence->alarmEnabled()) { 241 if (mIncidence->isAlarmEnabled() && mIncidence->alarmEnabled()) {
241 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::red ); 242 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::red );
242 if ( horLayout ) 243 if ( horLayout )
243 ++xOff; 244 ++xOff;
244 else 245 else
245 ++yOff; 246 ++yOff;
246 } 247 }
247 if (mIncidence->doesRecur()) { 248 if (mIncidence->doesRecur()) {
248 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::blue ); 249 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::blue );
249 if ( horLayout ) 250 if ( horLayout )
250 ++xOff; 251 ++xOff;
251 else 252 else
252 ++yOff; 253 ++yOff;
253 } 254 }
254 if (mIncidence->description().length() > 0) { 255 if (mIncidence->description().length() > 0) {
255 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::darkGreen ); 256 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::darkGreen );
256 if ( horLayout ) 257 if ( horLayout )
257 ++xOff; 258 ++xOff;
258 else 259 else
259 ++yOff; 260 ++yOff;
260 } 261 }
261 if (mIncidence->isReadOnly()) { 262 if (mIncidence->isReadOnly()) {
262 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::white ); 263 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::white );
263 if ( horLayout ) 264 if ( horLayout )
264 ++xOff; 265 ++xOff;
265 else 266 else
266 ++yOff; 267 ++yOff;
267 } 268 }
268 269
269 if (mIncidence->attendeeCount()>0) { 270 if (mIncidence->attendeeCount()>0) {
270 271
271 if (mIncidence->organizer() == KOPrefs::instance()->email()) { 272 if (mIncidence->organizer() == KOPrefs::instance()->email()) {
272 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::black ); 273 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::black );
273 if ( horLayout ) 274 if ( horLayout )
274 ++xOff; 275 ++xOff;
275 else 276 else
276 ++yOff; 277 ++yOff;
277 } else { 278 } else {
278 Attendee *me = mIncidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 279 Attendee *me = mIncidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
279 if (me!=0) { 280 if (me!=0) {
280 281
281 282
282 } else { 283 } else {
283 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::yellow ); 284 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::yellow );
284 if ( horLayout ) 285 if ( horLayout )
285 ++xOff; 286 ++xOff;
286 else 287 else
287 ++yOff; 288 ++yOff;
288 289
289 } 290 }
290 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::darkYellow ); 291 p->fillRect ( xOff*( 1 +AGENDA_ICON_SIZE )+x, yOff*( 1 +AGENDA_ICON_SIZE)+y, AGENDA_ICON_SIZE, AGENDA_ICON_SIZE, Qt::darkYellow );
291 if ( horLayout ) 292 if ( horLayout )
292 ++xOff; 293 ++xOff;
293 else 294 else
294 ++yOff; 295 ++yOff;
295 296
296 } 297 }
297 298
298 } 299 }
299 return ( yOff || xOff ); 300 return ( yOff || xOff );
300} 301}
301 302
302 303
303void KOAgendaItem::select(bool selected) 304void KOAgendaItem::select(bool selected)
304{ 305{
305 //qDebug("select %d %d",firstMultiItem(), nextMultiItem() ); 306 //qDebug("select %d %d",firstMultiItem(), nextMultiItem() );
306 if (mSelected == selected) return; 307 if (mSelected == selected) return;
307 mSelected = selected; 308 mSelected = selected;
308 if ( ! isVisible() ) 309 if ( ! isVisible() )
309 return; 310 return;
310 if ( firstMultiItem() ) 311 if ( firstMultiItem() )
311 firstMultiItem()->select( selected ); 312 firstMultiItem()->select( selected );
312 if ( !firstMultiItem() && nextMultiItem() ) { 313 if ( !firstMultiItem() && nextMultiItem() ) {
313 KOAgendaItem * placeItem = nextMultiItem(); 314 KOAgendaItem * placeItem = nextMultiItem();
314 while ( placeItem ) { 315 while ( placeItem ) {
315 placeItem->select( selected ); 316 placeItem->select( selected );
316 placeItem = placeItem->nextMultiItem(); 317 placeItem = placeItem->nextMultiItem();
317 } 318 }
318 } 319 }
319 globalFlagBlockAgendaItemUpdate = 0; 320 globalFlagBlockAgendaItemUpdate = 0;
320 paintMe( selected ); 321 paintMe( selected );
321 globalFlagBlockAgendaItemUpdate = 1; 322 globalFlagBlockAgendaItemUpdate = 1;
322 repaint( false ); 323 repaint( false );
323} 324}
324 325
325 326
326/* 327/*
327 The eventFilter has to filter the mouse events of the agenda item childs. The 328 The eventFilter has to filter the mouse events of the agenda item childs. The
328 events are fed into the event handling method of KOAgendaItem. This allows the 329 events are fed into the event handling method of KOAgendaItem. This allows the
329 KOAgenda to handle the KOAgendaItems by using an eventFilter. 330 KOAgenda to handle the KOAgendaItems by using an eventFilter.
330*/ 331*/
331bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e ) 332bool KOAgendaItem::eventFilter ( QObject *object, QEvent *e )
332{ 333{
333 if (e->type() == QEvent::MouseButtonPress || 334 if (e->type() == QEvent::MouseButtonPress ||
334 e->type() == QEvent::MouseButtonDblClick || 335 e->type() == QEvent::MouseButtonDblClick ||
335 e->type() == QEvent::MouseButtonRelease || 336 e->type() == QEvent::MouseButtonRelease ||
336 e->type() == QEvent::MouseMove) { 337 e->type() == QEvent::MouseMove) {
337 QMouseEvent *me = (QMouseEvent *)e; 338 QMouseEvent *me = (QMouseEvent *)e;
338 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)-> 339 QPoint itemPos = this->mapFromGlobal(((QWidget *)object)->
339 mapToGlobal(me->pos())); 340 mapToGlobal(me->pos()));
340 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state()); 341 QMouseEvent returnEvent (e->type(),itemPos,me->button(),me->state());
341 return event(&returnEvent); 342 return event(&returnEvent);
342 } else { 343 } else {
343 return false; 344 return false;
344 } 345 }
345} 346}
346void KOAgendaItem::repaintMe( ) 347void KOAgendaItem::repaintMe( )
347{ 348{
348 paintMe ( mSelected ); 349 paintMe ( mSelected );
349} 350}
350void KOAgendaItem::paintMe( bool selected, QPainter* paint ) 351void KOAgendaItem::paintMe( bool selected, QPainter* paint )
351{ 352{
352 if ( globalFlagBlockAgendaItemUpdate && ! selected) 353 if ( globalFlagBlockAgendaItemUpdate && ! selected)
353 return; 354 return;
354 QPainter pa; 355 QPainter pa;
355 356
356 if ( mSelected ) { 357 if ( mSelected ) {
357 pa.begin( this ); 358 pa.begin( this );
358 } else { 359 } else {
359 if ( mAllDay ) 360 if ( mAllDay )
360 pa.begin( paintPixAllday() ); 361 pa.begin( paintPixAllday() );
361 else 362 else
362 pa.begin( paintPix() ); 363 pa.begin( paintPix() );
363 } 364 }
364 int x, yy, w, h; 365 int x, yy, w, h;
365 float nfh = 7.0; 366 float nfh = 7.0;
366 x = pos().x(); w = width(); h = height (); 367 x = pos().x(); w = width(); h = height ();
367 if ( mAllDay ) 368 if ( mAllDay )
368 yy = y(); 369 yy = y();
369 else 370 else
370 yy = mCellYTop * ( height() / cellHeight() ); 371 yy = mCellYTop * ( height() / cellHeight() );
371 if ( mSelected ) { 372 if ( mSelected ) {
372 pa.translate( -x, -yy ); 373 pa.translate( -x, -yy );
373 } 374 }
374 xPaintCoord= x; 375 xPaintCoord= x;
375 yPaintCoord = yy; 376 yPaintCoord = yy;
376 wPaintCoord = width(); 377 wPaintCoord = width();
377 hPaintCoord = height(); 378 hPaintCoord = height();
378 //qDebug("paintMe %s %d %d %d %d",incidence()->summary().latin1(), x, yy, width(), height()); 379 //qDebug("paintMe %s %d %d %d %d",incidence()->summary().latin1(), x, yy, width(), height());
379 if ( paint == 0 ) 380 if ( paint == 0 )
380 paint = &pa; 381 paint = &pa;
381 bool horLayout = ( w < h ); 382 bool horLayout = ( w < h );
382 int maxhei = mFontPixelSize+4; 383 int maxhei = mFontPixelSize+4;
383 if ( horLayout ) 384 if ( horLayout )
384 maxhei += AGENDA_ICON_SIZE -4; 385 maxhei += AGENDA_ICON_SIZE -4;
385 bool small = ( h < maxhei ); 386 bool small = ( h < maxhei );
386 if ( ! small ) 387 if ( ! small )
387 paint->setFont(KOPrefs::instance()->mAgendaViewFont); 388 paint->setFont(KOPrefs::instance()->mAgendaViewFont);
388 else { 389 else {
389 QFont f = KOPrefs::instance()->mAgendaViewFont; 390 QFont f = KOPrefs::instance()->mAgendaViewFont;
390 f.setBold( false ); 391 f.setBold( false );
391 int fh = f.pointSize(); 392 int fh = f.pointSize();
392 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh; 393 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh;
393 if ( nfh < 6 ) 394 if ( nfh < 6 )
394 nfh = 6; 395 nfh = 6;
395 f.setPointSize( nfh ); 396 f.setPointSize( nfh );
396 paint->setFont(f); 397 paint->setFont(f);
397 } 398 }
398 paint->fillRect ( x, yy, w, h, mBackgroundColor ); 399 paint->fillRect ( x, yy, w, h, mBackgroundColor );
399 static const QPixmap completedPxmp = SmallIcon("greenhook16"); 400 static const QPixmap completedPxmp = SmallIcon("greenhook16");
400 static const QPixmap overduePxmp = SmallIcon("redcross16"); 401 static const QPixmap overduePxmp = SmallIcon("redcross16");
401 if ( mIncidence->typeID() == todoID ) { 402 if ( mIncidence->typeID() == todoID ) {
402 Todo* tempTodo = static_cast<Todo*>(mIncidence); 403 Todo* tempTodo = static_cast<Todo*>(mIncidence);
403 int xx = pos().x()+(width()-completedPxmp.width()-3 ); 404 int xx = pos().x()+(width()-completedPxmp.width()-3 );
404 int yyy = yy+3; 405 int yyy = yy+3;
405 if ( tempTodo->isCompleted() ) 406 if ( tempTodo->isCompleted() )
406 paint->drawPixmap ( xx, yyy, completedPxmp ); 407 paint->drawPixmap ( xx, yyy, completedPxmp );
407 else { 408 else {
408 paint->drawPixmap ( xx, yyy, overduePxmp ); 409 paint->drawPixmap ( xx, yyy, overduePxmp );
409 410
410 } 411 }
411 } 412 }
412 bool addIcon = false; 413 bool addIcon = false;
413 if ( ! small || w > 3 * h || h > 3* w ) 414 if ( ! small || w > 3 * h || h > 3* w )
414 addIcon = updateIcons( paint, horLayout ); 415 addIcon = updateIcons( paint, horLayout );
415 416
416 //qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0); 417 //qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0);
417 qDrawWinPanel (paint, x, yy, w, h, mColorGroup, selected ,0); 418 qDrawWinPanel (paint, x, yy, w, h, mColorGroup, selected ,0);
418 //qDebug("draw rect %d %d %d %d ",x, yy, w, h ); 419 //qDebug("draw rect %d %d %d %d ",x, yy, w, h );
419 if ( ! small ) { 420 if ( ! small ) {
420 x += 3; yy += 3;w -= 6; h-= 5; 421 x += 3; yy += 3;w -= 6; h-= 5;
421 } else { 422 } else {
422 x += 2; yy += 1;w -= 4; h-= 4; 423 x += 2; yy += 1;w -= 4; h-= 4;
423 if ( nfh < 6.01 ) { 424 if ( nfh < 6.01 ) {
424 yy -= 2; 425 yy -= 2;
425 h += 4; 426 h += 4;
426 } 427 }
427 else 428 else
428 if ( nfh < h -2 ) 429 if ( nfh < h -2 )
429 ++yy; 430 ++yy;
430 } 431 }
431 int align; 432 int align;
432#ifndef DESKTOP_VERSION 433#ifndef DESKTOP_VERSION
433 align = ( Qt::AlignLeft|Qt::TextWordWrap|Qt::AlignTop); 434 align = ( Qt::AlignLeft|Qt::TextWordWrap|Qt::AlignTop);
434#else 435#else
435 align = ( Qt::AlignLeft|Qt::TextWrapAnywhere|Qt::TextWordWrap|Qt::AlignTop); 436 align = ( Qt::AlignLeft|Qt::TextWrapAnywhere|Qt::TextWordWrap|Qt::AlignTop);
436#endif 437#endif
437 if ( addIcon ) { 438 if ( addIcon ) {
438 if ( ! horLayout ) { 439 if ( ! horLayout ) {
439 x += AGENDA_ICON_SIZE+3; 440 x += AGENDA_ICON_SIZE+3;
440 w -= (AGENDA_ICON_SIZE+3); 441 w -= (AGENDA_ICON_SIZE+3);
441 } 442 }
442 else { 443 else {
443 yy+= AGENDA_ICON_SIZE+2; 444 yy+= AGENDA_ICON_SIZE+2;
444 h -=(AGENDA_ICON_SIZE+3); 445 h -=(AGENDA_ICON_SIZE+3);
445 } 446 }
446 } 447 }
447 if ( mWhiteText ) 448 if ( mWhiteText )
448 paint->setPen ( Qt::white); 449 paint->setPen ( Qt::white);
449 if ( x < 0 ) { 450 if ( x < 0 ) {
450 w = w+x-3; 451 w = w+x-3;
451 x = 3; 452 x = 3;
452 if ( !horLayout && addIcon ) 453 if ( !horLayout && addIcon )
453 x += AGENDA_ICON_SIZE+3; 454 x += AGENDA_ICON_SIZE+3;
454 if ( w > parentWidget()->width() ){ 455 if ( w > parentWidget()->width() ){
455 w = parentWidget()->width() - 6; 456 w = parentWidget()->width() - 6;
456#ifndef DESKTOP_VERSION 457#ifndef DESKTOP_VERSION
457 align = ( Qt::AlignHCenter|Qt::TextWordWrap|Qt::AlignTop); 458 align = ( Qt::AlignHCenter|Qt::TextWordWrap|Qt::AlignTop);
458#else 459#else
459 align = ( Qt::AlignHCenter|Qt::TextWrapAnywhere|Qt::TextWordWrap|Qt::AlignTop); 460 align = ( Qt::AlignHCenter|Qt::TextWrapAnywhere|Qt::TextWordWrap|Qt::AlignTop);
460#endif 461#endif
461 462
462 } 463 }
463 } 464 }
464 QRect dr; 465 QRect dr;
465 if ( w + x > parentWidget()->width() ) 466 if ( w + x > parentWidget()->width() )
466 w = parentWidget()->width()-x; 467 w = parentWidget()->width()-x;
467 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr ); 468 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr );
468 //qDebug("%d %d %d %d ", x, yy, w, h ); 469 //qDebug("%d %d %d %d ", x, yy, w, h );
469 if ( mIncidence->cancelled() ){ 470 if ( mIncidence->cancelled() ){
470 471
471 472
472 small = ( height() < 20 ); 473 small = ( height() < 20 );
473 474
474 if ( ! small ) { 475 if ( ! small ) {
475 QFontMetrics fm ( paint->font() ); 476 QFontMetrics fm ( paint->font() );
476 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2); 477 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2);
477 } 478 }
478 479
479 } 480 }
480 pa.end(); 481 pa.end();
481 482
482} 483}
483 484
484QPixmap * KOAgendaItem::paintPix() 485QPixmap * KOAgendaItem::paintPix()
485{ 486{
486 static QPixmap* mPaintPix = 0; 487 static QPixmap* mPaintPix = 0;
487 if ( ! mPaintPix ) { 488 if ( ! mPaintPix ) {
488 int w = QApplication::desktop()->width(); 489 int w = QApplication::desktop()->width();
489 int h = QApplication::desktop()->height(); 490 int h = QApplication::desktop()->height();
490 mPaintPix = new QPixmap(w,h); 491 mPaintPix = new QPixmap(w,h);
491 } 492 }
492 return mPaintPix ; 493 return mPaintPix ;
493} 494}
494QPixmap * KOAgendaItem::paintPixAllday() 495QPixmap * KOAgendaItem::paintPixAllday()
495{ 496{
496 static QPixmap* mPaintPixA = 0; 497 static QPixmap* mPaintPixA = 0;
497 if ( ! mPaintPixA ) { 498 if ( ! mPaintPixA ) {
498 int w = QApplication::desktop()->width(); 499 int w = QApplication::desktop()->width();
499 int h = QApplication::desktop()->height()/5; 500 int h = QApplication::desktop()->height()/5;
500 mPaintPixA = new QPixmap(w,h); 501 mPaintPixA = new QPixmap(w,h);
501 } 502 }
502 return mPaintPixA ; 503 return mPaintPixA ;
503} 504}
504 505
505void KOAgendaItem::repaintItem() 506void KOAgendaItem::repaintItem()
506{ 507{
507 globalFlagBlockAgendaItemPaint = 0; 508 globalFlagBlockAgendaItemPaint = 0;