summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-05 14:55:14 (UTC)
committer zautrix <zautrix>2005-01-05 14:55:14 (UTC)
commit71017beb975666a0f654898ed6a40a5303d567dc (patch) (unidiff)
tree39f3c0e3c890ee90806e93d9ce9bd9024be11d55
parentdf0200487afbfa59b80a79e548d70b5203019003 (diff)
downloadkdepimpi-71017beb975666a0f654898ed6a40a5303d567dc.zip
kdepimpi-71017beb975666a0f654898ed6a40a5303d567dc.tar.gz
kdepimpi-71017beb975666a0f654898ed6a40a5303d567dc.tar.bz2
minor fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt1
-rw-r--r--korganizer/koagenda.cpp5
2 files changed, 6 insertions, 0 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index bfe87f0..1a8b885 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,201 +1,202 @@
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 1.9.16 ************ 3********** VERSION 1.9.16 ************
4 4
5KO/Pi: 5KO/Pi:
6Fixed search dialog size on Z 6000 (480x640 display). 6Fixed search dialog size on Z 6000 (480x640 display).
7Added setting to hide/show time in agenda items. 7Added setting to hide/show time in agenda items.
8Added setting to hide not running todos in todo view. 8Added setting to hide not running todos in todo view.
9Added columns for start date/time in todo view. 9Added columns for start date/time in todo view.
10Replaced the solid half-hour lines in agenda view by dot lines.
10 11
11********** VERSION 1.9.15 ************ 12********** VERSION 1.9.15 ************
12 13
13Usebilty enhancements in KO/Pi: 14Usebilty enhancements in KO/Pi:
14When clicking on the date in a month view cell, the day view is shown. 15When clicking on the date in a month view cell, the day view is shown.
15Old behaviour was, that the "new event" dialog popped up. 16Old behaviour was, that the "new event" dialog popped up.
16 17
17Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 18Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
18That means, you can restore the latest 19That means, you can restore the latest
19event/todo/journal you have deleted. 20event/todo/journal you have deleted.
20A journal is deleted, if you clear all the text of the journal. 21A journal is deleted, if you clear all the text of the journal.
21 22
22Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 23Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
23 24
24KA/Pi starting in 480x640 resolution: 25KA/Pi starting in 480x640 resolution:
25Hide the filter action in toolbar 26Hide the filter action in toolbar
26and added icons for undo/delete/redo in toolbar. 27and added icons for undo/delete/redo in toolbar.
27 28
28Change in OM/Pi ViewMail dialog: 29Change in OM/Pi ViewMail dialog:
29When clicking on the "delete" icon the mail is deleted after confirmation as usual. But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 30When clicking on the "delete" icon the mail is deleted after confirmation as usual. But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
30 31
31Fixed a crash when deleting mail-accounts in OM/Pi. 32Fixed a crash when deleting mail-accounts in OM/Pi.
32 33
33 34
34********** VERSION 1.9.14 ************ 35********** VERSION 1.9.14 ************
35 36
36Fixed some problems with the dialog sizes when switching 37Fixed some problems with the dialog sizes when switching
37portrait/landscape mode on 640x480 PDA display. 38portrait/landscape mode on 640x480 PDA display.
38 39
39Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 40Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
40 41
41Fixed an ugly bug in KOpieMail: 42Fixed an ugly bug in KOpieMail:
42KOpieMail was not able to write files (mails) to MSDOS file system, 43KOpieMail was not able to write files (mails) to MSDOS file system,
43like on an usual preformatted SD card. That should work now. 44like on an usual preformatted SD card. That should work now.
44To save your mail data on the Sd card do the following: 45To save your mail data on the Sd card do the following:
45Create a dir on the SD card: 46Create a dir on the SD card:
46mkdir /mnt/card/localmail 47mkdir /mnt/card/localmail
47Go to your home dir: 48Go to your home dir:
48cd 49cd
49Go to kopiemail data storage dir: 50Go to kopiemail data storage dir:
50cd kdepim/apps/kopiemail 51cd kdepim/apps/kopiemail
51Create a symlink to the SD card: 52Create a symlink to the SD card:
52ls -s /mnt/card/localmail 53ls -s /mnt/card/localmail
53Now KOpieMail will store all mails on the SD card. 54Now KOpieMail will store all mails on the SD card.
54 55
55KO/Pi Monthview: 56KO/Pi Monthview:
56Now "Go to Today" selects the current month from day 1-end, 57Now "Go to Today" selects the current month from day 1-end,
57not the current date + some days. 58not the current date + some days.
58I.e. "Go to Today" shows now always 59I.e. "Go to Today" shows now always
59the current month with first day of month in the first row. 60the current month with first day of month in the first row.
60 61
61Added missing German translation. 62Added missing German translation.
62 63
63Fixed icons of executeable on Wintendo. 64Fixed icons of executeable on Wintendo.
64 65
65Added a "Show next Mail" button to the OM/Pi 66Added a "Show next Mail" button to the OM/Pi
66mail viewer such that the mail below the current mail 67mail viewer such that the mail below the current mail
67in the mail list view of the current folder 68in the mail list view of the current folder
68can be read with a single click. 69can be read with a single click.
69 70
70 71
71********** VERSION 1.9.13 ************ 72********** VERSION 1.9.13 ************
72 73
73Fixed nasty PwM/Pi file reading bug, when 74Fixed nasty PwM/Pi file reading bug, when
74the used hash algo of file is different then the global 75the used hash algo of file is different then the global
75hash algo. 76hash algo.
76 77
77Added KA/Pi support for opie mailit mailapplication. 78Added KA/Pi support for opie mailit mailapplication.
78 79
79Fixed some bugs in OM/Pi. 80Fixed some bugs in OM/Pi.
80Now character conversion tables are available for the Zaurus 81Now character conversion tables are available for the Zaurus
81to make OM/Pi working properly. 82to make OM/Pi working properly.
82To get the character conversion in OM/Pi working, please download 83To get the character conversion in OM/Pi working, please download
83at the sourceforge project site the package 84at the sourceforge project site the package
84sr-character-conversion_SharpROM_arm.ipk.zip 85sr-character-conversion_SharpROM_arm.ipk.zip
85(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 86(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
86from the section "general files for KDE/Pim" 87from the section "general files for KDE/Pim"
87Instructions how to install this package are in a ReadMe in this file. 88Instructions how to install this package are in a ReadMe in this file.
88 89
89 90
90Fixed the orientation change problem in KA/Pi when switching 91Fixed the orientation change problem in KA/Pi when switching
91portrait/landscape mode. 92portrait/landscape mode.
92 93
93French translation available for KA/Pi and OM/Pi. 94French translation available for KA/Pi and OM/Pi.
94 95
95Fixed some problems with categories in KO/Pi in DTM sync. 96Fixed some problems with categories in KO/Pi in DTM sync.
96 97
97Added selection dialog for export to phone in KA/Pi. 98Added selection dialog for export to phone in KA/Pi.
98 99
99If in KO/Pi is an attendee selected to add to a meeting and this 100If in KO/Pi is an attendee selected to add to a meeting and this
100attendee is already in the list of attendees, this person is not added 101attendee is already in the list of attendees, this person is not added
101again. 102again.
102 103
103Some menu cleanup in KA/Pi. 104Some menu cleanup in KA/Pi.
104 105
105********** VERSION 1.9.12 ************ 106********** VERSION 1.9.12 ************
106 107
107Fix for the bug in KO/Pi What's Next view of version 1.9.11. 108Fix for the bug in KO/Pi What's Next view of version 1.9.11.
108 109
109Bugfix: Licence file is now shown again. 110Bugfix: Licence file is now shown again.
110 111
111OM/Pi now supports Unicode (utf8 charset). 112OM/Pi now supports Unicode (utf8 charset).
112Fixed some bugs in OM/Pi. 113Fixed some bugs in OM/Pi.
113 114
114KA/Pi has more German translation. 115KA/Pi has more German translation.
115 116
116 117
117********** VERSION 1.9.11 ************ 118********** VERSION 1.9.11 ************
118 119
119Fixed several problems in PWM/Pi, like 120Fixed several problems in PWM/Pi, like
120asking the user, if unsaved changed are pending 121asking the user, if unsaved changed are pending
121when closing the app. 122when closing the app.
122And PwM/Pi handles now different texts for the 123And PwM/Pi handles now different texts for the
123fields Description, Username, Password, configurable per category. 124fields Description, Username, Password, configurable per category.
124 125
125Fixed a crash in KO/Pi , when importing/loading vcs files 126Fixed a crash in KO/Pi , when importing/loading vcs files
126which have an entry with an attendee with state: 127which have an entry with an attendee with state:
127NEEDS ACTION 128NEEDS ACTION
128 129
129Fixed some problems in the German translation of OM/Pi, 130Fixed some problems in the German translation of OM/Pi,
130which makes some dialogs not fitting on the screen 131which makes some dialogs not fitting on the screen
131of the Z 5500. 132of the Z 5500.
132 133
133Fixed Qtopia crash, when disabling/deinstalling 134Fixed Qtopia crash, when disabling/deinstalling
134KO/Pi alarm applet. 135KO/Pi alarm applet.
135 136
136Implemented direct KDE<->KA/Pi sync for KA/Pi running 137Implemented direct KDE<->KA/Pi sync for KA/Pi running
137on Linux desktop. 138on Linux desktop.
138 139
139Added feature "remove sync info" to sync menu. 140Added feature "remove sync info" to sync menu.
140 141
141Tweaked the KO/Pi What's next view a bit, added 142Tweaked the KO/Pi What's next view a bit, added
142setting to hide events that are done. 143setting to hide events that are done.
143 144
144Disabled "beam receive enabled" on startup to 145Disabled "beam receive enabled" on startup to
145avoid problems if Fastload is enabled. 146avoid problems if Fastload is enabled.
146Please set "beam receive enabled", 147Please set "beam receive enabled",
147if you want to receive data via IR. 148if you want to receive data via IR.
148 149
149Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 150Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
150on Linux desktop. 151on Linux desktop.
151 152
152Made in KA/Pi scrolling possible, if details view is selected. 153Made in KA/Pi scrolling possible, if details view is selected.
153(The keyboard focus is set automatically to the search line) 154(The keyboard focus is set automatically to the search line)
154 155
155Fixed a bug in DMT sync, that a new entry in DTM was added 156Fixed a bug in DMT sync, that a new entry in DTM was added
156on every sync to Kx/Pi. 157on every sync to Kx/Pi.
157 158
158Fixed missing writing of KA/Pi categories to DMT entries when syncing. 159Fixed missing writing of KA/Pi categories to DMT entries when syncing.
159 160
160Fixed a bug in DMT sync with todos created in KO/Pi containing 161Fixed a bug in DMT sync with todos created in KO/Pi containing
161non-latin1 characters. 162non-latin1 characters.
162 163
163Rearranged package contents of Sharp-ipks and made all 164Rearranged package contents of Sharp-ipks and made all
164packages installable on SD again. 165packages installable on SD again.
165 166
166Fixed the writing of addressbook data in DTM sync. 167Fixed the writing of addressbook data in DTM sync.
167Empty fields in KA/Pi were not removed. 168Empty fields in KA/Pi were not removed.
168 169
169Added better category handling in KA/Pi: 170Added better category handling in KA/Pi:
170Added item 171Added item
171Edit Categories and 172Edit Categories and
172Manage new categories 173Manage new categories
173to the settings menu. 174to the settings menu.
174Possible to configure a view to display categories. 175Possible to configure a view to display categories.
175 176
176Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 177Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
177 178
178Fixed displaying of "free" days and time in KO Monthview and Agendaview. 179Fixed displaying of "free" days and time in KO Monthview and Agendaview.
179 180
180... and many other bugfixes. 181... and many other bugfixes.
181 182
182********** VERSION 1.9.10 ************ 183********** VERSION 1.9.10 ************
183 184
184Many internal small bugfixes. 185Many internal small bugfixes.
185And fix of the "big" bug in KO/Pi, 186And fix of the "big" bug in KO/Pi,
186that after Syncing the appointments had an offset by several hours. 187that after Syncing the appointments had an offset by several hours.
187That was a problem with the internal timezone setting, 188That was a problem with the internal timezone setting,
188introduced by the changed timezone configuration settings. 189introduced by the changed timezone configuration settings.
189 190
190German translation for OM/Pi is now available. 191German translation for OM/Pi is now available.
191 192
192 193
193********** VERSION 1.9.9 ************ 194********** VERSION 1.9.9 ************
194 195
195KDE-Pim/Pi has a new Member! 196KDE-Pim/Pi has a new Member!
196It is called PWM/Pi (Passwordmanager/platform-independent) 197It is called PWM/Pi (Passwordmanager/platform-independent)
197and it is available for the Zaurus. 198and it is available for the Zaurus.
198It is planned, that it will be available later for Windows. 199It is planned, that it will be available later for Windows.
199(And for Linux, of course). 200(And for Linux, of course).
200It is a port of the Passwordmanager of KDE. 201It is a port of the Passwordmanager of KDE.
201It will need the MicroKDElibs to run. 202It will need the MicroKDElibs to run.
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index 6532705..eb3791e 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -1050,387 +1050,392 @@ void KOAgenda::drawContents(QPainter* p, int cx, int cy, int cw, int ch)
1050{ 1050{
1051 if ( globalFlagBlockAgenda ) 1051 if ( globalFlagBlockAgenda )
1052 return; 1052 return;
1053 //qDebug("KOAgenda::drawContents "); 1053 //qDebug("KOAgenda::drawContents ");
1054 if ( mCurPixWid != contentsWidth() || mCurPixHei != contentsHeight() ) 1054 if ( mCurPixWid != contentsWidth() || mCurPixHei != contentsHeight() )
1055 ;//drawContentsToPainter(); 1055 ;//drawContentsToPainter();
1056 1056
1057 QPaintDevice* pd = p->device(); 1057 QPaintDevice* pd = p->device();
1058 p->end(); 1058 p->end();
1059 int vx, vy; 1059 int vx, vy;
1060 int selectionX = KOGlobals::self()->reverseLayout() ? 1060 int selectionX = KOGlobals::self()->reverseLayout() ?
1061 (mColumns - 1 - mSelectionCellX) * mGridSpacingX : 1061 (mColumns - 1 - mSelectionCellX) * mGridSpacingX :
1062 mSelectionCellX * mGridSpacingX; 1062 mSelectionCellX * mGridSpacingX;
1063 contentsToViewport ( cx, cy, vx,vy); 1063 contentsToViewport ( cx, cy, vx,vy);
1064 // qDebug(" %d %d %d %d ", cx, cy, cw,ch) ; 1064 // qDebug(" %d %d %d %d ", cx, cy, cw,ch) ;
1065 if ( !(selectionX == cx && cy == mSelectionYTop && cw ==mGridSpacingX && ch == mSelectionHeight ) ) 1065 if ( !(selectionX == cx && cy == mSelectionYTop && cw ==mGridSpacingX && ch == mSelectionHeight ) )
1066 bitBlt ( pd, vx, vy, &mPaintPixmap, cx, cy, cw, ch ,CopyROP); 1066 bitBlt ( pd, vx, vy, &mPaintPixmap, cx, cy, cw, ch ,CopyROP);
1067 1067
1068 if ( mSelectionHeight > 0 ) { 1068 if ( mSelectionHeight > 0 ) {
1069 //qDebug("---- %d %d %d %d ", selectionX, mSelectionYTop, mGridSpacingX, mSelectionHeight ); 1069 //qDebug("---- %d %d %d %d ", selectionX, mSelectionYTop, mGridSpacingX, mSelectionHeight );
1070 if ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) && 1070 if ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) &&
1071 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) { 1071 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) {
1072 contentsToViewport ( selectionX, mSelectionYTop, vx,vy); 1072 contentsToViewport ( selectionX, mSelectionYTop, vx,vy);
1073 bitBlt ( pd, vx+1, vy, &mHighlightPixmap, 0, mSelectionYTop, mGridSpacingX-1, mSelectionHeight ,CopyROP); 1073 bitBlt ( pd, vx+1, vy, &mHighlightPixmap, 0, mSelectionYTop, mGridSpacingX-1, mSelectionHeight ,CopyROP);
1074 } 1074 }
1075 } 1075 }
1076 //qDebug("btbl "); 1076 //qDebug("btbl ");
1077 p->begin( pd ); 1077 p->begin( pd );
1078 //qDebug("end "); 1078 //qDebug("end ");
1079} 1079}
1080 1080
1081void KOAgenda::finishUpdate() 1081void KOAgenda::finishUpdate()
1082{ 1082{
1083 1083
1084 KOAgendaItem *item; 1084 KOAgendaItem *item;
1085 globalFlagBlockAgendaItemPaint = 1; 1085 globalFlagBlockAgendaItemPaint = 1;
1086 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1086 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1087 if ( !item->isVisible() ) 1087 if ( !item->isVisible() )
1088 item->show(); 1088 item->show();
1089 1089
1090 } 1090 }
1091 globalFlagBlockAgendaItemUpdate = 0; 1091 globalFlagBlockAgendaItemUpdate = 0;
1092 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1092 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1093 item->repaintMe( ); 1093 item->repaintMe( );
1094 } 1094 }
1095 globalFlagBlockAgendaItemUpdate = 1; 1095 globalFlagBlockAgendaItemUpdate = 1;
1096 qApp->processEvents(); 1096 qApp->processEvents();
1097 globalFlagBlockAgendaItemPaint = 0; 1097 globalFlagBlockAgendaItemPaint = 0;
1098 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1098 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1099 item->repaint( false ); 1099 item->repaint( false );
1100 } 1100 }
1101 1101
1102} 1102}
1103 1103
1104/* 1104/*
1105 Draw grid in the background of the agenda. 1105 Draw grid in the background of the agenda.
1106*/ 1106*/
1107void KOAgenda::drawContentsToPainter( QPainter* paint, bool backgroundOnly )// int cx, int cy, int cw, int ch) 1107void KOAgenda::drawContentsToPainter( QPainter* paint, bool backgroundOnly )// int cx, int cy, int cw, int ch)
1108{ 1108{
1109 1109
1110 1110
1111 if ( ! mGridSpacingX || ! mGridSpacingY ||! mHolidayMask ) 1111 if ( ! mGridSpacingX || ! mGridSpacingY ||! mHolidayMask )
1112 return; 1112 return;
1113 if ( globalFlagBlockAgenda > 1 && globalFlagBlockAgenda < 4 ) 1113 if ( globalFlagBlockAgenda > 1 && globalFlagBlockAgenda < 4 )
1114 return; 1114 return;
1115 int cx = 0, cy = 0, cw = contentsWidth(), ch = contentsHeight(); 1115 int cx = 0, cy = 0, cw = contentsWidth(), ch = contentsHeight();
1116 if ( ch < 1 ) 1116 if ( ch < 1 )
1117 ch = 1; 1117 ch = 1;
1118 if ( mPaintPixmap.width() < contentsWidth()+42 || mPaintPixmap.height() < ch ) { 1118 if ( mPaintPixmap.width() < contentsWidth()+42 || mPaintPixmap.height() < ch ) {
1119 mPaintPixmap.resize( contentsWidth()+42, ch ); 1119 mPaintPixmap.resize( contentsWidth()+42, ch );
1120 } 1120 }
1121 mCurPixWid = contentsWidth(); 1121 mCurPixWid = contentsWidth();
1122 mCurPixHei = ch; 1122 mCurPixHei = ch;
1123 if ( mHighlightPixmap.width() < mGridSpacingX-1 || mHighlightPixmap.height() < ch ) { 1123 if ( mHighlightPixmap.width() < mGridSpacingX-1 || mHighlightPixmap.height() < ch ) {
1124 mHighlightPixmap.resize( mGridSpacingX-1, ch ); 1124 mHighlightPixmap.resize( mGridSpacingX-1, ch );
1125 mHighlightPixmap.fill ( KOPrefs::instance()->mHighlightColor ); 1125 mHighlightPixmap.fill ( KOPrefs::instance()->mHighlightColor );
1126 } 1126 }
1127 mPixPainter.begin( &mPaintPixmap) ; 1127 mPixPainter.begin( &mPaintPixmap) ;
1128 //qDebug("wid %d hei %d ",mPaintPixmap.width(),mPaintPixmap.height() ); 1128 //qDebug("wid %d hei %d ",mPaintPixmap.width(),mPaintPixmap.height() );
1129 QPainter * p ; 1129 QPainter * p ;
1130 if (paint == 0) { 1130 if (paint == 0) {
1131 mPaintPixmap.fill(KOPrefs::instance()->mAgendaBgColor); 1131 mPaintPixmap.fill(KOPrefs::instance()->mAgendaBgColor);
1132 p = &mPixPainter; 1132 p = &mPixPainter;
1133 } 1133 }
1134 else 1134 else
1135 p = paint ; 1135 p = paint ;
1136 // qDebug("++++++KOAgenda::drawContentsTo Painter %d %d %d %d ", cx, cy, cw, ch); 1136 // qDebug("++++++KOAgenda::drawContentsTo Painter %d %d %d %d ", cx, cy, cw, ch);
1137 1137
1138 //--cx;++cw; 1138 //--cx;++cw;
1139 int lGridSpacingY = mGridSpacingY*2; 1139 int lGridSpacingY = mGridSpacingY*2;
1140 int selDay; 1140 int selDay;
1141 if ( !backgroundOnly ) 1141 if ( !backgroundOnly )
1142 for ( selDay = 0; selDay < mSelectedDates.count(); ++selDay) 1142 for ( selDay = 0; selDay < mSelectedDates.count(); ++selDay)
1143 { 1143 {
1144 if ( mSelectedDates[selDay] == QDateTime::currentDateTime ().date() && KOPrefs::instance()->mHighlightCurrentDay) { 1144 if ( mSelectedDates[selDay] == QDateTime::currentDateTime ().date() && KOPrefs::instance()->mHighlightCurrentDay) {
1145 int x1 = cx; 1145 int x1 = cx;
1146 int y1 = 0; 1146 int y1 = 0;
1147 if (y1 < cy) y1 = cy; 1147 if (y1 < cy) y1 = cy;
1148 int x2 = cx+cw-1; 1148 int x2 = cx+cw-1;
1149 int y2 = contentsHeight(); 1149 int y2 = contentsHeight();
1150 if (y2 > cy+ch-1) y2=cy+ch-1; 1150 if (y2 > cy+ch-1) y2=cy+ch-1;
1151 if (x2 >= x1 && y2 >= y1) { 1151 if (x2 >= x1 && y2 >= y1) {
1152 int gxStart = selDay; 1152 int gxStart = selDay;
1153 int gxEnd = gxStart ; 1153 int gxEnd = gxStart ;
1154 int xStart = KOGlobals::self()->reverseLayout() ? 1154 int xStart = KOGlobals::self()->reverseLayout() ?
1155 (mColumns - 1 - gxStart)*mGridSpacingX : 1155 (mColumns - 1 - gxStart)*mGridSpacingX :
1156 gxStart*mGridSpacingX; 1156 gxStart*mGridSpacingX;
1157 if (xStart < x1) xStart = x1; 1157 if (xStart < x1) xStart = x1;
1158 int xEnd = KOGlobals::self()->reverseLayout() ? 1158 int xEnd = KOGlobals::self()->reverseLayout() ?
1159 (mColumns - gxStart)*mGridSpacingX-1 : 1159 (mColumns - gxStart)*mGridSpacingX-1 :
1160 (gxStart+1)*mGridSpacingX-1; 1160 (gxStart+1)*mGridSpacingX-1;
1161 if (xEnd > x2) xEnd = x2; 1161 if (xEnd > x2) xEnd = x2;
1162 if ( KOPrefs::instance()->mUseHighlightLightColor ) 1162 if ( KOPrefs::instance()->mUseHighlightLightColor )
1163 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1, 1163 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1,
1164 KOPrefs::instance()->mAgendaBgColor.light()); 1164 KOPrefs::instance()->mAgendaBgColor.light());
1165 else 1165 else
1166 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1, 1166 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1,
1167 KOPrefs::instance()->mAgendaBgColor.dark()); 1167 KOPrefs::instance()->mAgendaBgColor.dark());
1168 1168
1169 } 1169 }
1170 } 1170 }
1171 } 1171 }
1172 // Highlight working hours 1172 // Highlight working hours
1173 1173
1174 if ( !backgroundOnly ) 1174 if ( !backgroundOnly )
1175 if (mWorkingHoursEnable) { 1175 if (mWorkingHoursEnable) {
1176 int x1 = cx; 1176 int x1 = cx;
1177 int y1 = mWorkingHoursYTop; 1177 int y1 = mWorkingHoursYTop;
1178 if (y1 < cy) y1 = cy; 1178 if (y1 < cy) y1 = cy;
1179 int x2 = cx+cw-1; 1179 int x2 = cx+cw-1;
1180 // int x2 = mGridSpacingX * 5 - 1; 1180 // int x2 = mGridSpacingX * 5 - 1;
1181 // if (x2 > cx+cw-1) x2 = cx + cw - 1; 1181 // if (x2 > cx+cw-1) x2 = cx + cw - 1;
1182 int y2 = mWorkingHoursYBottom; 1182 int y2 = mWorkingHoursYBottom;
1183 if (y2 > cy+ch-1) y2=cy+ch-1; 1183 if (y2 > cy+ch-1) y2=cy+ch-1;
1184 1184
1185 if (x2 >= x1 && y2 >= y1) { 1185 if (x2 >= x1 && y2 >= y1) {
1186 // qDebug("x1 %d mGridSpacingX %d ", x1, mGridSpacingX ); 1186 // qDebug("x1 %d mGridSpacingX %d ", x1, mGridSpacingX );
1187 int gxStart = x1/mGridSpacingX; 1187 int gxStart = x1/mGridSpacingX;
1188 int gxEnd = x2/mGridSpacingX; 1188 int gxEnd = x2/mGridSpacingX;
1189 while(gxStart <= gxEnd) { 1189 while(gxStart <= gxEnd) {
1190 if (gxStart < int(mHolidayMask->count()) && 1190 if (gxStart < int(mHolidayMask->count()) &&
1191 !mHolidayMask->at(gxStart)) { 1191 !mHolidayMask->at(gxStart)) {
1192 int xStart = KOGlobals::self()->reverseLayout() ? 1192 int xStart = KOGlobals::self()->reverseLayout() ?
1193 (mColumns - 1 - gxStart)*mGridSpacingX : 1193 (mColumns - 1 - gxStart)*mGridSpacingX :
1194 gxStart*mGridSpacingX; 1194 gxStart*mGridSpacingX;
1195 if (xStart < x1) xStart = x1; 1195 if (xStart < x1) xStart = x1;
1196 int xEnd = KOGlobals::self()->reverseLayout() ? 1196 int xEnd = KOGlobals::self()->reverseLayout() ?
1197 (mColumns - gxStart)*mGridSpacingX-1 : 1197 (mColumns - gxStart)*mGridSpacingX-1 :
1198 (gxStart+1)*mGridSpacingX-1; 1198 (gxStart+1)*mGridSpacingX-1;
1199 if (xEnd > x2) xEnd = x2; 1199 if (xEnd > x2) xEnd = x2;
1200 if ( mSelectedDates[gxStart] == QDateTime::currentDateTime ().date()&& KOPrefs::instance()->mHighlightCurrentDay ) { 1200 if ( mSelectedDates[gxStart] == QDateTime::currentDateTime ().date()&& KOPrefs::instance()->mHighlightCurrentDay ) {
1201 if ( KOPrefs::instance()->mUseHighlightLightColor ) 1201 if ( KOPrefs::instance()->mUseHighlightLightColor )
1202 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1, 1202 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1,
1203 KOPrefs::instance()->mWorkingHoursColor.light()); 1203 KOPrefs::instance()->mWorkingHoursColor.light());
1204 else 1204 else
1205 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1, 1205 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1,
1206 KOPrefs::instance()->mWorkingHoursColor.dark()); 1206 KOPrefs::instance()->mWorkingHoursColor.dark());
1207 } else { 1207 } else {
1208 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1, 1208 p->fillRect(xStart,y1,xEnd-xStart+1,y2-y1+1,
1209 KOPrefs::instance()->mWorkingHoursColor); 1209 KOPrefs::instance()->mWorkingHoursColor);
1210 } 1210 }
1211 } 1211 }
1212 ++gxStart; 1212 ++gxStart;
1213 } 1213 }
1214 } 1214 }
1215 } 1215 }
1216 /* 1216 /*
1217 int selectionX = KOGlobals::self()->reverseLayout() ? 1217 int selectionX = KOGlobals::self()->reverseLayout() ?
1218 (mColumns - 1 - mSelectionCellX) * mGridSpacingX : 1218 (mColumns - 1 - mSelectionCellX) * mGridSpacingX :
1219 mSelectionCellX * mGridSpacingX; 1219 mSelectionCellX * mGridSpacingX;
1220 1220
1221 // Draw selection 1221 // Draw selection
1222 if ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) && 1222 if ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) &&
1223 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) { 1223 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) {
1224 // TODO: paint only part within cx,cy,cw,ch 1224 // TODO: paint only part within cx,cy,cw,ch
1225 p->fillRect( selectionX, mSelectionYTop, mGridSpacingX, 1225 p->fillRect( selectionX, mSelectionYTop, mGridSpacingX,
1226 mSelectionHeight, KOPrefs::instance()->mHighlightColor ); 1226 mSelectionHeight, KOPrefs::instance()->mHighlightColor );
1227 } 1227 }
1228 */ 1228 */
1229 // Draw vertical lines of grid 1229 // Draw vertical lines of grid
1230 1230
1231 int x = ((int)(cx/mGridSpacingX))*mGridSpacingX; 1231 int x = ((int)(cx/mGridSpacingX))*mGridSpacingX;
1232 if ( mGridSpacingX > 0 ) { 1232 if ( mGridSpacingX > 0 ) {
1233 while (x < cx + cw) { 1233 while (x < cx + cw) {
1234 p->drawLine(x,cy,x,cy+ch); 1234 p->drawLine(x,cy,x,cy+ch);
1235 x+=mGridSpacingX; 1235 x+=mGridSpacingX;
1236 } 1236 }
1237 } 1237 }
1238 // Draw horizontal lines of grid 1238 // Draw horizontal lines of grid
1239 int y = ((int)(cy/lGridSpacingY))*lGridSpacingY; 1239 int y = ((int)(cy/lGridSpacingY))*lGridSpacingY;
1240 if ( lGridSpacingY > 0 ) { 1240 if ( lGridSpacingY > 0 ) {
1241 while (y < cy + ch) { 1241 while (y < cy + ch) {
1242 p->setPen( SolidLine );
1243 p->drawLine(cx,y,cx+cw,y);
1244 y+=lGridSpacingY;
1245 p->setPen( DotLine );
1242 p->drawLine(cx,y,cx+cw,y); 1246 p->drawLine(cx,y,cx+cw,y);
1243 y+=lGridSpacingY; 1247 y+=lGridSpacingY;
1244 } 1248 }
1249 p->setPen( SolidLine );
1245 } 1250 }
1246 mPixPainter.end() ; 1251 mPixPainter.end() ;
1247} 1252}
1248 1253
1249/* 1254/*
1250 Convert srcollview contents coordinates to agenda grid coordinates. 1255 Convert srcollview contents coordinates to agenda grid coordinates.
1251*/ 1256*/
1252void KOAgenda::contentsToGrid (int x, int y, int& gx, int& gy) 1257void KOAgenda::contentsToGrid (int x, int y, int& gx, int& gy)
1253{ 1258{
1254 gx = KOGlobals::self()->reverseLayout() ? mColumns - 1 - x/mGridSpacingX : 1259 gx = KOGlobals::self()->reverseLayout() ? mColumns - 1 - x/mGridSpacingX :
1255 x/mGridSpacingX; 1260 x/mGridSpacingX;
1256 gy = y/mGridSpacingY; 1261 gy = y/mGridSpacingY;
1257} 1262}
1258 1263
1259/* 1264/*
1260 Convert agenda grid coordinates to scrollview contents coordinates. 1265 Convert agenda grid coordinates to scrollview contents coordinates.
1261*/ 1266*/
1262void KOAgenda::gridToContents (int gx, int gy, int& x, int& y) 1267void KOAgenda::gridToContents (int gx, int gy, int& x, int& y)
1263{ 1268{
1264 x = KOGlobals::self()->reverseLayout() ? (mColumns - 1 - gx)*mGridSpacingX: 1269 x = KOGlobals::self()->reverseLayout() ? (mColumns - 1 - gx)*mGridSpacingX:
1265 gx*mGridSpacingX; 1270 gx*mGridSpacingX;
1266 y = gy*mGridSpacingY; 1271 y = gy*mGridSpacingY;
1267} 1272}
1268 1273
1269 1274
1270/* 1275/*
1271 Return Y coordinate corresponding to time. Coordinates are rounded to fit into 1276 Return Y coordinate corresponding to time. Coordinates are rounded to fit into
1272 the grid. 1277 the grid.
1273*/ 1278*/
1274int KOAgenda::timeToY(const QTime &time) 1279int KOAgenda::timeToY(const QTime &time)
1275{ 1280{
1276 int minutesPerCell = 24 * 60 / mRows; 1281 int minutesPerCell = 24 * 60 / mRows;
1277 int timeMinutes = time.hour() * 60 + time.minute(); 1282 int timeMinutes = time.hour() * 60 + time.minute();
1278 int Y = (timeMinutes + (minutesPerCell / 2)) / minutesPerCell; 1283 int Y = (timeMinutes + (minutesPerCell / 2)) / minutesPerCell;
1279 return Y; 1284 return Y;
1280} 1285}
1281 1286
1282 1287
1283/* 1288/*
1284 Return time corresponding to cell y coordinate. Coordinates are rounded to 1289 Return time corresponding to cell y coordinate. Coordinates are rounded to
1285 fit into the grid. 1290 fit into the grid.
1286*/ 1291*/
1287QTime KOAgenda::gyToTime(int gy) 1292QTime KOAgenda::gyToTime(int gy)
1288{ 1293{
1289 1294
1290 int secondsPerCell = 24 * 60 * 60/ mRows; 1295 int secondsPerCell = 24 * 60 * 60/ mRows;
1291 1296
1292 int timeSeconds = secondsPerCell * gy; 1297 int timeSeconds = secondsPerCell * gy;
1293 1298
1294 QTime time( 0, 0, 0 ); 1299 QTime time( 0, 0, 0 );
1295 if ( timeSeconds < 24 * 60 * 60 ) { 1300 if ( timeSeconds < 24 * 60 * 60 ) {
1296 time = time.addSecs(timeSeconds); 1301 time = time.addSecs(timeSeconds);
1297 } else { 1302 } else {
1298 time.setHMS( 23, 59, 59 ); 1303 time.setHMS( 23, 59, 59 );
1299 } 1304 }
1300 1305
1301 return time; 1306 return time;
1302} 1307}
1303 1308
1304void KOAgenda::setStartHour(int startHour) 1309void KOAgenda::setStartHour(int startHour)
1305{ 1310{
1306 int startCell = startHour * mRows / 24; 1311 int startCell = startHour * mRows / 24;
1307 setContentsPos(0,startCell * gridSpacingY()); 1312 setContentsPos(0,startCell * gridSpacingY());
1308} 1313}
1309void KOAgenda::hideUnused() 1314void KOAgenda::hideUnused()
1310{ 1315{
1311 // experimental only 1316 // experimental only
1312 // return; 1317 // return;
1313 KOAgendaItem *item; 1318 KOAgendaItem *item;
1314 for ( item=mUnusedItems.first(); item != 0; item=mUnusedItems.next() ) { 1319 for ( item=mUnusedItems.first(); item != 0; item=mUnusedItems.next() ) {
1315 item->hide(); 1320 item->hide();
1316 } 1321 }
1317} 1322}
1318 1323
1319 1324
1320KOAgendaItem *KOAgenda::getNewItem(Incidence * event,QDate qd, QWidget* view) 1325KOAgendaItem *KOAgenda::getNewItem(Incidence * event,QDate qd, QWidget* view)
1321{ 1326{
1322 1327
1323 KOAgendaItem *fi; 1328 KOAgendaItem *fi;
1324 for ( fi=mUnusedItems.first(); fi != 0; fi=mUnusedItems.next() ) { 1329 for ( fi=mUnusedItems.first(); fi != 0; fi=mUnusedItems.next() ) {
1325 if ( fi->incidence() == event ) { 1330 if ( fi->incidence() == event ) {
1326 mUnusedItems.remove(); 1331 mUnusedItems.remove();
1327 fi->init( event, qd ); 1332 fi->init( event, qd );
1328 return fi; 1333 return fi;
1329 } 1334 }
1330 } 1335 }
1331 fi=mUnusedItems.first(); 1336 fi=mUnusedItems.first();
1332 if ( fi ) { 1337 if ( fi ) {
1333 mUnusedItems.remove(); 1338 mUnusedItems.remove();
1334 fi->init( event, qd ); 1339 fi->init( event, qd );
1335 return fi; 1340 return fi;
1336 } 1341 }
1337 // qDebug("new KOAgendaItem "); 1342 // qDebug("new KOAgendaItem ");
1338 1343
1339 KOAgendaItem* agendaItem = new KOAgendaItem( event, qd, view, mAllDayMode ); 1344 KOAgendaItem* agendaItem = new KOAgendaItem( event, qd, view, mAllDayMode );
1340 agendaItem->installEventFilter(this); 1345 agendaItem->installEventFilter(this);
1341 addChild(agendaItem,0,0); 1346 addChild(agendaItem,0,0);
1342 return agendaItem; 1347 return agendaItem;
1343} 1348}
1344KOAgendaItem * KOAgenda::getItemForTodo ( Todo * todo ) 1349KOAgendaItem * KOAgenda::getItemForTodo ( Todo * todo )
1345{ 1350{
1346 KOAgendaItem *item; 1351 KOAgendaItem *item;
1347 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1352 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1348 if ( item->incidence() == todo ) { 1353 if ( item->incidence() == todo ) {
1349 mItems.remove(); 1354 mItems.remove();
1350 return item; 1355 return item;
1351 } 1356 }
1352 } 1357 }
1353 return 0; 1358 return 0;
1354} 1359}
1355 1360
1356 1361
1357void KOAgenda::updateTodo( Todo * todo, int days, bool remove) 1362void KOAgenda::updateTodo( Todo * todo, int days, bool remove)
1358{ 1363{
1359 1364
1360 KOAgendaItem *item; 1365 KOAgendaItem *item;
1361 item = getItemForTodo ( todo ); 1366 item = getItemForTodo ( todo );
1362 //qDebug("KOAgenda::updateTodo %d %d %d %d", this, todo, days, remove); 1367 //qDebug("KOAgenda::updateTodo %d %d %d %d", this, todo, days, remove);
1363 if ( item ) { 1368 if ( item ) {
1364 blockSignals( true ); 1369 blockSignals( true );
1365 //qDebug("item found "); 1370 //qDebug("item found ");
1366 item->hide(); 1371 item->hide();
1367 item->setCellX(-2, -1 ); 1372 item->setCellX(-2, -1 );
1368 item->select(false); 1373 item->select(false);
1369 mUnusedItems.append( item ); 1374 mUnusedItems.append( item );
1370 mItems.remove( item ); 1375 mItems.remove( item );
1371 QPtrList<KOAgendaItem> oldconflictItems = item->conflictItems(); 1376 QPtrList<KOAgendaItem> oldconflictItems = item->conflictItems();
1372 KOAgendaItem *itemit; 1377 KOAgendaItem *itemit;
1373 //globalFlagBlockAgendaItemPaint = 1; 1378 //globalFlagBlockAgendaItemPaint = 1;
1374 for ( itemit=oldconflictItems.first(); itemit != 0; 1379 for ( itemit=oldconflictItems.first(); itemit != 0;
1375 itemit=oldconflictItems.next() ) { 1380 itemit=oldconflictItems.next() ) {
1376 if ( itemit != item ) 1381 if ( itemit != item )
1377 placeSubCells(itemit); 1382 placeSubCells(itemit);
1378 } 1383 }
1379 qApp->processEvents(); 1384 qApp->processEvents();
1380 //globalFlagBlockAgendaItemPaint = 0; 1385 //globalFlagBlockAgendaItemPaint = 0;
1381 for ( itemit=oldconflictItems.first(); itemit != 0; 1386 for ( itemit=oldconflictItems.first(); itemit != 0;
1382 itemit=oldconflictItems.next() ) { 1387 itemit=oldconflictItems.next() ) {
1383 globalFlagBlockAgendaItemUpdate = 0; 1388 globalFlagBlockAgendaItemUpdate = 0;
1384 if ( itemit != item ) 1389 if ( itemit != item )
1385 itemit->repaintMe(); 1390 itemit->repaintMe();
1386 globalFlagBlockAgendaItemUpdate = 1; 1391 globalFlagBlockAgendaItemUpdate = 1;
1387 itemit->repaint(); 1392 itemit->repaint();
1388 } 1393 }
1389 blockSignals( false ); 1394 blockSignals( false );
1390 } 1395 }
1391 if ( remove ) { 1396 if ( remove ) {
1392 //qDebug("remove****************************************** "); 1397 //qDebug("remove****************************************** ");
1393 return; 1398 return;
1394 } 1399 }
1395 //qDebug("updateTodo+++++++++++++++++++++++++++++++++++++ "); 1400 //qDebug("updateTodo+++++++++++++++++++++++++++++++++++++ ");
1396 bool overdue = (!todo->isCompleted()) && (todo->dtDue() < QDate::currentDate())&& ( KOPrefs::instance()->mShowTodoInAgenda ); 1401 bool overdue = (!todo->isCompleted()) && (todo->dtDue() < QDate::currentDate())&& ( KOPrefs::instance()->mShowTodoInAgenda );
1397 QDate currentDate; 1402 QDate currentDate;
1398 if ( overdue ) { 1403 if ( overdue ) {
1399 currentDate = QDate::currentDate(); 1404 currentDate = QDate::currentDate();
1400 days += todo->dtDue().date().daysTo( currentDate ); 1405 days += todo->dtDue().date().daysTo( currentDate );
1401 } 1406 }
1402 else 1407 else
1403 currentDate = todo->dtDue().date(); 1408 currentDate = todo->dtDue().date();
1404 1409
1405 if ( todo->doesFloat() || overdue ) { 1410 if ( todo->doesFloat() || overdue ) {
1406 if ( ! mAllDayMode ) return; 1411 if ( ! mAllDayMode ) return;
1407 // aldayagenda 1412 // aldayagenda
1408 globalFlagBlockAgendaItemPaint = 1; 1413 globalFlagBlockAgendaItemPaint = 1;
1409 item = insertAllDayItem(todo, currentDate,days, days); 1414 item = insertAllDayItem(todo, currentDate,days, days);
1410 item->show(); 1415 item->show();
1411 1416
1412 } 1417 }
1413 else { 1418 else {
1414 if ( mAllDayMode ) return; 1419 if ( mAllDayMode ) return;
1415 // mAgenda 1420 // mAgenda
1416 globalFlagBlockAgendaItemPaint = 1; 1421 globalFlagBlockAgendaItemPaint = 1;
1417 int endY = timeToY(todo->dtDue().time()) - 1; 1422 int endY = timeToY(todo->dtDue().time()) - 1;
1418 int hi = 12/KOPrefs::instance()->mHourSize; 1423 int hi = 12/KOPrefs::instance()->mHourSize;
1419 int startY = endY - 1-hi; 1424 int startY = endY - 1-hi;
1420 item = insertItem(todo,currentDate,days,startY,endY); 1425 item = insertItem(todo,currentDate,days,startY,endY);
1421 item->show(); 1426 item->show();
1422 } 1427 }
1423 qApp->processEvents(); 1428 qApp->processEvents();
1424 globalFlagBlockAgendaItemPaint = 0; 1429 globalFlagBlockAgendaItemPaint = 0;
1425 QPtrList<KOAgendaItem> oldconflictItems = item->conflictItems(); 1430 QPtrList<KOAgendaItem> oldconflictItems = item->conflictItems();
1426 KOAgendaItem *itemit; 1431 KOAgendaItem *itemit;
1427 for ( itemit=oldconflictItems.first(); itemit != 0; 1432 for ( itemit=oldconflictItems.first(); itemit != 0;
1428 itemit=oldconflictItems.next() ) { 1433 itemit=oldconflictItems.next() ) {
1429 globalFlagBlockAgendaItemUpdate = 0; 1434 globalFlagBlockAgendaItemUpdate = 0;
1430 itemit->repaintMe(); 1435 itemit->repaintMe();
1431 globalFlagBlockAgendaItemUpdate = 1; 1436 globalFlagBlockAgendaItemUpdate = 1;
1432 itemit->repaint(); 1437 itemit->repaint();
1433 } 1438 }
1434 globalFlagBlockAgendaItemUpdate = 0; 1439 globalFlagBlockAgendaItemUpdate = 0;
1435 item->repaintMe(); 1440 item->repaintMe();
1436 globalFlagBlockAgendaItemUpdate = 1; 1441 globalFlagBlockAgendaItemUpdate = 1;