summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-04-02 08:36:37 (UTC)
committer zautrix <zautrix>2005-04-02 08:36:37 (UTC)
commite7cb4c20af8b07bf923c864026481ce316c40e1d (patch) (unidiff)
treec88b2d0c01ce683e73ea9f4657f4d5c6fbe6f922 /korganizer
parent7aefe488d1fe0c34cf29460f48a9a97d632f615e (diff)
downloadkdepimpi-e7cb4c20af8b07bf923c864026481ce316c40e1d.zip
kdepimpi-e7cb4c20af8b07bf923c864026481ce316c40e1d.tar.gz
kdepimpi-e7cb4c20af8b07bf923c864026481ce316c40e1d.tar.bz2
more fixes
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagendaview.cpp86
-rw-r--r--korganizer/kodaymatrix.cpp8
2 files changed, 81 insertions, 13 deletions
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index 2b05d37..8d32152 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -1,413 +1,477 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 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 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 <qhbox.h> 24#include <qhbox.h>
25#include <qvbox.h> 25#include <qvbox.h>
26#include <qlabel.h> 26#include <qlabel.h>
27#include <qframe.h> 27#include <qframe.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#ifndef KORG_NOSPLITTER 29#ifndef KORG_NOSPLITTER
30#include <qsplitter.h> 30#include <qsplitter.h>
31#endif 31#endif
32#include <qfont.h> 32#include <qfont.h>
33#include <qfontmetrics.h> 33#include <qfontmetrics.h>
34#include <qpopupmenu.h> 34#include <qpopupmenu.h>
35#include <qtooltip.h> 35#include <qtooltip.h>
36#include <qpainter.h> 36#include <qpainter.h>
37#include <qpushbutton.h> 37#include <qpushbutton.h>
38#include <qapplication.h> 38#include <qapplication.h>
39 39
40#include <kapplication.h> 40#include <kapplication.h>
41#include <KDGanttMinimizeSplitter.h> 41#include <KDGanttMinimizeSplitter.h>
42#include <kdebug.h> 42#include <kdebug.h>
43#include <kstandarddirs.h> 43#include <kstandarddirs.h>
44#include <kiconloader.h> 44#include <kiconloader.h>
45#include <klocale.h> 45#include <klocale.h>
46#include <kconfig.h> 46#include <kconfig.h>
47#include <kglobal.h> 47#include <kglobal.h>
48#include "calendarview.h" 48#include "calendarview.h"
49#include "koviewmanager.h" 49#include "koviewmanager.h"
50 50
51#include <libkcal/calendar.h> 51#include <libkcal/calendar.h>
52#include <libkcal/icaldrag.h> 52#include <libkcal/icaldrag.h>
53#include <libkcal/dndfactory.h> 53#include <libkcal/dndfactory.h>
54 54
55#include <kcalendarsystem.h> 55#include <kcalendarsystem.h>
56 56
57#include "koglobals.h" 57#include "koglobals.h"
58#ifndef KORG_NOPLUGINS 58#ifndef KORG_NOPLUGINS
59#include "kocore.h" 59#include "kocore.h"
60#endif 60#endif
61#include "koprefs.h" 61#include "koprefs.h"
62#include "koagenda.h" 62#include "koagenda.h"
63#include "koagendaitem.h" 63#include "koagendaitem.h"
64#ifndef KORG_NOPRINTER 64#ifndef KORG_NOPRINTER
65#include "calprinter.h" 65#include "calprinter.h"
66#endif 66#endif
67 67
68#include "koagendaview.h" 68#include "koagendaview.h"
69//#include "koagendaview.moc" 69//#include "koagendaview.moc"
70 70
71//extern bool globalFlagBlockPainting; 71//extern bool globalFlagBlockPainting;
72extern int globalFlagBlockAgenda; 72extern int globalFlagBlockAgenda;
73extern int globalFlagBlockStartup; 73extern int globalFlagBlockStartup;
74extern int globalFlagBlockAgendaItemPaint; 74extern int globalFlagBlockAgendaItemPaint;
75extern int globalFlagBlockAgendaItemUpdate; 75extern int globalFlagBlockAgendaItemUpdate;
76extern int globalFlagBlockLabel; 76extern int globalFlagBlockLabel;
77using namespace KOrg; 77using namespace KOrg;
78 78
79 79
80 80
81TimeLabels::TimeLabels(int rows,QWidget *parent,const char *name,WFlags f) : 81TimeLabels::TimeLabels(int rows,QWidget *parent,const char *name,WFlags f) :
82 QScrollView(parent,name,f) 82 QScrollView(parent,name,f)
83{ 83{
84 myPix.resize( 1, 1 ); 84 myPix.resize( 1, 1 );
85 mRows = rows; 85 mRows = rows;
86 86
87 mRedrawNeeded = true; 87 mRedrawNeeded = true;
88 setMinimumHeight( 20 ); 88 setMinimumHeight( 20 );
89 mCellHeight = KOPrefs::instance()->mHourSize*4; 89 mCellHeight = KOPrefs::instance()->mHourSize*4;
90 90
91 enableClipper(true); 91 enableClipper(true);
92 92
93 setHScrollBarMode(AlwaysOff); 93 setHScrollBarMode(AlwaysOff);
94 setVScrollBarMode(AlwaysOff); 94 setVScrollBarMode(AlwaysOff);
95 95
96 resizeContents(50,mRows * mCellHeight); 96 resizeContents(50,mRows * mCellHeight);
97 97
98 viewport()->setBackgroundMode( PaletteBackground ); 98 viewport()->setBackgroundMode( PaletteBackground );
99} 99}
100 100
101void TimeLabels::setCellHeight(int height) 101void TimeLabels::setCellHeight(int height)
102{ 102{
103 mCellHeight = height; 103 mCellHeight = height;
104} 104}
105 105
106/* 106/*
107 Optimization so that only the "dirty" portion of the scroll view 107 Optimization so that only the "dirty" portion of the scroll view
108 is redrawn. Unfortunately, this is not called by default paintEvent() method. 108 is redrawn. Unfortunately, this is not called by default paintEvent() method.
109*/ 109*/
110void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch) 110void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch)
111{ 111{
112 112
113 // if ( globalFlagBlockAgenda ) 113 cx = contentsX() + frameWidth()*2;
114 // return; 114 cw = contentsWidth() ;
115 // bug: the parameters cx, cy, cw, ch are the areas that need to be 115 // end of workaround
116 // redrawn, not the area of the widget. unfortunately, this 116
117 // code assumes the latter... 117 int cell = ((int)(cy/mCellHeight));
118 118 int y = cell * mCellHeight;
119 // now, for a workaround... 119 QFontMetrics fm = fontMetrics();
120 // these two assignments fix the weird redraw bug 120 QString hour;
121 QString suffix = "am";
122 int timeHeight = fm.ascent();
123 QFont nFont = p->font();
124
125 if (!KGlobal::locale()->use12Clock()) {
126 if ( QApplication::desktop()->width() <= 320 )
127 suffix = "00";
128 else
129 suffix = "00";
130 }
131
132 if ( timeHeight > mCellHeight ) {
133 timeHeight = mCellHeight-1;
134 int pointS = nFont.pointSize();
135 while ( pointS > 4 ) {
136 nFont.setPointSize( pointS );
137 fm = QFontMetrics( nFont );
138 if ( fm.ascent() < mCellHeight )
139 break;
140 -- pointS;
141 }
142 fm = QFontMetrics( nFont );
143 timeHeight = fm.ascent();
144 }
145 //timeHeight -= (timeHeight/4-2);
146 QFont sFont = nFont;
147 sFont.setPointSize( sFont.pointSize()/2 );
148 QFontMetrics fmS( sFont );
149 int sHei = fmS.ascent() ;
150 //sHei -= (sHei/4-2);
151 int startW = this->width() - frameWidth()-2;
152 int tw2 = fmS.width(suffix);
153 timeHeight = (timeHeight-1) /2 -1;
154 while (y < cy + ch+mCellHeight) {
155 p->drawLine(startW-tw2+1 ,y,cw,y);
156 hour.setNum(cell);
157 // handle 24h and am/pm time formats
158 if (KGlobal::locale()->use12Clock()) {
159 if (cell > 11) suffix = "pm";
160 else
161 suffix = "am";
162 if (cell == 0) hour.setNum(12);
163 if (cell > 12) hour.setNum(cell - 12);
164 }
165
166 // center and draw the time label
167 int timeWidth = fm.width(hour);
168 int offset = startW - timeWidth - tw2 ;
169 p->setFont( nFont );
170 p->drawText( offset, y+ timeHeight, hour);
171 p->setFont( sFont );
172 offset = startW - tw2+1;
173 p->drawText( offset, y -1, suffix);
174
175 // increment indices
176 y += mCellHeight;
177 cell++;
178 }
179
180
181
182
183#if 0
121 mRedrawNeeded = true; 184 mRedrawNeeded = true;
122 if ( mRedrawNeeded ) { 185 if ( mRedrawNeeded ) {
123 cx = contentsX() + frameWidth()*2; 186 cx = contentsX() + frameWidth()*2;
124 cw = contentsWidth() ; 187 cw = contentsWidth() ;
125 // end of workaround 188 // end of workaround
126 189
127 int cell = ((int)(cy/mCellHeight)); 190 int cell = ((int)(cy/mCellHeight));
128 int y = cell * mCellHeight; 191 int y = cell * mCellHeight;
129 QFontMetrics fm = fontMetrics(); 192 QFontMetrics fm = fontMetrics();
130 QString hour; 193 QString hour;
131 QString suffix; 194 QString suffix;
132 int timeHeight = fm.ascent(); 195 int timeHeight = fm.ascent();
133 QFont nFont = p->font(); 196 QFont nFont = p->font();
134 197
135 if (!KGlobal::locale()->use12Clock()) { 198 if (!KGlobal::locale()->use12Clock()) {
136 if ( QApplication::desktop()->width() <= 320 ) 199 if ( QApplication::desktop()->width() <= 320 )
137 suffix = ""; 200 suffix = "";
138 else 201 else
139 suffix = "00"; 202 suffix = "00";
140 } 203 }
141 204
142 if ( timeHeight > mCellHeight ) { 205 if ( timeHeight > mCellHeight ) {
143 timeHeight = mCellHeight-1; 206 timeHeight = mCellHeight-1;
144 int pointS = nFont.pointSize(); 207 int pointS = nFont.pointSize();
145 while ( pointS > 4 ) { 208 while ( pointS > 4 ) {
146 nFont.setPointSize( pointS ); 209 nFont.setPointSize( pointS );
147 fm = QFontMetrics( nFont ); 210 fm = QFontMetrics( nFont );
148 if ( fm.ascent() < mCellHeight ) 211 if ( fm.ascent() < mCellHeight )
149 break; 212 break;
150 -- pointS; 213 -- pointS;
151 } 214 }
152 fm = QFontMetrics( nFont ); 215 fm = QFontMetrics( nFont );
153 timeHeight = fm.ascent(); 216 timeHeight = fm.ascent();
154 } 217 }
155 //timeHeight -= (timeHeight/4-2); 218 //timeHeight -= (timeHeight/4-2);
156 QFont sFont = nFont; 219 QFont sFont = nFont;
157 sFont.setPointSize( sFont.pointSize()/2 ); 220 sFont.setPointSize( sFont.pointSize()/2 );
158 QFontMetrics fmS( sFont ); 221 QFontMetrics fmS( sFont );
159 int sHei = fmS.ascent() ; 222 int sHei = fmS.ascent() ;
160 //sHei -= (sHei/4-2); 223 //sHei -= (sHei/4-2);
161 int startW = this->width() - frameWidth()-2; 224 int startW = this->width() - frameWidth()-2;
162 int tw2 = fmS.width(suffix); 225 int tw2 = fmS.width(suffix);
163 while (y < cy + ch) { 226 while (y < cy + ch) {
164 p->drawLine(cx,y,cw,y); 227 p->drawLine(cx,y,cw,y);
165 hour.setNum(cell); 228 hour.setNum(cell);
166 // handle 24h and am/pm time formats 229 // handle 24h and am/pm time formats
167 if (KGlobal::locale()->use12Clock()) { 230 if (KGlobal::locale()->use12Clock()) {
168 if (cell > 11) suffix = "pm"; 231 if (cell > 11) suffix = "pm";
169 else 232 else
170 suffix = "am"; 233 suffix = "am";
171 if (cell == 0) hour.setNum(12); 234 if (cell == 0) hour.setNum(12);
172 if (cell > 12) hour.setNum(cell - 12); 235 if (cell > 12) hour.setNum(cell - 12);
173 tw2 = fmS.width(suffix); 236 tw2 = fmS.width(suffix);
174 } 237 }
175 238
176 // center and draw the time label 239 // center and draw the time label
177 int timeWidth = fm.width(hour); 240 int timeWidth = fm.width(hour);
178 int offset = startW - timeWidth - tw2 ; 241 int offset = startW - timeWidth - tw2 ;
179 p->setFont( nFont ); 242 p->setFont( nFont );
180 p->drawText( offset, y+ timeHeight, hour); 243 p->drawText( offset, y+ timeHeight, hour);
181 p->setFont( sFont ); 244 p->setFont( sFont );
182 offset = startW - tw2+1; 245 offset = startW - tw2+1;
183 p->drawText( offset, y+ sHei, suffix); 246 p->drawText( offset, y+ sHei, suffix);
184 247
185 // increment indices 248 // increment indices
186 y += mCellHeight; 249 y += mCellHeight;
187 cell++; 250 cell++;
188 } 251 }
189 } else { 252 } else {
190 //qDebug("NO redraw "); 253 //qDebug("NO redraw ");
191 } 254 }
192 // double buffer not yet implemented 255 // double buffer not yet implemented
193 //bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP); 256 //bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP);
194 //mRedrawNeeded = false; 257 //mRedrawNeeded = false;
258#endif
195} 259}
196 260
197/** 261/**
198 Calculates the minimum width. 262 Calculates the minimum width.
199*/ 263*/
200int TimeLabels::minimumWidth() const 264int TimeLabels::minimumWidth() const
201{ 265{
202 return mMiniWidth; 266 return mMiniWidth;
203} 267}
204 268
205/** updates widget's internal state */ 269/** updates widget's internal state */
206void TimeLabels::updateConfig() 270void TimeLabels::updateConfig()
207{ 271{
208 mRedrawNeeded = true; 272 mRedrawNeeded = true;
209 // set the font 273 // set the font
210 // config->setGroup("Fonts"); 274 // config->setGroup("Fonts");
211 // QFont font = config->readFontEntry("TimeBar Font"); 275 // QFont font = config->readFontEntry("TimeBar Font");
212 setFont(KOPrefs::instance()->mTimeBarFont); 276 setFont(KOPrefs::instance()->mTimeBarFont);
213 QString test = "20"; 277 QString test = "20";
214 if (KGlobal::locale()->use12Clock()) 278 if (KGlobal::locale()->use12Clock())
215 test = "12"; 279 test = "12";
216 mMiniWidth = fontMetrics().width(test); 280 mMiniWidth = fontMetrics().width(test);
217 if (KGlobal::locale()->use12Clock()) 281 if (KGlobal::locale()->use12Clock())
218 test = "pm"; 282 test = "pm";
219 else { 283 else {
220 if ( QApplication::desktop()->width() <= 320 ) 284 if ( QApplication::desktop()->width() <= 320 )
221 test = ""; 285 test = "00";
222 else 286 else
223 test = "00"; 287 test = "00";
224 } 288 }
225 QFont sFont = font(); 289 QFont sFont = font();
226 sFont.setPointSize( sFont.pointSize()/2 ); 290 sFont.setPointSize( sFont.pointSize()/2 );
227 QFontMetrics fmS( sFont ); 291 QFontMetrics fmS( sFont );
228 mMiniWidth += fmS.width( test ) + frameWidth()*2 +4 ; 292 mMiniWidth += fmS.width( test ) + frameWidth()*2 +4 ;
229 // update geometry restrictions based on new settings 293 // update geometry restrictions based on new settings
230 setFixedWidth( mMiniWidth ); 294 setFixedWidth( mMiniWidth );
231 295
232 // update HourSize 296 // update HourSize
233 mCellHeight = KOPrefs::instance()->mHourSize*4; 297 mCellHeight = KOPrefs::instance()->mHourSize*4;
234 resizeContents(50,mRows * mCellHeight); 298 resizeContents(50,mRows * mCellHeight);
235} 299}
236 300
237/** update time label positions */ 301/** update time label positions */
238void TimeLabels::positionChanged() 302void TimeLabels::positionChanged()
239{ 303{
240 int adjustment = mAgenda->contentsY(); 304 int adjustment = mAgenda->contentsY();
241 setContentsPos(0, adjustment); 305 setContentsPos(0, adjustment);
242} 306}
243 307
244/** */ 308/** */
245void TimeLabels::setAgenda(KOAgenda* agenda) 309void TimeLabels::setAgenda(KOAgenda* agenda)
246{ 310{
247 mAgenda = agenda; 311 mAgenda = agenda;
248} 312}
249 313
250void TimeLabels::contentsMousePressEvent ( QMouseEvent * e) 314void TimeLabels::contentsMousePressEvent ( QMouseEvent * e)
251{ 315{
252 mMouseDownY = e->pos().y(); 316 mMouseDownY = e->pos().y();
253 mOrgCap = topLevelWidget()->caption(); 317 mOrgCap = topLevelWidget()->caption();
254} 318}
255 319
256void TimeLabels::contentsMouseMoveEvent ( QMouseEvent * e ) 320void TimeLabels::contentsMouseMoveEvent ( QMouseEvent * e )
257{ 321{
258 int diff = mMouseDownY - e->pos().y(); 322 int diff = mMouseDownY - e->pos().y();
259 if ( diff < 10 && diff > -10 ) 323 if ( diff < 10 && diff > -10 )
260 return; 324 return;
261 int tSize = KOPrefs::instance()->mHourSize + (diff/10) ; 325 int tSize = KOPrefs::instance()->mHourSize + (diff/10) ;
262 if ( tSize < 4 ) 326 if ( tSize < 4 )
263 tSize = 4; 327 tSize = 4;
264 if ( tSize > 22 ) 328 if ( tSize > 22 )
265 tSize = 22; 329 tSize = 22;
266 tSize = (tSize-2)/2; 330 tSize = (tSize-2)/2;
267 topLevelWidget()->setCaption(i18n("New Agendasize: %1").arg(tSize)); 331 topLevelWidget()->setCaption(i18n("New Agendasize: %1").arg(tSize));
268 332
269} 333}
270void TimeLabels::contentsMouseReleaseEvent ( QMouseEvent * e ) 334void TimeLabels::contentsMouseReleaseEvent ( QMouseEvent * e )
271{ 335{
272 topLevelWidget()->setCaption( mOrgCap ); 336 topLevelWidget()->setCaption( mOrgCap );
273 int diff = mMouseDownY - e->pos().y(); 337 int diff = mMouseDownY - e->pos().y();
274 if ( diff < 10 && diff > -10 ) 338 if ( diff < 10 && diff > -10 )
275 return; 339 return;
276 int tSize = KOPrefs::instance()->mHourSize + (diff/10); 340 int tSize = KOPrefs::instance()->mHourSize + (diff/10);
277 if ( tSize < 4 ) 341 if ( tSize < 4 )
278 tSize = 4; 342 tSize = 4;
279 if ( tSize > 22 ) 343 if ( tSize > 22 )
280 tSize = 22; 344 tSize = 22;
281 tSize = (tSize/2)*2; 345 tSize = (tSize/2)*2;
282 if ( tSize == KOPrefs::instance()->mHourSize ) 346 if ( tSize == KOPrefs::instance()->mHourSize )
283 return; 347 return;
284 KOPrefs::instance()->mHourSize = tSize; 348 KOPrefs::instance()->mHourSize = tSize;
285 emit scaleChanged(); 349 emit scaleChanged();
286} 350}
287 351
288/** This is called in response to repaint() */ 352/** This is called in response to repaint() */
289void TimeLabels::paintEvent(QPaintEvent*) 353void TimeLabels::paintEvent(QPaintEvent*)
290{ 354{
291 355
292 // kdDebug() << "paintevent..." << endl; 356 // kdDebug() << "paintevent..." << endl;
293 // this is another hack! 357 // this is another hack!
294 // QPainter painter(this); 358 // QPainter painter(this);
295 //QString c 359 //QString c
296 repaintContents(contentsX(), contentsY(), visibleWidth(), visibleHeight()); 360 repaintContents(contentsX(), contentsY(), visibleWidth(), visibleHeight());
297} 361}
298 362
299//////////////////////////////////////////////////////////////////////////// 363////////////////////////////////////////////////////////////////////////////
300 364
301EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name) 365EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name)
302 : QFrame(parent,name) 366 : QFrame(parent,name)
303{ 367{
304 mColumns = 1; 368 mColumns = 1;
305 mTopBox = 0; 369 mTopBox = 0;
306 mLocation = loc; 370 mLocation = loc;
307 mTopLayout = 0; 371 mTopLayout = 0;
308 mPaintWidget = 0; 372 mPaintWidget = 0;
309 mXOffset = 0; 373 mXOffset = 0;
310 if (mLocation == Top) mPixmap = SmallIcon("1uparrow"); 374 if (mLocation == Top) mPixmap = SmallIcon("1uparrow");
311 else mPixmap = SmallIcon("1downarrow"); 375 else mPixmap = SmallIcon("1downarrow");
312 mEnabled.resize(mColumns); 376 mEnabled.resize(mColumns);
313 mEnabled.fill( false ); 377 mEnabled.fill( false );
314 setMinimumHeight(mPixmap.height()); 378 setMinimumHeight(mPixmap.height());
315} 379}
316 380
317EventIndicator::~EventIndicator() 381EventIndicator::~EventIndicator()
318{ 382{
319} 383}
320 384
321void EventIndicator::drawContents(QPainter *p) 385void EventIndicator::drawContents(QPainter *p)
322{ 386{
323 387
324 // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl; 388 // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl;
325 KDGanttSplitterHandle* han = 0; 389 KDGanttSplitterHandle* han = 0;
326 if ( mPaintWidget ) 390 if ( mPaintWidget )
327 han = mPaintWidget->firstHandle(); 391 han = mPaintWidget->firstHandle();
328 if ( ! han ) { 392 if ( ! han ) {
329 int i; 393 int i;
330 for(i=0;i<mColumns;++i) { 394 for(i=0;i<mColumns;++i) {
331 if (mEnabled[i]) { 395 if (mEnabled[i]) {
332 int cellWidth = contentsRect().right()/mColumns; 396 int cellWidth = contentsRect().right()/mColumns;
333 int xOffset = KOGlobals::self()->reverseLayout() ? 397 int xOffset = KOGlobals::self()->reverseLayout() ?
334 (mColumns - 1 - i)*cellWidth + (cellWidth -mPixmap.width())/2 : 398 (mColumns - 1 - i)*cellWidth + (cellWidth -mPixmap.width())/2 :
335 i*cellWidth + (cellWidth -mPixmap.width()) /2; 399 i*cellWidth + (cellWidth -mPixmap.width()) /2;
336 p->drawPixmap(QPoint(1+xOffset,0),mPixmap); 400 p->drawPixmap(QPoint(1+xOffset,0),mPixmap);
337 } 401 }
338 } 402 }
339 } else { 403 } else {
340 han->repaint(); 404 han->repaint();
341 //mPaintWidget->setBackgroundColor( red ); 405 //mPaintWidget->setBackgroundColor( red );
342 406
343 QPainter pa( han ); 407 QPainter pa( han );
344 int i; 408 int i;
345 bool setColor = false; 409 bool setColor = false;
346 for(i=0;i<mColumns;++i) { 410 for(i=0;i<mColumns;++i) {
347 if (mEnabled[i]) { 411 if (mEnabled[i]) {
348 setColor = true; 412 setColor = true;
349 413
350 int cellWidth = contentsRect().right()/mColumns; 414 int cellWidth = contentsRect().right()/mColumns;
351 int xOffset = KOGlobals::self()->reverseLayout() ? 415 int xOffset = KOGlobals::self()->reverseLayout() ?
352 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 : 416 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 :
353 i*cellWidth + cellWidth/2 -mPixmap.width()/2; 417 i*cellWidth + cellWidth/2 -mPixmap.width()/2;
354 pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap); 418 pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap);
355 //qDebug("222draw pix %d ",xOffset ); 419 //qDebug("222draw pix %d ",xOffset );
356 420
357 } 421 }
358 422
359 } 423 }
360 pa.end(); 424 pa.end();
361 425
362 } 426 }
363} 427}
364 428
365void EventIndicator::setXOffset( int x ) 429void EventIndicator::setXOffset( int x )
366{ 430{
367 mXOffset = x; 431 mXOffset = x;
368} 432}
369void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w ) 433void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w )
370{ 434{
371 mPaintWidget = w; 435 mPaintWidget = w;
372 setMaximumHeight(0); 436 setMaximumHeight(0);
373 setMinimumHeight(0); 437 setMinimumHeight(0);
374} 438}
375void EventIndicator::changeColumns(int columns) 439void EventIndicator::changeColumns(int columns)
376{ 440{
377 mColumns = columns; 441 mColumns = columns;
378 mEnabled.resize(mColumns); 442 mEnabled.resize(mColumns);
379 443
380 update(); 444 update();
381} 445}
382 446
383void EventIndicator::enableColumn(int column, bool enable) 447void EventIndicator::enableColumn(int column, bool enable)
384{ 448{
385 mEnabled[column] = enable; 449 mEnabled[column] = enable;
386} 450}
387 451
388 452
389//////////////////////////////////////////////////////////////////////////// 453////////////////////////////////////////////////////////////////////////////
390//////////////////////////////////////////////////////////////////////////// 454////////////////////////////////////////////////////////////////////////////
391//////////////////////////////////////////////////////////////////////////// 455////////////////////////////////////////////////////////////////////////////
392 456
393KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) : 457KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
394 KOEventView (cal,parent,name) 458 KOEventView (cal,parent,name)
395{ 459{
396 mBlockUpdating = true; 460 mBlockUpdating = true;
397 mStartHour = 8; 461 mStartHour = 8;
398 mSelectedDates.append(QDate::currentDate()); 462 mSelectedDates.append(QDate::currentDate());
399 463
400 mLayoutDayLabels = 0; 464 mLayoutDayLabels = 0;
401 mDayLabelsFrame = 0; 465 mDayLabelsFrame = 0;
402 mDayLabels = 0; 466 mDayLabels = 0;
403 bool isRTL = KOGlobals::self()->reverseLayout(); 467 bool isRTL = KOGlobals::self()->reverseLayout();
404 QPixmap expandPix; 468 QPixmap expandPix;
405 if ( KOPrefs::instance()->mVerticalScreen ) { 469 if ( KOPrefs::instance()->mVerticalScreen ) {
406 expandPix = SmallIcon( "1updownarrow" ); 470 expandPix = SmallIcon( "1updownarrow" );
407 } else { 471 } else {
408 expandPix = SmallIcon("1leftrightarrow" ); 472 expandPix = SmallIcon("1leftrightarrow" );
409 } 473 }
410 474
411 QBoxLayout *topLayout = new QVBoxLayout(this); 475 QBoxLayout *topLayout = new QVBoxLayout(this);
412 476
413 // Create day name labels for agenda columns 477 // Create day name labels for agenda columns
@@ -485,445 +549,449 @@ KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
485 mAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")), 549 mAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")),
486 i18n("Toggle Alarm"),mAgenda, 550 i18n("Toggle Alarm"),mAgenda,
487 SLOT(popupAlarm()),true); 551 SLOT(popupAlarm()),true);
488 552
489 553
490 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), 554 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)),
491 mAgendaPopup,SLOT(showIncidencePopup(Incidence *))); 555 mAgendaPopup,SLOT(showIncidencePopup(Incidence *)));
492 556
493 // make connections between dependent widgets 557 // make connections between dependent widgets
494 mTimeLabels->setAgenda(mAgenda); 558 mTimeLabels->setAgenda(mAgenda);
495 559
496 // Update widgets to reflect user preferences 560 // Update widgets to reflect user preferences
497 // updateConfig(); 561 // updateConfig();
498 562
499 // createDayLabels(); 563 // createDayLabels();
500 564
501 // these blank widgets make the All Day Event box line up with the agenda 565 // these blank widgets make the All Day Event box line up with the agenda
502 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 566 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
503 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 567 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
504 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 568 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
505 569
506 // Scrolling 570 // Scrolling
507 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)), 571 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)),
508 mTimeLabels, SLOT(positionChanged())); 572 mTimeLabels, SLOT(positionChanged()));
509 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)), 573 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)),
510 SLOT(setContentsPos(int))); 574 SLOT(setContentsPos(int)));
511 575
512 connect(mAgenda,SIGNAL(showDateView( int, int)),SLOT(slotShowDateView( int, int ))); 576 connect(mAgenda,SIGNAL(showDateView( int, int)),SLOT(slotShowDateView( int, int )));
513 connect(mAllDayAgenda,SIGNAL(showDateView( int, int )), SLOT(slotShowDateView( int, int ) )); 577 connect(mAllDayAgenda,SIGNAL(showDateView( int, int )), SLOT(slotShowDateView( int, int ) ));
514 578
515 // Create/Show/Edit/Delete Event 579 // Create/Show/Edit/Delete Event
516 connect(mAgenda,SIGNAL(newEventSignal(int,int)), 580 connect(mAgenda,SIGNAL(newEventSignal(int,int)),
517 SLOT(newEvent(int,int))); 581 SLOT(newEvent(int,int)));
518 connect(mAgenda,SIGNAL(newTodoSignal(int,int)), 582 connect(mAgenda,SIGNAL(newTodoSignal(int,int)),
519 SLOT(newTodo(int,int))); 583 SLOT(newTodo(int,int)));
520 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)), 584 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)),
521 SLOT(newEvent(int,int,int,int))); 585 SLOT(newEvent(int,int,int,int)));
522 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)), 586 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)),
523 SLOT(newEventAllDay(int,int))); 587 SLOT(newEventAllDay(int,int)));
524 connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)), 588 connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)),
525 SLOT(newTodoAllDay(int,int))); 589 SLOT(newTodoAllDay(int,int)));
526 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)), 590 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)),
527 SLOT(newEventAllDay(int,int))); 591 SLOT(newEventAllDay(int,int)));
528 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), 592 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)),
529 SLOT(newTimeSpanSelected(int,int,int,int))); 593 SLOT(newTimeSpanSelected(int,int,int,int)));
530 connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), 594 connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)),
531 SLOT(newTimeSpanSelectedAllDay(int,int,int,int))); 595 SLOT(newTimeSpanSelectedAllDay(int,int,int,int)));
532 connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); 596 connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView()));
533 connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); 597 connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView()));
534 598
535 connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)), 599 connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)),
536 SIGNAL(editIncidenceSignal(Incidence *))); 600 SIGNAL(editIncidenceSignal(Incidence *)));
537 connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)), 601 connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)),
538 SIGNAL(editIncidenceSignal(Incidence *))); 602 SIGNAL(editIncidenceSignal(Incidence *)));
539 connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)), 603 connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)),
540 SIGNAL(showIncidenceSignal(Incidence *))); 604 SIGNAL(showIncidenceSignal(Incidence *)));
541 connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)), 605 connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)),
542 SIGNAL(showIncidenceSignal(Incidence *))); 606 SIGNAL(showIncidenceSignal(Incidence *)));
543 connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), 607 connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)),
544 SIGNAL(deleteIncidenceSignal(Incidence *))); 608 SIGNAL(deleteIncidenceSignal(Incidence *)));
545 connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), 609 connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)),
546 SIGNAL(deleteIncidenceSignal(Incidence *))); 610 SIGNAL(deleteIncidenceSignal(Incidence *)));
547 611
548 connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), 612 connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )),
549 SLOT(updateEventDates(KOAgendaItem *, int ))); 613 SLOT(updateEventDates(KOAgendaItem *, int )));
550 connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), 614 connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )),
551 SLOT(updateEventDates(KOAgendaItem *, int))); 615 SLOT(updateEventDates(KOAgendaItem *, int)));
552 616
553 // event indicator update 617 // event indicator update
554 connect(mAgenda,SIGNAL(lowerYChanged(int)), 618 connect(mAgenda,SIGNAL(lowerYChanged(int)),
555 SLOT(updateEventIndicatorTop(int))); 619 SLOT(updateEventIndicatorTop(int)));
556 connect(mAgenda,SIGNAL(upperYChanged(int)), 620 connect(mAgenda,SIGNAL(upperYChanged(int)),
557 SLOT(updateEventIndicatorBottom(int))); 621 SLOT(updateEventIndicatorBottom(int)));
558 // drag signals 622 // drag signals
559 /* 623 /*
560 connect(mAgenda,SIGNAL(startDragSignal(Event *)), 624 connect(mAgenda,SIGNAL(startDragSignal(Event *)),
561 SLOT(startDrag(Event *))); 625 SLOT(startDrag(Event *)));
562 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)), 626 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)),
563 SLOT(startDrag(Event *))); 627 SLOT(startDrag(Event *)));
564 */ 628 */
565 // synchronize selections 629 // synchronize selections
566 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 630 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
567 mAllDayAgenda, SLOT( deselectItem() ) ); 631 mAllDayAgenda, SLOT( deselectItem() ) );
568 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 632 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
569 mAgenda, SLOT( deselectItem() ) ); 633 mAgenda, SLOT( deselectItem() ) );
570 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 634 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
571 SIGNAL( incidenceSelected( Incidence * ) ) ); 635 SIGNAL( incidenceSelected( Incidence * ) ) );
572 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 636 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
573 SIGNAL( incidenceSelected( Incidence * ) ) ); 637 SIGNAL( incidenceSelected( Incidence * ) ) );
574 connect( mAgenda, SIGNAL( resizedSignal() ), 638 connect( mAgenda, SIGNAL( resizedSignal() ),
575 SLOT( updateConfig( ) ) ); 639 SLOT( updateConfig( ) ) );
576 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ), 640 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ),
577 SLOT( addToCalSlot(Incidence *, Incidence * ) ) ); 641 SLOT( addToCalSlot(Incidence *, Incidence * ) ) );
578 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ), 642 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ),
579 SLOT( addToCalSlot(Incidence * , Incidence *) ) ); 643 SLOT( addToCalSlot(Incidence * , Incidence *) ) );
580 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 644 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
581 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 645 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
582 646
583 647
584} 648}
585 649
586void KOAgendaView::toggleAllDay() 650void KOAgendaView::toggleAllDay()
587{ 651{
588 if ( mSplitterAgenda->firstHandle() ) 652 if ( mSplitterAgenda->firstHandle() )
589 mSplitterAgenda->firstHandle()->toggle(); 653 mSplitterAgenda->firstHandle()->toggle();
590} 654}
591void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld ) 655void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld )
592{ 656{
593 calendar()->addIncidence( inc ); 657 calendar()->addIncidence( inc );
594 658
595 if ( incOld ) { 659 if ( incOld ) {
596 if ( incOld->type() == "Todo" ) 660 if ( incOld->type() == "Todo" )
597 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED ); 661 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED );
598 else 662 else
599 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED); 663 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED);
600 } 664 }
601 665
602} 666}
603 667
604KOAgendaView::~KOAgendaView() 668KOAgendaView::~KOAgendaView()
605{ 669{
606 delete mAgendaPopup; 670 delete mAgendaPopup;
607 delete mAllDayAgendaPopup; 671 delete mAllDayAgendaPopup;
608 delete KOAgendaItem::paintPix(); 672 delete KOAgendaItem::paintPix();
609 delete KOAgendaItem::paintPixSel(); 673 delete KOAgendaItem::paintPixSel();
610} 674}
611void KOAgendaView::resizeEvent( QResizeEvent* e ) 675void KOAgendaView::resizeEvent( QResizeEvent* e )
612{ 676{
613 //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width()); 677 //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width());
614 bool uc = false; 678 bool uc = false;
615 int ow = e->oldSize().width(); 679 int ow = e->oldSize().width();
616 int oh = e->oldSize().height(); 680 int oh = e->oldSize().height();
617 int w = e->size().width(); 681 int w = e->size().width();
618 int h = e->size().height(); 682 int h = e->size().height();
619 if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) { 683 if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) {
620 if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda ) 684 if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda )
621 uc = true; 685 uc = true;
622 //qDebug("view changed %d %d %d %d ", ow, oh , w , h); 686 //qDebug("view changed %d %d %d %d ", ow, oh , w , h);
623 } 687 }
624 mUpcomingWidth = e->size().width() ; 688 mUpcomingWidth = e->size().width() ;
625 if ( mBlockUpdating || uc ) { 689 if ( mBlockUpdating || uc ) {
626 mBlockUpdating = false; 690 mBlockUpdating = false;
627 //mAgenda->setMinimumSize(800 , 600 ); 691 //mAgenda->setMinimumSize(800 , 600 );
628 //qDebug("mAgenda->resize+++++++++++++++ "); 692 //qDebug("mAgenda->resize+++++++++++++++ ");
629 updateConfig(); 693 updateConfig();
630 //qDebug("KOAgendaView::Updating now possible "); 694 //qDebug("KOAgendaView::Updating now possible ");
631 } else 695 } else
632 createDayLabels(); 696 createDayLabels();
633 //qDebug("resizeEvent end "); 697 //qDebug("resizeEvent end ");
634 698
635} 699}
636void KOAgendaView::slotDaylabelClicked( int num ) 700void KOAgendaView::slotDaylabelClicked( int num )
637{ 701{
638 702
639 QDate firstDate = mSelectedDates.first(); 703 QDate firstDate = mSelectedDates.first();
640 if ( num == -1 ) 704 if ( num == -1 )
641 emit showDateView( 6, firstDate ); 705 emit showDateView( 6, firstDate );
642 else if (num >= 0 ) { 706 else if (num >= 0 ) {
643 if ( mSelectedDates.count() == 1) 707 if ( mSelectedDates.count() == 1)
644 emit showDateView( 9, firstDate.addDays( num ) ); 708 emit showDateView( 9, firstDate.addDays( num ) );
645 else 709 else
646 emit showDateView( 3, firstDate.addDays( num ) ); 710 emit showDateView( 3, firstDate.addDays( num ) );
647 } 711 }
648 else 712 else
649 showDateView( 10, firstDate.addDays(1) ); 713 showDateView( 10, firstDate.addDays(1) );
650} 714}
651 715
652KOAgendaButton* KOAgendaView::getNewDaylabel() 716KOAgendaButton* KOAgendaView::getNewDaylabel()
653{ 717{
654 718
655 KOAgendaButton * dayLabel = new KOAgendaButton(mDayLabels); 719 KOAgendaButton * dayLabel = new KOAgendaButton(mDayLabels);
656 connect( dayLabel, SIGNAL( numClicked(int) ), this, SLOT ( slotDaylabelClicked(int) ) ); 720 connect( dayLabel, SIGNAL( numClicked(int) ), this, SLOT ( slotDaylabelClicked(int) ) );
657 mDayLabelsList.append( dayLabel ); 721 mDayLabelsList.append( dayLabel );
658 mLayoutDayLabels->addWidget(dayLabel); 722 mLayoutDayLabels->addWidget(dayLabel);
659 return dayLabel ; 723 return dayLabel ;
660} 724}
661 725
662void KOAgendaView::createDayLabels() 726void KOAgendaView::createDayLabels()
663{ 727{
664 728
665 if ( mBlockUpdating || globalFlagBlockLabel == 1) { 729 if ( mBlockUpdating || globalFlagBlockLabel == 1) {
666 // qDebug(" KOAgendaView::createDayLabels() blocked "); 730 // qDebug(" KOAgendaView::createDayLabels() blocked ");
667 return; 731 return;
668 732
669 } 733 }
670 int newHight; 734 int newHight;
671 735
672 // ### Before deleting and recreating we could check if mSelectedDates changed... 736 // ### Before deleting and recreating we could check if mSelectedDates changed...
673 // It would remove some flickering and gain speed (since this is called by 737 // It would remove some flickering and gain speed (since this is called by
674 // each updateView() call) 738 // each updateView() call)
675 739
676 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - mAgenda->frameWidth()*2; 740 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - mAgenda->frameWidth()*2;
741 if ( QApplication::desktop()->width() <= 320 )
742 maxWid -= 10;
677 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth ); 743 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth );
678 if ( maxWid < 0 ) 744 if ( maxWid < 0 )
679 maxWid = 20; 745 maxWid = 20;
680 746
681 QFont dlf = KOPrefs::instance()->mTimeLabelsFont; 747 QFont dlf = KOPrefs::instance()->mTimeLabelsFont;
682 QFontMetrics fm ( dlf ); 748 QFontMetrics fm ( dlf );
683 int selCount = mSelectedDates.count(); 749 int selCount = mSelectedDates.count();
684 QString dayTest = "Mon 20"; 750 QString dayTest = "Mon 20";
685 //QString dayTest = "Mon 20"; 751 //QString dayTest = "Mon 20";
686 int wid = fm.width( dayTest ); 752 int wid = fm.width( dayTest );
687 //maxWid -= ( selCount * 3 ); //working for QLabels 753 //maxWid -= ( selCount * 3 ); //working for QLabels
688 maxWid -= ( selCount * 3 ); //working for QPushButton 754 maxWid -= ( selCount * 3 ); //working for QPushButton
689 if ( maxWid < 0 ) 755 if ( maxWid < 0 )
690 maxWid = 20; 756 maxWid = 20;
691 int needWid = wid * selCount; 757 int needWid = wid * selCount;
692 //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid ); 758 //qDebug("++++++++Needed : %d MaxWidth: %d", needWid, maxWid );
693 //if ( needWid > maxWid ) 759 //if ( needWid > maxWid )
694 // qDebug("DAYLABELS TOOOOOOO BIG "); 760 // qDebug("DAYLABELS TOOOOOOO BIG ");
695 while ( needWid > maxWid ) { 761 while ( needWid > maxWid ) {
696 dayTest = dayTest.left( dayTest.length() - 1 ); 762 dayTest = dayTest.left( dayTest.length() - 1 );
697 wid = fm.width( dayTest ); 763 wid = fm.width( dayTest );
698 needWid = wid * selCount; 764 needWid = wid * selCount;
699 } 765 }
700 int maxLen = dayTest.length(); 766 int maxLen = dayTest.length();
701 int fontPoint = dlf.pointSize(); 767 int fontPoint = dlf.pointSize();
702 if ( maxLen < 2 ) { 768 if ( maxLen < 2 ) {
703 int fontPoint = dlf.pointSize(); 769 int fontPoint = dlf.pointSize();
704 while ( fontPoint > 4 ) { 770 while ( fontPoint > 4 ) {
705 --fontPoint; 771 --fontPoint;
706 dlf.setPointSize( fontPoint ); 772 dlf.setPointSize( fontPoint );
707 QFontMetrics f( dlf ); 773 QFontMetrics f( dlf );
708 wid = f.width( "30" ); 774 wid = f.width( "30" );
709 needWid = wid * selCount; 775 needWid = wid * selCount;
710 if ( needWid < maxWid ) 776 if ( needWid < maxWid )
711 break; 777 break;
712 } 778 }
713 maxLen = 2; 779 maxLen = 2;
714 } 780 }
715 //qDebug("Max len %d ", dayTest.length() ); 781 //qDebug("Max len %d ", dayTest.length() );
716 782
717 QFontMetrics tempF( dlf ); 783 QFontMetrics tempF( dlf );
718 newHight = tempF.height(); 784 newHight = tempF.height();
719 mDayLabels->setFont( dlf ); 785 mDayLabels->setFont( dlf );
720 // mLayoutDayLabels = new QHBoxLayout(mDayLabels);; 786 // mLayoutDayLabels = new QHBoxLayout(mDayLabels);;
721 // mLayoutDayLabels->addSpacing(mTimeLabels->width()); 787 // mLayoutDayLabels->addSpacing(mTimeLabels->width());
722 //mLayoutDayLabels->addSpacing( 2 ); 788 //mLayoutDayLabels->addSpacing( 2 );
723 // QFont lFont = dlf; 789 // QFont lFont = dlf;
724 bool appendLabels = false; 790 bool appendLabels = false;
725 KOAgendaButton *dayLabel; 791 KOAgendaButton *dayLabel;
726 dayLabel = mDayLabelsList.first(); 792 dayLabel = mDayLabelsList.first();
727 if ( !dayLabel ) { 793 if ( !dayLabel ) {
728 appendLabels = true; 794 appendLabels = true;
729 dayLabel = getNewDaylabel(); 795 dayLabel = getNewDaylabel();
730 } 796 }
731 dayLabel->setFixedWidth( mTimeLabels->width()+mAgenda->frameWidth() ); 797 dayLabel->setFixedWidth( mTimeLabels->width()+mAgenda->frameWidth() );
732 dayLabel->setFont( dlf ); 798 dayLabel->setFont( dlf );
733 dayLabel->setNum( -1 ); 799 dayLabel->setNum( -1 );
734 //dayLabel->setAlignment(QLabel::AlignHCenter); 800 //dayLabel->setAlignment(QLabel::AlignHCenter);
801#if 0
735 if ( QApplication::desktop()->width() <= 320 ) 802 if ( QApplication::desktop()->width() <= 320 )
736 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ).left(2) ); 803 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ).left(2) );
737 else 804 else
805#endif
738 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) ); 806 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) );
739 dayLabel->show(); 807 dayLabel->show();
740 DateList::ConstIterator dit; 808 DateList::ConstIterator dit;
741 bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); 809 bool oneday = (mSelectedDates.first() == mSelectedDates.last() );
742 int counter = -1; 810 int counter = -1;
743 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { 811 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) {
744 ++counter; 812 ++counter;
745 QDate date = *dit; 813 QDate date = *dit;
746 // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels); 814 // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels);
747 if ( ! appendLabels ) { 815 if ( ! appendLabels ) {
748 dayLabel = mDayLabelsList.next(); 816 dayLabel = mDayLabelsList.next();
749 if ( !dayLabel ) 817 if ( !dayLabel )
750 appendLabels = true; 818 appendLabels = true;
751 } 819 }
752 if ( appendLabels ) { 820 if ( appendLabels ) {
753 dayLabel = getNewDaylabel(); 821 dayLabel = getNewDaylabel();
754 } 822 }
755 dayLabel->setMinimumWidth( 1 ); 823 dayLabel->setMinimumWidth( 1 );
756 dayLabel->setMaximumWidth( 10240 ); 824 dayLabel->setMaximumWidth( 10240 );
757 dayLabel->setFont( dlf ); 825 dayLabel->setFont( dlf );
758 dayLabel->show(); 826 dayLabel->show();
759 dayLabel->setAutoRepeat( false ); 827 dayLabel->setAutoRepeat( false );
760 dayLabel->setNum( counter ); 828 dayLabel->setNum( counter );
761 QString str; 829 QString str;
762 int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date); 830 int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date);
763 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true ); 831 QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true );
764 switch ( maxLen ) { 832 switch ( maxLen ) {
765 case 2: 833 case 2:
766 str = QString::number( date.day() ); 834 str = QString::number( date.day() );
767 break; 835 break;
768 836
769 case 3: 837 case 3:
770 str = dayName.left( 1 ) +QString::number( date.day()); 838 str = dayName.left( 1 ) +QString::number( date.day());
771 839
772 break; 840 break;
773 case 4: 841 case 4:
774 str = dayName.left( 1 ) + " " +QString::number( date.day()); 842 str = dayName.left( 1 ) + " " +QString::number( date.day());
775 843
776 break; 844 break;
777 case 5: 845 case 5:
778 str = dayName.left( 2 ) + " " +QString::number( date.day()); 846 str = dayName.left( 2 ) + " " +QString::number( date.day());
779 847
780 break; 848 break;
781 case 6: 849 case 6:
782 str = dayName.left( 3 ) + " " +QString::number( date.day()); 850 str = dayName.left( 3 ) + " " +QString::number( date.day());
783 break; 851 break;
784 852
785 default: 853 default:
786 break; 854 break;
787 } 855 }
788 if ( oneday ) { 856 if ( oneday ) {
789 QString addString; 857 QString addString;
790 if ( mSelectedDates.first() == QDateTime::currentDateTime().date() ) 858 if ( mSelectedDates.first() == QDateTime::currentDateTime().date() )
791 addString = i18n("Today"); 859 addString = i18n("Today");
792 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) ) 860 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) )
793 addString = i18n("Tomorrow"); 861 addString = i18n("Tomorrow");
794 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) ) 862 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) )
795 addString = i18n("Yesterday"); 863 addString = i18n("Yesterday");
796 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) ) 864 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) )
797 addString = i18n("Day before yesterday"); 865 addString = i18n("Day before yesterday");
798 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) ) 866 else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) )
799 addString = i18n("Day after tomorrow"); 867 addString = i18n("Day after tomorrow");
800 if ( !addString.isEmpty() ) { 868 if ( !addString.isEmpty() ) {
801 str = addString+", " + str; 869 str = addString+", " + str;
802 } else { 870 } else {
803 str = KGlobal::locale()->formatDate( date, KOPrefs::instance()->mShortDateInViewer); 871 str = KGlobal::locale()->formatDate( date, KOPrefs::instance()->mShortDateInViewer);
804 } 872 }
805 } 873 }
806 dayLabel->setText(str); 874 dayLabel->setText(str);
807 //dayLabel->setAlignment(QLabel::AlignHCenter); 875 //dayLabel->setAlignment(QLabel::AlignHCenter);
808 if (date == QDate::currentDate()) { 876 if (date == QDate::currentDate()) {
809 QFont bFont = dlf; 877 QFont bFont = dlf;
810 bFont.setBold( true ); 878 bFont.setBold( true );
811 dayLabel->setFont(bFont); 879 dayLabel->setFont(bFont);
812 } 880 }
813 //dayLayout->addWidget(dayLabel); 881 //dayLayout->addWidget(dayLabel);
814 882
815#ifndef KORG_NOPLUGINS 883#ifndef KORG_NOPLUGINS
816 CalendarDecoration::List cds = KOCore::self()->calendarDecorations(); 884 CalendarDecoration::List cds = KOCore::self()->calendarDecorations();
817 CalendarDecoration *it; 885 CalendarDecoration *it;
818 for(it = cds.first(); it; it = cds.next()) { 886 for(it = cds.first(); it; it = cds.next()) {
819 QString text = it->shortText( date ); 887 QString text = it->shortText( date );
820 if ( !text.isEmpty() ) { 888 if ( !text.isEmpty() ) {
821 QLabel *label = new QLabel(text,mDayLabels); 889 QLabel *label = new QLabel(text,mDayLabels);
822 label->setAlignment(AlignCenter); 890 label->setAlignment(AlignCenter);
823 dayLayout->addWidget(label); 891 dayLayout->addWidget(label);
824 } 892 }
825 } 893 }
826 894
827 for(it = cds.first(); it; it = cds.next()) { 895 for(it = cds.first(); it; it = cds.next()) {
828 QWidget *wid = it->smallWidget(mDayLabels,date); 896 QWidget *wid = it->smallWidget(mDayLabels,date);
829 if ( wid ) { 897 if ( wid ) {
830 // wid->setHeight(20); 898 // wid->setHeight(20);
831 dayLayout->addWidget(wid); 899 dayLayout->addWidget(wid);
832 } 900 }
833 } 901 }
834#endif 902#endif
835 } 903 }
836 if ( ! appendLabels ) { 904 if ( ! appendLabels ) {
837 dayLabel = mDayLabelsList.next(); 905 dayLabel = mDayLabelsList.next();
838 if ( !dayLabel ) 906 if ( !dayLabel )
839 appendLabels = true; 907 appendLabels = true;
840 } 908 }
841 if ( appendLabels ) { 909 if ( appendLabels ) {
842 dayLabel = getNewDaylabel(); 910 dayLabel = getNewDaylabel();
843 } 911 }
844 //dayLabel->hide();//test only 912 //dayLabel->hide();//test only
845 int offset = (mAgenda->width() - mAgenda->verticalScrollBar()->width()- (mAgenda->frameWidth()*2) ) % mSelectedDates.count() ; 913 int offset = (mAgenda->width() - mAgenda->verticalScrollBar()->width()- (mAgenda->frameWidth()*2) ) % mSelectedDates.count() ;
846 if ( offset < 0 ) offset = 0; 914 if ( offset < 0 ) offset = 0;
847 //qDebug("mLayoutDayLabels->addSpacing %d ", mAgenda->verticalScrollBar()->width()+offset+2 ); 915 //qDebug("mLayoutDayLabels->addSpacing %d ", mAgenda->verticalScrollBar()->width()+offset+2 );
848 dayLabel->setText(">");//QString::number ( mSelectedDates.first().month() ) ); 916 dayLabel->setText(">");//QString::number ( mSelectedDates.first().month() ) );
849 dayLabel->setFont( dlf ); 917 dayLabel->setFont( dlf );
850 dayLabel->setAutoRepeat( true ); 918 dayLabel->setAutoRepeat( true );
851 dayLabel->show(); 919 dayLabel->show();
852 dayLabel->setNum( -2 ); 920 dayLabel->setNum( -2 );
853 dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ offset ); 921 dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ offset );
854 922
855 //qDebug("setToFixed %d ", mAgenda->verticalScrollBar()->width()+ offset+2); 923 //qDebug("setToFixed %d ", mAgenda->verticalScrollBar()->width()+ offset+2);
856 //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2); 924 //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2);
857 if ( !appendLabels ) { 925 if ( !appendLabels ) {
858 dayLabel = mDayLabelsList.next(); 926 dayLabel = mDayLabelsList.next();
859 while ( dayLabel ) { 927 while ( dayLabel ) {
860 //qDebug("!dayLabel %d",dayLabel ); 928 //qDebug("!dayLabel %d",dayLabel );
861 dayLabel->hide(); 929 dayLabel->hide();
862 dayLabel = mDayLabelsList.next(); 930 dayLabel = mDayLabelsList.next();
863 } 931 }
864 } 932 }
865 933
866 mDayLabelsFrame->setFixedHeight( newHight + 4 ); 934 mDayLabelsFrame->setFixedHeight( newHight + 4 );
867} 935}
868 936
869int KOAgendaView::maxDatesHint() 937int KOAgendaView::maxDatesHint()
870{ 938{
871 // Not sure about the max number of events, so return 0 for now. 939 // Not sure about the max number of events, so return 0 for now.
872 return 0; 940 return 0;
873} 941}
874 942
875int KOAgendaView::currentDateCount() 943int KOAgendaView::currentDateCount()
876{ 944{
877 return mSelectedDates.count(); 945 return mSelectedDates.count();
878} 946}
879 947
880QPtrList<Incidence> KOAgendaView::selectedIncidences() 948QPtrList<Incidence> KOAgendaView::selectedIncidences()
881{ 949{
882 QPtrList<Incidence> selected; 950 QPtrList<Incidence> selected;
883 Incidence *incidence; 951 Incidence *incidence;
884 952
885 incidence = mAgenda->selectedIncidence(); 953 incidence = mAgenda->selectedIncidence();
886 if (incidence) selected.append(incidence); 954 if (incidence) selected.append(incidence);
887 955
888 incidence = mAllDayAgenda->selectedIncidence(); 956 incidence = mAllDayAgenda->selectedIncidence();
889 if (incidence) selected.append(incidence); 957 if (incidence) selected.append(incidence);
890 958
891 return selected; 959 return selected;
892} 960}
893 961
894DateList KOAgendaView::selectedDates() 962DateList KOAgendaView::selectedDates()
895{ 963{
896 DateList selected; 964 DateList selected;
897 QDate qd; 965 QDate qd;
898 966
899 qd = mAgenda->selectedIncidenceDate(); 967 qd = mAgenda->selectedIncidenceDate();
900 if (qd.isValid()) selected.append(qd); 968 if (qd.isValid()) selected.append(qd);
901 969
902 qd = mAllDayAgenda->selectedIncidenceDate(); 970 qd = mAllDayAgenda->selectedIncidenceDate();
903 if (qd.isValid()) selected.append(qd); 971 if (qd.isValid()) selected.append(qd);
904 972
905 return selected; 973 return selected;
906} 974}
907 975
908 976
909void KOAgendaView::updateView() 977void KOAgendaView::updateView()
910{ 978{
911 if ( mBlockUpdating ) 979 if ( mBlockUpdating )
912 return; 980 return;
913 // kdDebug() << "KOAgendaView::updateView()" << endl; 981 // kdDebug() << "KOAgendaView::updateView()" << endl;
914 fillAgenda(); 982 fillAgenda();
915 983
916} 984}
917 985
918 986
919/* 987/*
920 Update configuration settings for the agenda view. This method is not 988 Update configuration settings for the agenda view. This method is not
921 complete. 989 complete.
922*/ 990*/
923void KOAgendaView::updateConfig() 991void KOAgendaView::updateConfig()
924{ 992{
925 if ( mBlockUpdating ) 993 if ( mBlockUpdating )
926 return; 994 return;
927 if ( mAgenda->height() > 96 * KOPrefs::instance()->mHourSize ) { 995 if ( mAgenda->height() > 96 * KOPrefs::instance()->mHourSize ) {
928 int old = KOPrefs::instance()->mHourSize; 996 int old = KOPrefs::instance()->mHourSize;
929 KOPrefs::instance()->mHourSize = mAgenda->height()/96 +1; 997 KOPrefs::instance()->mHourSize = mAgenda->height()/96 +1;
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index b8a0f09..8affe50 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -578,397 +578,397 @@ void KODayMatrix::mouseMoveEvent (QMouseEvent* e)
578 repaint(false); 578 repaint(false);
579 } 579 }
580 } 580 }
581} 581}
582 582
583// ---------------------------------------------------------------------------- 583// ----------------------------------------------------------------------------
584// D R A G ' N D R O P H A N D L I N G 584// D R A G ' N D R O P H A N D L I N G
585// ---------------------------------------------------------------------------- 585// ----------------------------------------------------------------------------
586 586
587void KODayMatrix::dragEnterEvent(QDragEnterEvent *e) 587void KODayMatrix::dragEnterEvent(QDragEnterEvent *e)
588{ 588{
589#ifndef KORG_NODND 589#ifndef KORG_NODND
590 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 590 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
591 e->ignore(); 591 e->ignore();
592 return; 592 return;
593 } 593 }
594 594
595 // some visual feedback 595 // some visual feedback
596// oldPalette = palette(); 596// oldPalette = palette();
597// setPalette(my_HilitePalette); 597// setPalette(my_HilitePalette);
598// update(); 598// update();
599#endif 599#endif
600} 600}
601 601
602void KODayMatrix::dragMoveEvent(QDragMoveEvent *e) 602void KODayMatrix::dragMoveEvent(QDragMoveEvent *e)
603{ 603{
604#ifndef KORG_NODND 604#ifndef KORG_NODND
605 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 605 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
606 e->ignore(); 606 e->ignore();
607 return; 607 return;
608 } 608 }
609 609
610 e->accept(); 610 e->accept();
611#endif 611#endif
612} 612}
613 613
614void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/) 614void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/)
615{ 615{
616#ifndef KORG_NODND 616#ifndef KORG_NODND
617// setPalette(oldPalette); 617// setPalette(oldPalette);
618// update(); 618// update();
619#endif 619#endif
620} 620}
621 621
622void KODayMatrix::dropEvent(QDropEvent *e) 622void KODayMatrix::dropEvent(QDropEvent *e)
623{ 623{
624#ifndef KORG_NODND 624#ifndef KORG_NODND
625// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl; 625// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl;
626 626
627 if (!mCalendar || !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 627 if (!mCalendar || !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
628 e->ignore(); 628 e->ignore();
629 return; 629 return;
630 } 630 }
631 631
632 DndFactory factory( mCalendar ); 632 DndFactory factory( mCalendar );
633 Event *event = factory.createDrop(e); 633 Event *event = factory.createDrop(e);
634 634
635 if (event) { 635 if (event) {
636 e->acceptAction(); 636 e->acceptAction();
637 637
638 Event *existingEvent = mCalendar->event(event->uid()); 638 Event *existingEvent = mCalendar->event(event->uid());
639 639
640 if(existingEvent) { 640 if(existingEvent) {
641 // uniquify event 641 // uniquify event
642 event->recreate(); 642 event->recreate();
643/* 643/*
644 KMessageBox::sorry(this, 644 KMessageBox::sorry(this,
645 i18n("Event already exists in this calendar."), 645 i18n("Event already exists in this calendar."),
646 i18n("Drop Event")); 646 i18n("Drop Event"));
647 delete event; 647 delete event;
648 return; 648 return;
649*/ 649*/
650 } 650 }
651// kdDebug() << "Drop new Event" << endl; 651// kdDebug() << "Drop new Event" << endl;
652 // Adjust date 652 // Adjust date
653 QDateTime start = event->dtStart(); 653 QDateTime start = event->dtStart();
654 QDateTime end = event->dtEnd(); 654 QDateTime end = event->dtEnd();
655 int duration = start.daysTo(end); 655 int duration = start.daysTo(end);
656 int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); 656 int idx = getDayIndexFrom(e->pos().x(), e->pos().y());
657 657
658 start.setDate(days[idx]); 658 start.setDate(days[idx]);
659 end.setDate(days[idx].addDays(duration)); 659 end.setDate(days[idx].addDays(duration));
660 660
661 event->setDtStart(start); 661 event->setDtStart(start);
662 event->setDtEnd(end); 662 event->setDtEnd(end);
663 mCalendar->addEvent(event); 663 mCalendar->addEvent(event);
664 664
665 emit eventDropped(event); 665 emit eventDropped(event);
666 } else { 666 } else {
667// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; 667// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl;
668 e->ignore(); 668 e->ignore();
669 } 669 }
670#endif 670#endif
671} 671}
672 672
673// ---------------------------------------------------------------------------- 673// ----------------------------------------------------------------------------
674// P A I N T E V E N T H A N D L I N G 674// P A I N T E V E N T H A N D L I N G
675// ---------------------------------------------------------------------------- 675// ----------------------------------------------------------------------------
676 676
677void KODayMatrix::paintEvent(QPaintEvent * pevent) 677void KODayMatrix::paintEvent(QPaintEvent * pevent)
678{ 678{
679 679
680 if ( width() <= 0 || height() <= 0 ) 680 if ( width() <= 0 || height() <= 0 )
681 return; 681 return;
682 if ( mPendingUpdateBeforeRepaint ) { 682 if ( mPendingUpdateBeforeRepaint ) {
683 updateViewTimed(); 683 updateViewTimed();
684 mPendingUpdateBeforeRepaint = false; 684 mPendingUpdateBeforeRepaint = false;
685 } 685 }
686 if ( myPix.width() != width() || myPix.height()!=height() ) { 686 if ( myPix.width() != width() || myPix.height()!=height() ) {
687 myPix.resize(size() ); 687 myPix.resize(size() );
688 mRedrawNeeded = true; 688 mRedrawNeeded = true;
689 } 689 }
690 690
691 if ( mRedrawNeeded ) { 691 if ( mRedrawNeeded ) {
692 //qDebug("REDRAW "); 692 //qDebug("REDRAW ");
693 QPainter p(&myPix); 693 QPainter p(&myPix);
694 p.setFont(font()); 694 p.setFont(font());
695 695
696 696
697 int dheight = daysize.height(); 697 int dheight = daysize.height();
698 int dwidth = daysize.width(); 698 int dwidth = daysize.width();
699 int row,col; 699 int row,col;
700 int selw, selh; 700 int selw, selh;
701 int xyOff = frameWidth(); 701 int xyOff = frameWidth();
702 int colModulo = (width()-2) % 7; 702 int colModulo = (width()-2) % 7;
703 int rowModulo = (height()-2) % 6; 703 int rowModulo = (height()-2) % 6;
704 //qDebug("col %d row %d ",colModulo,rowModulo ); 704 //qDebug("col %d row %d ",colModulo,rowModulo );
705 705
706 bool isRTL = KOGlobals::self()->reverseLayout(); 706 bool isRTL = KOGlobals::self()->reverseLayout();
707 707
708 // draw background and topleft frame 708 // draw background and topleft frame
709 p.fillRect(0,0,width(),height(), mDefaultBackColor); 709 p.fillRect(0,0,width(),height(), mDefaultBackColor);
710 p.setPen(mDefaultTextColor); 710 p.setPen(mDefaultTextColor);
711 p.drawRect(0, 0, width(), height()); 711 p.drawRect(0, 0, width(), height());
712 int mSelStartT = mSelStart; 712 int mSelStartT = mSelStart;
713 int mSelEndT = mSelEnd; 713 int mSelEndT = mSelEnd;
714 if ( mSelEndT >= NUMDAYS ) 714 if ( mSelEndT >= NUMDAYS )
715 mSelEndT = NUMDAYS-1; 715 mSelEndT = NUMDAYS-1;
716 // draw selected days with highlighted background color 716 // draw selected days with highlighted background color
717 if (mSelStart != NOSELECTION) { 717 if (mSelStart != NOSELECTION) {
718 bool skip = false; 718 bool skip = false;
719 if ( ! mouseDown ) { 719 if ( ! mouseDown ) {
720 int mo = days[20].month(); 720 int mo = days[20].month();
721 //qDebug("-- %d %d ", mSelStartT, mSelEndT); 721 //qDebug("-- %d %d ", mSelStartT, mSelEndT);
722 //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() ); 722 //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() );
723 int startMo = days[mSelStartT].month(); 723 int startMo = days[mSelStartT].month();
724 int endMo = days[mSelEndT].month(); 724 int endMo = days[mSelEndT].month();
725 if ( startMo == 12 && mo == 1 && endMo <= 2 ) 725 if ( startMo == 12 && mo == 1 && endMo <= 2 )
726 startMo = 1; 726 startMo = 1;
727 if ( endMo == 1 && mo == 12 ) 727 if ( endMo == 1 && mo == 12 )
728 endMo = 12; 728 endMo = 12;
729 if ( mo == 12 && startMo == 1 ) 729 if ( mo == 12 && startMo == 1 )
730 startMo = 13; 730 startMo = 13;
731 if ( (startMo > mo || endMo < mo) ) { 731 if ( (startMo > mo || endMo < mo) ) {
732 skip = true; 732 skip = true;
733 } else { 733 } else {
734 if ( days[mSelStartT].month() != mo ) { 734 if ( days[mSelStartT].month() != mo ) {
735 int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day(); 735 int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day();
736 mSelStartT += add +1; 736 mSelStartT += add +1;
737 } 737 }
738 if ( days[mSelEndT].month() != mo ) { 738 if ( days[mSelEndT].month() != mo ) {
739 int sub = days[mSelEndT].day(); 739 int sub = days[mSelEndT].day();
740 mSelEndT -= sub ; 740 mSelEndT -= sub ;
741 } 741 }
742 } 742 }
743 } 743 }
744 //qDebug("SKIP %d ", skip); 744 //qDebug("SKIP %d ", skip);
745 if ( ! skip ) { 745 if ( ! skip ) {
746 row = mSelStartT/7; 746 row = mSelStartT/7;
747 col = mSelStartT -row*7; 747 col = mSelStartT -row*7;
748 QColor selcol = KOPrefs::instance()->mHighlightColor; 748 QColor selcol = KOPrefs::instance()->mHighlightColor;
749 int addCol = 0; 749 int addCol = 0;
750 int addRow = 0; 750 int addRow = 0;
751 int addRow2 = 0; 751 int addRow2 = 0;
752 int addCol2 = 0; 752 int addCol2 = 0;
753 if (row == mSelEndT/7) { 753 if (row == mSelEndT/7) {
754 if ( rowModulo ) { 754 if ( rowModulo ) {
755 if ( row >= 6 - rowModulo ) 755 if ( row >= 6 - rowModulo )
756 addRow = row - 5 + rowModulo; 756 addRow = row - 5 + rowModulo;
757 } 757 }
758 if ( colModulo ) { 758 if ( colModulo ) {
759 int colt1 = mSelEndT%7; 759 int colt1 = mSelEndT%7;
760 //qDebug("colt1 %d ", colt1 ); 760 //qDebug("colt1 %d ", colt1 );
761 if ( colt1 >= 7 - colModulo ) 761 if ( colt1 >= 7 - colModulo )
762 addCol = colt1 - 7 + colModulo+1; 762 addCol = colt1 - 7 + colModulo+1;
763 int colt = mSelStartT%7; 763 int colt = mSelStartT%7;
764 if ( colt >= 7 - colModulo ) 764 if ( colt >= 7 - colModulo )
765 addCol2 = colt - 7 + colModulo; 765 addCol2 = colt - 7 + colModulo;
766 addCol -= addCol2; 766 addCol -= addCol2;
767 //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 ); 767 //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 );
768 } 768 }
769 // Single row selection 769 // Single row selection
770 if ( row == 0) 770 //if ( row == 0)
771 addRow = 1; 771 // addRow = 1;
772 p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth+1+addCol2, 772 p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth+1+addCol2,
773 row*dheight+addRow, (mSelEndT-mSelStartT+1)*dwidth+addCol, dheight+1, selcol); 773 row*dheight+addRow, (mSelEndT-mSelStartT+1)*dwidth+addCol, dheight+1, selcol);
774 } else { 774 } else {
775 // draw first row to the right 775 // draw first row to the right
776 if ( colModulo ) { 776 if ( colModulo ) {
777 if ( col >= 7 - colModulo ) 777 if ( col >= 7 - colModulo )
778 addCol2 = col - 7 + colModulo; 778 addCol2 = col - 7 + colModulo;
779 } 779 }
780 if ( rowModulo ) { 780 if ( rowModulo ) {
781 if ( row >= 6 - rowModulo ) 781 if ( row >= 6 - rowModulo )
782 addRow = row - 5 + rowModulo; 782 addRow = row - 5 + rowModulo;
783 } 783 }
784 if ( row == 0) 784 //if ( row == 0)
785 addRow = 1; 785 // addRow = 1;
786 int drawWid = width()-(col*dwidth+1+addCol2)-1; 786 int drawWid = width()-(col*dwidth+1+addCol2)-1;
787 p.fillRect(isRTL ? 0 : col*dwidth+1+addCol2, row*dheight+addRow, drawWid, 787 p.fillRect(isRTL ? 0 : col*dwidth+1+addCol2, row*dheight+addRow, drawWid,
788 dheight+1, selcol); 788 dheight+1, selcol);
789 // draw full block till last line 789 // draw full block till last line
790 selh = mSelEndT/7-row; 790 selh = mSelEndT/7-row;
791 addRow = 0; 791 addRow = 0;
792 if ( rowModulo ) { 792 if ( rowModulo ) {
793 if ( mSelEndT/7 >= 6 - rowModulo ) 793 if ( mSelEndT/7 >= 6 - rowModulo )
794 addRow = mSelEndT/7 - 5 + rowModulo; 794 addRow = mSelEndT/7 - 5 + rowModulo;
795 } 795 }
796 //qDebug("%d %d %d ",selh, row, addRow ); 796 //qDebug("%d %d %d ",selh, row, addRow );
797 int addrow2 = addRow-selh+1; 797 int addrow2 = addRow-selh+1;
798 if ( addrow2 < 0 ) 798 if ( addrow2 < 0 )
799 addrow2 = 0; 799 addrow2 = 0;
800 if (selh > 1) { 800 if (selh > 1) {
801 p.fillRect(1, (row+1)*dheight+addrow2, 7*dwidth+colModulo, (selh-1)*dheight+addRow,selcol); 801 p.fillRect(1, (row+1)*dheight+addrow2, 7*dwidth+colModulo, (selh-1)*dheight+addRow,selcol);
802 } 802 }
803 // draw last block from left to mSelEndT 803 // draw last block from left to mSelEndT
804 selw = mSelEndT-7*(mSelEndT/7)+1; 804 selw = mSelEndT-7*(mSelEndT/7)+1;
805 //qDebug("esl %d ",selw ); 805 //qDebug("esl %d ",selw );
806 int add = 0; 806 int add = 0;
807 if ( colModulo ) { 807 if ( colModulo ) {
808 add = 7 - colModulo; 808 add = 7 - colModulo;
809 if ( selw > add ) 809 if ( selw > add )
810 add = selw - add; 810 add = selw - add;
811 else 811 else
812 add = 0; 812 add = 0;
813 } 813 }
814 //qDebug("add %d ", add); 814 //qDebug("add %d ", add);
815 p.fillRect(isRTL ? (7-selw)*dwidth : 1, (row+selh)*dheight+addRow, 815 p.fillRect(isRTL ? (7-selw)*dwidth : 1, (row+selh)*dheight+addRow,
816 selw*dwidth+add, dheight+1, selcol); 816 selw*dwidth+add, dheight+1, selcol);
817 } 817 }
818 } 818 }
819 } 819 }
820 820
821 // iterate over all days in the matrix and draw the day label in appropriate colors 821 // iterate over all days in the matrix and draw the day label in appropriate colors
822 QColor actcol = mDefaultTextColorShaded; 822 QColor actcol = mDefaultTextColorShaded;
823 p.setPen(actcol); 823 p.setPen(actcol);
824 QPen tmppen; 824 QPen tmppen;
825 for(int i = 0; i < NUMDAYS; i++) { 825 for(int i = 0; i < NUMDAYS; i++) {
826 row = i/7; 826 row = i/7;
827 col = isRTL ? 6-(i-row*7) : i-row*7; 827 col = isRTL ? 6-(i-row*7) : i-row*7;
828 828
829 // if it is the first day of a month switch color from normal to shaded and vice versa 829 // if it is the first day of a month switch color from normal to shaded and vice versa
830 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) { 830 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) {
831 if (actcol == mDefaultTextColorShaded) { 831 if (actcol == mDefaultTextColorShaded) {
832 actcol = mDefaultTextColor; 832 actcol = mDefaultTextColor;
833 } else { 833 } else {
834 actcol = mDefaultTextColorShaded; 834 actcol = mDefaultTextColorShaded;
835 } 835 }
836 p.setPen(actcol); 836 p.setPen(actcol);
837 } 837 }
838 if (actcol == mDefaultTextColorShaded) { 838 if (actcol == mDefaultTextColorShaded) {
839 if ( ! mouseDown ) { 839 if ( ! mouseDown ) {
840 continue; 840 continue;
841 } 841 }
842 } 842 }
843 //Reset pen color after selected days block 843 //Reset pen color after selected days block
844 if (i == mSelEndT+1) { 844 if (i == mSelEndT+1) {
845 p.setPen(actcol); 845 p.setPen(actcol);
846 } 846 }
847 847
848 // if today then draw rectangle around day 848 // if today then draw rectangle around day
849 if (today == i) { 849 if (today == i) {
850 tmppen = p.pen(); 850 tmppen = p.pen();
851 QPen mTodayPen(p.pen()); 851 QPen mTodayPen(p.pen());
852 if ( daysize.width() < 20 ) 852 if ( daysize.width() < 20 )
853 mTodayPen.setWidth(1); 853 mTodayPen.setWidth(1);
854 else 854 else
855 mTodayPen.setWidth(mTodayMarginWidth); 855 mTodayPen.setWidth(mTodayMarginWidth);
856 //draw red rectangle for holidays 856 //draw red rectangle for holidays
857 if (!mHolidays[i].isNull()) { 857 if (!mHolidays[i].isNull()) {
858 if (actcol == mDefaultTextColor) { 858 if (actcol == mDefaultTextColor) {
859 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); 859 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor);
860 } else { 860 } else {
861 mTodayPen.setColor(mHolidayColorShaded); 861 mTodayPen.setColor(mHolidayColorShaded);
862 } 862 }
863 } 863 }
864 //draw gray rectangle for today if in selection 864 //draw gray rectangle for today if in selection
865 if (i >= mSelStartT && i <= mSelEndT) { 865 if (i >= mSelStartT && i <= mSelEndT) {
866 QColor grey("grey"); 866 QColor grey("grey");
867 mTodayPen.setColor(grey); 867 mTodayPen.setColor(grey);
868 } 868 }
869 p.setPen(mTodayPen); 869 p.setPen(mTodayPen);
870 870
871 871
872 int addCol = 0; 872 int addCol = 0;
873 int addRow = 0; 873 int addRow = 0;
874 if (rowModulo) { 874 if (rowModulo) {
875 if ( row >= 6 - rowModulo ) 875 if ( row >= 6 - rowModulo )
876 addRow = row - 5 + rowModulo; 876 addRow = row - 5 + rowModulo;
877 } 877 }
878 if ( colModulo ) { 878 if ( colModulo ) {
879 if ( col >= 7 - colModulo ) 879 if ( col >= 7 - colModulo )
880 addCol = col - 6 + colModulo-1; 880 addCol = col - 6 + colModulo-1;
881 } 881 }
882 882
883 addCol += 1; 883 addCol += 1;
884 if ( row == 0 ) 884 if ( row == 0 )
885 addRow = 1; 885 addRow = 1;
886 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth+1, dheight+1); 886 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth+1, dheight+1);
887 p.setPen(tmppen); 887 p.setPen(tmppen);
888 } 888 }
889 889
890 // if any events are on that day then draw it using a bold font 890 // if any events are on that day then draw it using a bold font
891 if ( eDays.testBit(i) ) { 891 if ( eDays.testBit(i) ) {
892 QFont myFont = font(); 892 QFont myFont = font();
893 myFont.setBold(true); 893 myFont.setBold(true);
894 p.setFont(myFont); 894 p.setFont(myFont);
895 } 895 }
896 896
897 // if it is a holiday then use the default holiday color 897 // if it is a holiday then use the default holiday color
898 if ( !mHolidays[i].isNull()) { 898 if ( !mHolidays[i].isNull()) {
899 if ( bDays.testBit(i) ) { 899 if ( bDays.testBit(i) ) {
900 if ( hDays.testBit(i) ) 900 if ( hDays.testBit(i) )
901 p.setPen(QColor(Qt::green)); 901 p.setPen(QColor(Qt::green));
902 else 902 else
903 p.setPen(QColor(Qt::green).dark()); 903 p.setPen(QColor(Qt::green).dark());
904 } else { 904 } else {
905 if (actcol == mDefaultTextColor ) { 905 if (actcol == mDefaultTextColor ) {
906 p.setPen(KOPrefs::instance()->mHolidayColor); 906 p.setPen(KOPrefs::instance()->mHolidayColor);
907 } else { 907 } else {
908 p.setPen(mHolidayColorShaded); 908 p.setPen(mHolidayColorShaded);
909 } 909 }
910 } 910 }
911 } 911 }
912 912
913 // draw selected days with special color 913 // draw selected days with special color
914 // DO NOT specially highlight holidays in selection ! 914 // DO NOT specially highlight holidays in selection !
915 if (i >= mSelStartT && i <= mSelEndT) { 915 if (i >= mSelStartT && i <= mSelEndT) {
916 ;//p.setPen(mSelectedDaysColor); 916 ;//p.setPen(mSelectedDaysColor);
917 } 917 }
918 918
919 int addCol = 0; 919 int addCol = 0;
920 int addRow = 0; 920 int addRow = 0;
921 if ( colModulo ) { 921 if ( colModulo ) {
922 if ( col >= 7 - colModulo ) 922 if ( col >= 7 - colModulo )
923 addCol = col - 7 + colModulo; 923 addCol = col - 7 + colModulo;
924 } 924 }
925 if ( rowModulo ) { 925 if ( rowModulo ) {
926 if ( row >= 6 - rowModulo ) 926 if ( row >= 6 - rowModulo )
927 addRow = row - 5 + rowModulo; 927 addRow = row - 5 + rowModulo;
928 } 928 }
929 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow); 929 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow);
930 ++addCol;//++addCol; 930 ++addCol;//++addCol;
931 if ( row == 0) 931 if ( row == 0)
932 addRow = 1; 932 addRow = 1;
933 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight, 933 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight,
934 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); 934 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);
935 935
936 // reset color to actual color 936 // reset color to actual color
937 if (!mHolidays[i].isNull()) { 937 if (!mHolidays[i].isNull()) {
938 p.setPen(actcol); 938 p.setPen(actcol);
939 } 939 }
940 // reset bold font to plain font 940 // reset bold font to plain font
941 if ( eDays.testBit(i)) { 941 if ( eDays.testBit(i)) {
942 QFont myFont = font(); 942 QFont myFont = font();
943 myFont.setBold(false); 943 myFont.setBold(false);
944 p.setFont(myFont); 944 p.setFont(myFont);
945 } 945 }
946 } 946 }
947 } else { 947 } else {
948 //qDebug("NO redraw "); 948 //qDebug("NO redraw ");
949 } 949 }
950 bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP); 950 bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP);
951 mRedrawNeeded = false; 951 mRedrawNeeded = false;
952} 952}
953 953
954// ---------------------------------------------------------------------------- 954// ----------------------------------------------------------------------------
955// R E SI Z E E V E N T H A N D L I N G 955// R E SI Z E E V E N T H A N D L I N G
956// ---------------------------------------------------------------------------- 956// ----------------------------------------------------------------------------
957 957
958void KODayMatrix::resizeEvent(QResizeEvent *) 958void KODayMatrix::resizeEvent(QResizeEvent *)
959{ 959{
960 QRect sz = frameRect(); 960 QRect sz = frameRect();
961 daysize.setHeight(sz.height()*7 / NUMDAYS); 961 daysize.setHeight(sz.height()*7 / NUMDAYS);
962 daysize.setWidth(sz.width() / 7); 962 daysize.setWidth(sz.width() / 7);
963} 963}
964 964
965QSize KODayMatrix::sizeHint() const 965QSize KODayMatrix::sizeHint() const
966{ 966{
967 967
968 QFontMetrics fm ( font() ); 968 QFontMetrics fm ( font() );
969 int wid = fm.width( "30") *7+3; 969 int wid = fm.width( "30") *7+3;
970 int hei = fm.height() * 6+3; 970 int hei = fm.height() * 6+3;
971 //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei); 971 //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei);
972 return QSize ( wid, hei ); 972 return QSize ( wid, hei );
973 973
974} 974}