summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-15 01:19:32 (UTC)
committer zautrix <zautrix>2005-01-15 01:19:32 (UTC)
commita423c235d0cbc39292102042ed8f4a953e0e37f9 (patch) (unidiff)
treee6212045a5c20b77692bcc4671c03ac683bf8367
parent80da9080c1c33c4704806c442179522edce06bd2 (diff)
downloadkdepimpi-a423c235d0cbc39292102042ed8f4a953e0e37f9.zip
kdepimpi-a423c235d0cbc39292102042ed8f4a953e0e37f9.tar.gz
kdepimpi-a423c235d0cbc39292102042ed8f4a953e0e37f9.tar.bz2
better todo info
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt1
-rw-r--r--korganizer/koeventviewer.cpp16
-rw-r--r--korganizer/koeventviewerdialog.cpp3
3 files changed, 19 insertions, 1 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index da33d12..ccebf58 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.17 ************ 3********** VERSION 1.9.17 ************
4 4
5KO/Pi: 5KO/Pi:
6Fixed that tooltips were not updated after moving an item in agenda view. 6Fixed that tooltips were not updated after moving an item in agenda view.
7Fixed a bug in sorting start date for recurring events in list view. 7Fixed a bug in sorting start date for recurring events in list view.
8Changed the left button in todo viewer from "Agenda" to "Set completed". 8Changed the left button in todo viewer from "Agenda" to "Set completed".
9This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View. 9This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View.
10Added more info in the todo viewer: Startdate, parent/sub todos.
10 11
11 12
12KA/Pi: 13KA/Pi:
13All fields search does now actually search all the (possible) fields, 14All fields search does now actually search all the (possible) fields,
14not only those listed in the contact list. 15not only those listed in the contact list.
15Made is possible to inline a picture in a vcard on the Z. 16Made is possible to inline a picture in a vcard on the Z.
16This was only possible on the desktop, now is it possible on the Z as well. 17This was only possible on the desktop, now is it possible on the Z as well.
17Fixed of missing save settings after filter configuration. 18Fixed of missing save settings after filter configuration.
18Made saving of addressbook much faster. 19Made saving of addressbook much faster.
19Fixed extension widget layout problem. 20Fixed extension widget layout problem.
20Fixed saving of default formatted name settings. 21Fixed saving of default formatted name settings.
21Fixed formatted name handling in edit dialog. 22Fixed formatted name handling in edit dialog.
22Added an option for changing formatted names of many contacts 23Added an option for changing formatted names of many contacts
23(menu: File - Change - Set formatted name). 24(menu: File - Change - Set formatted name).
24 25
25QWhatsThis was not working on the Z ( only black rectangle was shown). 26QWhatsThis was not working on the Z ( only black rectangle was shown).
26This is Fixed. 27This is Fixed.
27 28
28KDE-Sync: 29KDE-Sync:
29Now readonly KDE resources are synced as well. 30Now readonly KDE resources are synced as well.
30(They are not changed in KDE itself, of course). 31(They are not changed in KDE itself, of course).
31 32
32 33
33 34
34********** VERSION 1.9.16 ************ 35********** VERSION 1.9.16 ************
35 36
36KO/Pi: 37KO/Pi:
37Fixed search dialog size on Z 6000 (480x640 display). 38Fixed search dialog size on Z 6000 (480x640 display).
38Added setting to hide/show time in agenda items. 39Added setting to hide/show time in agenda items.
39Added setting to hide not running todos in todo view. 40Added setting to hide not running todos in todo view.
40Added columns for start date/time in todo view. 41Added columns for start date/time in todo view.
41Replaced the solid half-hour lines in agenda view by dot lines. 42Replaced the solid half-hour lines in agenda view by dot lines.
42Added possibility of printing the What's Next View on the desktop 43Added possibility of printing the What's Next View on the desktop
43(i.e. Windows and Linux). 44(i.e. Windows and Linux).
44Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 45Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
45Added tooltips in month view.(Tooltips only available on desktop) 46Added tooltips in month view.(Tooltips only available on desktop)
46 47
47Fixed a strange problem in KO/Pi alarm applet. 48Fixed a strange problem in KO/Pi alarm applet.
48Did not find the actual problem, 49Did not find the actual problem,
49such that now Qtopia reboots again if deinstalling the alarm applet. 50such that now Qtopia reboots again if deinstalling the alarm applet.
50But the alarm applet should work again. 51But the alarm applet should work again.
51 52
52KA/Pi: 53KA/Pi:
53Fixed the problem, that internal pictures were not saved. 54Fixed the problem, that internal pictures were not saved.
54 55
55Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 56Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
56 57
57Fixed some minor problems. (Like word wrap in help text windows). 58Fixed some minor problems. (Like word wrap in help text windows).
58 59
59Fixed a compiling problem in microkde/kresources. 60Fixed a compiling problem in microkde/kresources.
60 61
61KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 62KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
62This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 63This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
63such that now syncing KO/Pi with Sharp DTM should work on the 64such that now syncing KO/Pi with Sharp DTM should work on the
64Zaurus C 3000 model. 65Zaurus C 3000 model.
65 66
66********** VERSION 1.9.15 ************ 67********** VERSION 1.9.15 ************
67 68
68Usebilty enhancements in KO/Pi: 69Usebilty enhancements in KO/Pi:
69When clicking on the date in a month view cell, the day view is shown. 70When clicking on the date in a month view cell, the day view is shown.
70Old behaviour was, that the "new event" dialog popped up. 71Old behaviour was, that the "new event" dialog popped up.
71 72
72Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 73Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
73That means, you can restore the latest 74That means, you can restore the latest
74event/todo/journal you have deleted. 75event/todo/journal you have deleted.
75A journal is deleted, if you clear all the text of the journal. 76A journal is deleted, if you clear all the text of the journal.
76 77
77Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 78Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
78 79
79KA/Pi starting in 480x640 resolution: 80KA/Pi starting in 480x640 resolution:
80Hide the filter action in toolbar 81Hide the filter action in toolbar
81and added icons for undo/delete/redo in toolbar. 82and added icons for undo/delete/redo in toolbar.
82 83
83Change in OM/Pi ViewMail dialog: 84Change in OM/Pi ViewMail dialog:
84When clicking on the "delete" icon the mail is deleted after confirmation as usual. 85When clicking on the "delete" icon the mail is deleted after confirmation as usual.
85But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 86But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
86 87
87Fixed a crash when deleting mail-accounts in OM/Pi. 88Fixed a crash when deleting mail-accounts in OM/Pi.
88 89
89 90
90********** VERSION 1.9.14 ************ 91********** VERSION 1.9.14 ************
91 92
92Fixed some problems with the dialog sizes when switching 93Fixed some problems with the dialog sizes when switching
93portrait/landscape mode on 640x480 PDA display. 94portrait/landscape mode on 640x480 PDA display.
94 95
95Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 96Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
96 97
97Fixed an ugly bug in KOpieMail: 98Fixed an ugly bug in KOpieMail:
98KOpieMail was not able to write files (mails) to MSDOS file system, 99KOpieMail was not able to write files (mails) to MSDOS file system,
99like on an usual preformatted SD card. That should work now. 100like on an usual preformatted SD card. That should work now.
100To save your mail data on the Sd card do the following: 101To save your mail data on the Sd card do the following:
101Create a dir on the SD card: 102Create a dir on the SD card:
102mkdir /mnt/card/localmail 103mkdir /mnt/card/localmail
103Go to your home dir: 104Go to your home dir:
104cd 105cd
105Go to kopiemail data storage dir: 106Go to kopiemail data storage dir:
106cd kdepim/apps/kopiemail 107cd kdepim/apps/kopiemail
107Create a symlink to the SD card: 108Create a symlink to the SD card:
108ls -s /mnt/card/localmail 109ls -s /mnt/card/localmail
109Now KOpieMail will store all mails on the SD card. 110Now KOpieMail will store all mails on the SD card.
110 111
111KO/Pi Monthview: 112KO/Pi Monthview:
112Now "Go to Today" selects the current month from day 1-end, 113Now "Go to Today" selects the current month from day 1-end,
113not the current date + some days. 114not the current date + some days.
114I.e. "Go to Today" shows now always 115I.e. "Go to Today" shows now always
115the current month with first day of month in the first row. 116the current month with first day of month in the first row.
116 117
117Added missing German translation. 118Added missing German translation.
118 119
119Fixed icons of executeable on Wintendo. 120Fixed icons of executeable on Wintendo.
120 121
121Added a "Show next Mail" button to the OM/Pi 122Added a "Show next Mail" button to the OM/Pi
122mail viewer such that the mail below the current mail 123mail viewer such that the mail below the current mail
123in the mail list view of the current folder 124in the mail list view of the current folder
124can be read with a single click. 125can be read with a single click.
125 126
126 127
127********** VERSION 1.9.13 ************ 128********** VERSION 1.9.13 ************
128 129
129Fixed nasty PwM/Pi file reading bug, when 130Fixed nasty PwM/Pi file reading bug, when
130the used hash algo of file is different then the global 131the used hash algo of file is different then the global
131hash algo. 132hash algo.
132 133
133Added KA/Pi support for opie mailit mailapplication. 134Added KA/Pi support for opie mailit mailapplication.
134 135
135Fixed some bugs in OM/Pi. 136Fixed some bugs in OM/Pi.
136Now character conversion tables are available for the Zaurus 137Now character conversion tables are available for the Zaurus
137to make OM/Pi working properly. 138to make OM/Pi working properly.
138To get the character conversion in OM/Pi working, please download 139To get the character conversion in OM/Pi working, please download
139at the sourceforge project site the package 140at the sourceforge project site the package
140sr-character-conversion_SharpROM_arm.ipk.zip 141sr-character-conversion_SharpROM_arm.ipk.zip
141(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 142(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
142from the section "general files for KDE/Pim" 143from the section "general files for KDE/Pim"
143Instructions how to install this package are in a ReadMe in this file. 144Instructions how to install this package are in a ReadMe in this file.
144 145
145 146
146Fixed the orientation change problem in KA/Pi when switching 147Fixed the orientation change problem in KA/Pi when switching
147portrait/landscape mode. 148portrait/landscape mode.
148 149
149French translation available for KA/Pi and OM/Pi. 150French translation available for KA/Pi and OM/Pi.
150 151
151Fixed some problems with categories in KO/Pi in DTM sync. 152Fixed some problems with categories in KO/Pi in DTM sync.
152 153
153Added selection dialog for export to phone in KA/Pi. 154Added selection dialog for export to phone in KA/Pi.
154 155
155If in KO/Pi is an attendee selected to add to a meeting and this 156If in KO/Pi is an attendee selected to add to a meeting and this
156attendee is already in the list of attendees, this person is not added 157attendee is already in the list of attendees, this person is not added
157again. 158again.
158 159
159Some menu cleanup in KA/Pi. 160Some menu cleanup in KA/Pi.
160 161
161********** VERSION 1.9.12 ************ 162********** VERSION 1.9.12 ************
162 163
163Fix for the bug in KO/Pi What's Next view of version 1.9.11. 164Fix for the bug in KO/Pi What's Next view of version 1.9.11.
164 165
165Bugfix: Licence file is now shown again. 166Bugfix: Licence file is now shown again.
166 167
167OM/Pi now supports Unicode (utf8 charset). 168OM/Pi now supports Unicode (utf8 charset).
168Fixed some bugs in OM/Pi. 169Fixed some bugs in OM/Pi.
169 170
170KA/Pi has more German translation. 171KA/Pi has more German translation.
171 172
172 173
173********** VERSION 1.9.11 ************ 174********** VERSION 1.9.11 ************
174 175
175Fixed several problems in PWM/Pi, like 176Fixed several problems in PWM/Pi, like
176asking the user, if unsaved changed are pending 177asking the user, if unsaved changed are pending
177when closing the app. 178when closing the app.
178And PwM/Pi handles now different texts for the 179And PwM/Pi handles now different texts for the
179fields Description, Username, Password, configurable per category. 180fields Description, Username, Password, configurable per category.
180 181
181Fixed a crash in KO/Pi , when importing/loading vcs files 182Fixed a crash in KO/Pi , when importing/loading vcs files
182which have an entry with an attendee with state: 183which have an entry with an attendee with state:
183NEEDS ACTION 184NEEDS ACTION
184 185
185Fixed some problems in the German translation of OM/Pi, 186Fixed some problems in the German translation of OM/Pi,
186which makes some dialogs not fitting on the screen 187which makes some dialogs not fitting on the screen
187of the Z 5500. 188of the Z 5500.
188 189
189Fixed Qtopia crash, when disabling/deinstalling 190Fixed Qtopia crash, when disabling/deinstalling
190KO/Pi alarm applet. 191KO/Pi alarm applet.
191 192
192Implemented direct KDE<->KA/Pi sync for KA/Pi running 193Implemented direct KDE<->KA/Pi sync for KA/Pi running
193on Linux desktop. 194on Linux desktop.
194 195
195Added feature "remove sync info" to sync menu. 196Added feature "remove sync info" to sync menu.
196 197
197Tweaked the KO/Pi What's next view a bit, added 198Tweaked the KO/Pi What's next view a bit, added
198setting to hide events that are done. 199setting to hide events that are done.
199 200
200Disabled "beam receive enabled" on startup to 201Disabled "beam receive enabled" on startup to
201avoid problems if Fastload is enabled. 202avoid problems if Fastload is enabled.
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index 1fcc977..cee0466 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -171,406 +171,420 @@ void KOEventViewer::setSource(const QString& n)
171 } 171 }
172 } else { 172 } else {
173 //QTextBrowser::setSource(n); 173 //QTextBrowser::setSource(n);
174 } 174 }
175#endif 175#endif
176} 176}
177 177
178void KOEventViewer::addTag(const QString & tag,const QString & text) 178void KOEventViewer::addTag(const QString & tag,const QString & text)
179{ 179{
180 int number=text.contains("\n"); 180 int number=text.contains("\n");
181 QString str = "<" + tag + ">"; 181 QString str = "<" + tag + ">";
182 QString tmpText=text; 182 QString tmpText=text;
183 QString tmpStr=str; 183 QString tmpStr=str;
184 if(number !=-1) 184 if(number !=-1)
185 { 185 {
186 if (number > 0) { 186 if (number > 0) {
187 int pos=0; 187 int pos=0;
188 QString tmp; 188 QString tmp;
189 for(int i=0;i<=number;i++) { 189 for(int i=0;i<=number;i++) {
190 pos=tmpText.find("\n"); 190 pos=tmpText.find("\n");
191 tmp=tmpText.left(pos); 191 tmp=tmpText.left(pos);
192 tmpText=tmpText.right(tmpText.length()-pos-1); 192 tmpText=tmpText.right(tmpText.length()-pos-1);
193 tmpStr+=tmp+"<br>"; 193 tmpStr+=tmp+"<br>";
194 } 194 }
195 } 195 }
196 else tmpStr += tmpText; 196 else tmpStr += tmpText;
197 tmpStr+="</" + tag + ">"; 197 tmpStr+="</" + tag + ">";
198 mText.append(tmpStr); 198 mText.append(tmpStr);
199 } 199 }
200 else 200 else
201 { 201 {
202 str += text + "</" + tag + ">"; 202 str += text + "</" + tag + ">";
203 mText.append(str); 203 mText.append(str);
204 } 204 }
205} 205}
206 206
207void KOEventViewer::setColorMode( int m ) 207void KOEventViewer::setColorMode( int m )
208{ 208{
209 mColorMode = m; 209 mColorMode = m;
210} 210}
211void KOEventViewer::appendEvent(Event *event, int mode ) 211void KOEventViewer::appendEvent(Event *event, int mode )
212{ 212{
213 mMailSubject = ""; 213 mMailSubject = "";
214 mCurrentIncidence = event; 214 mCurrentIncidence = event;
215 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 215 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
216 topLevelWidget()->setCaption(i18n("Event Viewer")); 216 topLevelWidget()->setCaption(i18n("Event Viewer"));
217 if ( mode == 0 ) { 217 if ( mode == 0 ) {
218 addTag("h2",event->summary()); 218 addTag("h2",event->summary());
219 } 219 }
220 else { 220 else {
221 if ( mColorMode == 1 ) { 221 if ( mColorMode == 1 ) {
222 mText +="<font color=\"#00A000\">"; 222 mText +="<font color=\"#00A000\">";
223 } 223 }
224 if ( mColorMode == 2 ) { 224 if ( mColorMode == 2 ) {
225 mText +="<font color=\"#C00000\">"; 225 mText +="<font color=\"#C00000\">";
226 } 226 }
227 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 227 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
228 if ( mode == 1 ) { 228 if ( mode == 1 ) {
229 addTag("h2",i18n( "Local: " ) +event->summary()); 229 addTag("h2",i18n( "Local: " ) +event->summary());
230 } else { 230 } else {
231 addTag("h2",i18n( "Remote: " ) +event->summary()); 231 addTag("h2",i18n( "Remote: " ) +event->summary());
232 } 232 }
233 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 233 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
234 if ( mColorMode ) 234 if ( mColorMode )
235 mText += "</font>"; 235 mText += "</font>";
236 } 236 }
237 mMailSubject += i18n( "Meeting " )+ event->summary(); 237 mMailSubject += i18n( "Meeting " )+ event->summary();
238 if (event->cancelled ()) { 238 if (event->cancelled ()) {
239 mText +="<font color=\"#B00000\">"; 239 mText +="<font color=\"#B00000\">";
240 addTag("i",i18n("This event has been cancelled!")); 240 addTag("i",i18n("This event has been cancelled!"));
241 mText.append("<br>"); 241 mText.append("<br>");
242 mText += "</font>"; 242 mText += "</font>";
243 mMailSubject += i18n("(cancelled)"); 243 mMailSubject += i18n("(cancelled)");
244 } 244 }
245 if (!event->location().isEmpty()) { 245 if (!event->location().isEmpty()) {
246 addTag("b",i18n("Location: ")); 246 addTag("b",i18n("Location: "));
247 mText.append(event->location()+"<br>"); 247 mText.append(event->location()+"<br>");
248 mMailSubject += i18n(" at ") + event->location(); 248 mMailSubject += i18n(" at ") + event->location();
249 } 249 }
250 if (event->doesFloat()) { 250 if (event->doesFloat()) {
251 if (event->isMultiDay()) { 251 if (event->isMultiDay()) {
252 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") 252 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>")
253 .arg(event->dtStartDateStr(shortDate)) 253 .arg(event->dtStartDateStr(shortDate))
254 .arg(event->dtEndDateStr(shortDate))); 254 .arg(event->dtEndDateStr(shortDate)));
255 } else { 255 } else {
256 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); 256 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate )));
257 } 257 }
258 } else { 258 } else {
259 if (event->isMultiDay()) { 259 if (event->isMultiDay()) {
260 mText.append(i18n("<p><b>From:</b> %1</p> ") 260 mText.append(i18n("<p><b>From:</b> %1</p> ")
261 .arg(event->dtStartStr( shortDate))); 261 .arg(event->dtStartStr( shortDate)));
262 mText.append(i18n("<p><b>To:</b> %1</p>") 262 mText.append(i18n("<p><b>To:</b> %1</p>")
263 .arg(event->dtEndStr(shortDate))); 263 .arg(event->dtEndStr(shortDate)));
264 } else { 264 } else {
265 mText.append(i18n("<p><b>On:</b> %1</p> ") 265 mText.append(i18n("<p><b>On:</b> %1</p> ")
266 .arg(event->dtStartDateStr( shortDate ))); 266 .arg(event->dtStartDateStr( shortDate )));
267 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") 267 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>")
268 .arg(event->dtStartTimeStr()) 268 .arg(event->dtStartTimeStr())
269 .arg(event->dtEndTimeStr())); 269 .arg(event->dtEndTimeStr()));
270 } 270 }
271 } 271 }
272 272
273 if (event->recurrence()->doesRecur()) { 273 if (event->recurrence()->doesRecur()) {
274 274
275 QString recurText = event->recurrence()->recurrenceText(); 275 QString recurText = event->recurrence()->recurrenceText();
276 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); 276 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>");
277 bool last; 277 bool last;
278 QDate start = QDate::currentDate(); 278 QDate start = QDate::currentDate();
279 QDate next; 279 QDate next;
280 next = event->recurrence()->getPreviousDate( start , &last ); 280 next = event->recurrence()->getPreviousDate( start , &last );
281 if ( !last ) { 281 if ( !last ) {
282 next = event->recurrence()->getNextDate( start.addDays( - 1 ) ); 282 next = event->recurrence()->getNextDate( start.addDays( - 1 ) );
283 addTag("p",i18n("<b>Next recurrence is on:</b>") ); 283 addTag("p",i18n("<b>Next recurrence is on:</b>") );
284 addTag("p", KGlobal::locale()->formatDate( next, shortDate )); 284 addTag("p", KGlobal::locale()->formatDate( next, shortDate ));
285 QDateTime nextdt = QDateTime( next, event->dtStart().time()); 285 QDateTime nextdt = QDateTime( next, event->dtStart().time());
286 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( nextdt, true ); 286 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( nextdt, true );
287 287
288 } else { 288 } else {
289 addTag("p",i18n("<b>Last recurrence was on:</b>") ); 289 addTag("p",i18n("<b>Last recurrence was on:</b>") );
290 addTag("p", KGlobal::locale()->formatDate( next, shortDate )); 290 addTag("p", KGlobal::locale()->formatDate( next, shortDate ));
291 } 291 }
292 } else { 292 } else {
293 mMailSubject += i18n(" - " )+event->dtStartStr( true ); 293 mMailSubject += i18n(" - " )+event->dtStartStr( true );
294 294
295 } 295 }
296 296
297 297
298 if (event->isAlarmEnabled()) { 298 if (event->isAlarmEnabled()) {
299 Alarm *alarm =event->alarms().first() ; 299 Alarm *alarm =event->alarms().first() ;
300 QDateTime t = alarm->time(); 300 QDateTime t = alarm->time();
301 int min = t.secsTo( event->dtStart() )/60; 301 int min = t.secsTo( event->dtStart() )/60;
302 QString s =i18n("( %1 min before )").arg( min ); 302 QString s =i18n("( %1 min before )").arg( min );
303 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 303 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
304 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 304 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
305 //addTag("p",s); 305 //addTag("p",s);
306 } 306 }
307 307
308 addTag("b",i18n("Access: ")); 308 addTag("b",i18n("Access: "));
309 mText.append(event->secrecyStr()+"<br>"); 309 mText.append(event->secrecyStr()+"<br>");
310 if (!event->description().isEmpty()) { 310 if (!event->description().isEmpty()) {
311 addTag("p",i18n("<b>Details: </b>")); 311 addTag("p",i18n("<b>Details: </b>"));
312 addTag("p",event->description()); 312 addTag("p",event->description());
313 } 313 }
314 314
315 formatCategories(event); 315 formatCategories(event);
316 316
317 formatReadOnly(event); 317 formatReadOnly(event);
318 formatAttendees(event); 318 formatAttendees(event);
319 319
320 setText(mText); 320 setText(mText);
321 //QWhatsThis::add(this,mText); 321 //QWhatsThis::add(this,mText);
322 322
323} 323}
324 324
325void KOEventViewer::appendTodo(Todo *event, int mode ) 325void KOEventViewer::appendTodo(Todo *event, int mode )
326{ 326{
327 mMailSubject = ""; 327 mMailSubject = "";
328 mCurrentIncidence = event; 328 mCurrentIncidence = event;
329 topLevelWidget()->setCaption(i18n("Todo Viewer")); 329 topLevelWidget()->setCaption(i18n("Todo Viewer"));
330 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 330 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
331 if (mode == 0 ) 331 if (mode == 0 )
332 addTag("h2",event->summary()); 332 addTag("h2",event->summary());
333 else { 333 else {
334 if ( mColorMode == 1 ) { 334 if ( mColorMode == 1 ) {
335 mText +="<font color=\"#00A000\">"; 335 mText +="<font color=\"#00A000\">";
336 } 336 }
337 if ( mColorMode == 2 ) { 337 if ( mColorMode == 2 ) {
338 mText +="<font color=\"#B00000\">"; 338 mText +="<font color=\"#B00000\">";
339 } 339 }
340 if ( mode == 1 ) { 340 if ( mode == 1 ) {
341 addTag("h2",i18n( "Local: " ) +event->summary()); 341 addTag("h2",i18n( "Local: " ) +event->summary());
342 } else { 342 } else {
343 addTag("h2",i18n( "Remote: " ) +event->summary()); 343 addTag("h2",i18n( "Remote: " ) +event->summary());
344 } 344 }
345 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 345 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
346 if ( mColorMode ) 346 if ( mColorMode )
347 mText += "</font>"; 347 mText += "</font>";
348 } 348 }
349 mMailSubject += i18n( "Todo " )+ event->summary(); 349 mMailSubject += i18n( "Todo " )+ event->summary();
350 if (event->cancelled ()) { 350 if (event->cancelled ()) {
351 mText +="<font color=\"#B00000\">"; 351 mText +="<font color=\"#B00000\">";
352 addTag("i",i18n("This todo has been cancelled!")); 352 addTag("i",i18n("This todo has been cancelled!"));
353 mText.append("<br>"); 353 mText.append("<br>");
354 mText += "</font>"; 354 mText += "</font>";
355 mMailSubject += i18n("(cancelled)"); 355 mMailSubject += i18n("(cancelled)");
356 } 356 }
357 357
358 if (!event->location().isEmpty()) { 358 if (!event->location().isEmpty()) {
359 addTag("b",i18n("Location: ")); 359 addTag("b",i18n("Location: "));
360 mText.append(event->location()+"<br>"); 360 mText.append(event->location()+"<br>");
361 mMailSubject += i18n(" at ") + event->location(); 361 mMailSubject += i18n(" at ") + event->location();
362 } 362 }
363 if (event->hasStartDate()) {
364 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer)));
365 }
363 if (event->hasDueDate()) { 366 if (event->hasDueDate()) {
364 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); 367 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer)));
365 mMailSubject += i18n(" - " )+event->dtDueStr( true ); 368 mMailSubject += i18n(" - " )+event->dtDueStr( true );
366 } 369 }
367 addTag("b",i18n("Access: ")); 370 addTag("b",i18n("Access: "));
368 mText.append(event->secrecyStr()+"<br>"); 371 mText.append(event->secrecyStr()+"<br>");
369 if (!event->description().isEmpty()) { 372 if (!event->description().isEmpty()) {
370 addTag("p",i18n("<b>Details: </b>")); 373 addTag("p",i18n("<b>Details: </b>"));
371 addTag("p",event->description()); 374 addTag("p",event->description());
372 } 375 }
373 376
374 formatCategories(event); 377 formatCategories(event);
375 378
376 mText.append(i18n("<p><b>Priority:</b> %2</p>") 379 mText.append(i18n("<p><b>Priority:</b> %2</p>")
377 .arg(QString::number(event->priority()))); 380 .arg(QString::number(event->priority())));
378 381
379 mText.append(i18n("<p><i>%1 % completed</i></p>") 382 mText.append(i18n("<p><i>%1 % completed</i></p>")
380 .arg(event->percentComplete())); 383 .arg(event->percentComplete()));
381 384
382 formatReadOnly(event); 385 formatReadOnly(event);
383 formatAttendees(event); 386 formatAttendees(event);
384 387 if ( event->relatedTo() ) {
388 addTag("b",i18n("Parent todo: "));
389 mText.append(event->relatedTo()->summary()+" [" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] <br>");
390 }
391 QPtrList<Incidence> Relations = event->relations();
392 Incidence *to;
393 if ( Relations.first() )
394 addTag("b",i18n("Sub todos:<br>"));
395 for (to=Relations.first();to;to=Relations.next()) {
396 mText.append( to->summary()+" [" +QString::number(to->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%]<br>");
397
398 }
385 setText(mText); 399 setText(mText);
386} 400}
387 401
388void KOEventViewer::formatCategories(Incidence *event) 402void KOEventViewer::formatCategories(Incidence *event)
389{ 403{
390 if (!event->categoriesStr().isEmpty()) { 404 if (!event->categoriesStr().isEmpty()) {
391 if (event->categories().count() == 1) { 405 if (event->categories().count() == 1) {
392 addTag("h3",i18n("Category")); 406 addTag("h3",i18n("Category"));
393 } else { 407 } else {
394 addTag("h3",i18n("Categories")); 408 addTag("h3",i18n("Categories"));
395 } 409 }
396 addTag("p",event->categoriesStr()); 410 addTag("p",event->categoriesStr());
397 } 411 }
398} 412}
399void KOEventViewer::formatAttendees(Incidence *event) 413void KOEventViewer::formatAttendees(Incidence *event)
400{ 414{
401 QPtrList<Attendee> attendees = event->attendees(); 415 QPtrList<Attendee> attendees = event->attendees();
402 if (attendees.count()) { 416 if (attendees.count()) {
403 417
404 418
405 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); 419 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small);
406 addTag("h3",i18n("Organizer")); 420 addTag("h3",i18n("Organizer"));
407 mText.append("<ul><li>"); 421 mText.append("<ul><li>");
408#ifndef KORG_NOKABC 422#ifndef KORG_NOKABC
409 423
410#ifdef DESKTOP_VERSION 424#ifdef DESKTOP_VERSION
411 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 425 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
412 KABC::Addressee::List addressList; 426 KABC::Addressee::List addressList;
413 addressList = add_book->findByEmail(event->organizer()); 427 addressList = add_book->findByEmail(event->organizer());
414 KABC::Addressee o = addressList.first(); 428 KABC::Addressee o = addressList.first();
415 if (!o.isEmpty() && addressList.size()<2) { 429 if (!o.isEmpty() && addressList.size()<2) {
416 mText += "<a href=\"uid:" + o.uid() + "\">"; 430 mText += "<a href=\"uid:" + o.uid() + "\">";
417 mText += o.formattedName(); 431 mText += o.formattedName();
418 mText += "</a>\n"; 432 mText += "</a>\n";
419 } else { 433 } else {
420 mText.append(event->organizer()); 434 mText.append(event->organizer());
421 } 435 }
422#else //DESKTOP_VERSION 436#else //DESKTOP_VERSION
423 mText += "<a href=\"uid:organizer\">"; 437 mText += "<a href=\"uid:organizer\">";
424 mText += event->organizer(); 438 mText += event->organizer();
425 mText += "</a>\n"; 439 mText += "</a>\n";
426#endif //DESKTOP_VERSION 440#endif //DESKTOP_VERSION
427 441
428 442
429#else 443#else
430 mText.append(event->organizer()); 444 mText.append(event->organizer());
431#endif 445#endif
432 446
433 if (iconPath) { 447 if (iconPath) {
434 mText += " <a href=\"mailto:" + event->organizer() + "\">"; 448 mText += " <a href=\"mailto:" + event->organizer() + "\">";
435 mText += "<IMG src=\"" + iconPath + "\">"; 449 mText += "<IMG src=\"" + iconPath + "\">";
436 mText += "</a>\n"; 450 mText += "</a>\n";
437 } 451 }
438 mText.append("</li></ul>"); 452 mText.append("</li></ul>");
439 453
440 addTag("h3",i18n("Attendees")); 454 addTag("h3",i18n("Attendees"));
441 Attendee *a; 455 Attendee *a;
442 mText.append("<ul>"); 456 mText.append("<ul>");
443 for(a=attendees.first();a;a=attendees.next()) { 457 for(a=attendees.first();a;a=attendees.next()) {
444#ifndef KORG_NOKABC 458#ifndef KORG_NOKABC
445#ifdef DESKTOP_VERSION 459#ifdef DESKTOP_VERSION
446 if (a->name().isEmpty()) { 460 if (a->name().isEmpty()) {
447 addressList = add_book->findByEmail(a->email()); 461 addressList = add_book->findByEmail(a->email());
448 KABC::Addressee o = addressList.first(); 462 KABC::Addressee o = addressList.first();
449 if (!o.isEmpty() && addressList.size()<2) { 463 if (!o.isEmpty() && addressList.size()<2) {
450 mText += "<a href=\"uid:" + o.uid() + "\">"; 464 mText += "<a href=\"uid:" + o.uid() + "\">";
451 mText += o.formattedName(); 465 mText += o.formattedName();
452 mText += "</a>\n"; 466 mText += "</a>\n";
453 } else { 467 } else {
454 mText += "<li>"; 468 mText += "<li>";
455 mText.append(a->email()); 469 mText.append(a->email());
456 mText += "\n"; 470 mText += "\n";
457 } 471 }
458 } else { 472 } else {
459 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 473 mText += "<li><a href=\"uid:" + a->uid() + "\">";
460 if (!a->name().isEmpty()) mText += a->name(); 474 if (!a->name().isEmpty()) mText += a->name();
461 else mText += a->email(); 475 else mText += a->email();
462 mText += "</a>\n"; 476 mText += "</a>\n";
463 } 477 }
464#else //DESKTOP_VERSION 478#else //DESKTOP_VERSION
465 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 479 mText += "<li><a href=\"uid:" + a->uid() + "\">";
466 if (!a->name().isEmpty()) mText += a->name(); 480 if (!a->name().isEmpty()) mText += a->name();
467 else mText += a->email(); 481 else mText += a->email();
468 mText += "</a>\n"; 482 mText += "</a>\n";
469#endif //DESKTOP_VERSION 483#endif //DESKTOP_VERSION
470#else 484#else
471 //qDebug("nokabc "); 485 //qDebug("nokabc ");
472 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 486 mText += "<li><a href=\"uid:" + a->uid() + "\">";
473 if (!a->name().isEmpty()) mText += a->name(); 487 if (!a->name().isEmpty()) mText += a->name();
474 else mText += a->email(); 488 else mText += a->email();
475 mText += "</a>\n"; 489 mText += "</a>\n";
476#endif 490#endif
477 491
478 492
479 if (!a->email().isEmpty()) { 493 if (!a->email().isEmpty()) {
480 if (iconPath) { 494 if (iconPath) {
481 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">"; 495 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">";
482 mText += "<IMG src=\"" + iconPath + "\">"; 496 mText += "<IMG src=\"" + iconPath + "\">";
483 mText += "</a>\n"; 497 mText += "</a>\n";
484 } 498 }
485 } 499 }
486 if (a->status() != Attendee::NeedsAction ) 500 if (a->status() != Attendee::NeedsAction )
487 mText +="[" + a->statusStr() + "] "; 501 mText +="[" + a->statusStr() + "] ";
488 if (a->role() == Attendee::Chair ) 502 if (a->role() == Attendee::Chair )
489 mText +="(" + a->roleStr().left(1) + ".)"; 503 mText +="(" + a->roleStr().left(1) + ".)";
490 } 504 }
491 mText.append("</li></ul>"); 505 mText.append("</li></ul>");
492 } 506 }
493 507
494} 508}
495void KOEventViewer::appendJournal(Journal *jour, int mode ) 509void KOEventViewer::appendJournal(Journal *jour, int mode )
496{ 510{
497 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 511 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
498 if (mode == 0 ) { 512 if (mode == 0 ) {
499 addTag("h2",i18n("Journal from: ")); 513 addTag("h2",i18n("Journal from: "));
500 } 514 }
501 else { 515 else {
502 if ( mode == 1 ) { 516 if ( mode == 1 ) {
503 addTag("h2",i18n( "Local: " ) +i18n("Journal from: ")); 517 addTag("h2",i18n( "Local: " ) +i18n("Journal from: "));
504 } else { 518 } else {
505 addTag("h2",i18n( "Remote: " ) +i18n("Journal from: ")); 519 addTag("h2",i18n( "Remote: " ) +i18n("Journal from: "));
506 } 520 }
507 } 521 }
508 topLevelWidget()->setCaption("Journal Viewer"); 522 topLevelWidget()->setCaption("Journal Viewer");
509 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer))); 523 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer)));
510 addTag("b",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) ); 524 addTag("b",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) );
511 if (!jour->description().isEmpty()) { 525 if (!jour->description().isEmpty()) {
512 addTag("p",jour->description()); 526 addTag("p",jour->description());
513 } 527 }
514 setText(mText); 528 setText(mText);
515} 529}
516 530
517void KOEventViewer::formatReadOnly(Incidence *event) 531void KOEventViewer::formatReadOnly(Incidence *event)
518{ 532{
519 if (event->isReadOnly()) { 533 if (event->isReadOnly()) {
520 addTag("p","<em>(" + i18n("read-only") + ")</em>"); 534 addTag("p","<em>(" + i18n("read-only") + ")</em>");
521 } 535 }
522} 536}
523void KOEventViewer::setSyncMode( bool b ) 537void KOEventViewer::setSyncMode( bool b )
524{ 538{
525 mSyncMode = b; 539 mSyncMode = b;
526} 540}
527 541
528 542
529void KOEventViewer::setTodo(Todo *event, bool clearV ) 543void KOEventViewer::setTodo(Todo *event, bool clearV )
530{ 544{
531 if ( clearV ) 545 if ( clearV )
532 clearEvents(); 546 clearEvents();
533 if ( mSyncMode ) { 547 if ( mSyncMode ) {
534 if ( clearV ) 548 if ( clearV )
535 appendTodo(event,1 ); 549 appendTodo(event,1 );
536 else 550 else
537 appendTodo(event,2); 551 appendTodo(event,2);
538 } else 552 } else
539 appendTodo(event); 553 appendTodo(event);
540} 554}
541void KOEventViewer::setJournal(Journal *event, bool clearV ) 555void KOEventViewer::setJournal(Journal *event, bool clearV )
542{ 556{
543 if ( clearV ) 557 if ( clearV )
544 clearEvents(); 558 clearEvents();
545 if ( mSyncMode ) { 559 if ( mSyncMode ) {
546 if ( clearV ) 560 if ( clearV )
547 appendJournal(event, 1); 561 appendJournal(event, 1);
548 else 562 else
549 appendJournal(event, 2); 563 appendJournal(event, 2);
550 } else 564 } else
551 appendJournal(event); 565 appendJournal(event);
552} 566}
553 567
554void KOEventViewer::setEvent(Event *event) 568void KOEventViewer::setEvent(Event *event)
555{ 569{
556 clearEvents(); 570 clearEvents();
557 if ( mSyncMode ) 571 if ( mSyncMode )
558 appendEvent(event, 1); 572 appendEvent(event, 1);
559 else 573 else
560 appendEvent(event); 574 appendEvent(event);
561} 575}
562 576
563void KOEventViewer::addEvent(Event *event) 577void KOEventViewer::addEvent(Event *event)
564{ 578{
565 if ( mSyncMode ) 579 if ( mSyncMode )
566 appendEvent(event, 2); 580 appendEvent(event, 2);
567 else 581 else
568 appendEvent(event); 582 appendEvent(event);
569} 583}
570 584
571void KOEventViewer::clearEvents(bool now) 585void KOEventViewer::clearEvents(bool now)
572{ 586{
573 mText = ""; 587 mText = "";
574 if (now) setText(mText); 588 if (now) setText(mText);
575} 589}
576 590
diff --git a/korganizer/koeventviewerdialog.cpp b/korganizer/koeventviewerdialog.cpp
index 772fd95..3979ed2 100644
--- a/korganizer/koeventviewerdialog.cpp
+++ b/korganizer/koeventviewerdialog.cpp
@@ -1,256 +1,259 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <klocale.h> 20#include <klocale.h>
21 21
22#include <libkcal/event.h> 22#include <libkcal/event.h>
23#include <qpushbutton.h> 23#include <qpushbutton.h>
24 24
25#include "koeventviewer.h" 25#include "koeventviewer.h"
26#include "koprefs.h" 26#include "koprefs.h"
27#include <libkcal/todo.h> 27#include <libkcal/todo.h>
28#include "qapp.h" 28#include "qapp.h"
29 29
30#include "koeventviewerdialog.h" 30#include "koeventviewerdialog.h"
31extern int globalFlagBlockAgenda; 31extern int globalFlagBlockAgenda;
32 32
33KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name) 33KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name)
34 : KDialogBase(parent,name, 34 : KDialogBase(parent,name,
35#ifndef DESKTOP_VERSION 35#ifndef DESKTOP_VERSION
36 true , 36 true ,
37#else 37#else
38 false, 38 false,
39#endif 39#endif
40 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda")) 40 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda"))
41{ 41{
42 42
43 mEventViewer = new KOEventViewer(this); 43 mEventViewer = new KOEventViewer(this);
44 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 44 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
45 setMainWidget(mEventViewer); 45 setMainWidget(mEventViewer);
46 setButtonText(Ok, i18n("Edit") ); 46 setButtonText(Ok, i18n("Edit") );
47 47
48 QObject::connect(findButton( Ok ),SIGNAL(clicked()), 48 QObject::connect(findButton( Ok ),SIGNAL(clicked()),
49 SLOT(editIncidence())); 49 SLOT(editIncidence()));
50 QObject::connect(this,SIGNAL(user1Clicked()), 50 QObject::connect(this,SIGNAL(user1Clicked()),
51 SLOT(showIncidence())); 51 SLOT(showIncidence()));
52 mIncidence = 0; 52 mIncidence = 0;
53 // TODO: Set a sensible size (based on the content?). 53 // TODO: Set a sensible size (based on the content?).
54 //showMaximized(); 54 //showMaximized();
55 //qDebug("++++++++++++KOEventViewerDialog() "); 55 //qDebug("++++++++++++KOEventViewerDialog() ");
56 // if ( KOPrefs::instance()->mCompactDialogs ) { 56 // if ( KOPrefs::instance()->mCompactDialogs ) {
57// setFixedSize( 240,284 ); 57// setFixedSize( 240,284 );
58// move( 0, 15 ); 58// move( 0, 15 );
59// } else { 59// } else {
60// setMinimumSize(300,200); 60// setMinimumSize(300,200);
61// resize(320,300); 61// resize(320,300);
62// } 62// }
63 mSyncMode = false; 63 mSyncMode = false;
64 mSyncResult = 0; 64 mSyncResult = 0;
65 65
66} 66}
67 67
68KOEventViewerDialog::~KOEventViewerDialog() 68KOEventViewerDialog::~KOEventViewerDialog()
69{ 69{
70 //qDebug("-------~KOEventViewerDialog() "); 70 //qDebug("-------~KOEventViewerDialog() ");
71} 71}
72void KOEventViewerDialog::showMe() 72void KOEventViewerDialog::showMe()
73{ 73{
74 74
75#ifdef DESKTOP_VERSION 75#ifdef DESKTOP_VERSION
76 show(); 76 show();
77#else 77#else
78 showMaximized(); 78 showMaximized();
79#endif 79#endif
80 setFocus(); 80 setFocus();
81 setActiveWindow(); 81 setActiveWindow();
82 82
83} 83}
84void KOEventViewerDialog::setSyncMode( bool b ) 84void KOEventViewerDialog::setSyncMode( bool b )
85{ 85{
86 mSyncMode = b; 86 mSyncMode = b;
87 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode ); 87 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode );
88 if ( mSyncMode ) { 88 if ( mSyncMode ) {
89 findButton( Close )->setText( i18n("Cancel Sync")); 89 findButton( Close )->setText( i18n("Cancel Sync"));
90 findButton( Ok )->setText( i18n("Remote")); 90 findButton( Ok )->setText( i18n("Remote"));
91 findButton( User1 )->setText( i18n("Local")); 91 findButton( User1 )->setText( i18n("Local"));
92 } else { 92 } else {
93 findButton( Close )->setText( i18n("Close")); 93 findButton( Close )->setText( i18n("Close"));
94 findButton( Ok )->setText( i18n("Edit")); 94 findButton( Ok )->setText( i18n("Edit"));
95 findButton( User1 )->setText( i18n("Agenda")); 95 findButton( User1 )->setText( i18n("Agenda"));
96 } 96 }
97 mEventViewer->setSyncMode( b ); 97 mEventViewer->setSyncMode( b );
98} 98}
99void KOEventViewerDialog::setColorMode( int m ) 99void KOEventViewerDialog::setColorMode( int m )
100{ 100{
101 mEventViewer->setColorMode( m ); 101 mEventViewer->setColorMode( m );
102} 102}
103int KOEventViewerDialog::executeS( bool local ) 103int KOEventViewerDialog::executeS( bool local )
104{ 104{
105 mSyncResult = 3; 105 mSyncResult = 3;
106 if ( local ) 106 if ( local )
107 findButton( User1 )->setFocus(); 107 findButton( User1 )->setFocus();
108 else 108 else
109 findButton( Ok )->setFocus(); 109 findButton( Ok )->setFocus();
110 exec(); 110 exec();
111 return mSyncResult; 111 return mSyncResult;
112} 112}
113 113
114void KOEventViewerDialog::updateConfig() 114void KOEventViewerDialog::updateConfig()
115{ 115{
116 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 116 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
117 117
118} 118}
119void KOEventViewerDialog::setEvent(Event *event) 119void KOEventViewerDialog::setEvent(Event *event)
120{ 120{
121 mEventViewer->setEvent(event); 121 mEventViewer->setEvent(event);
122 mIncidence = event; 122 mIncidence = event;
123 findButton( Close )->setFocus(); 123 findButton( Close )->setFocus();
124 if ( !mSyncMode ) {
125 findButton( User1 )->setText( i18n("Agenda"));
126 }
124} 127}
125void KOEventViewerDialog::setIncidence(Incidence *in ) 128void KOEventViewerDialog::setIncidence(Incidence *in )
126{ 129{
127 if ( in->type() == "Event" ) 130 if ( in->type() == "Event" )
128 setEvent( (Event*) in ); 131 setEvent( (Event*) in );
129 else if ( in->type() =="Todo" ) 132 else if ( in->type() =="Todo" )
130 setTodo( (Todo*) in ); 133 setTodo( (Todo*) in );
131 else if ( in->type() =="Journal" ) 134 else if ( in->type() =="Journal" )
132 setJournal( (Journal*) in ); 135 setJournal( (Journal*) in );
133} 136}
134void KOEventViewerDialog::addIncidence(Incidence *in) 137void KOEventViewerDialog::addIncidence(Incidence *in)
135{ 138{
136 if ( in->type() == "Event" ) 139 if ( in->type() == "Event" )
137 addEvent( (Event*) in ); 140 addEvent( (Event*) in );
138 else if ( in->type() =="Todo" ) 141 else if ( in->type() =="Todo" )
139 mEventViewer->setTodo( (Todo*) in, false ); 142 mEventViewer->setTodo( (Todo*) in, false );
140 else if ( in->type() =="Journal" ) 143 else if ( in->type() =="Journal" )
141 mEventViewer->setJournal( (Journal*) in, false ); 144 mEventViewer->setJournal( (Journal*) in, false );
142 if ( mSyncMode ) { 145 if ( mSyncMode ) {
143 findButton( User1 )->setFocus(); 146 findButton( User1 )->setFocus();
144 setCaption(i18n("Conflict! Please choose entry")); 147 setCaption(i18n("Conflict! Please choose entry"));
145 } 148 }
146} 149}
147 150
148void KOEventViewerDialog::addEvent(Event *event) 151void KOEventViewerDialog::addEvent(Event *event)
149{ 152{
150 mEventViewer->addEvent(event); 153 mEventViewer->addEvent(event);
151 mIncidence = event; 154 mIncidence = event;
152 findButton( Close )->setFocus(); 155 findButton( Close )->setFocus();
153 if ( !mSyncMode ) { 156 if ( !mSyncMode ) {
154 findButton( User1 )->setText( i18n("Agenda")); 157 findButton( User1 )->setText( i18n("Agenda"));
155 } 158 }
156} 159}
157 160
158void KOEventViewerDialog::setTodo(Todo *event) 161void KOEventViewerDialog::setTodo(Todo *event)
159{ 162{
160 mEventViewer->setTodo(event); 163 mEventViewer->setTodo(event);
161 mIncidence = (Incidence*)event; 164 mIncidence = (Incidence*)event;
162 findButton( Close )->setFocus(); 165 findButton( Close )->setFocus();
163 if ( !mSyncMode ) { 166 if ( !mSyncMode ) {
164 findButton( User1 )->setText( i18n("Set complete")); 167 findButton( User1 )->setText( i18n("Set complete"));
165 } 168 }
166} 169}
167void KOEventViewerDialog::setJournal(Journal *j) 170void KOEventViewerDialog::setJournal(Journal *j)
168{ 171{
169 mEventViewer->setJournal(j); 172 mEventViewer->setJournal(j);
170 mIncidence = (Incidence*)j; 173 mIncidence = (Incidence*)j;
171 findButton( Close )->setFocus(); 174 findButton( Close )->setFocus();
172 if ( !mSyncMode ) { 175 if ( !mSyncMode ) {
173 findButton( User1 )->setText( i18n("Agenda")); 176 findButton( User1 )->setText( i18n("Agenda"));
174 } 177 }
175} 178}
176 179
177void KOEventViewerDialog::addText(QString text) 180void KOEventViewerDialog::addText(QString text)
178{ 181{
179 mEventViewer->addText(text); 182 mEventViewer->addText(text);
180 findButton( Close )->setFocus(); 183 findButton( Close )->setFocus();
181} 184}
182void KOEventViewerDialog::editIncidence() 185void KOEventViewerDialog::editIncidence()
183{ 186{
184 if ( mSyncMode ) { 187 if ( mSyncMode ) {
185 mSyncResult = 2; 188 mSyncResult = 2;
186 accept(); 189 accept();
187 return; 190 return;
188 } 191 }
189 if ( mIncidence ){ 192 if ( mIncidence ){
190#ifndef DESKTOP_VERSION 193#ifndef DESKTOP_VERSION
191 hide(); 194 hide();
192#endif 195#endif
193 emit editIncidence( mIncidence ); 196 emit editIncidence( mIncidence );
194 } 197 }
195} 198}
196void KOEventViewerDialog::showIncidence() 199void KOEventViewerDialog::showIncidence()
197{ 200{
198 201
199 if ( mSyncMode ) { 202 if ( mSyncMode ) {
200 mSyncResult = 1; 203 mSyncResult = 1;
201 accept(); 204 accept();
202 return; 205 return;
203 } 206 }
204 207
205 if ( mIncidence ){ 208 if ( mIncidence ){
206#ifndef DESKTOP_VERSION 209#ifndef DESKTOP_VERSION
207 hide(); 210 hide();
208#endif 211#endif
209 QDate date; 212 QDate date;
210 if ( mIncidence->type() == "Todo" ) { 213 if ( mIncidence->type() == "Todo" ) {
211 /* 214 /*
212 if ( ((Todo*)mIncidence)->hasDueDate() ) 215 if ( ((Todo*)mIncidence)->hasDueDate() )
213 date = ((Todo*)mIncidence)->dtDue().date(); 216 date = ((Todo*)mIncidence)->dtDue().date();
214 else { 217 else {
215 globalFlagBlockAgenda = 2; 218 globalFlagBlockAgenda = 2;
216 emit showAgendaView( false ); 219 emit showAgendaView( false );
217 return; 220 return;
218 } 221 }
219 */ 222 */
220 ((Todo*)mIncidence)->setCompleted( true ); 223 ((Todo*)mIncidence)->setCompleted( true );
221 hide(); 224 hide();
222 emit todoCompleted(((Todo*)mIncidence)); 225 emit todoCompleted(((Todo*)mIncidence));
223 return; 226 return;
224 227
225 } else 228 } else
226 date = mIncidence->dtStart().date(); 229 date = mIncidence->dtStart().date();
227 globalFlagBlockAgenda = 1; 230 globalFlagBlockAgenda = 1;
228 emit showAgendaView( false ); 231 emit showAgendaView( false );
229 globalFlagBlockAgenda = 2; 232 globalFlagBlockAgenda = 2;
230 emit jumpToTime( date ); 233 emit jumpToTime( date );
231 } 234 }
232} 235}
233void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e ) 236void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e )
234{ 237{
235 switch ( e->key() ) { 238 switch ( e->key() ) {
236 239
237 case Qt::Key_A : 240 case Qt::Key_A :
238 case Qt::Key_L : 241 case Qt::Key_L :
239 showIncidence(); 242 showIncidence();
240 break; 243 break;
241 case Qt::Key_E : 244 case Qt::Key_E :
242 case Qt::Key_R : 245 case Qt::Key_R :
243 editIncidence(); 246 editIncidence();
244 break; 247 break;
245 case Qt::Key_C: 248 case Qt::Key_C:
246 case Qt::Key_Escape: 249 case Qt::Key_Escape:
247 close(); 250 close();
248 break; 251 break;
249 case Qt::Key_I: 252 case Qt::Key_I:
250 accept(); 253 accept();
251 break; 254 break;
252 default: 255 default:
253 break; 256 break;
254 } 257 }
255 258
256} 259}