summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt6
-rw-r--r--korganizer/koagendaview.cpp1
2 files changed, 6 insertions, 1 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index da5f365..6bc6be9 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,232 +1,238 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.0.23 ************
4
5Fixed again a lot of small and strange bugs, e.g. the missing toolbar of KA/Pi after a new installation.
6Fixed the (agenda) layout of KO/Pi on 5500er.
7Some usebility enhancements (e.g. reselection the current item of the todo view after some changes).
8
3********** VERSION 2.0.22 ************ 9********** VERSION 2.0.22 ************
4 10
5KO/Pi: 11KO/Pi:
6Fix for creating events/todos via the abgenda context menu. 12Fix for creating events/todos via the abgenda context menu.
7Added option to split toolbar to 3 toolbars. 13Added option to split toolbar to 3 toolbars.
8(Toolbar moving s disabled for this option due to a bug in Qt somewhere). 14(Toolbar moving s disabled for this option due to a bug in Qt somewhere).
9Added option to show one small filter-view-toolbar. 15Added option to show one small filter-view-toolbar.
10Added a print option to the desktop version: 16Added a print option to the desktop version:
11Now you can print out the view of the "Event Viewer". 17Now you can print out the view of the "Event Viewer".
12That means you can print all data of one particular event/todo. 18That means you can print all data of one particular event/todo.
13Added scaling options to printout of Event Viewer and What'sNext View. 19Added scaling options to printout of Event Viewer and What'sNext View.
14Fixed some problems in the month view in "week start sunday" mode. 20Fixed some problems in the month view in "week start sunday" mode.
15KA/Pi: 21KA/Pi:
16Added two more config options. 22Added two more config options.
17Fixed resizing problem of address request dialog when orientation was switched. 23Fixed resizing problem of address request dialog when orientation was switched.
18Cleaned up the menu structure. 24Cleaned up the menu structure.
19Fixed some more problems. 25Fixed some more problems.
20 26
21Fixed the annoying problem that scrolling continued after the key was released in KO/Pi Monthview and the KA/Pi views. 27Fixed the annoying problem that scrolling continued after the key was released in KO/Pi Monthview and the KA/Pi views.
22 28
23And, this is a really cool option (Ben did suggest it): 29And, this is a really cool option (Ben did suggest it):
24Now KO/Pi and KA/Pi can be run from a USB stick: 30Now KO/Pi and KA/Pi can be run from a USB stick:
25All data is read from and written to the stick. 31All data is read from and written to the stick.
26You can enable this in the global configure option TAB with: 32You can enable this in the global configure option TAB with:
27Save using LOCAL storage. 33Save using LOCAL storage.
28Just put KDE-Pim/Pi on a memory stick and you can access all your PIM data on every computer with Windows XP. It will work with the ME and Linux versions as well. I will put a memory stick version for teh next stable release online. 34Just put KDE-Pim/Pi on a memory stick and you can access all your PIM data on every computer with Windows XP. It will work with the ME and Linux versions as well. I will put a memory stick version for teh next stable release online.
29 35
30********** VERSION 2.0.21 ************ 36********** VERSION 2.0.21 ************
31 37
32Fixed another SMTP problem in OM/Pi. 38Fixed another SMTP problem in OM/Pi.
33Some small changed in the new datenavigator in KO/Pi. 39Some small changed in the new datenavigator in KO/Pi.
34Changed default setting for new filter in KA/Pi to "exclude categories". 40Changed default setting for new filter in KA/Pi to "exclude categories".
35Changed the default font size for 640x480 display . 41Changed the default font size for 640x480 display .
36Changed popup menu behaviour in agenda and list view. 42Changed popup menu behaviour in agenda and list view.
37Fixed some layout problems of the date label size in the month view. 43Fixed some layout problems of the date label size in the month view.
38Made month view update faster. 44Made month view update faster.
39Made first datenavigator repainting faster. 45Made first datenavigator repainting faster.
40Changed the title of the event/todo edit dialogs. 46Changed the title of the event/todo edit dialogs.
41Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course). 47Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course).
42Many small usebility fixes in KO/Pi. 48Many small usebility fixes in KO/Pi.
43Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi. 49Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi.
44The set of possible "next views" are the views you have toolbar buttons for. 50The set of possible "next views" are the views you have toolbar buttons for.
45 51
46Made alarm sound working on Linux. 52Made alarm sound working on Linux.
47 53
48KO/Pi alarm applet changed: 54KO/Pi alarm applet changed:
49Made buttons in alarm dialog much bigger. 55Made buttons in alarm dialog much bigger.
50Made setting of timer more user friendly by showing the actual timer fire time and making the buttons in the timer settings much bigger. 56Made setting of timer more user friendly by showing the actual timer fire time and making the buttons in the timer settings much bigger.
51The goal was it to make it possible to use a finger tip ( and not the stylus ) on the touchscreen to adjust the settings. 57The goal was it to make it possible to use a finger tip ( and not the stylus ) on the touchscreen to adjust the settings.
52 58
53And because this version is realeased at Easter, I added an Easter-egg: 59And because this version is realeased at Easter, I added an Easter-egg:
54With a new undocumented command you can get a message box about the next alarm. 60With a new undocumented command you can get a message box about the next alarm.
55Good luck to find it! 61Good luck to find it!
56 62
57 63
58 64
59********** VERSION 2.0.20 ************ 65********** VERSION 2.0.20 ************
60 66
61Two small fixes in OM/Pi. 67Two small fixes in OM/Pi.
62 68
63Better resizing of the new datenavigator in KO/Pi. 69Better resizing of the new datenavigator in KO/Pi.
64 70
65********** VERSION 2.0.19 ************ 71********** VERSION 2.0.19 ************
66KO/Pi: 72KO/Pi:
67Enhancements and bugfixes in the new datenavigator. 73Enhancements and bugfixes in the new datenavigator.
68Bugfix in this changelog: 74Bugfix in this changelog:
69The datenavigator was changed in version 2.0.18, not the datepicker. 75The datenavigator was changed in version 2.0.18, not the datepicker.
70 76
71********** VERSION 2.0.18 ************ 77********** VERSION 2.0.18 ************
72KO/Pi: 78KO/Pi:
73Fixed some minor problems. 79Fixed some minor problems.
74Cleaned up the KO/Pi config dialog. 80Cleaned up the KO/Pi config dialog.
75Fixed problem moving events in aganda view. 81Fixed problem moving events in aganda view.
76Made datepicker scaleable, i.e. if the datenavigator shows now a 82Made datepicker scaleable, i.e. if the datenavigator shows now a
77datenavigator matrix depending on its size. 83datenavigator matrix depending on its size.
78Birthdays are now displayed green in the datenavigator. 84Birthdays are now displayed green in the datenavigator.
79What'sThis Help in datenavigator shows all events of the day. 85What'sThis Help in datenavigator shows all events of the day.
80 86
81OM/Pi: 87OM/Pi:
82Updated the backend mail library to the latest version. 88Updated the backend mail library to the latest version.
83Please backup your mail before using this version. 89Please backup your mail before using this version.
84 90
85********** VERSION 2.0.17 ************ 91********** VERSION 2.0.17 ************
86 92
87KO/Pi: 93KO/Pi:
88Tooltips in month view were not sorted. Fixed. 94Tooltips in month view were not sorted. Fixed.
89Daylabel in agenda view ( for display of one day ) was too short. Fixed. 95Daylabel in agenda view ( for display of one day ) was too short. Fixed.
90Conflict display dialog for syncing was not on top of other windows. Fixed. 96Conflict display dialog for syncing was not on top of other windows. Fixed.
91Fixed some minor problems. 97Fixed some minor problems.
92 98
93Fixed an endless loop when importing vcs file with RESOURCES entry. 99Fixed an endless loop when importing vcs file with RESOURCES entry.
94 100
95********** VERSION 2.0.16 ************ 101********** VERSION 2.0.16 ************
96OM/Pi: 102OM/Pi:
97Fixed the SMTP account setting the option. 103Fixed the SMTP account setting the option.
98Fixed something in mail sending. 104Fixed something in mail sending.
99 105
100KO/Pi: 106KO/Pi:
101Added possibility to export selected events/todos as vcal file. 107Added possibility to export selected events/todos as vcal file.
102 108
103********** VERSION 2.0.15 ************ 109********** VERSION 2.0.15 ************
104 110
105PwM/Pi: 111PwM/Pi:
106Added keyboard shorcuts for 112Added keyboard shorcuts for
107- toggling summary view (space bar) 113- toggling summary view (space bar)
108- delete item (delete + backspace key) 114- delete item (delete + backspace key)
109- add new item ( i + n key) 115- add new item ( i + n key)
110Fixed length of info in the title. 116Fixed length of info in the title.
111 117
112KO/Pi-KA/Pi: 118KO/Pi-KA/Pi:
113Changed "ME" menu bar entry to an icon. 119Changed "ME" menu bar entry to an icon.
114 120
115KO/Pi: 121KO/Pi:
116Fixed two minor bugs in displaying todos. 122Fixed two minor bugs in displaying todos.
117If in month view a cell is selected, the key shortcut "d" shows now that date. 123If in month view a cell is selected, the key shortcut "d" shows now that date.
118Added complete info for a todo in month view as an icon left of the text. 124Added complete info for a todo in month view as an icon left of the text.
119Fixed problems of displaying data when "<" or ">" are used in summary/location/description. 125Fixed problems of displaying data when "<" or ">" are used in summary/location/description.
120Fixed problem of search dialog size when switching displays. 126Fixed problem of search dialog size when switching displays.
121Cancel key now closes date picker. 127Cancel key now closes date picker.
122Rearranged KO/Pi file menu structure. 128Rearranged KO/Pi file menu structure.
123 129
124OM/Pi: 130OM/Pi:
125Added to the SMTP account setting the option 131Added to the SMTP account setting the option
126"No secure connection". 132"No secure connection".
127You have to configure your SMTP accounts again, sorry. 133You have to configure your SMTP accounts again, sorry.
128 134
129KA/Pi: 135KA/Pi:
130Added support for importing quoted-printable. 136Added support for importing quoted-printable.
131Support was added by Peter P.. Thanks, Peter! 137Support was added by Peter P.. Thanks, Peter!
132 138
133 139
134********** VERSION 2.0.14 ************ 140********** VERSION 2.0.14 ************
135 141
136Made Passwordmanager PwM/Pi more userfriendly: 142Made Passwordmanager PwM/Pi more userfriendly:
137Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 143Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
138Fixed bug in KO/Pi todo printing. 144Fixed bug in KO/Pi todo printing.
139Made Qtopia calendar import possible on desktop . 145Made Qtopia calendar import possible on desktop .
140 146
141********** VERSION 2.0.13 ************ 147********** VERSION 2.0.13 ************
142 148
143Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 149Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
144 150
145In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 151In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
146 152
147OM/Pi: 153OM/Pi:
148Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 154Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
149Added missing German translation. 155Added missing German translation.
150Added warning if path is specified in local folder settings of account config. 156Added warning if path is specified in local folder settings of account config.
151 157
152********** VERSION 2.0.12 ************ 158********** VERSION 2.0.12 ************
153 159
154KO/Pi: 160KO/Pi:
155Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 161Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
156Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 162Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
157Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 163Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
158 164
159Fixed problem in pi-sync mode when wrong password was sent. 165Fixed problem in pi-sync mode when wrong password was sent.
160 166
161OM/Pi: 167OM/Pi:
162Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 168Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
163Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 169Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
164 170
165********** VERSION 2.0.11 ************ 171********** VERSION 2.0.11 ************
166 172
167Fixed some problems in pi-sync mode 173Fixed some problems in pi-sync mode
168(e.g. details of events were not synced properly) 174(e.g. details of events were not synced properly)
169 175
170********** VERSION 2.0.10 ************ 176********** VERSION 2.0.10 ************
171 177
172KO/Pi: 178KO/Pi:
173In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 179In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
174This is fixed. 180This is fixed.
175Changed the search dialog a bit to make it more user friendly. 181Changed the search dialog a bit to make it more user friendly.
176(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 182(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
177 183
178Added config option to hide the week number in KO/Pi toolbar. 184Added config option to hide the week number in KO/Pi toolbar.
179 185
180********** VERSION 2.0.9 ************ 186********** VERSION 2.0.9 ************
181 187
182Made month view icons for multiday events a bit nicer. 188Made month view icons for multiday events a bit nicer.
183Some minor fixes in KO/Pi 189Some minor fixes in KO/Pi
184(e.g. go to today did not work for new week view properly). 190(e.g. go to today did not work for new week view properly).
185 191
186 192
187********** VERSION 2.0.8 ************ 193********** VERSION 2.0.8 ************
188 194
189Fixed a problem in dependency info in the ipk files for the Zaurus. 195Fixed a problem in dependency info in the ipk files for the Zaurus.
190 196
191Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar. 197Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar.
192 198
193Added a "go today" button to the datepicker. 199Added a "go today" button to the datepicker.
194 200
195Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 201Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
196and made it configureable to show these values. 202and made it configureable to show these values.
197 203
198Fixed a problem for events (from external iCal files) that do have a duration but no end date. 204Fixed a problem for events (from external iCal files) that do have a duration but no end date.
199 205
200 206
201********** VERSION 2.0.7 ************ 207********** VERSION 2.0.7 ************
202 208
203Added global application font settings 209Added global application font settings
204(for all KDE-Pim/Pi apps) to the general settings. 210(for all KDE-Pim/Pi apps) to the general settings.
205 211
206Fixed a problem in OM/Pi when trying to login to some IMAP servers 212Fixed a problem in OM/Pi when trying to login to some IMAP servers
207(like the IMAP server of Apple: mail.mac.com ) 213(like the IMAP server of Apple: mail.mac.com )
208 214
209Added recurring todos to KO/Pi. 215Added recurring todos to KO/Pi.
210 216
211 217
212********** VERSION 2.0.6 ************ 218********** VERSION 2.0.6 ************
213 219
214Stable release 2.0.6! 220Stable release 2.0.6!
215 221
216Some bugfixes in the pi-sync mode. 222Some bugfixes in the pi-sync mode.
217Added German translation for pi-sync mode. 223Added German translation for pi-sync mode.
218 224
219KO/Pi: 225KO/Pi:
220Made the todolist using alternate background. 226Made the todolist using alternate background.
221 227
222Other minor fixes in KO/Pi. 228Other minor fixes in KO/Pi.
223 229
224 230
225You can find the complete changelog 231You can find the complete changelog
226from version 1.7.7 to 2.0.5 232from version 1.7.7 to 2.0.5
227in the source package or on 233in the source package or on
228 234
229http://www.pi-sync.net/html/changelog.html 235http://www.pi-sync.net/html/changelog.html
230 236
231 237
232 238
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index 880d399..d450a97 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -1,597 +1,596 @@
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 cx = contentsX() + frameWidth()*2; 113 cx = contentsX() + frameWidth()*2;
114 cw = contentsWidth() ; 114 cw = contentsWidth() ;
115 // end of workaround 115 // end of workaround
116 116
117 int cell = ((int)(cy/mCellHeight)); 117 int cell = ((int)(cy/mCellHeight));
118 int y = cell * mCellHeight; 118 int y = cell * mCellHeight;
119 QFontMetrics fm = fontMetrics(); 119 QFontMetrics fm = fontMetrics();
120 QString hour; 120 QString hour;
121 QString suffix = "am"; 121 QString suffix = "am";
122 int timeHeight = fm.ascent(); 122 int timeHeight = fm.ascent();
123 QFont nFont = font(); 123 QFont nFont = font();
124 p->setFont( font()); 124 p->setFont( font());
125 125
126 if (!KGlobal::locale()->use12Clock()) { 126 if (!KGlobal::locale()->use12Clock()) {
127 suffix = "00"; 127 suffix = "00";
128 } else 128 } else
129 if (cell > 11) suffix = "pm"; 129 if (cell > 11) suffix = "pm";
130 130
131 if ( timeHeight > mCellHeight ) { 131 if ( timeHeight > mCellHeight ) {
132 timeHeight = mCellHeight-1; 132 timeHeight = mCellHeight-1;
133 int pointS = nFont.pointSize(); 133 int pointS = nFont.pointSize();
134 while ( pointS > 4 ) { 134 while ( pointS > 4 ) {
135 nFont.setPointSize( pointS ); 135 nFont.setPointSize( pointS );
136 fm = QFontMetrics( nFont ); 136 fm = QFontMetrics( nFont );
137 if ( fm.ascent() < mCellHeight ) 137 if ( fm.ascent() < mCellHeight )
138 break; 138 break;
139 -- pointS; 139 -- pointS;
140 } 140 }
141 fm = QFontMetrics( nFont ); 141 fm = QFontMetrics( nFont );
142 timeHeight = fm.ascent(); 142 timeHeight = fm.ascent();
143 } 143 }
144 //timeHeight -= (timeHeight/4-2); 144 //timeHeight -= (timeHeight/4-2);
145 QFont sFont = nFont; 145 QFont sFont = nFont;
146 sFont.setPointSize( sFont.pointSize()/2 ); 146 sFont.setPointSize( sFont.pointSize()/2 );
147 QFontMetrics fmS( sFont ); 147 QFontMetrics fmS( sFont );
148 int sHei = fmS.ascent() ; 148 int sHei = fmS.ascent() ;
149 //sHei -= (sHei/4-2); 149 //sHei -= (sHei/4-2);
150 int startW = mMiniWidth - frameWidth()-2 ; 150 int startW = mMiniWidth - frameWidth()-2 ;
151 int tw2 = fmS.width(suffix); 151 int tw2 = fmS.width(suffix);
152 timeHeight = (timeHeight-1) /2 -1; 152 timeHeight = (timeHeight-1) /2 -1;
153 //testline 153 //testline
154 //p->drawLine(0,0,0,contentsHeight()); 154 //p->drawLine(0,0,0,contentsHeight());
155 while (y < cy + ch+mCellHeight) { 155 while (y < cy + ch+mCellHeight) {
156 p->drawLine(startW-tw2 ,y,cw+2,y); 156 p->drawLine(startW-tw2 ,y,cw+2,y);
157 hour.setNum(cell); 157 hour.setNum(cell);
158 // handle 24h and am/pm time formats 158 // handle 24h and am/pm time formats
159 if (KGlobal::locale()->use12Clock()) { 159 if (KGlobal::locale()->use12Clock()) {
160 if (cell == 12) suffix = "pm"; 160 if (cell == 12) suffix = "pm";
161 if (cell == 0) hour.setNum(12); 161 if (cell == 0) hour.setNum(12);
162 if (cell > 12) hour.setNum(cell - 12); 162 if (cell > 12) hour.setNum(cell - 12);
163 } 163 }
164 164
165 // center and draw the time label 165 // center and draw the time label
166 int timeWidth = fm.width(hour); 166 int timeWidth = fm.width(hour);
167 int offset = startW - timeWidth - tw2 -1 ; 167 int offset = startW - timeWidth - tw2 -1 ;
168 p->setFont( nFont ); 168 p->setFont( nFont );
169 p->drawText( offset, y+ timeHeight, hour); 169 p->drawText( offset, y+ timeHeight, hour);
170 p->setFont( sFont ); 170 p->setFont( sFont );
171 offset = startW - tw2; 171 offset = startW - tw2;
172 p->drawText( offset, y -1, suffix); 172 p->drawText( offset, y -1, suffix);
173 173
174 // increment indices 174 // increment indices
175 y += mCellHeight; 175 y += mCellHeight;
176 cell++; 176 cell++;
177 } 177 }
178 178
179 179
180 180
181 181
182} 182}
183 183
184/** 184/**
185 Calculates the minimum width. 185 Calculates the minimum width.
186*/ 186*/
187int TimeLabels::minimumWidth() const 187int TimeLabels::minimumWidth() const
188{ 188{
189 return mMiniWidth; 189 return mMiniWidth;
190} 190}
191 191
192/** updates widget's internal state */ 192/** updates widget's internal state */
193void TimeLabels::updateConfig() 193void TimeLabels::updateConfig()
194{ 194{
195 mRedrawNeeded = true; 195 mRedrawNeeded = true;
196 // set the font 196 // set the font
197 // config->setGroup("Fonts"); 197 // config->setGroup("Fonts");
198 // QFont font = config->readFontEntry("TimeBar Font"); 198 // QFont font = config->readFontEntry("TimeBar Font");
199 setFont(KOPrefs::instance()->mTimeBarFont); 199 setFont(KOPrefs::instance()->mTimeBarFont);
200 QString test = "20"; 200 QString test = "20";
201 if (KGlobal::locale()->use12Clock()) 201 if (KGlobal::locale()->use12Clock())
202 test = "12"; 202 test = "12";
203 mMiniWidth = fontMetrics().width(test); 203 mMiniWidth = fontMetrics().width(test);
204 if (KGlobal::locale()->use12Clock()) 204 if (KGlobal::locale()->use12Clock())
205 test = "pm"; 205 test = "pm";
206 else { 206 else {
207 test = "00"; 207 test = "00";
208 } 208 }
209 QFont sFont = font(); 209 QFont sFont = font();
210 sFont.setPointSize( sFont.pointSize()/2 ); 210 sFont.setPointSize( sFont.pointSize()/2 );
211 QFontMetrics fmS( sFont ); 211 QFontMetrics fmS( sFont );
212 mMiniWidth += fmS.width( test ) + frameWidth()*2+4 ; 212 mMiniWidth += fmS.width( test ) + frameWidth()*2+4 ;
213 qDebug("testwid %d %d", mMiniWidth ,fmS.width( test ));
214 // update geometry restrictions based on new settings 213 // update geometry restrictions based on new settings
215 setFixedWidth( mMiniWidth ); 214 setFixedWidth( mMiniWidth );
216 215
217 // update HourSize 216 // update HourSize
218 mCellHeight = KOPrefs::instance()->mHourSize*4; 217 mCellHeight = KOPrefs::instance()->mHourSize*4;
219 resizeContents(50,mRows * mCellHeight); 218 resizeContents(50,mRows * mCellHeight);
220} 219}
221 220
222/** update time label positions */ 221/** update time label positions */
223void TimeLabels::positionChanged() 222void TimeLabels::positionChanged()
224{ 223{
225 int adjustment = mAgenda->contentsY(); 224 int adjustment = mAgenda->contentsY();
226 setContentsPos(0, adjustment); 225 setContentsPos(0, adjustment);
227} 226}
228 227
229/** */ 228/** */
230void TimeLabels::setAgenda(KOAgenda* agenda) 229void TimeLabels::setAgenda(KOAgenda* agenda)
231{ 230{
232 mAgenda = agenda; 231 mAgenda = agenda;
233} 232}
234 233
235void TimeLabels::contentsMousePressEvent ( QMouseEvent * e) 234void TimeLabels::contentsMousePressEvent ( QMouseEvent * e)
236{ 235{
237 mMouseDownY = e->pos().y(); 236 mMouseDownY = e->pos().y();
238 mOrgCap = topLevelWidget()->caption(); 237 mOrgCap = topLevelWidget()->caption();
239} 238}
240 239
241void TimeLabels::contentsMouseMoveEvent ( QMouseEvent * e ) 240void TimeLabels::contentsMouseMoveEvent ( QMouseEvent * e )
242{ 241{
243 int diff = mMouseDownY - e->pos().y(); 242 int diff = mMouseDownY - e->pos().y();
244 if ( diff < 10 && diff > -10 ) 243 if ( diff < 10 && diff > -10 )
245 return; 244 return;
246 int tSize = KOPrefs::instance()->mHourSize + (diff/10) ; 245 int tSize = KOPrefs::instance()->mHourSize + (diff/10) ;
247 if ( tSize < 4 ) 246 if ( tSize < 4 )
248 tSize = 4; 247 tSize = 4;
249 if ( tSize > 22 ) 248 if ( tSize > 22 )
250 tSize = 22; 249 tSize = 22;
251 tSize = (tSize-2)/2; 250 tSize = (tSize-2)/2;
252 topLevelWidget()->setCaption(i18n("New Agendasize: %1").arg(tSize)); 251 topLevelWidget()->setCaption(i18n("New Agendasize: %1").arg(tSize));
253 252
254} 253}
255void TimeLabels::contentsMouseReleaseEvent ( QMouseEvent * e ) 254void TimeLabels::contentsMouseReleaseEvent ( QMouseEvent * e )
256{ 255{
257 topLevelWidget()->setCaption( mOrgCap ); 256 topLevelWidget()->setCaption( mOrgCap );
258 int diff = mMouseDownY - e->pos().y(); 257 int diff = mMouseDownY - e->pos().y();
259 if ( diff < 10 && diff > -10 ) 258 if ( diff < 10 && diff > -10 )
260 return; 259 return;
261 int tSize = KOPrefs::instance()->mHourSize + (diff/10); 260 int tSize = KOPrefs::instance()->mHourSize + (diff/10);
262 if ( tSize < 4 ) 261 if ( tSize < 4 )
263 tSize = 4; 262 tSize = 4;
264 if ( tSize > 22 ) 263 if ( tSize > 22 )
265 tSize = 22; 264 tSize = 22;
266 tSize = (tSize/2)*2; 265 tSize = (tSize/2)*2;
267 if ( tSize == KOPrefs::instance()->mHourSize ) 266 if ( tSize == KOPrefs::instance()->mHourSize )
268 return; 267 return;
269 KOPrefs::instance()->mHourSize = tSize; 268 KOPrefs::instance()->mHourSize = tSize;
270 emit scaleChanged(); 269 emit scaleChanged();
271} 270}
272 271
273/** This is called in response to repaint() */ 272/** This is called in response to repaint() */
274void TimeLabels::paintEvent(QPaintEvent*) 273void TimeLabels::paintEvent(QPaintEvent*)
275{ 274{
276 275
277 // kdDebug() << "paintevent..." << endl; 276 // kdDebug() << "paintevent..." << endl;
278 // this is another hack! 277 // this is another hack!
279 // QPainter painter(this); 278 // QPainter painter(this);
280 //QString c 279 //QString c
281 repaintContents(contentsX(), contentsY(), visibleWidth(), visibleHeight()); 280 repaintContents(contentsX(), contentsY(), visibleWidth(), visibleHeight());
282} 281}
283 282
284//////////////////////////////////////////////////////////////////////////// 283////////////////////////////////////////////////////////////////////////////
285 284
286EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name) 285EventIndicator::EventIndicator(Location loc,QWidget *parent,const char *name)
287 : QFrame(parent,name) 286 : QFrame(parent,name)
288{ 287{
289 mColumns = 1; 288 mColumns = 1;
290 mTopBox = 0; 289 mTopBox = 0;
291 mLocation = loc; 290 mLocation = loc;
292 mTopLayout = 0; 291 mTopLayout = 0;
293 mPaintWidget = 0; 292 mPaintWidget = 0;
294 mXOffset = 0; 293 mXOffset = 0;
295 if (mLocation == Top) mPixmap = SmallIcon("1uparrow"); 294 if (mLocation == Top) mPixmap = SmallIcon("1uparrow");
296 else mPixmap = SmallIcon("1downarrow"); 295 else mPixmap = SmallIcon("1downarrow");
297 mEnabled.resize(mColumns); 296 mEnabled.resize(mColumns);
298 mEnabled.fill( false ); 297 mEnabled.fill( false );
299 setMinimumHeight(mPixmap.height()); 298 setMinimumHeight(mPixmap.height());
300} 299}
301 300
302EventIndicator::~EventIndicator() 301EventIndicator::~EventIndicator()
303{ 302{
304} 303}
305 304
306void EventIndicator::drawContents(QPainter *p) 305void EventIndicator::drawContents(QPainter *p)
307{ 306{
308 307
309 // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl; 308 // kdDebug() << "======== top: " << contentsRect().top() << " bottom " << // contentsRect().bottom() << " left " << contentsRect().left() << " right " << contentsRect().right() << endl;
310 KDGanttSplitterHandle* han = 0; 309 KDGanttSplitterHandle* han = 0;
311 if ( mPaintWidget ) 310 if ( mPaintWidget )
312 han = mPaintWidget->firstHandle(); 311 han = mPaintWidget->firstHandle();
313 if ( ! han ) { 312 if ( ! han ) {
314 int i; 313 int i;
315 for(i=0;i<mColumns;++i) { 314 for(i=0;i<mColumns;++i) {
316 if (mEnabled[i]) { 315 if (mEnabled[i]) {
317 int cellWidth = contentsRect().right()/mColumns; 316 int cellWidth = contentsRect().right()/mColumns;
318 int xOffset = KOGlobals::self()->reverseLayout() ? 317 int xOffset = KOGlobals::self()->reverseLayout() ?
319 (mColumns - 1 - i)*cellWidth + (cellWidth -mPixmap.width())/2 : 318 (mColumns - 1 - i)*cellWidth + (cellWidth -mPixmap.width())/2 :
320 i*cellWidth + (cellWidth -mPixmap.width()) /2; 319 i*cellWidth + (cellWidth -mPixmap.width()) /2;
321 p->drawPixmap(QPoint(1+xOffset,0),mPixmap); 320 p->drawPixmap(QPoint(1+xOffset,0),mPixmap);
322 } 321 }
323 } 322 }
324 } else { 323 } else {
325 han->repaint(); 324 han->repaint();
326 //mPaintWidget->setBackgroundColor( red ); 325 //mPaintWidget->setBackgroundColor( red );
327 326
328 QPainter pa( han ); 327 QPainter pa( han );
329 int i; 328 int i;
330 bool setColor = false; 329 bool setColor = false;
331 for(i=0;i<mColumns;++i) { 330 for(i=0;i<mColumns;++i) {
332 if (mEnabled[i]) { 331 if (mEnabled[i]) {
333 setColor = true; 332 setColor = true;
334 333
335 int cellWidth = contentsRect().right()/mColumns; 334 int cellWidth = contentsRect().right()/mColumns;
336 int xOffset = KOGlobals::self()->reverseLayout() ? 335 int xOffset = KOGlobals::self()->reverseLayout() ?
337 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 : 336 (mColumns - 1 - i)*cellWidth + cellWidth/2 -mPixmap.width()/2 :
338 i*cellWidth + cellWidth/2 -mPixmap.width()/2; 337 i*cellWidth + cellWidth/2 -mPixmap.width()/2;
339 pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap); 338 pa.drawPixmap(QPoint(mXOffset + xOffset,0),mPixmap);
340 //qDebug("222draw pix %d ",xOffset ); 339 //qDebug("222draw pix %d ",xOffset );
341 340
342 } 341 }
343 342
344 } 343 }
345 pa.end(); 344 pa.end();
346 345
347 } 346 }
348} 347}
349 348
350void EventIndicator::setXOffset( int x ) 349void EventIndicator::setXOffset( int x )
351{ 350{
352 mXOffset = x; 351 mXOffset = x;
353} 352}
354void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w ) 353void EventIndicator::setPaintWidget( KDGanttMinimizeSplitter * w )
355{ 354{
356 mPaintWidget = w; 355 mPaintWidget = w;
357 setMaximumHeight(0); 356 setMaximumHeight(0);
358 setMinimumHeight(0); 357 setMinimumHeight(0);
359} 358}
360void EventIndicator::changeColumns(int columns) 359void EventIndicator::changeColumns(int columns)
361{ 360{
362 mColumns = columns; 361 mColumns = columns;
363 mEnabled.resize(mColumns); 362 mEnabled.resize(mColumns);
364 363
365 update(); 364 update();
366} 365}
367 366
368void EventIndicator::enableColumn(int column, bool enable) 367void EventIndicator::enableColumn(int column, bool enable)
369{ 368{
370 mEnabled[column] = enable; 369 mEnabled[column] = enable;
371} 370}
372 371
373 372
374//////////////////////////////////////////////////////////////////////////// 373////////////////////////////////////////////////////////////////////////////
375//////////////////////////////////////////////////////////////////////////// 374////////////////////////////////////////////////////////////////////////////
376//////////////////////////////////////////////////////////////////////////// 375////////////////////////////////////////////////////////////////////////////
377 376
378KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) : 377KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) :
379 KOEventView (cal,parent,name) 378 KOEventView (cal,parent,name)
380{ 379{
381 mBlockUpdating = true; 380 mBlockUpdating = true;
382 mStartHour = 8; 381 mStartHour = 8;
383 mSelectedDates.append(QDate::currentDate()); 382 mSelectedDates.append(QDate::currentDate());
384 383
385 mLayoutDayLabels = 0; 384 mLayoutDayLabels = 0;
386 mDayLabelsFrame = 0; 385 mDayLabelsFrame = 0;
387 mDayLabels = 0; 386 mDayLabels = 0;
388 bool isRTL = KOGlobals::self()->reverseLayout(); 387 bool isRTL = KOGlobals::self()->reverseLayout();
389 QPixmap expandPix; 388 QPixmap expandPix;
390 if ( KOPrefs::instance()->mVerticalScreen ) { 389 if ( KOPrefs::instance()->mVerticalScreen ) {
391 expandPix = SmallIcon( "1updownarrow" ); 390 expandPix = SmallIcon( "1updownarrow" );
392 } else { 391 } else {
393 expandPix = SmallIcon("1leftrightarrow" ); 392 expandPix = SmallIcon("1leftrightarrow" );
394 } 393 }
395 394
396 QBoxLayout *topLayout = new QVBoxLayout(this); 395 QBoxLayout *topLayout = new QVBoxLayout(this);
397 396
398 // Create day name labels for agenda columns 397 // Create day name labels for agenda columns
399 // Create agenda splitter 398 // Create agenda splitter
400 399
401 mSplitterAgenda = new KDGanttMinimizeSplitter( Qt::Vertical, this); 400 mSplitterAgenda = new KDGanttMinimizeSplitter( Qt::Vertical, this);
402 mSplitterAgenda->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 401 mSplitterAgenda->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
403 topLayout->addWidget( mSplitterAgenda ); 402 topLayout->addWidget( mSplitterAgenda );
404 mAllDayFrame = new QHBox(mSplitterAgenda); 403 mAllDayFrame = new QHBox(mSplitterAgenda);
405 mAllDayFrame->setFocusPolicy(NoFocus); 404 mAllDayFrame->setFocusPolicy(NoFocus);
406 QWidget *agendaFrame = new QWidget(mSplitterAgenda); 405 QWidget *agendaFrame = new QWidget(mSplitterAgenda);
407 agendaFrame->setFocusPolicy(NoFocus); 406 agendaFrame->setFocusPolicy(NoFocus);
408 407
409 // Create all-day agenda widget 408 // Create all-day agenda widget
410 mDummyAllDayLeft = new QVBox( mAllDayFrame ); 409 mDummyAllDayLeft = new QVBox( mAllDayFrame );
411 410
412 mExpandButton = new QPushButton(mDummyAllDayLeft); 411 mExpandButton = new QPushButton(mDummyAllDayLeft);
413 mExpandButton->setPixmap( expandPix ); 412 mExpandButton->setPixmap( expandPix );
414 int widebut = mExpandButton->sizeHint().width()+4; 413 int widebut = mExpandButton->sizeHint().width()+4;
415 int heibut = mExpandButton->sizeHint().height()+4; 414 int heibut = mExpandButton->sizeHint().height()+4;
416 if ( heibut > widebut ) 415 if ( heibut > widebut )
417 widebut = heibut ; 416 widebut = heibut ;
418 417
419 //mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, 418 //mExpandButton->setSizePolicy( QSizePolicy( QSizePolicy::Fixed,
420 // QSizePolicy::Fixed ) ); 419 // QSizePolicy::Fixed ) );
421 mExpandButton->setFixedSize( widebut, widebut); 420 mExpandButton->setFixedSize( widebut, widebut);
422 connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) ); 421 connect( mExpandButton, SIGNAL( clicked() ), SIGNAL( toggleExpand() ) );
423 mExpandButton->setFocusPolicy(NoFocus); 422 mExpandButton->setFocusPolicy(NoFocus);
424 mAllDayAgenda = new KOAgenda(1,mAllDayFrame); 423 mAllDayAgenda = new KOAgenda(1,mAllDayFrame);
425 mAllDayAgenda->setFocusPolicy(NoFocus); 424 mAllDayAgenda->setFocusPolicy(NoFocus);
426 QLabel *dummyAllDayRight = new QLabel (mAllDayFrame); 425 QLabel *dummyAllDayRight = new QLabel (mAllDayFrame);
427 426
428 // Create event context menu for all day agenda 427 // Create event context menu for all day agenda
429 //mAllDayAgendaPopup = eventPopup(); 428 //mAllDayAgendaPopup = eventPopup();
430 429
431 // Create agenda frame 430 // Create agenda frame
432 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,4,3); 431 QGridLayout *agendaLayout = new QGridLayout(agendaFrame,4,3);
433 // QHBox *agendaFrame = new QHBox(splitterAgenda); 432 // QHBox *agendaFrame = new QHBox(splitterAgenda);
434 433
435 // create event indicator bars 434 // create event indicator bars
436 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame); 435 mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame);
437#ifndef DESKTOP_VERSION 436#ifndef DESKTOP_VERSION
438 // FIX 437 // FIX
439 mEventIndicatorTop->setPaintWidget( mSplitterAgenda ); 438 mEventIndicatorTop->setPaintWidget( mSplitterAgenda );
440#endif 439#endif
441 mDayLabelsFrame = new QHBox(agendaFrame); 440 mDayLabelsFrame = new QHBox(agendaFrame);
442 //topLayout->addWidget(mDayLabelsFrame); 441 //topLayout->addWidget(mDayLabelsFrame);
443 mDayLabels = new QFrame (mDayLabelsFrame); 442 mDayLabels = new QFrame (mDayLabelsFrame);
444 mLayoutDayLabels = new QHBoxLayout(mDayLabels); 443 mLayoutDayLabels = new QHBoxLayout(mDayLabels);
445 agendaLayout->addMultiCellWidget(mDayLabelsFrame ,0,0,0,2); 444 agendaLayout->addMultiCellWidget(mDayLabelsFrame ,0,0,0,2);
446 agendaLayout->addWidget(mEventIndicatorTop,1,1); 445 agendaLayout->addWidget(mEventIndicatorTop,1,1);
447 446
448 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom, 447 mEventIndicatorBottom = new EventIndicator(EventIndicator::Bottom,
449 agendaFrame); 448 agendaFrame);
450 agendaLayout->addWidget(mEventIndicatorBottom,3,1); 449 agendaLayout->addWidget(mEventIndicatorBottom,3,1);
451 QWidget *dummyAgendaRight = new QWidget(agendaFrame); 450 QWidget *dummyAgendaRight = new QWidget(agendaFrame);
452 agendaLayout->addWidget(dummyAgendaRight,1,2); 451 agendaLayout->addWidget(dummyAgendaRight,1,2);
453 452
454 // Create time labels 453 // Create time labels
455 mTimeLabels = new TimeLabels(24,agendaFrame); 454 mTimeLabels = new TimeLabels(24,agendaFrame);
456 agendaLayout->addWidget(mTimeLabels,2,0); 455 agendaLayout->addWidget(mTimeLabels,2,0);
457 connect(mTimeLabels,SIGNAL( scaleChanged()), 456 connect(mTimeLabels,SIGNAL( scaleChanged()),
458 this,SLOT(updateConfig())); 457 this,SLOT(updateConfig()));
459 458
460 // Create agenda 459 // Create agenda
461 mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame); 460 mAgenda = new KOAgenda(1,96,KOPrefs::instance()->mHourSize,agendaFrame);
462 agendaLayout->addMultiCellWidget(mAgenda,2,2,1,2); 461 agendaLayout->addMultiCellWidget(mAgenda,2,2,1,2);
463 agendaLayout->setColStretch(1,1); 462 agendaLayout->setColStretch(1,1);
464 mAgenda->setFocusPolicy(NoFocus); 463 mAgenda->setFocusPolicy(NoFocus);
465 // Create event context menu for agenda 464 // Create event context menu for agenda
466 mAllAgendaPopup = eventPopup(); 465 mAllAgendaPopup = eventPopup();
467 466
468 mAllAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")), 467 mAllAgendaPopup->addAdditionalItem(QIconSet(SmallIcon("bell")),
469 i18n("Toggle Alarm"),mAgenda, 468 i18n("Toggle Alarm"),mAgenda,
470 SLOT(popupAlarm()),true); 469 SLOT(popupAlarm()),true);
471 470
472 471
473 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), 472 connect(mAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)),
474 mAllAgendaPopup,SLOT(showIncidencePopup(Incidence *))); 473 mAllAgendaPopup,SLOT(showIncidencePopup(Incidence *)));
475 474
476 connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)), 475 connect(mAllDayAgenda,SIGNAL(showIncidencePopupSignal(Incidence *)),
477 mAllAgendaPopup,SLOT(showIncidencePopup(Incidence *))); 476 mAllAgendaPopup,SLOT(showIncidencePopup(Incidence *)));
478 mAgenda->setPopup( mAllAgendaPopup ); 477 mAgenda->setPopup( mAllAgendaPopup );
479 mAllDayAgenda->setPopup( mAllAgendaPopup ); 478 mAllDayAgenda->setPopup( mAllAgendaPopup );
480 // make connections between dependent widgets 479 // make connections between dependent widgets
481 mTimeLabels->setAgenda(mAgenda); 480 mTimeLabels->setAgenda(mAgenda);
482 481
483 // Update widgets to reflect user preferences 482 // Update widgets to reflect user preferences
484 // updateConfig(); 483 // updateConfig();
485 484
486 // createDayLabels(); 485 // createDayLabels();
487 486
488 // these blank widgets make the All Day Event box line up with the agenda 487 // these blank widgets make the All Day Event box line up with the agenda
489 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 488 dummyAllDayRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
490 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width()); 489 dummyAgendaRight->setFixedWidth(mAgenda->verticalScrollBar()->width());
491 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 490 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
492 491
493 // Scrolling 492 // Scrolling
494 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)), 493 connect(mAgenda->verticalScrollBar(),SIGNAL(valueChanged(int)),
495 mTimeLabels, SLOT(positionChanged())); 494 mTimeLabels, SLOT(positionChanged()));
496 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)), 495 connect(mTimeLabels->verticalScrollBar(),SIGNAL(valueChanged(int)),
497 SLOT(setContentsPos(int))); 496 SLOT(setContentsPos(int)));
498 497
499 connect(mAgenda,SIGNAL(showDateView( int, int)),SLOT(slotShowDateView( int, int ))); 498 connect(mAgenda,SIGNAL(showDateView( int, int)),SLOT(slotShowDateView( int, int )));
500 connect(mAllDayAgenda,SIGNAL(showDateView( int, int )), SLOT(slotShowDateView( int, int ) )); 499 connect(mAllDayAgenda,SIGNAL(showDateView( int, int )), SLOT(slotShowDateView( int, int ) ));
501 500
502 // Create/Show/Edit/Delete Event 501 // Create/Show/Edit/Delete Event
503 connect(mAgenda,SIGNAL(newEventSignal(int,int)), 502 connect(mAgenda,SIGNAL(newEventSignal(int,int)),
504 SLOT(newEvent(int,int))); 503 SLOT(newEvent(int,int)));
505 connect(mAgenda,SIGNAL(newTodoSignal(int,int)), 504 connect(mAgenda,SIGNAL(newTodoSignal(int,int)),
506 SLOT(newTodo(int,int))); 505 SLOT(newTodo(int,int)));
507 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)), 506 connect(mAgenda,SIGNAL(newEventSignal(int,int,int,int)),
508 SLOT(newEvent(int,int,int,int))); 507 SLOT(newEvent(int,int,int,int)));
509 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)), 508 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int)),
510 SLOT(newEventAllDay(int,int))); 509 SLOT(newEventAllDay(int,int)));
511 connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)), 510 connect(mAllDayAgenda,SIGNAL(newTodoSignal(int,int)),
512 SLOT(newTodoAllDay(int,int))); 511 SLOT(newTodoAllDay(int,int)));
513 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)), 512 connect(mAllDayAgenda,SIGNAL(newEventSignal(int,int,int,int)),
514 SLOT(newEventAllDay(int,int))); 513 SLOT(newEventAllDay(int,int)));
515 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), 514 connect(mAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)),
516 SLOT(newTimeSpanSelected(int,int,int,int))); 515 SLOT(newTimeSpanSelected(int,int,int,int)));
517 connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)), 516 connect(mAllDayAgenda,SIGNAL(newTimeSpanSignal(int,int,int,int)),
518 SLOT(newTimeSpanSelectedAllDay(int,int,int,int))); 517 SLOT(newTimeSpanSelectedAllDay(int,int,int,int)));
519 connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); 518 connect(mAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView()));
520 connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView())); 519 connect(mAllDayAgenda,SIGNAL(newStartSelectSignal()),SLOT(updateView()));
521 520
522 connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)), 521 connect(mAgenda,SIGNAL(editIncidenceSignal(Incidence *)),
523 SIGNAL(editIncidenceSignal(Incidence *))); 522 SIGNAL(editIncidenceSignal(Incidence *)));
524 connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)), 523 connect(mAllDayAgenda,SIGNAL(editIncidenceSignal(Incidence *)),
525 SIGNAL(editIncidenceSignal(Incidence *))); 524 SIGNAL(editIncidenceSignal(Incidence *)));
526 connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)), 525 connect(mAgenda,SIGNAL(showIncidenceSignal(Incidence *)),
527 SIGNAL(showIncidenceSignal(Incidence *))); 526 SIGNAL(showIncidenceSignal(Incidence *)));
528 connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)), 527 connect(mAllDayAgenda,SIGNAL(showIncidenceSignal(Incidence *)),
529 SIGNAL(showIncidenceSignal(Incidence *))); 528 SIGNAL(showIncidenceSignal(Incidence *)));
530 connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), 529 connect(mAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)),
531 SIGNAL(deleteIncidenceSignal(Incidence *))); 530 SIGNAL(deleteIncidenceSignal(Incidence *)));
532 connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)), 531 connect(mAllDayAgenda,SIGNAL(deleteIncidenceSignal(Incidence *)),
533 SIGNAL(deleteIncidenceSignal(Incidence *))); 532 SIGNAL(deleteIncidenceSignal(Incidence *)));
534 533
535 connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), 534 connect(mAgenda,SIGNAL(itemModified(KOAgendaItem *, int )),
536 SLOT(updateEventDates(KOAgendaItem *, int ))); 535 SLOT(updateEventDates(KOAgendaItem *, int )));
537 connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )), 536 connect(mAllDayAgenda,SIGNAL(itemModified(KOAgendaItem *, int )),
538 SLOT(updateEventDates(KOAgendaItem *, int))); 537 SLOT(updateEventDates(KOAgendaItem *, int)));
539 538
540 // event indicator update 539 // event indicator update
541 connect(mAgenda,SIGNAL(lowerYChanged(int)), 540 connect(mAgenda,SIGNAL(lowerYChanged(int)),
542 SLOT(updateEventIndicatorTop(int))); 541 SLOT(updateEventIndicatorTop(int)));
543 connect(mAgenda,SIGNAL(upperYChanged(int)), 542 connect(mAgenda,SIGNAL(upperYChanged(int)),
544 SLOT(updateEventIndicatorBottom(int))); 543 SLOT(updateEventIndicatorBottom(int)));
545 // drag signals 544 // drag signals
546 /* 545 /*
547 connect(mAgenda,SIGNAL(startDragSignal(Event *)), 546 connect(mAgenda,SIGNAL(startDragSignal(Event *)),
548 SLOT(startDrag(Event *))); 547 SLOT(startDrag(Event *)));
549 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)), 548 connect(mAllDayAgenda,SIGNAL(startDragSignal(Event *)),
550 SLOT(startDrag(Event *))); 549 SLOT(startDrag(Event *)));
551 */ 550 */
552 // synchronize selections 551 // synchronize selections
553 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 552 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
554 mAllDayAgenda, SLOT( deselectItem() ) ); 553 mAllDayAgenda, SLOT( deselectItem() ) );
555 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 554 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
556 mAgenda, SLOT( deselectItem() ) ); 555 mAgenda, SLOT( deselectItem() ) );
557 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 556 connect( mAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
558 SIGNAL( incidenceSelected( Incidence * ) ) ); 557 SIGNAL( incidenceSelected( Incidence * ) ) );
559 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ), 558 connect( mAllDayAgenda, SIGNAL( incidenceSelected( Incidence * ) ),
560 SIGNAL( incidenceSelected( Incidence * ) ) ); 559 SIGNAL( incidenceSelected( Incidence * ) ) );
561 connect( mAgenda, SIGNAL( resizedSignal() ), 560 connect( mAgenda, SIGNAL( resizedSignal() ),
562 SLOT( updateConfig( ) ) ); 561 SLOT( updateConfig( ) ) );
563 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ), 562 connect( mAgenda, SIGNAL( addToCalSignal(Incidence *, Incidence *) ),
564 SLOT( addToCalSlot(Incidence *, Incidence * ) ) ); 563 SLOT( addToCalSlot(Incidence *, Incidence * ) ) );
565 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ), 564 connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ),
566 SLOT( addToCalSlot(Incidence * , Incidence *) ) ); 565 SLOT( addToCalSlot(Incidence * , Incidence *) ) );
567 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 566 // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
568 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); 567 //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) );
569 568
570 569
571} 570}
572 571
573void KOAgendaView::toggleAllDay() 572void KOAgendaView::toggleAllDay()
574{ 573{
575 if ( mSplitterAgenda->firstHandle() ) 574 if ( mSplitterAgenda->firstHandle() )
576 mSplitterAgenda->firstHandle()->toggle(); 575 mSplitterAgenda->firstHandle()->toggle();
577} 576}
578void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld ) 577void KOAgendaView::addToCalSlot(Incidence * inc, Incidence * incOld )
579{ 578{
580 calendar()->addIncidence( inc ); 579 calendar()->addIncidence( inc );
581 580
582 if ( incOld ) { 581 if ( incOld ) {
583 if ( incOld->type() == "Todo" ) 582 if ( incOld->type() == "Todo" )
584 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED ); 583 emit todoMoved((Todo*)incOld, KOGlobals::EVENTEDITED );
585 else 584 else
586 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED); 585 emit incidenceChanged(incOld, KOGlobals::EVENTEDITED);
587 } 586 }
588 587
589} 588}
590 589
591KOAgendaView::~KOAgendaView() 590KOAgendaView::~KOAgendaView()
592{ 591{
593 delete mAllAgendaPopup; 592 delete mAllAgendaPopup;
594 //delete mAllDayAgendaPopup; 593 //delete mAllDayAgendaPopup;
595 delete KOAgendaItem::paintPix(); 594 delete KOAgendaItem::paintPix();
596 delete KOAgendaItem::paintPixSel(); 595 delete KOAgendaItem::paintPixSel();
597} 596}