summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt12
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt5
-rw-r--r--kalarmd/alarmdialog.cpp52
-rw-r--r--korganizer/calendarview.cpp18
-rw-r--r--korganizer/calendarview.h2
-rw-r--r--korganizer/mainwindow.cpp19
-rw-r--r--korganizer/mainwindow.h1
7 files changed, 95 insertions, 14 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index d4ec863..4250fb3 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,193 +1,205 @@
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.21 ************ 3********** VERSION 2.0.21 ************
4 4
5Fixed another SMTP problem in OM/Pi. 5Fixed another SMTP problem in OM/Pi.
6Some small changed in the new datenavigator in KO/Pi. 6Some small changed in the new datenavigator in KO/Pi.
7Changed default setting for new filter in KA/Pi to "exclude categories". 7Changed default setting for new filter in KA/Pi to "exclude categories".
8Changed the default font size for 640x480 display . 8Changed the default font size for 640x480 display .
9Changed popup menu behaviour in agenda and list view. 9Changed popup menu behaviour in agenda and list view.
10Fixed some layout problems of the date label size in the month view. 10Fixed some layout problems of the date label size in the month view.
11Made month view update faster. 11Made month view update faster.
12Made first datenavigator repainting faster. 12Made first datenavigator repainting faster.
13Changed the title of the event/todo edit dialogs. 13Changed the title of the event/todo edit dialogs.
14Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course). 14Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course).
15Many small usebility fixes in KO/Pi. 15Many small usebility fixes in KO/Pi.
16Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi. 16Pressing the "Calendar" button on the Z switches now to the next view in KO/Pi.
17The set of possible "next views" are the views you have toolbar buttons for. 17The set of possible "next views" are the views you have toolbar buttons for.
18 18
19Made alarm sound working on Linux.
20
21KO/Pi alarm applet changed:
22Made buttons in alarm dialog much bigger.
23Made setting of timer more user friendly by showing the actual timer fire time and making the buttons in the timer settings much bigger.
24The goal was it to make it possible to use a finger tip ( and not the stylus ) on the touchscreen to adjust the settings.
25
26And because this version is realeased at Easter, I added an Easter-egg:
27With a new undocumented command you can get a message box about the next alarm.
28Good luck to find it!
29
30
19 31
20********** VERSION 2.0.20 ************ 32********** VERSION 2.0.20 ************
21 33
22Two small fixes in OM/Pi. 34Two small fixes in OM/Pi.
23 35
24Better resizing of the new datenavigator in KO/Pi. 36Better resizing of the new datenavigator in KO/Pi.
25 37
26********** VERSION 2.0.19 ************ 38********** VERSION 2.0.19 ************
27KO/Pi: 39KO/Pi:
28Enhancements and bugfixes in the new datenavigator. 40Enhancements and bugfixes in the new datenavigator.
29Bugfix in this changelog: 41Bugfix in this changelog:
30The datenavigator was changed in version 2.0.18, not the datepicker. 42The datenavigator was changed in version 2.0.18, not the datepicker.
31 43
32********** VERSION 2.0.18 ************ 44********** VERSION 2.0.18 ************
33KO/Pi: 45KO/Pi:
34Fixed some minor problems. 46Fixed some minor problems.
35Cleaned up the KO/Pi config dialog. 47Cleaned up the KO/Pi config dialog.
36Fixed problem moving events in aganda view. 48Fixed problem moving events in aganda view.
37Made datepicker scaleable, i.e. if the datenavigator shows now a 49Made datepicker scaleable, i.e. if the datenavigator shows now a
38datenavigator matrix depending on its size. 50datenavigator matrix depending on its size.
39Birthdays are now displayed green in the datenavigator. 51Birthdays are now displayed green in the datenavigator.
40What'sThis Help in datenavigator shows all events of the day. 52What'sThis Help in datenavigator shows all events of the day.
41 53
42OM/Pi: 54OM/Pi:
43Updated the backend mail library to the latest version. 55Updated the backend mail library to the latest version.
44Please backup your mail before using this version. 56Please backup your mail before using this version.
45 57
46********** VERSION 2.0.17 ************ 58********** VERSION 2.0.17 ************
47 59
48KO/Pi: 60KO/Pi:
49Tooltips in month view were not sorted. Fixed. 61Tooltips in month view were not sorted. Fixed.
50Daylabel in agenda view ( for display of one day ) was too short. Fixed. 62Daylabel in agenda view ( for display of one day ) was too short. Fixed.
51Conflict display dialog for syncing was not on top of other windows. Fixed. 63Conflict display dialog for syncing was not on top of other windows. Fixed.
52Fixed some minor problems. 64Fixed some minor problems.
53 65
54Fixed an endless loop when importing vcs file with RESOURCES entry. 66Fixed an endless loop when importing vcs file with RESOURCES entry.
55 67
56********** VERSION 2.0.16 ************ 68********** VERSION 2.0.16 ************
57OM/Pi: 69OM/Pi:
58Fixed the SMTP account setting the option. 70Fixed the SMTP account setting the option.
59Fixed something in mail sending. 71Fixed something in mail sending.
60 72
61KO/Pi: 73KO/Pi:
62Added possibility to export selected events/todos as vcal file. 74Added possibility to export selected events/todos as vcal file.
63 75
64********** VERSION 2.0.15 ************ 76********** VERSION 2.0.15 ************
65 77
66PwM/Pi: 78PwM/Pi:
67Added keyboard shorcuts for 79Added keyboard shorcuts for
68- toggling summary view (space bar) 80- toggling summary view (space bar)
69- delete item (delete + backspace key) 81- delete item (delete + backspace key)
70- add new item ( i + n key) 82- add new item ( i + n key)
71Fixed length of info in the title. 83Fixed length of info in the title.
72 84
73KO/Pi-KA/Pi: 85KO/Pi-KA/Pi:
74Changed "ME" menu bar entry to an icon. 86Changed "ME" menu bar entry to an icon.
75 87
76KO/Pi: 88KO/Pi:
77Fixed two minor bugs in displaying todos. 89Fixed two minor bugs in displaying todos.
78If in month view a cell is selected, the key shortcut "d" shows now that date. 90If in month view a cell is selected, the key shortcut "d" shows now that date.
79Added complete info for a todo in month view as an icon left of the text. 91Added complete info for a todo in month view as an icon left of the text.
80Fixed problems of displaying data when "<" or ">" are used in summary/location/description. 92Fixed problems of displaying data when "<" or ">" are used in summary/location/description.
81Fixed problem of search dialog size when switching displays. 93Fixed problem of search dialog size when switching displays.
82Cancel key now closes date picker. 94Cancel key now closes date picker.
83Rearranged KO/Pi file menu structure. 95Rearranged KO/Pi file menu structure.
84 96
85OM/Pi: 97OM/Pi:
86Added to the SMTP account setting the option 98Added to the SMTP account setting the option
87"No secure connection". 99"No secure connection".
88You have to configure your SMTP accounts again, sorry. 100You have to configure your SMTP accounts again, sorry.
89 101
90KA/Pi: 102KA/Pi:
91Added support for importing quoted-printable. 103Added support for importing quoted-printable.
92Support was added by Peter P.. Thanks, Peter! 104Support was added by Peter P.. Thanks, Peter!
93 105
94 106
95********** VERSION 2.0.14 ************ 107********** VERSION 2.0.14 ************
96 108
97Made Passwordmanager PwM/Pi more userfriendly: 109Made Passwordmanager PwM/Pi more userfriendly:
98Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 110Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
99Fixed bug in KO/Pi todo printing. 111Fixed bug in KO/Pi todo printing.
100Made Qtopia calendar import possible on desktop . 112Made Qtopia calendar import possible on desktop .
101 113
102********** VERSION 2.0.13 ************ 114********** VERSION 2.0.13 ************
103 115
104Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 116Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
105 117
106In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 118In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
107 119
108OM/Pi: 120OM/Pi:
109Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 121Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
110Added missing German translation. 122Added missing German translation.
111Added warning if path is specified in local folder settings of account config. 123Added warning if path is specified in local folder settings of account config.
112 124
113********** VERSION 2.0.12 ************ 125********** VERSION 2.0.12 ************
114 126
115KO/Pi: 127KO/Pi:
116Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 128Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
117Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 129Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
118Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 130Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
119 131
120Fixed problem in pi-sync mode when wrong password was sent. 132Fixed problem in pi-sync mode when wrong password was sent.
121 133
122OM/Pi: 134OM/Pi:
123Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 135Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
124Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 136Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
125 137
126********** VERSION 2.0.11 ************ 138********** VERSION 2.0.11 ************
127 139
128Fixed some problems in pi-sync mode 140Fixed some problems in pi-sync mode
129(e.g. details of events were not synced properly) 141(e.g. details of events were not synced properly)
130 142
131********** VERSION 2.0.10 ************ 143********** VERSION 2.0.10 ************
132 144
133KO/Pi: 145KO/Pi:
134In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 146In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
135This is fixed. 147This is fixed.
136Changed the search dialog a bit to make it more user friendly. 148Changed the search dialog a bit to make it more user friendly.
137(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 149(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
138 150
139Added config option to hide the week number in KO/Pi toolbar. 151Added config option to hide the week number in KO/Pi toolbar.
140 152
141********** VERSION 2.0.9 ************ 153********** VERSION 2.0.9 ************
142 154
143Made month view icons for multiday events a bit nicer. 155Made month view icons for multiday events a bit nicer.
144Some minor fixes in KO/Pi 156Some minor fixes in KO/Pi
145(e.g. go to today did not work for new week view properly). 157(e.g. go to today did not work for new week view properly).
146 158
147 159
148********** VERSION 2.0.8 ************ 160********** VERSION 2.0.8 ************
149 161
150Fixed a problem in dependency info in the ipk files for the Zaurus. 162Fixed a problem in dependency info in the ipk files for the Zaurus.
151 163
152Added 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. 164Added 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.
153 165
154Added a "go today" button to the datepicker. 166Added a "go today" button to the datepicker.
155 167
156Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 168Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
157and made it configureable to show these values. 169and made it configureable to show these values.
158 170
159Fixed a problem for events (from external iCal files) that do have a duration but no end date. 171Fixed a problem for events (from external iCal files) that do have a duration but no end date.
160 172
161 173
162********** VERSION 2.0.7 ************ 174********** VERSION 2.0.7 ************
163 175
164Added global application font settings 176Added global application font settings
165(for all KDE-Pim/Pi apps) to the general settings. 177(for all KDE-Pim/Pi apps) to the general settings.
166 178
167Fixed a problem in OM/Pi when trying to login to some IMAP servers 179Fixed a problem in OM/Pi when trying to login to some IMAP servers
168(like the IMAP server of Apple: mail.mac.com ) 180(like the IMAP server of Apple: mail.mac.com )
169 181
170Added recurring todos to KO/Pi. 182Added recurring todos to KO/Pi.
171 183
172 184
173********** VERSION 2.0.6 ************ 185********** VERSION 2.0.6 ************
174 186
175Stable release 2.0.6! 187Stable release 2.0.6!
176 188
177Some bugfixes in the pi-sync mode. 189Some bugfixes in the pi-sync mode.
178Added German translation for pi-sync mode. 190Added German translation for pi-sync mode.
179 191
180KO/Pi: 192KO/Pi:
181Made the todolist using alternate background. 193Made the todolist using alternate background.
182 194
183Other minor fixes in KO/Pi. 195Other minor fixes in KO/Pi.
184 196
185 197
186You can find the complete changelog 198You can find the complete changelog
187from version 1.7.7 to 2.0.5 199from version 1.7.7 to 2.0.5
188in the source package or on 200in the source package or on
189 201
190http://www.pi-sync.net/html/changelog.html 202http://www.pi-sync.net/html/changelog.html
191 203
192 204
193 205
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index b6293b5..ce55780 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -1115,199 +1115,202 @@
1115{ "Edit Filters","Ändere Filter" }, 1115{ "Edit Filters","Ändere Filter" },
1116{ "Print What's Next View...","Drucke What's Next Ansicht..." }, 1116{ "Print What's Next View...","Drucke What's Next Ansicht..." },
1117{ "Agenda","Agenda" }, 1117{ "Agenda","Agenda" },
1118{ " ("," (" }, 1118{ " ("," (" },
1119{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" }, 1119{ "<p><b>Due on:</b> %1</p>","<p><b>Fällig am:</b> %1</p>" },
1120{ "Print","Print" }, 1120{ "Print","Print" },
1121{ "&Setup Printer...","Drucker &Setup..." }, 1121{ "&Setup Printer...","Drucker &Setup..." },
1122{ "View Type","Zeige Typ" }, 1122{ "View Type","Zeige Typ" },
1123{ "Page &orientation:","Seiten Ausrichtung:" }, 1123{ "Page &orientation:","Seiten Ausrichtung:" },
1124{ "Use Default of Selected Style","Default des selektierten Stils" }, 1124{ "Use Default of Selected Style","Default des selektierten Stils" },
1125{ "Use Default Setting of Printer","Default Einstellung des Druckers" }, 1125{ "Use Default Setting of Printer","Default Einstellung des Druckers" },
1126{ "Portrait","Portrait" }, 1126{ "Portrait","Portrait" },
1127{ "Landscape","Landschaft" }, 1127{ "Landscape","Landschaft" },
1128{ "Print day","Drucke Tag" }, 1128{ "Print day","Drucke Tag" },
1129{ "CalPrintDay_Base","CalPrintDay_Base" }, 1129{ "CalPrintDay_Base","CalPrintDay_Base" },
1130{ "Date && Time Range","Datum && Zeitspanne" }, 1130{ "Date && Time Range","Datum && Zeitspanne" },
1131{ "&End date:","&Enddatum:" }, 1131{ "&End date:","&Enddatum:" },
1132{ "&Start date:","&Startdatum:" }, 1132{ "&Start date:","&Startdatum:" },
1133{ "Start &time:","Startzeit:" }, 1133{ "Start &time:","Startzeit:" },
1134{ "End ti&me:","Endzeit:" }, 1134{ "End ti&me:","Endzeit:" },
1135{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" }, 1135{ "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" },
1136{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, 1136{ "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" },
1137{ "Alt+D","Alt+D" }, 1137{ "Alt+D","Alt+D" },
1138{ "&Use colors","Nutze Farben" }, 1138{ "&Use colors","Nutze Farben" },
1139{ "Alt+U","Alt+U" }, 1139{ "Alt+U","Alt+U" },
1140{ "Print week","Drucke Woche" }, 1140{ "Print week","Drucke Woche" },
1141{ "CalPrintWeek_Base","CalPrintWeek_Base" }, 1141{ "CalPrintWeek_Base","CalPrintWeek_Base" },
1142{ "Use &colors","Nutze Farben" }, 1142{ "Use &colors","Nutze Farben" },
1143{ "Type of View","Typ der Ansicht" }, 1143{ "Type of View","Typ der Ansicht" },
1144{ "Print as &Filofax page","Drucke als &Filofax Seite" }, 1144{ "Print as &Filofax page","Drucke als &Filofax Seite" },
1145{ "Alt+F","Alt+F" }, 1145{ "Alt+F","Alt+F" },
1146{ "Print as &timetable view:","Drucke als Zeittabelle:" }, 1146{ "Print as &timetable view:","Drucke als Zeittabelle:" },
1147{ "Alt+T","Alt+T" }, 1147{ "Alt+T","Alt+T" },
1148{ "Print as split week view","Drucke als gesplittete Wochenansicht" }, 1148{ "Print as split week view","Drucke als gesplittete Wochenansicht" },
1149{ "Print month","Drucke Monat" }, 1149{ "Print month","Drucke Monat" },
1150{ "CalPrintMonth_Base","CalPrintMonth_Base" }, 1150{ "CalPrintMonth_Base","CalPrintMonth_Base" },
1151{ "&Start month:","&Startmonat:" }, 1151{ "&Start month:","&Startmonat:" },
1152{ "&End month:","&Endmonat:" }, 1152{ "&End month:","&Endmonat:" },
1153{ "Print week &numbers","Drucke Wochen Nummer(n)" }, 1153{ "Print week &numbers","Drucke Wochen Nummer(n)" },
1154{ "Print todos","Drucke Todos" }, 1154{ "Print todos","Drucke Todos" },
1155{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, 1155{ "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" },
1156{ "Include &description of the item","Inclusive Itembeschreibung" }, 1156{ "Include &description of the item","Inclusive Itembeschreibung" },
1157{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" }, 1157{ "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" },
1158{ "Include &priority of the item","Inclusive Priorität des Items" }, 1158{ "Include &priority of the item","Inclusive Priorität des Items" },
1159{ "Items to Print","Zu druckende Items" }, 1159{ "Items to Print","Zu druckende Items" },
1160{ "&From:","Von:" }, 1160{ "&From:","Von:" },
1161{ "&To:","Bis:" }, 1161{ "&To:","Bis:" },
1162{ "Print &all todo items","Drucke alle Todo Items" }, 1162{ "Print &all todo items","Drucke alle Todo Items" },
1163{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, 1163{ "Print only &uncompleted items","Drucke nur nicht erledigte Todos" },
1164{ "Only items due in the &range:","Nur Items in dem Zeitraum:" }, 1164{ "Only items due in the &range:","Nur Items in dem Zeitraum:" },
1165{ "Todo List","Todo Liste" }, 1165{ "Todo List","Todo Liste" },
1166{ "&Title:","&Titel:" }, 1166{ "&Title:","&Titel:" },
1167{ "Co&nnect subtodos with its parent","Verbinde Unter-Todos mit ihren Ober-Todos" }, 1167{ "Co&nnect subtodos with its parent","Verbinde Unter-Todos mit ihren Ober-Todos" },
1168{ "Todo list","Todo Liste" }, 1168{ "Todo list","Todo Liste" },
1169{ "&Print...","Drucke..." }, 1169{ "&Print...","Drucke..." },
1170{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, 1170{ "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" },
1171{ "[Unconfigured]","[Unkonfiguriert]" }, 1171{ "[Unconfigured]","[Unkonfiguriert]" },
1172{ "OK","OK" }, 1172{ "OK","OK" },
1173{ "FilterEditor","FilterEditor" }, 1173{ "FilterEditor","FilterEditor" },
1174{ "Include","Inclusive" }, 1174{ "Include","Inclusive" },
1175{ "Exclude","Exclusive" }, 1175{ "Exclude","Exclusive" },
1176{ "Edit Selection...","Editiere Auswahl" }, 1176{ "Edit Selection...","Editiere Auswahl" },
1177{ "recurring events","wiederholende Termine" }, 1177{ "recurring events","wiederholende Termine" },
1178{ "recurr. events","wiederh.Termine" }, 1178{ "recurr. events","wiederh.Termine" },
1179{ "completed to-dos","erledigte Todos" }, 1179{ "completed to-dos","erledigte Todos" },
1180{ "events","Termine" }, 1180{ "events","Termine" },
1181{ "todos","Todos" }, 1181{ "todos","Todos" },
1182{ "journals","Journale" }, 1182{ "journals","Journale" },
1183{ "public","öffentl." }, 1183{ "public","öffentl." },
1184{ "private","privat" }, 1184{ "private","privat" },
1185{ "confidential","vertraul." }, 1185{ "confidential","vertraul." },
1186{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" }, 1186{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" },
1187{ "Yesterday","Gestern" }, 1187{ "Yesterday","Gestern" },
1188{ "Day after tomorrow","Übermorgen" }, 1188{ "Day after tomorrow","Übermorgen" },
1189{ "Tomorrow","Morgen" }, 1189{ "Tomorrow","Morgen" },
1190{ "Day before yesterday","Vorgestern" }, 1190{ "Day before yesterday","Vorgestern" },
1191{ "Size %1","Größe %1" }, 1191{ "Size %1","Größe %1" },
1192{ "New Agendasize: %1","Neue Agendagröße: %1" }, 1192{ "New Agendasize: %1","Neue Agendagröße: %1" },
1193{ " (%1 y.)"," (%1 J.)" }, 1193{ " (%1 y.)"," (%1 J.)" },
1194{ "Allday:","Ganztägig:" }, 1194{ "Allday:","Ganztägig:" },
1195{ "compl.todos","erled.Todos" }, 1195{ "compl.todos","erled.Todos" },
1196{ "Day view","Tagesansicht" }, 1196{ "Day view","Tagesansicht" },
1197{ "Next days","Nächste Tage" }, 1197{ "Next days","Nächste Tage" },
1198{ "Next week","Nächste Woche" }, 1198{ "Next week","Nächste Woche" },
1199{ "Next two weeks","Nächste zwei Wochen" }, 1199{ "Next two weeks","Nächste zwei Wochen" },
1200{ "Next month","Nächster Monat" }, 1200{ "Next month","Nächster Monat" },
1201{ "Journal view","Journal" }, 1201{ "Journal view","Journal" },
1202{ "Display all opened","Zeige alle geöffnet" }, 1202{ "Display all opened","Zeige alle geöffnet" },
1203{ "Display all closed","Zeige alle geschlossen" }, 1203{ "Display all closed","Zeige alle geschlossen" },
1204{ "Display all flat","Zeige alle flach" }, 1204{ "Display all flat","Zeige alle flach" },
1205{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" }, 1205{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" },
1206{ "Default todo done color:","Standard Todo erledigt Farbe" }, 1206{ "Default todo done color:","Standard Todo erledigt Farbe" },
1207{ "Select week %1-%2","Wähle Woche %1-%2" }, 1207{ "Select week %1-%2","Wähle Woche %1-%2" },
1208{ "Select Week","Wähle Woche" }, 1208{ "Select Week","Wähle Woche" },
1209{ "Set alarm for selected...","Setze Alarm für Selekt..." }, 1209{ "Set alarm for selected...","Setze Alarm für Selekt..." },
1210{ "Set Alarm!","Setze Alarm!" }, 1210{ "Set Alarm!","Setze Alarm!" },
1211{ "Canged alarm for %1 items","Alarm für %1 Items geändert" }, 1211{ "Canged alarm for %1 items","Alarm für %1 Items geändert" },
1212{ " and "," und " }, 1212{ " and "," und " },
1213{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" }, 1213{ "<IMG src="%1"> only )","nur <IMG src="%1"> )" },
1214{ "Mail to selected","Mail an Ausgewählte" }, 1214{ "Mail to selected","Mail an Ausgewählte" },
1215{ "Mail to all","Mail an Alle" }, 1215{ "Mail to all","Mail an Alle" },
1216{ "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" }, 1216{ "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" },
1217{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" }, 1217{ "Set reminder ON with offset to:","Alarm AN mit Offset auf:" },
1218{ " on"," am" }, 1218{ " on"," am" },
1219{ " completed on "," erledigt am " }, 1219{ " completed on "," erledigt am " },
1220{ "Save as Event template","Speichere als Vorlage" }, 1220{ "Save as Event template","Speichere als Vorlage" },
1221{ "Load Event template","Lade Termin Vorlage" }, 1221{ "Load Event template","Lade Termin Vorlage" },
1222{ "Save as Journal template","Speichere als Journal Vorlage" }, 1222{ "Save as Journal template","Speichere als Journal Vorlage" },
1223{ "Insert Journal template","Füge Journal Vorlage ein" }, 1223{ "Insert Journal template","Füge Journal Vorlage ein" },
1224{ "Sub todos:<br>","Unter Todos:<br>" }, 1224{ "Sub todos:<br>","Unter Todos:<br>" },
1225{ "Parent todo:<br>","Über Todo:<br>" }, 1225{ "Parent todo:<br>","Über Todo:<br>" },
1226{ "Set current as color category","Setze Gewählte als Farbkategorie" }, 1226{ "Set current as color category","Setze Gewählte als Farbkategorie" },
1227{ " completed"," erledigt" }, 1227{ " completed"," erledigt" },
1228{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nfür intensives Testen!" }, 1228{ "(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!","(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi basiert auf KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) und das KDE Team.\nKOrganizer/Pi ist lizensiert unter der GPL.\nKO/Pi kann kompiliert werden für\nLinux, Zaurus-PDA und Windows\nwww.pi-sync.info --- www.korganizer.org\nBesonderen Dank an Michael und Ben\nfür intensives Testen!" },
1229{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, 1229{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." },
1230{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, 1230{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." },
1231{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, 1231{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." },
1232{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" }, 1232{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" },
1233{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, 1233{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." },
1234{ "Error","Fehler" }, 1234{ "Error","Fehler" },
1235{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, 1235{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." },
1236{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, 1236{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." },
1237{ "Warning","Warnung" }, 1237{ "Warning","Warnung" },
1238{ "Select week number","Wähle Wochen Nummer" }, 1238{ "Select week number","Wähle Wochen Nummer" },
1239{ "Februar","Februar" }, 1239{ "Februar","Februar" },
1240{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" }, 1240{ "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" },
1241{ "W","W" }, 1241{ "W","W" },
1242{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" }, 1242{ "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" },
1243{ "T: %1","T: %1" }, 1243{ "T: %1","T: %1" },
1244{ "Start: ","Start: " }, 1244{ "Start: ","Start: " },
1245{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, 1245{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " },
1246{ "Password for remote access:","Passwort für fernen Zugriff:" }, 1246{ "Password for remote access:","Passwort für fernen Zugriff:" },
1247{ "Remote IP address:","Ferne IP Adresse:" }, 1247{ "Remote IP address:","Ferne IP Adresse:" },
1248{ "Remote port number:","Ferne Port Nummer:" }, 1248{ "Remote port number:","Ferne Port Nummer:" },
1249{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, 1249{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." },
1250{ "Remote from: ","Fern von: " }, 1250{ "Remote from: ","Fern von: " },
1251{ "Local from: ","Lokal von: " }, 1251{ "Local from: ","Lokal von: " },
1252{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" }, 1252{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" },
1253{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, 1253{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" },
1254{ "Write back","Schreibe zurück" }, 1254{ "Write back","Schreibe zurück" },
1255{ "KO/Pi Synchronization","KO/Pi Synchronisation" }, 1255{ "KO/Pi Synchronization","KO/Pi Synchronisation" },
1256{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, 1256{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" },
1257{ "Received sync request","Sync Anfrage erhalten" }, 1257{ "Received sync request","Sync Anfrage erhalten" },
1258{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." }, 1258{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." },
1259{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, 1259{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." },
1260{ "Data saved to temp file!","Daten in temp Datei gespeichert!" }, 1260{ "Data saved to temp file!","Daten in temp Datei gespeichert!" },
1261{ "Sending file...","Sende Datei..." }, 1261{ "Sending file...","Sende Datei..." },
1262{ "Waiting for synced file...","Warte auf gesyncte Daten..." }, 1262{ "Waiting for synced file...","Warte auf gesyncte Daten..." },
1263{ "Receiving synced file...","Gesyncte Daten erhalten..." }, 1263{ "Receiving synced file...","Gesyncte Daten erhalten..." },
1264{ "Received %1 bytes","%1 Bytes erhalten" }, 1264{ "Received %1 bytes","%1 Bytes erhalten" },
1265{ "Writing file to disk...","Speichere Datei..." }, 1265{ "Writing file to disk...","Speichere Datei..." },
1266{ "Pi-Sync successful!","Pi-Sync erfolgreich!" }, 1266{ "Pi-Sync successful!","Pi-Sync erfolgreich!" },
1267{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, 1267{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" },
1268{ "Synchronize!","Synchronisiere!" }, 1268{ "Synchronize!","Synchronisiere!" },
1269{ "High clock skew!","Großer Uhrzeitunterschied!" }, 1269{ "High clock skew!","Großer Uhrzeitunterschied!" },
1270{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, 1270{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" },
1271{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" }, 1271{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" },
1272{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." }, 1272{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." },
1273{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" }, 1273{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" },
1274{ "List week view","Listenwochenansicht" }, 1274{ "List week view","Listenwochenansicht" },
1275{ "List week","Listenwochenansicht" }, 1275{ "List week","Listenwochenansicht" },
1276{ "Next Week","Nächste Woche" }, 1276{ "Next Week","Nächste Woche" },
1277{ "Previous Week","Vorherige Woche" }, 1277{ "Previous Week","Vorherige Woche" },
1278{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Einträge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo benötigt." }, 1278{ "No items were found matching\nyour search expression.\nUse the wildcard characters\n'*' and '?' where needed.","Keine Einträge gefunden die\ndem Suchausdruck entsprechen.\nBenutze Platzhalter Zeichen\n'*' und '?' wo benötigt." },
1279{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" }, 1279{ "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" },
1280{ "Details","Details" }, 1280{ "Details","Details" },
1281{ "Created time","Erstellt Zeit" }, 1281{ "Created time","Erstellt Zeit" },
1282{ "Last modified time","Geändert Zeit" }, 1282{ "Last modified time","Geändert Zeit" },
1283{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" }, 1283{ "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" },
1284{ "View Options","Anzeige Optionen" }, 1284{ "View Options","Anzeige Optionen" },
1285{ "<b>Created: ","<b>Erstellt am: " }, 1285{ "<b>Created: ","<b>Erstellt am: " },
1286{ "<b>Last modified: ","<b>Zuletzt geändert am: " }, 1286{ "<b>Last modified: ","<b>Zuletzt geändert am: " },
1287{ "Journal: ","Journal: " }, 1287{ "Journal: ","Journal: " },
1288{ "yearly","jährlich" }, 1288{ "yearly","jährlich" },
1289{ "(%1) ","%1-" }, 1289{ "(%1) ","%1-" },
1290{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" }, 1290{ "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" },
1291{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" }, 1291{ "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" },
1292{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" }, 1292{ "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" },
1293{ "Summary/Loc.","Titel/Ort" }, 1293{ "Summary/Loc.","Titel/Ort" },
1294{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." }, 1294{ "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." },
1295{ "Week Number","Wochennummer" }, 1295{ "Week Number","Wochennummer" },
1296{ "Import","Importiere" }, 1296{ "Import","Importiere" },
1297{ "Export","Exportiere" }, 1297{ "Export","Exportiere" },
1298{ "Beam","Beame" }, 1298{ "Beam","Beame" },
1299{ "Export selected","Exportiere Selektierte" }, 1299{ "Export selected","Exportiere Selektierte" },
1300{ "As iCal (ics) file...","Als iCal (ics) Datei..." }, 1300{ "As iCal (ics) file...","Als iCal (ics) Datei..." },
1301{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." }, 1301{ "As vCal (vcs) file...","Als vCal (vcs) Datei..." },
1302{ "Journal/Details...","Journale/Details..." }, 1302{ "Journal/Details...","Journale/Details..." },
1303{ "Agenda View","Agenda Ansicht" }, 1303{ "Agenda View","Agenda Ansicht" },
1304{ "Show current time","Zeige aktuelle Zeit" }, 1304{ "Show current time","Zeige aktuelle Zeit" },
1305{ "Edit new item","Bearbeite neuen Eintrag" }, 1305{ "Edit new item","Bearbeite neuen Eintrag" },
1306{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte wählen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" }, 1306{ "Please select at least one\nof the types to search for:\n\nEvents\nTodos\nJournals","Bitte wählen Sie mindestens\neinen dieser Typen\num darin zu suchen:\n\nTermine\nTodos\nJournale" },
1307{ "There is no next alarm.","Es gibt keinen nächsten Alarm." },
1308{ "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (nächster Termin/Todo mit Alarm)" },
1309{ "The next alarm is on:\n%1\nat: %2\n\n%3\n(%4)","Der nächste Alarm in am:\n%1\num: %2\n\n%3\n(%4)" },
1307{ "","" }, 1310{ "","" },
1308{ "","" }, 1311{ "","" },
1309{ "","" }, 1312{ "","" },
1310{ "","" }, 1313{ "","" },
1311{ "","" }, 1314{ "","" },
1312{ "","" }, 1315{ "","" },
1313{ "","" }, 1316 \ No newline at end of file
diff --git a/kalarmd/alarmdialog.cpp b/kalarmd/alarmdialog.cpp
index c939ae0..7ead3b9 100644
--- a/kalarmd/alarmdialog.cpp
+++ b/kalarmd/alarmdialog.cpp
@@ -1,280 +1,312 @@
1/* 1/*
2 This file is part of the KDE alarm daemon. 2 This file is part of the KDE alarm daemon.
3 Copyright (c) 2000 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000 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// $Id$ 24// $Id$
25 25
26#include <qhbox.h> 26#include <qhbox.h>
27#include <qvbox.h> 27#include <qvbox.h>
28#include <qapp.h> 28#include <qapp.h>
29#include <qlabel.h> 29#include <qlabel.h>
30#include <qlayout.h> 30#include <qlayout.h>
31#include <qfile.h> 31#include <qfile.h>
32#include <qtimer.h> 32#include <qtimer.h>
33#include <qsound.h> 33#include <qsound.h>
34#include <qpushbutton.h> 34#include <qpushbutton.h>
35#define protected public 35#define protected public
36#include <qspinbox.h> 36#include <qspinbox.h>
37#undef protected 37#undef protected
38#include <stdlib.h> 38#include <stdlib.h>
39#ifndef _WIN32_ 39#ifndef _WIN32_
40#include <unistd.h> 40#include <unistd.h>
41#include <sys/ioctl.h> 41#include <sys/ioctl.h>
42#endif 42#endif
43#include <stdio.h> 43#include <stdio.h>
44#include <fcntl.h> 44#include <fcntl.h>
45 45
46#ifndef DESKTOP_VERSION 46#ifndef DESKTOP_VERSION
47#include <qtopia/alarmserver.h> 47#include <qtopia/alarmserver.h>
48#include <qpe/resource.h> 48#include <qpe/resource.h>
49#include <qtopia/sound.h> 49#include <qtopia/sound.h>
50
50#endif 51#endif
51 52
52#include "alarmdialog.h" 53#include "alarmdialog.h"
53 54
54 55
55AlarmDialog::AlarmDialog(QWidget *parent,const char *name) 56AlarmDialog::AlarmDialog(QWidget *parent,const char *name)
56 : QDialog (parent, name, true, Qt::WStyle_StaysOnTop ) 57 : QDialog (parent, name, true, Qt::WStyle_StaysOnTop )
57{ 58{
58 setCaption( "KO/Pi Alarm!" ); 59 setCaption( "KO/Pi Alarm!" );
59 QVBoxLayout* layout = new QVBoxLayout( this); 60 QVBoxLayout* layout = new QVBoxLayout( this);
60 QLabel* l = new QLabel("The following event triggered alarm:",this); 61 QLabel* l = new QLabel("The following event triggered alarm:",this);
61 layout->addWidget ( l ); 62 layout->addWidget ( l );
62 l->setAlignment( AlignCenter); 63 l->setAlignment( AlignCenter);
63 mMessage = new QLabel ( " ", this ); 64 mMessage = new QLabel ( " ", this );
64 int fs = 18; 65 int fs = 18;
65 int fs2 = 12; 66 int fs2 = 12;
66 if ( QApplication::desktop()->width() < 480 ) { 67 if ( QApplication::desktop()->width() < 480 ) {
67 setMaximumSize(220, 260); 68 setMaximumSize(220, 260);
68 fs2 = 10; 69 fs2 = 10;
69 } 70 }
70 else { 71 else {
71 setMaximumSize(440, 440); 72 setMaximumSize(440, 440);
72 } 73 }
73 layout->setSpacing( 3 ); 74 layout->setSpacing( 3 );
74 layout->setMargin( 3 ); 75 layout->setMargin( 3 );
75 QFont fo = QApplication::font(); 76 QFont fo = QApplication::font();
76 fo.setBold( true ); 77 fo.setBold( true );
77 fo.setPointSize( fs2 ); 78 fo.setPointSize( fs2 );
78 l->setFont( fo ); 79 l->setFont( fo );
79 fo.setPointSize( fs ); 80 fo.setPointSize( fs );
80 mMessage->setFont(fo ); 81 mMessage->setFont(fo );
81 mMessage->setAlignment( AlignCenter); 82 mMessage->setAlignment( AlignCenter);
82 layout->addWidget ( mMessage ); 83 layout->addWidget ( mMessage );
83 mMissedAlarms= new QLabel ( "(No missed Alarms)", this ); 84 mMissedAlarms= new QLabel ( "(No missed Alarms)", this );
84 mMissedAlarms->setAlignment( AlignCenter); 85 mMissedAlarms->setAlignment( AlignCenter);
85 86
86 playSoundTimer = new QTimer( this ); 87 playSoundTimer = new QTimer( this );
87 connect ( playSoundTimer, SIGNAL( timeout() ), this, SLOT (playSound() ) ); 88 connect ( playSoundTimer, SIGNAL( timeout() ), this, SLOT (playSound() ) );
88 89
89 playSoundTimer->stop(); 90 playSoundTimer->stop();
90 91
91 layout->addWidget ( mMissedAlarms ); 92 layout->addWidget ( mMissedAlarms );
92 mMissedAlarmsCombo = new QComboBox ( this ); 93 mMissedAlarmsCombo = new QComboBox ( this );
93 layout->addWidget ( mMissedAlarmsCombo ); 94 layout->addWidget ( mMissedAlarmsCombo );
94 QVBox *suspendBox = new QVBox( this ); 95
95 suspendBox->setSpacing(3); 96 QLabel* labb = new QLabel("Suspend duration (minutes):",this);
96 layout->addWidget ( suspendBox );
97 QLabel* labb = new QLabel("Suspend duration (minutes):",suspendBox);
98 labb->setAlignment(AlignCenter); 97 labb->setAlignment(AlignCenter);
98 layout->addWidget ( labb );
99 fo = font(); 99 fo = font();
100 fo.setPointSize( 36 ); 100 int pointSize = 36;
101 mSuspendSpin = new QSpinBox(1,1440,1,suspendBox); 101 if ( QApplication::desktop()->width() <= 320 )
102 pointSize = 24;
103 fo.setPointSize( pointSize );
104 mSuspendSpin = new QSpinBox(1,1440,1,this);
102 mSuspendSpin->setFont( fo ); 105 mSuspendSpin->setFont( fo );
103 mSuspendSpin->setValue(7); // default suspend duration 106 mSuspendSpin->setValue(7); // default suspend duration
104 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus ); 107 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus );
105 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus ); 108 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus );
106#if QT_VERSION < 0x030000 109#if QT_VERSION < 0x030000
107 mSuspendSpin->upButton ()->setFixedSize( QSize( 48, 30 )); 110 mSuspendSpin->upButton ()->setFixedSize( QSize( 48, 30 ));
108 mSuspendSpin->downButton ()->setFixedSize( QSize( 48, 30 )); 111 mSuspendSpin->downButton ()->setFixedSize( QSize( 48, 30 ));
109#endif 112#endif
110 mSuspendSpin->setFixedSize( 100,62 ); 113 mSuspendSpin->setFixedSize( 100,62 );
111 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus ); 114 mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus );
115 QHBoxLayout* layoutSpin = new QHBoxLayout( layout );
116 layoutSpin->addStretch ();
117 layoutSpin->addWidget ( mSuspendSpin );
118 layoutSpin->addStretch ();
112 119
113 QVBox * bbox = new QVBox ( this ); 120 QVBox * bbox = new QVBox ( this );
114 layout->addWidget ( bbox ); 121 layout->addWidget ( bbox );
115 bbox->layout()->setSpacing( 2 ); 122 bbox->layout()->setSpacing( 2 );
123 labb = new QLabel("Press \"Cancel\" or \"Esc\" to suspend!",bbox);
124 labb->setAlignment(AlignCenter);
116 mSuspendButton = new QPushButton( "Suspend", bbox); 125 mSuspendButton = new QPushButton( "Suspend", bbox);
117 QPushButton* silen = new QPushButton( " Stop sound ", bbox); 126 QPushButton* silen = new QPushButton( " Stop sound ", bbox);
118 QPushButton* okbut = new QPushButton( "Ok", bbox); 127 QPushButton* okbut = new QPushButton( "Ok", bbox);
119 mSuspendButton->setFont( fo ); 128 mSuspendButton->setFont( fo );
120 silen->setFont( fo ); 129 silen->setFont( fo );
121 okbut->setFont( fo ); 130 okbut->setFont( fo );
122 okbut->setDefault( true ); 131 okbut->setDefault( true );
123 connect (silen , SIGNAL( clicked() ), this, SLOT (silent() ) ); 132 connect (silen , SIGNAL( clicked() ), this, SLOT (silent() ) );
124 connect (mSuspendButton, SIGNAL( clicked() ), this, SLOT (slotSuspend() ) ); 133 connect (mSuspendButton, SIGNAL( clicked() ), this, SLOT (slotSuspend() ) );
125 connect (okbut , SIGNAL( clicked() ), this, SLOT (slotOk() ) ); 134 connect (okbut , SIGNAL( clicked() ), this, SLOT (slotOk() ) );
126#ifndef _WIN32_ 135#ifndef _WIN32_
127 if ( QFile::exists ( "/dev/sharp_led" ) ) 136 if ( QFile::exists ( "/dev/sharp_led" ) )
128 fd_led = open ( "/dev/sharp_led", O_RDWR|O_NONBLOCK ); 137 fd_led = open ( "/dev/sharp_led", O_RDWR|O_NONBLOCK );
129 else 138 else
130#endif 139#endif
131 fd_led = 0; 140 fd_led = 0;
132 statusLED.which = SHARP_LED_SALARM; 141 statusLED.which = SHARP_LED_SALARM;
133 mSilent = false; 142 mSilent = false;
134 mSuspendCounter = 0; 143 mSuspendCounter = 0;
135 setServerNotification( true ); 144 setServerNotification( true );
136} 145}
137void AlarmDialog::reject () 146void AlarmDialog::reject ()
138{ 147{
139 QTimer::singleShot ( 3000, this, SLOT (suspend()) ); 148 QTimer::singleShot ( 3000, this, SLOT (suspend()) );
140 slotSuspend(); 149 slotSuspend();
141} 150}
142AlarmDialog::~AlarmDialog() 151AlarmDialog::~AlarmDialog()
143{ 152{
144} 153}
145void AlarmDialog::silent () 154void AlarmDialog::silent ()
146{ 155{
147 mSilent = true; 156 mSilent = true;
148} 157}
149void AlarmDialog::accept() 158void AlarmDialog::accept()
150{ 159{
151 slotOk(); 160 slotOk();
152} 161}
153 162
154void AlarmDialog::suspend() 163void AlarmDialog::suspend()
155{ 164{
156#ifdef DESKTOP_VERSION 165#ifdef DESKTOP_VERSION
157 166
158#else 167#else
159 Sound::soundAlarm (); 168 Sound::soundAlarm ();
160#endif 169#endif
161} 170}
162void AlarmDialog::slotOk() 171void AlarmDialog::slotOk()
163{ 172{
164 mStopAlarm = true; 173 mStopAlarm = true;
165 mMissedAlarms->setText("(No missed Alarms)"); 174 mMissedAlarms->setText("(No missed Alarms)");
166 mMessage->setText(""); 175 mMessage->setText("");
167 mMissedAlarmsCombo->clear(); 176 mMissedAlarmsCombo->clear();
168#ifndef _WIN32_ 177#ifndef _WIN32_
169 if ( fd_led > 0 ) { 178 if ( fd_led > 0 ) {
170 statusLED.status = LED_SALARM_OFF ; 179 statusLED.status = LED_SALARM_OFF ;
171 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED); 180 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED);
172 } 181 }
173#endif 182#endif
174 QDialog::accept(); 183 QDialog::accept();
175} 184}
176 185
177void AlarmDialog::slotSuspend() 186void AlarmDialog::slotSuspend()
178{ 187{
179 //qDebug("AlarmDialog::suspend() "); // emit suspendSignal(mSuspendSpin->value()); 188 //qDebug("AlarmDialog::suspend() "); // emit suspendSignal(mSuspendSpin->value());
180 mStopAlarm = true; 189 mStopAlarm = true;
181 QDateTime nextA = QDateTime::currentDateTime().addSecs( mSuspendSpin->value() * 60 ); 190 QDateTime nextA = QDateTime::currentDateTime().addSecs( mSuspendSpin->value() * 60 );
182 QString mess = "suspend_alarm" +mFileName+"+++" ; 191 QString mess = "suspend_alarm" +mFileName+"+++" ;
183 if ( mMessage->text().left( 10 ) !="Suspended:" ) 192 if ( mMessage->text().left( 10 ) !="Suspended:" )
184 mess += "Suspended:\n"; 193 mess += "Suspended:\n";
185 mess +=mMessage->text(); 194 mess +=mMessage->text();
186#ifndef DESKTOP_VERSION 195#ifndef DESKTOP_VERSION
187 if ( mServerNotification ) 196 if ( mServerNotification )
188 AlarmServer::addAlarm ( nextA,"koalarm",mess.latin1()); 197 AlarmServer::addAlarm ( nextA,"koalarm",mess.latin1());
189#endif 198#endif
190 emit addAlarm( nextA , mess ); 199 emit addAlarm( nextA , mess );
191 slotOk(); 200 slotOk();
192} 201}
193 202
194void AlarmDialog::setServerNotification( bool b ) 203void AlarmDialog::setServerNotification( bool b )
195{ 204{
196 mServerNotification = b; 205 mServerNotification = b;
197} 206}
198int AlarmDialog::getSuspendTime( ) 207int AlarmDialog::getSuspendTime( )
199{ 208{
200 return mSuspendSpin->value(); 209 return mSuspendSpin->value();
201 210
202} 211}
203void AlarmDialog::setSuspendTime( int val ) 212void AlarmDialog::setSuspendTime( int val )
204{ 213{
205 mSuspendSpin->setValue( val ); 214 mSuspendSpin->setValue( val );
206} 215}
207bool AlarmDialog::eventNotification( QString mess, int replay , QString fn, bool playwav, int pause , int suspendtimes) 216bool AlarmDialog::eventNotification( QString mess, int replay , QString fn, bool playwav, int pause , int suspendtimes)
208{ 217{
209 if ( mess.left( 9) != "Suspended" ) 218 if ( mess.left( 9) != "Suspended" )
210 mSuspendCounter = suspendtimes; 219 mSuspendCounter = suspendtimes;
211 mPauseCount = pause; 220 mPauseCount = pause;
212 mFileName = fn; 221 mFileName = fn;
213 mPlayWav = playwav; 222 mPlayWav = playwav;
214 if ( !QFile::exists( fn ) ) 223 if ( !QFile::exists( fn ) )
215 mFileName = ""; 224 mFileName = "";
216 alarmCounter = 0 ; 225 alarmCounter = 0 ;
217 maxAlarmReplay = replay ; 226 maxAlarmReplay = replay ;
218 mStopAlarm = false; 227 mStopAlarm = false;
219 mSilent = false; 228 mSilent = false;
220 if ( !mMessage->text().stripWhiteSpace().isEmpty() ) { 229 if ( !mMessage->text().stripWhiteSpace().isEmpty() ) {
221 mMissedAlarmsCombo->show(); 230 mMissedAlarmsCombo->show();
222 mMissedAlarmsCombo->insertItem( mMessage->text().stripWhiteSpace() ); 231 mMissedAlarmsCombo->insertItem( mMessage->text().stripWhiteSpace() );
223 mMissedAlarms->setText( "Missed alarms:"); 232 mMissedAlarms->setText( "Missed alarms:");
224 } else 233 } else
225 mMissedAlarmsCombo->hide(); 234 mMissedAlarmsCombo->hide();
226 mMessage->setText(mess); 235 mMessage->setText(mess);
227 int w =sizeHint().width() ; 236 int w =sizeHint().width() ;
228 int h = sizeHint().height() ; 237 int h = sizeHint().height() ;
229 int dw = QApplication::desktop()->width(); 238 int dw = QApplication::desktop()->width();
230 int dh = QApplication::desktop()->height(); 239 int dh = QApplication::desktop()->height();
231 setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 240 setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
232 show(); 241 show();
233 raise(); 242 raise();
234 qApp->processEvents(); 243 qApp->processEvents();
235 repaint(); 244 repaint();
236 qApp->processEvents(); 245 qApp->processEvents();
237 246
238#ifndef _WIN32_ 247#ifndef _WIN32_
239 if ( fd_led > 0 ) { 248 if ( fd_led > 0 ) {
240 statusLED.status = LED_SALARM_ON ; 249 statusLED.status = LED_SALARM_ON ;
241 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED); 250 ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED);
242 } 251 }
243#endif 252#endif
244 playSoundTimer->start( 1000, true ); 253 playSoundTimer->start( 1000, true );
245 return true; 254 return true;
246 255
247} 256}
248 257
249 258
250void AlarmDialog::playSound () 259void AlarmDialog::playSound ()
251{ 260{
252 if (mStopAlarm ) 261 if (mStopAlarm )
253 return; 262 return;
254 showNormal(); 263 showNormal();
255 setActiveWindow(); 264 setActiveWindow();
256 mSuspendSpin->setFocus(); 265 mSuspendSpin->setFocus();
257 raise(); 266 raise();
258 267
259 qApp->processEvents(); 268 qApp->processEvents();
260 if ( alarmCounter < maxAlarmReplay && ! mSilent) { 269 if ( alarmCounter < maxAlarmReplay && ! mSilent) {
261 ++alarmCounter; 270 ++alarmCounter;
271#ifdef DESKTOP_VERSION
272 mPlayWav = true;
273#endif
262 if ( !mPlayWav || mFileName.length() < 2 ) { 274 if ( !mPlayWav || mFileName.length() < 2 ) {
263 275
264#ifndef DESKTOP_VERSION 276#ifdef DESKTOP_VERSION
277 qDebug("Sound play not possible - file not found");
278#else
265 Sound::soundAlarm (); 279 Sound::soundAlarm ();
266#endif 280#endif
267 } else { 281 } else
282
283 {
284#ifdef DESKTOP_VERSION
285#ifdef _WIN32_
286 QSound::play ( mFileName );
287#else
288
289 QString command = "playwave -r 22050 " + mFileName;
290 qDebug("KO: Playing file %s with 22kHz",mFileName.latin1() );
291 int ret = system ( command.latin1() );
292 if ( ret != 0 ) {
293 qDebug("Sound play command failed: %s ",command.latin1() );
294 }
295
296#endif
297
298#else
268 QSound::play ( mFileName ); 299 QSound::play ( mFileName );
300#endif
269 //qDebug("BEEP!"); 301 //qDebug("BEEP!");
270 } 302 }
271 } else { 303 } else {
272 if ( ! mSilent && mSuspendCounter > 0 ) { 304 if ( ! mSilent && mSuspendCounter > 0 ) {
273 --mSuspendCounter; 305 --mSuspendCounter;
274 reject (); 306 reject ();
275 hide(); 307 hide();
276 return; 308 return;
277 } 309 }
278 } 310 }
279 playSoundTimer->start( mPauseCount * 1000, true ); 311 playSoundTimer->start( mPauseCount * 1000, true );
280} 312}
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 3a16fe6..73aa733 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -46,385 +46,385 @@
46#include <qgroupbox.h> 46#include <qgroupbox.h>
47#include <qfile.h> 47#include <qfile.h>
48#include <qdir.h> 48#include <qdir.h>
49#ifndef KORG_NOSPLITTER 49#ifndef KORG_NOSPLITTER
50#include <qsplitter.h> 50#include <qsplitter.h>
51#endif 51#endif
52 52
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kdebug.h> 54#include <kdebug.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57#include <kmessagebox.h> 57#include <kmessagebox.h>
58#include <knotifyclient.h> 58#include <knotifyclient.h>
59#include <kconfig.h> 59#include <kconfig.h>
60 60
61#include <libkdepim/ksyncprefsdialog.h> 61#include <libkdepim/ksyncprefsdialog.h>
62#include <krun.h> 62#include <krun.h>
63#include <kdirwatch.h> 63#include <kdirwatch.h>
64#include <libkdepim/kdatepicker.h> 64#include <libkdepim/kdatepicker.h>
65#include <libkdepim/ksyncprofile.h> 65#include <libkdepim/ksyncprofile.h>
66#include <libkdepim/kpimglobalprefs.h> 66#include <libkdepim/kpimglobalprefs.h>
67 67
68#include <libkcal/vcaldrag.h> 68#include <libkcal/vcaldrag.h>
69#include <libkcal/icaldrag.h> 69#include <libkcal/icaldrag.h>
70#include <libkcal/icalformat.h> 70#include <libkcal/icalformat.h>
71#include <libkcal/vcalformat.h> 71#include <libkcal/vcalformat.h>
72#include <libkcal/scheduler.h> 72#include <libkcal/scheduler.h>
73#include <libkcal/calendarlocal.h> 73#include <libkcal/calendarlocal.h>
74#include <libkcal/journal.h> 74#include <libkcal/journal.h>
75#include <libkcal/calfilter.h> 75#include <libkcal/calfilter.h>
76#include <libkcal/attendee.h> 76#include <libkcal/attendee.h>
77#include <libkcal/dndfactory.h> 77#include <libkcal/dndfactory.h>
78#include <libkcal/freebusy.h> 78#include <libkcal/freebusy.h>
79#include <libkcal/filestorage.h> 79#include <libkcal/filestorage.h>
80#include <libkcal/calendarresources.h> 80#include <libkcal/calendarresources.h>
81#include <libkcal/qtopiaformat.h> 81#include <libkcal/qtopiaformat.h>
82#include "../kalarmd/alarmdialog.h" 82#include "../kalarmd/alarmdialog.h"
83 83
84#ifndef DESKTOP_VERSION 84#ifndef DESKTOP_VERSION
85#include <libkcal/sharpformat.h> 85#include <libkcal/sharpformat.h>
86#include <externalapphandler.h> 86#include <externalapphandler.h>
87#endif 87#endif
88#include <libkcal/phoneformat.h> 88#include <libkcal/phoneformat.h>
89#ifndef KORG_NOMAIL 89#ifndef KORG_NOMAIL
90#include "komailclient.h" 90#include "komailclient.h"
91#endif 91#endif
92#ifndef KORG_NOPRINTER 92#ifndef KORG_NOPRINTER
93#include "calprinter.h" 93#include "calprinter.h"
94#endif 94#endif
95#ifndef KORG_NOPLUGINS 95#ifndef KORG_NOPLUGINS
96#include "kocore.h" 96#include "kocore.h"
97#endif 97#endif
98#include "koeventeditor.h" 98#include "koeventeditor.h"
99#include "kotodoeditor.h" 99#include "kotodoeditor.h"
100#include "koprefs.h" 100#include "koprefs.h"
101#include "koeventviewerdialog.h" 101#include "koeventviewerdialog.h"
102#include "publishdialog.h" 102#include "publishdialog.h"
103#include "kofilterview.h" 103#include "kofilterview.h"
104#include "koglobals.h" 104#include "koglobals.h"
105#include "koviewmanager.h" 105#include "koviewmanager.h"
106#include "koagendaview.h" 106#include "koagendaview.h"
107#include "kodialogmanager.h" 107#include "kodialogmanager.h"
108#include "outgoingdialog.h" 108#include "outgoingdialog.h"
109#include "incomingdialog.h" 109#include "incomingdialog.h"
110#include "datenavigatorcontainer.h" 110#include "datenavigatorcontainer.h"
111#include "statusdialog.h" 111#include "statusdialog.h"
112#include "kdatenavigator.h" 112#include "kdatenavigator.h"
113#include "kotodoview.h" 113#include "kotodoview.h"
114#include "datenavigator.h" 114#include "datenavigator.h"
115#include "resourceview.h" 115#include "resourceview.h"
116#include "navigatorbar.h" 116#include "navigatorbar.h"
117#include "searchdialog.h" 117#include "searchdialog.h"
118#include "mainwindow.h" 118#include "mainwindow.h"
119 119
120#include "calendarview.h" 120#include "calendarview.h"
121#ifndef DESKTOP_VERSION 121#ifndef DESKTOP_VERSION
122#include <qtopia/alarmserver.h> 122#include <qtopia/alarmserver.h>
123#endif 123#endif
124#ifndef _WIN32_ 124#ifndef _WIN32_
125#include <stdlib.h> 125#include <stdlib.h>
126#include <stdio.h> 126#include <stdio.h>
127#include <unistd.h> 127#include <unistd.h>
128#else 128#else
129#include <qprocess.h> 129#include <qprocess.h>
130#endif 130#endif
131 131
132#ifdef DESKTOP_VERSION 132#ifdef DESKTOP_VERSION
133#include <kabc/stdaddressbook.h> 133#include <kabc/stdaddressbook.h>
134#endif 134#endif
135using namespace KOrg; 135using namespace KOrg;
136using namespace KCal; 136using namespace KCal;
137extern int globalFlagBlockAgenda; 137extern int globalFlagBlockAgenda;
138extern int globalFlagBlockStartup; 138extern int globalFlagBlockStartup;
139 139
140 140
141 141
142class KOBeamPrefs : public QDialog 142class KOBeamPrefs : public QDialog
143{ 143{
144 public: 144 public:
145 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 145 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
146 QDialog( parent, name, true ) 146 QDialog( parent, name, true )
147 { 147 {
148 setCaption( i18n("Beam Options") ); 148 setCaption( i18n("Beam Options") );
149 QVBoxLayout* lay = new QVBoxLayout( this ); 149 QVBoxLayout* lay = new QVBoxLayout( this );
150 lay->setSpacing( 3 ); 150 lay->setSpacing( 3 );
151 lay->setMargin( 3 ); 151 lay->setMargin( 3 );
152 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 152 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
153 lay->addWidget( format ); 153 lay->addWidget( format );
154 format->setExclusive ( true ) ; 154 format->setExclusive ( true ) ;
155 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 155 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
156 lay->addWidget( time ); time->setExclusive ( true ) ; 156 lay->addWidget( time ); time->setExclusive ( true ) ;
157 vcal = new QRadioButton(" vCalendar ", format ); 157 vcal = new QRadioButton(" vCalendar ", format );
158 ical = new QRadioButton(" iCalendar ", format ); 158 ical = new QRadioButton(" iCalendar ", format );
159 vcal->setChecked( true ); 159 vcal->setChecked( true );
160 tz = new QRadioButton(i18n(" With timezone "), time ); 160 tz = new QRadioButton(i18n(" With timezone "), time );
161 local = new QRadioButton(i18n(" Local time "), time ); 161 local = new QRadioButton(i18n(" Local time "), time );
162 tz->setChecked( true ); 162 tz->setChecked( true );
163 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 163 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
164 lay->addWidget( ok ); 164 lay->addWidget( ok );
165 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 165 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
166 lay->addWidget( cancel ); 166 lay->addWidget( cancel );
167 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 167 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
168 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 168 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
169 resize( 200, 200 ); 169 resize( 200, 200 );
170 } 170 }
171 171
172 bool beamVcal() { return vcal->isChecked(); } 172 bool beamVcal() { return vcal->isChecked(); }
173 bool beamLocal() { return local->isChecked(); } 173 bool beamLocal() { return local->isChecked(); }
174private: 174private:
175 QRadioButton* vcal, *ical, *local, *tz; 175 QRadioButton* vcal, *ical, *local, *tz;
176}; 176};
177class KOCatPrefs : public QDialog 177class KOCatPrefs : public QDialog
178{ 178{
179 public: 179 public:
180 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 180 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
181 QDialog( parent, name, true ) 181 QDialog( parent, name, true )
182 { 182 {
183 setCaption( i18n("Manage new Categories") ); 183 setCaption( i18n("Manage new Categories") );
184 QVBoxLayout* lay = new QVBoxLayout( this ); 184 QVBoxLayout* lay = new QVBoxLayout( this );
185 lay->setSpacing( 3 ); 185 lay->setSpacing( 3 );
186 lay->setMargin( 3 ); 186 lay->setMargin( 3 );
187 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); 187 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this );
188 lay->addWidget( lab ); 188 lay->addWidget( lab );
189 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 189 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
190 lay->addWidget( format ); 190 lay->addWidget( format );
191 format->setExclusive ( true ) ; 191 format->setExclusive ( true ) ;
192 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 192 addCatBut = new QRadioButton(i18n("Add to category list"), format );
193 new QRadioButton(i18n("Remove from Events/Todos"), format ); 193 new QRadioButton(i18n("Remove from Events/Todos"), format );
194 addCatBut->setChecked( true ); 194 addCatBut->setChecked( true );
195 QPushButton * ok = new QPushButton( i18n("OK"), this ); 195 QPushButton * ok = new QPushButton( i18n("OK"), this );
196 lay->addWidget( ok ); 196 lay->addWidget( ok );
197 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 197 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
198 lay->addWidget( cancel ); 198 lay->addWidget( cancel );
199 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 199 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
200 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 200 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
201 resize( 200, 200 ); 201 resize( 200, 200 );
202 } 202 }
203 203
204 bool addCat() { return addCatBut->isChecked(); } 204 bool addCat() { return addCatBut->isChecked(); }
205private: 205private:
206 QRadioButton* addCatBut; 206 QRadioButton* addCatBut;
207}; 207};
208 208
209 209
210 210
211CalendarView::CalendarView( CalendarResources *calendar, 211CalendarView::CalendarView( CalendarResources *calendar,
212 QWidget *parent, const char *name ) 212 QWidget *parent, const char *name )
213 : CalendarViewBase( parent, name ), 213 : CalendarViewBase( parent, name ),
214 mCalendar( calendar ), 214 mCalendar( calendar ),
215 mResourceManager( calendar->resourceManager() ) 215 mResourceManager( calendar->resourceManager() )
216{ 216{
217 217
218 mEventEditor = 0; 218 mEventEditor = 0;
219 mTodoEditor = 0; 219 mTodoEditor = 0;
220 220
221 init(); 221 init();
222} 222}
223 223
224CalendarView::CalendarView( Calendar *calendar, 224CalendarView::CalendarView( Calendar *calendar,
225 QWidget *parent, const char *name ) 225 QWidget *parent, const char *name )
226 : CalendarViewBase( parent, name ), 226 : CalendarViewBase( parent, name ),
227 mCalendar( calendar ), 227 mCalendar( calendar ),
228 mResourceManager( 0 ) 228 mResourceManager( 0 )
229{ 229{
230 230
231 mEventEditor = 0; 231 mEventEditor = 0;
232 mTodoEditor = 0; 232 mTodoEditor = 0;
233 init(); 233 init();
234} 234}
235 235
236void CalendarView::init() 236void CalendarView::init()
237{ 237{
238 238 mNextAlarmDateTime = QDateTime::currentDateTime();
239 setFocusPolicy ( WheelFocus ); 239 setFocusPolicy ( WheelFocus );
240 mViewerCallerIsSearchDialog = false; 240 mViewerCallerIsSearchDialog = false;
241 mBlockShowDates = false; 241 mBlockShowDates = false;
242 beamDialog = new KOBeamPrefs(); 242 beamDialog = new KOBeamPrefs();
243 mDatePickerMode = 0; 243 mDatePickerMode = 0;
244 mCurrentSyncDevice = ""; 244 mCurrentSyncDevice = "";
245 writeLocale(); 245 writeLocale();
246 mViewManager = new KOViewManager( this ); 246 mViewManager = new KOViewManager( this );
247 mDialogManager = new KODialogManager( this ); 247 mDialogManager = new KODialogManager( this );
248 mEventViewerDialog = 0; 248 mEventViewerDialog = 0;
249 mModified = false; 249 mModified = false;
250 mReadOnly = false; 250 mReadOnly = false;
251 mSelectedIncidence = 0; 251 mSelectedIncidence = 0;
252 mCalPrinter = 0; 252 mCalPrinter = 0;
253 mFilters.setAutoDelete(true); 253 mFilters.setAutoDelete(true);
254 254
255 mCalendar->registerObserver( this ); 255 mCalendar->registerObserver( this );
256 // TODO: Make sure that view is updated, when calendar is changed. 256 // TODO: Make sure that view is updated, when calendar is changed.
257 257
258 mStorage = new FileStorage( mCalendar ); 258 mStorage = new FileStorage( mCalendar );
259 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 259 mNavigator = new DateNavigator( this, "datevav", mViewManager );
260 260
261 QBoxLayout *topLayout = (QBoxLayout*)layout(); 261 QBoxLayout *topLayout = (QBoxLayout*)layout();
262#ifndef KORG_NOSPLITTER 262#ifndef KORG_NOSPLITTER
263 // create the main layout frames. 263 // create the main layout frames.
264 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 264 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
265 topLayout->addWidget(mPanner); 265 topLayout->addWidget(mPanner);
266 266
267 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 267 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
268 "CalendarView::LeftFrame"); 268 "CalendarView::LeftFrame");
269 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 269 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
270 270
271 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 271 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
272 "CalendarView::DateNavigator" ); 272 "CalendarView::DateNavigator" );
273 273
274 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 274 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
275 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 275 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
276 mTodoList->setNavigator( mNavigator ); 276 mTodoList->setNavigator( mNavigator );
277 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 277 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
278 278
279#ifdef KORG_NORESOURCEVIEW 279#ifdef KORG_NORESOURCEVIEW
280 mResourceView = 0; 280 mResourceView = 0;
281#else 281#else
282 if ( mResourceManager ) { 282 if ( mResourceManager ) {
283 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 283 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
284 mResourceView->updateView(); 284 mResourceView->updateView();
285 connect( mResourceView, SIGNAL( resourcesChanged() ), 285 connect( mResourceView, SIGNAL( resourcesChanged() ),
286 SLOT( updateView() ) ); 286 SLOT( updateView() ) );
287 } else { 287 } else {
288 mResourceView = 0; 288 mResourceView = 0;
289 } 289 }
290#endif 290#endif
291 QWidget *rightBox = new QWidget( mPanner ); 291 QWidget *rightBox = new QWidget( mPanner );
292 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 292 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
293 293
294 mRightFrame = new QWidgetStack( rightBox ); 294 mRightFrame = new QWidgetStack( rightBox );
295 rightLayout->addWidget( mRightFrame, 1 ); 295 rightLayout->addWidget( mRightFrame, 1 );
296 296
297 mLeftFrame = mLeftSplitter; 297 mLeftFrame = mLeftSplitter;
298#else 298#else
299 //QWidget *mainBox = new QWidget( this ); 299 //QWidget *mainBox = new QWidget( this );
300 //QWidget *leftFrame = new QWidget( mainBox ); 300 //QWidget *leftFrame = new QWidget( mainBox );
301 //QBoxLayout * mainBoxLayout; 301 //QBoxLayout * mainBoxLayout;
302 if ( KOPrefs::instance()->mVerticalScreen ) { 302 if ( KOPrefs::instance()->mVerticalScreen ) {
303 //mainBoxLayout = new QVBoxLayout(mainBox); 303 //mainBoxLayout = new QVBoxLayout(mainBox);
304 //leftFrameLayout = new QHBoxLayout(leftFrame ); 304 //leftFrameLayout = new QHBoxLayout(leftFrame );
305 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this ); 305 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this );
306 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 306 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
307 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);; 307 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);;
308 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 308 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
309 } else { 309 } else {
310 //mainBoxLayout = new QHBoxLayout(mainBox); 310 //mainBoxLayout = new QHBoxLayout(mainBox);
311 //leftFrameLayout = new QVBoxLayout(leftFrame ); 311 //leftFrameLayout = new QVBoxLayout(leftFrame );
312 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 312 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
313 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left); 313 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left);
314 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame); 314 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame);
315 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 315 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
316 } 316 }
317 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); 317 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
318 //QBoxLayout * leftFrameLayout; 318 //QBoxLayout * leftFrameLayout;
319 topLayout->addWidget( mMainFrame ); 319 topLayout->addWidget( mMainFrame );
320 //mainBoxLayout->addWidget (mLeftFrame); 320 //mainBoxLayout->addWidget (mLeftFrame);
321 mDateNavigator = new DateNavigatorContainer( mLeftFrame, 321 mDateNavigator = new DateNavigatorContainer( mLeftFrame,
322 "CalendarView::DateNavigator" ); 322 "CalendarView::DateNavigator" );
323#if 0 323#if 0
324 // FIXME 324 // FIXME
325 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE, 325 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE,
326 "CalendarView::DateNavigator", QDate::currentDate()); 326 "CalendarView::DateNavigator", QDate::currentDate());
327#endif 327#endif
328 // mDateNavigator->blockSignals( true ); 328 // mDateNavigator->blockSignals( true );
329 //leftFrameLayout->addWidget( mDateNavigator ); 329 //leftFrameLayout->addWidget( mDateNavigator );
330 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 330 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
331 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 331 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
332 mTodoList->setNavigator( mNavigator ); 332 mTodoList->setNavigator( mNavigator );
333#if 0 333#if 0
334 if ( QApplication::desktop()->width() < 480 ) { 334 if ( QApplication::desktop()->width() < 480 ) {
335 leftFrameLayout->addWidget(mFilterView); 335 leftFrameLayout->addWidget(mFilterView);
336 leftFrameLayout->addWidget(mTodoList, 2 ); 336 leftFrameLayout->addWidget(mTodoList, 2 );
337 337
338 } else { 338 } else {
339 leftFrameLayout->addWidget(mTodoList,2 ); 339 leftFrameLayout->addWidget(mTodoList,2 );
340 leftFrameLayout->addWidget(mFilterView ); 340 leftFrameLayout->addWidget(mFilterView );
341 } 341 }
342#endif 342#endif
343 mFilterView->hide(); 343 mFilterView->hide();
344 QWidget *rightBox = new QWidget( mMainFrame ); 344 QWidget *rightBox = new QWidget( mMainFrame );
345 //mainBoxLayout->addWidget ( rightBox, 10 ); 345 //mainBoxLayout->addWidget ( rightBox, 10 );
346 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 346 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
347 mRightFrame = new QWidgetStack( rightBox ); 347 mRightFrame = new QWidgetStack( rightBox );
348 rightLayout->addWidget( mRightFrame, 10 ); 348 rightLayout->addWidget( mRightFrame, 10 );
349 349
350 //mLeftFrame = (QWidget *)leftFrame; 350 //mLeftFrame = (QWidget *)leftFrame;
351 if ( KOPrefs::instance()->mVerticalScreen ) { 351 if ( KOPrefs::instance()->mVerticalScreen ) {
352 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 352 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
353 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 353 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
354 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 354 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
355 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 355 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
356 } else { 356 } else {
357 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 357 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
358 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 358 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
359 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 359 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
360 } 360 }
361 if ( !KOPrefs::instance()->mShowDateNavigator) 361 if ( !KOPrefs::instance()->mShowDateNavigator)
362 mDateNavigator->hide(); 362 mDateNavigator->hide();
363 //qDebug("Calendarview Size %d %d ", width(), height()); 363 //qDebug("Calendarview Size %d %d ", width(), height());
364#endif 364#endif
365 365
366 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 366 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
367 SLOT( showDates( const KCal::DateList & ) ) ); 367 SLOT( showDates( const KCal::DateList & ) ) );
368 368
369 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 369 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
370 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 370 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
371 371
372 372
373 373
374 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 374 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
375 mViewManager, SLOT( showMonth( const QDate & ) ) ); 375 mViewManager, SLOT( showMonth( const QDate & ) ) );
376 376
377 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 377 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
378 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 378 mNavigator, SLOT( selectWeek( const QDate & ) ) );
379 379
380 connect( mDateNavigator, SIGNAL( goPrevYear() ), 380 connect( mDateNavigator, SIGNAL( goPrevYear() ),
381 mNavigator, SLOT( selectPreviousYear() ) ); 381 mNavigator, SLOT( selectPreviousYear() ) );
382 connect( mDateNavigator, SIGNAL( goNextYear() ), 382 connect( mDateNavigator, SIGNAL( goNextYear() ),
383 mNavigator, SLOT( selectNextYear() ) ); 383 mNavigator, SLOT( selectNextYear() ) );
384 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 384 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
385 mNavigator, SLOT( selectPreviousMonth() ) ); 385 mNavigator, SLOT( selectPreviousMonth() ) );
386 connect( mDateNavigator, SIGNAL( goNextMonth() ), 386 connect( mDateNavigator, SIGNAL( goNextMonth() ),
387 mNavigator, SLOT( selectNextMonth() ) ); 387 mNavigator, SLOT( selectNextMonth() ) );
388 388
389 connect( mDateNavigator, SIGNAL( goPrevious() ), 389 connect( mDateNavigator, SIGNAL( goPrevious() ),
390 mNavigator, SLOT( selectPrevious() ) ); 390 mNavigator, SLOT( selectPrevious() ) );
391 connect( mDateNavigator, SIGNAL( goNext() ), 391 connect( mDateNavigator, SIGNAL( goNext() ),
392 mNavigator, SLOT( selectNext() ) ); 392 mNavigator, SLOT( selectNext() ) );
393 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 393 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
394 mNavigator, SLOT( slotMonthSelect( int ) ) ); 394 mNavigator, SLOT( slotMonthSelect( int ) ) );
395 395
396 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 396 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
397 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 397 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
398#if 0 398#if 0
399 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 399 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
400 SLOT( incidenceAdded( Incidence *) ) ); 400 SLOT( incidenceAdded( Incidence *) ) );
401#endif 401#endif
402 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 402 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
403 403
404 connect( this, SIGNAL( configChanged() ), 404 connect( this, SIGNAL( configChanged() ),
405 mDateNavigator, SLOT( updateConfig() ) ); 405 mDateNavigator, SLOT( updateConfig() ) );
406 406
407 connect( mTodoList, SIGNAL( newTodoSignal() ), 407 connect( mTodoList, SIGNAL( newTodoSignal() ),
408 SLOT( newTodo() ) ); 408 SLOT( newTodo() ) );
409 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 409 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
410 SLOT( newSubTodo( Todo * ) ) ); 410 SLOT( newSubTodo( Todo * ) ) );
411 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 411 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
412 SLOT( editTodo( Todo * ) ) ); 412 SLOT( editTodo( Todo * ) ) );
413 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 413 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
414 SLOT( showTodo( Todo *) ) ); 414 SLOT( showTodo( Todo *) ) );
415 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 415 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
416 SLOT( deleteTodo( Todo *) ) ); 416 SLOT( deleteTodo( Todo *) ) );
417 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 417 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
418 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 418 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
419 SLOT( purgeCompleted() ) ); 419 SLOT( purgeCompleted() ) );
420 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 420 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
421 SIGNAL( todoModified( Todo *, int ) ) ); 421 SIGNAL( todoModified( Todo *, int ) ) );
422 422
423 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 423 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
424 this, SLOT ( cloneIncidence( Incidence * ) ) ); 424 this, SLOT ( cloneIncidence( Incidence * ) ) );
425 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 425 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
426 this, SLOT (cancelIncidence( Incidence * ) ) ); 426 this, SLOT (cancelIncidence( Incidence * ) ) );
427 427
428 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 428 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
429 this, SLOT ( moveIncidence( Incidence * ) ) ); 429 this, SLOT ( moveIncidence( Incidence * ) ) );
430 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 430 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
@@ -453,384 +453,385 @@ void CalendarView::init()
453 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 453 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
454 SLOT(checkClipboard())); 454 SLOT(checkClipboard()));
455 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 455 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
456 SLOT( processTodoListSelection( Incidence * ) ) ); 456 SLOT( processTodoListSelection( Incidence * ) ) );
457 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 457 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
458 458
459 // kdDebug() << "CalendarView::CalendarView() done" << endl; 459 // kdDebug() << "CalendarView::CalendarView() done" << endl;
460 460
461 mDateFrame = new QVBox(0,0,WType_Popup); 461 mDateFrame = new QVBox(0,0,WType_Popup);
462 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 462 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
463 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 463 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
464 mDateFrame->setLineWidth(3); 464 mDateFrame->setLineWidth(3);
465 mDateFrame->hide(); 465 mDateFrame->hide();
466 mDateFrame->setCaption( i18n( "Pick a date to display")); 466 mDateFrame->setCaption( i18n( "Pick a date to display"));
467 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 467 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
468 468
469 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 469 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
470 470
471 mEventEditor = mDialogManager->getEventEditor(); 471 mEventEditor = mDialogManager->getEventEditor();
472 mTodoEditor = mDialogManager->getTodoEditor(); 472 mTodoEditor = mDialogManager->getTodoEditor();
473 473
474 mFlagEditDescription = false; 474 mFlagEditDescription = false;
475 475
476 mSuspendTimer = new QTimer( this ); 476 mSuspendTimer = new QTimer( this );
477 mAlarmTimer = new QTimer( this ); 477 mAlarmTimer = new QTimer( this );
478 mRecheckAlarmTimer = new QTimer( this ); 478 mRecheckAlarmTimer = new QTimer( this );
479 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 479 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
480 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 480 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
481 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 481 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
482 mAlarmDialog = new AlarmDialog( this ); 482 mAlarmDialog = new AlarmDialog( this );
483 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 483 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
484 mAlarmDialog->setServerNotification( false ); 484 mAlarmDialog->setServerNotification( false );
485 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 485 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
486 486
487 487
488#ifndef DESKTOP_VERSION 488#ifndef DESKTOP_VERSION
489//US listen for arriving address resultsets 489//US listen for arriving address resultsets
490 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 490 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
491 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 491 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
492#endif 492#endif
493 mDateNavigator->setCalendar( mCalendar ); 493 mDateNavigator->setCalendar( mCalendar );
494} 494}
495 495
496 496
497CalendarView::~CalendarView() 497CalendarView::~CalendarView()
498{ 498{
499 // kdDebug() << "~CalendarView()" << endl; 499 // kdDebug() << "~CalendarView()" << endl;
500 //qDebug("CalendarView::~CalendarView() "); 500 //qDebug("CalendarView::~CalendarView() ");
501 delete mDialogManager; 501 delete mDialogManager;
502 delete mViewManager; 502 delete mViewManager;
503 delete mStorage; 503 delete mStorage;
504 delete mDateFrame ; 504 delete mDateFrame ;
505 delete beamDialog; 505 delete beamDialog;
506 delete mEventViewerDialog; 506 delete mEventViewerDialog;
507 //kdDebug() << "~CalendarView() done" << endl; 507 //kdDebug() << "~CalendarView() done" << endl;
508} 508}
509 509
510void CalendarView::showDay( QDate d ) 510void CalendarView::showDay( QDate d )
511{ 511{
512 dateNavigator()->blockSignals( true ); 512 dateNavigator()->blockSignals( true );
513 dateNavigator()->selectDate( d ); 513 dateNavigator()->selectDate( d );
514 dateNavigator()->blockSignals( false ); 514 dateNavigator()->blockSignals( false );
515 mViewManager->showDayView(); 515 mViewManager->showDayView();
516 //dateNavigator()->selectDate( d ); 516 //dateNavigator()->selectDate( d );
517} 517}
518void CalendarView::timerAlarm() 518void CalendarView::timerAlarm()
519{ 519{
520 //qDebug("CalendarView::timerAlarm() "); 520 //qDebug("CalendarView::timerAlarm() ");
521 computeAlarm(mAlarmNotification ); 521 computeAlarm(mAlarmNotification );
522} 522}
523 523
524void CalendarView::suspendAlarm() 524void CalendarView::suspendAlarm()
525{ 525{
526 //qDebug(" CalendarView::suspendAlarm() "); 526 //qDebug(" CalendarView::suspendAlarm() ");
527 computeAlarm(mSuspendAlarmNotification ); 527 computeAlarm(mSuspendAlarmNotification );
528 528
529} 529}
530 530
531void CalendarView::startAlarm( QString mess , QString filename) 531void CalendarView::startAlarm( QString mess , QString filename)
532{ 532{
533 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 533 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
534 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 534 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
535 535
536} 536}
537 537
538void CalendarView::checkNextTimerAlarm() 538void CalendarView::checkNextTimerAlarm()
539{ 539{
540 mCalendar->checkAlarmForIncidence( 0, true ); 540 mCalendar->checkAlarmForIncidence( 0, true );
541} 541}
542 542
543void CalendarView::computeAlarm( QString msg ) 543void CalendarView::computeAlarm( QString msg )
544{ 544{
545 545
546 QString mess = msg; 546 QString mess = msg;
547 QString mAlarmMessage = mess.mid( 9 ); 547 QString mAlarmMessage = mess.mid( 9 );
548 QString filename = MainWindow::resourcePath(); 548 QString filename = MainWindow::resourcePath();
549 filename += "koalarm.wav"; 549 filename += "koalarm.wav";
550 QString tempfilename; 550 QString tempfilename;
551 if ( mess.left( 13 ) == "suspend_alarm") { 551 if ( mess.left( 13 ) == "suspend_alarm") {
552 bool error = false; 552 bool error = false;
553 int len = mess.mid( 13 ).find("+++"); 553 int len = mess.mid( 13 ).find("+++");
554 if ( len < 2 ) 554 if ( len < 2 )
555 error = true; 555 error = true;
556 else { 556 else {
557 tempfilename = mess.mid( 13, len ); 557 tempfilename = mess.mid( 13, len );
558 if ( !QFile::exists( tempfilename ) ) 558 if ( !QFile::exists( tempfilename ) )
559 error = true; 559 error = true;
560 } 560 }
561 if ( ! error ) { 561 if ( ! error ) {
562 filename = tempfilename; 562 filename = tempfilename;
563 } 563 }
564 mAlarmMessage = mess.mid( 13+len+3 ); 564 mAlarmMessage = mess.mid( 13+len+3 );
565 //qDebug("suspend file %s ",tempfilename.latin1() ); 565 //qDebug("suspend file %s ",tempfilename.latin1() );
566 startAlarm( mAlarmMessage, filename); 566 startAlarm( mAlarmMessage, filename);
567 return; 567 return;
568 } 568 }
569 if ( mess.left( 11 ) == "timer_alarm") { 569 if ( mess.left( 11 ) == "timer_alarm") {
570 //mTimerTime = 0; 570 //mTimerTime = 0;
571 startAlarm( mess.mid( 11 ), filename ); 571 startAlarm( mess.mid( 11 ), filename );
572 return; 572 return;
573 } 573 }
574 if ( mess.left( 10 ) == "proc_alarm") { 574 if ( mess.left( 10 ) == "proc_alarm") {
575 bool error = false; 575 bool error = false;
576 int len = mess.mid( 10 ).find("+++"); 576 int len = mess.mid( 10 ).find("+++");
577 if ( len < 2 ) 577 if ( len < 2 )
578 error = true; 578 error = true;
579 else { 579 else {
580 tempfilename = mess.mid( 10, len ); 580 tempfilename = mess.mid( 10, len );
581 if ( !QFile::exists( tempfilename ) ) 581 if ( !QFile::exists( tempfilename ) )
582 error = true; 582 error = true;
583 } 583 }
584 if ( error ) { 584 if ( error ) {
585 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 585 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
586 mAlarmMessage += mess.mid( 10+len+3+9 ); 586 mAlarmMessage += mess.mid( 10+len+3+9 );
587 } else { 587 } else {
588 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 588 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
589 //qDebug("-----system command %s ",tempfilename.latin1() ); 589 //qDebug("-----system command %s ",tempfilename.latin1() );
590#ifndef _WIN32_ 590#ifndef _WIN32_
591 if ( vfork () == 0 ) { 591 if ( vfork () == 0 ) {
592 execl ( tempfilename.latin1(), 0 ); 592 execl ( tempfilename.latin1(), 0 );
593 return; 593 return;
594 } 594 }
595#else 595#else
596 QProcess* p = new QProcess(); 596 QProcess* p = new QProcess();
597 p->addArgument( tempfilename.latin1() ); 597 p->addArgument( tempfilename.latin1() );
598 p->start(); 598 p->start();
599 return; 599 return;
600#endif 600#endif
601 601
602 return; 602 return;
603 } 603 }
604 604
605 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 605 //qDebug("+++++++system command %s ",tempfilename.latin1() );
606 } 606 }
607 if ( mess.left( 11 ) == "audio_alarm") { 607 if ( mess.left( 11 ) == "audio_alarm") {
608 bool error = false; 608 bool error = false;
609 int len = mess.mid( 11 ).find("+++"); 609 int len = mess.mid( 11 ).find("+++");
610 if ( len < 2 ) 610 if ( len < 2 )
611 error = true; 611 error = true;
612 else { 612 else {
613 tempfilename = mess.mid( 11, len ); 613 tempfilename = mess.mid( 11, len );
614 if ( !QFile::exists( tempfilename ) ) 614 if ( !QFile::exists( tempfilename ) )
615 error = true; 615 error = true;
616 } 616 }
617 if ( ! error ) { 617 if ( ! error ) {
618 filename = tempfilename; 618 filename = tempfilename;
619 } 619 }
620 mAlarmMessage = mess.mid( 11+len+3+9 ); 620 mAlarmMessage = mess.mid( 11+len+3+9 );
621 //qDebug("audio file command %s ",tempfilename.latin1() ); 621 //qDebug("audio file command %s ",tempfilename.latin1() );
622 } 622 }
623 if ( mess.left( 9 ) == "cal_alarm") { 623 if ( mess.left( 9 ) == "cal_alarm") {
624 mAlarmMessage = mess.mid( 9 ) ; 624 mAlarmMessage = mess.mid( 9 ) ;
625 } 625 }
626 626
627 startAlarm( mAlarmMessage, filename ); 627 startAlarm( mAlarmMessage, filename );
628 628
629 629
630} 630}
631 631
632void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 632void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
633{ 633{
634 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 634 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
635 635
636 mSuspendAlarmNotification = noti; 636 mSuspendAlarmNotification = noti;
637 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 637 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
638 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 638 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
639 mSuspendTimer->start( ms , true ); 639 mSuspendTimer->start( ms , true );
640 640
641} 641}
642 642
643void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 643void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
644{ 644{
645 mNextAlarmDateTime = qdt;
645 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 646 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
646 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 647 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
647#ifndef DESKTOP_VERSION 648#ifndef DESKTOP_VERSION
648 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 649 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
649#endif 650#endif
650 return; 651 return;
651 } 652 }
652 int maxSec; 653 int maxSec;
653 //maxSec = 5; //testing only 654 //maxSec = 5; //testing only
654 maxSec = 86400+3600; // one day+1hour 655 maxSec = 86400+3600; // one day+1hour
655 mAlarmNotification = noti; 656 mAlarmNotification = noti;
656 int sec = QDateTime::currentDateTime().secsTo( qdt ); 657 int sec = QDateTime::currentDateTime().secsTo( qdt );
657 if ( sec > maxSec ) { 658 if ( sec > maxSec ) {
658 mRecheckAlarmTimer->start( maxSec * 1000 ); 659 mRecheckAlarmTimer->start( maxSec * 1000 );
659 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 660 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
660 return; 661 return;
661 } else { 662 } else {
662 mRecheckAlarmTimer->stop(); 663 mRecheckAlarmTimer->stop();
663 } 664 }
664 //qDebug("Alarm timer started with secs: %d ", sec); 665 //qDebug("Alarm timer started with secs: %d ", sec);
665 mAlarmTimer->start( sec *1000 , true ); 666 mAlarmTimer->start( sec *1000 , true );
666 667
667} 668}
668// called by mRecheckAlarmTimer to get next alarm 669// called by mRecheckAlarmTimer to get next alarm
669// we need this, because a QTimer has only a max range of 25 days 670// we need this, because a QTimer has only a max range of 25 days
670void CalendarView::recheckTimerAlarm() 671void CalendarView::recheckTimerAlarm()
671{ 672{
672 mAlarmTimer->stop(); 673 mAlarmTimer->stop();
673 mRecheckAlarmTimer->stop(); 674 mRecheckAlarmTimer->stop();
674 mCalendar->checkAlarmForIncidence( 0, true ); 675 mCalendar->checkAlarmForIncidence( 0, true );
675} 676}
676void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 677void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
677{ 678{
678 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 679 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
679 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 680 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
680#ifndef DESKTOP_VERSION 681#ifndef DESKTOP_VERSION
681 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 682 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
682#endif 683#endif
683 return; 684 return;
684 } 685 }
685 mAlarmTimer->stop(); 686 mAlarmTimer->stop();
686} 687}
687void CalendarView::selectWeekNum ( int num ) 688void CalendarView::selectWeekNum ( int num )
688{ 689{
689 dateNavigator()->blockSignals( true ); 690 dateNavigator()->blockSignals( true );
690 dateNavigator()->selectWeek( num ); 691 dateNavigator()->selectWeek( num );
691 dateNavigator()->blockSignals( false ); 692 dateNavigator()->blockSignals( false );
692 mViewManager->showWeekView(); 693 mViewManager->showWeekView();
693} 694}
694KOViewManager *CalendarView::viewManager() 695KOViewManager *CalendarView::viewManager()
695{ 696{
696 return mViewManager; 697 return mViewManager;
697} 698}
698 699
699KODialogManager *CalendarView::dialogManager() 700KODialogManager *CalendarView::dialogManager()
700{ 701{
701 return mDialogManager; 702 return mDialogManager;
702} 703}
703 704
704QDate CalendarView::startDate() 705QDate CalendarView::startDate()
705{ 706{
706 DateList dates = mNavigator->selectedDates(); 707 DateList dates = mNavigator->selectedDates();
707 708
708 return dates.first(); 709 return dates.first();
709} 710}
710 711
711QDate CalendarView::endDate() 712QDate CalendarView::endDate()
712{ 713{
713 DateList dates = mNavigator->selectedDates(); 714 DateList dates = mNavigator->selectedDates();
714 715
715 return dates.last(); 716 return dates.last();
716} 717}
717 718
718 719
719void CalendarView::createPrinter() 720void CalendarView::createPrinter()
720{ 721{
721#ifndef KORG_NOPRINTER 722#ifndef KORG_NOPRINTER
722 if (!mCalPrinter) { 723 if (!mCalPrinter) {
723 mCalPrinter = new CalPrinter(this, mCalendar); 724 mCalPrinter = new CalPrinter(this, mCalendar);
724 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 725 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
725 } 726 }
726#endif 727#endif
727} 728}
728 729
729 730
730//KOPrefs::instance()->mWriteBackFile 731//KOPrefs::instance()->mWriteBackFile
731//KOPrefs::instance()->mWriteBackExistingOnly 732//KOPrefs::instance()->mWriteBackExistingOnly
732 733
733// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 734// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
734// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 735// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
735// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 736// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
736// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 737// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
737// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 738// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
738// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 739// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
739 740
740int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 741int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
741{ 742{
742 743
743 // 0 equal 744 // 0 equal
744 // 1 take local 745 // 1 take local
745 // 2 take remote 746 // 2 take remote
746 // 3 cancel 747 // 3 cancel
747 QDateTime lastSync = mLastCalendarSync; 748 QDateTime lastSync = mLastCalendarSync;
748 QDateTime localMod = local->lastModified(); 749 QDateTime localMod = local->lastModified();
749 QDateTime remoteMod = remote->lastModified(); 750 QDateTime remoteMod = remote->lastModified();
750 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 751 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
751 bool remCh, locCh; 752 bool remCh, locCh;
752 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 753 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
753 //if ( remCh ) 754 //if ( remCh )
754 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 755 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
755 locCh = ( localMod > mLastCalendarSync ); 756 locCh = ( localMod > mLastCalendarSync );
756 if ( !remCh && ! locCh ) { 757 if ( !remCh && ! locCh ) {
757 //qDebug("both not changed "); 758 //qDebug("both not changed ");
758 lastSync = localMod.addDays(1); 759 lastSync = localMod.addDays(1);
759 if ( mode <= SYNC_PREF_ASK ) 760 if ( mode <= SYNC_PREF_ASK )
760 return 0; 761 return 0;
761 } else { 762 } else {
762 if ( locCh ) { 763 if ( locCh ) {
763 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 764 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
764 lastSync = localMod.addDays( -1 ); 765 lastSync = localMod.addDays( -1 );
765 if ( !remCh ) 766 if ( !remCh )
766 remoteMod = ( lastSync.addDays( -1 ) ); 767 remoteMod = ( lastSync.addDays( -1 ) );
767 } else { 768 } else {
768 //qDebug(" not loc changed "); 769 //qDebug(" not loc changed ");
769 lastSync = localMod.addDays( 1 ); 770 lastSync = localMod.addDays( 1 );
770 if ( remCh ) 771 if ( remCh )
771 remoteMod =( lastSync.addDays( 1 ) ); 772 remoteMod =( lastSync.addDays( 1 ) );
772 773
773 } 774 }
774 } 775 }
775 full = true; 776 full = true;
776 if ( mode < SYNC_PREF_ASK ) 777 if ( mode < SYNC_PREF_ASK )
777 mode = SYNC_PREF_ASK; 778 mode = SYNC_PREF_ASK;
778 } else { 779 } else {
779 if ( localMod == remoteMod ) 780 if ( localMod == remoteMod )
780 // if ( local->revision() == remote->revision() ) 781 // if ( local->revision() == remote->revision() )
781 return 0; 782 return 0;
782 783
783 } 784 }
784 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 785 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
785 786
786 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 787 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
787 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 788 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
788 //full = true; //debug only 789 //full = true; //debug only
789 if ( full ) { 790 if ( full ) {
790 bool equ = false; 791 bool equ = false;
791 if ( local->type() == "Event" ) { 792 if ( local->type() == "Event" ) {
792 equ = (*((Event*) local) == *((Event*) remote)); 793 equ = (*((Event*) local) == *((Event*) remote));
793 } 794 }
794 else if ( local->type() =="Todo" ) 795 else if ( local->type() =="Todo" )
795 equ = (*((Todo*) local) == (*(Todo*) remote)); 796 equ = (*((Todo*) local) == (*(Todo*) remote));
796 else if ( local->type() =="Journal" ) 797 else if ( local->type() =="Journal" )
797 equ = (*((Journal*) local) == *((Journal*) remote)); 798 equ = (*((Journal*) local) == *((Journal*) remote));
798 if ( equ ) { 799 if ( equ ) {
799 //qDebug("equal "); 800 //qDebug("equal ");
800 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 801 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
801 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 802 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
802 } 803 }
803 if ( mode < SYNC_PREF_FORCE_LOCAL ) 804 if ( mode < SYNC_PREF_FORCE_LOCAL )
804 return 0; 805 return 0;
805 806
806 }//else //debug only 807 }//else //debug only
807 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 808 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
808 } 809 }
809 int result; 810 int result;
810 bool localIsNew; 811 bool localIsNew;
811 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 812 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
812 813
813 if ( full && mode < SYNC_PREF_NEWEST ) 814 if ( full && mode < SYNC_PREF_NEWEST )
814 mode = SYNC_PREF_ASK; 815 mode = SYNC_PREF_ASK;
815 816
816 switch( mode ) { 817 switch( mode ) {
817 case SYNC_PREF_LOCAL: 818 case SYNC_PREF_LOCAL:
818 if ( lastSync > remoteMod ) 819 if ( lastSync > remoteMod )
819 return 1; 820 return 1;
820 if ( lastSync > localMod ) 821 if ( lastSync > localMod )
821 return 2; 822 return 2;
822 return 1; 823 return 1;
823 break; 824 break;
824 case SYNC_PREF_REMOTE: 825 case SYNC_PREF_REMOTE:
825 if ( lastSync > remoteMod ) 826 if ( lastSync > remoteMod )
826 return 1; 827 return 1;
827 if ( lastSync > localMod ) 828 if ( lastSync > localMod )
828 return 2; 829 return 2;
829 return 2; 830 return 2;
830 break; 831 break;
831 case SYNC_PREF_NEWEST: 832 case SYNC_PREF_NEWEST:
832 if ( localMod > remoteMod ) 833 if ( localMod > remoteMod )
833 return 1; 834 return 1;
834 else 835 else
835 return 2; 836 return 2;
836 break; 837 break;
@@ -3875,192 +3876,207 @@ void CalendarView::editIncidence()
3875void CalendarView::deleteIncidence() 3876void CalendarView::deleteIncidence()
3876{ 3877{
3877 Incidence *incidence = currentSelection(); 3878 Incidence *incidence = currentSelection();
3878 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3879 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3879 if ( incidence ) { 3880 if ( incidence ) {
3880 deleteIncidence(incidence); 3881 deleteIncidence(incidence);
3881 } 3882 }
3882} 3883}
3883 3884
3884void CalendarView::showIncidence(Incidence *incidence) 3885void CalendarView::showIncidence(Incidence *incidence)
3885{ 3886{
3886 mViewerCallerIsSearchDialog = false; 3887 mViewerCallerIsSearchDialog = false;
3887 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 3888 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
3888 if ( sender() && mDialogManager->getSearchDialog() ) { 3889 if ( sender() && mDialogManager->getSearchDialog() ) {
3889 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 3890 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
3890 mViewerCallerIsSearchDialog = true; 3891 mViewerCallerIsSearchDialog = true;
3891 } 3892 }
3892 } 3893 }
3893 if ( incidence ) { 3894 if ( incidence ) {
3894 ShowIncidenceVisitor v; 3895 ShowIncidenceVisitor v;
3895 v.act( incidence, this ); 3896 v.act( incidence, this );
3896 } 3897 }
3897} 3898}
3898 3899
3899void CalendarView::editIncidence(Incidence *incidence) 3900void CalendarView::editIncidence(Incidence *incidence)
3900{ 3901{
3901 if ( incidence ) { 3902 if ( incidence ) {
3902 3903
3903 EditIncidenceVisitor v; 3904 EditIncidenceVisitor v;
3904 v.act( incidence, this ); 3905 v.act( incidence, this );
3905 3906
3906 } 3907 }
3907} 3908}
3908 3909
3909void CalendarView::deleteIncidence(Incidence *incidence) 3910void CalendarView::deleteIncidence(Incidence *incidence)
3910{ 3911{
3911 //qDebug(" CalendarView::deleteIncidence "); 3912 //qDebug(" CalendarView::deleteIncidence ");
3912 if ( incidence ) { 3913 if ( incidence ) {
3913 DeleteIncidenceVisitor v; 3914 DeleteIncidenceVisitor v;
3914 v.act( incidence, this ); 3915 v.act( incidence, this );
3915 } 3916 }
3916} 3917}
3917 3918
3918 3919
3919void CalendarView::lookForOutgoingMessages() 3920void CalendarView::lookForOutgoingMessages()
3920{ 3921{
3921 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3922 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3922 ogd->loadMessages(); 3923 ogd->loadMessages();
3923} 3924}
3924 3925
3925void CalendarView::lookForIncomingMessages() 3926void CalendarView::lookForIncomingMessages()
3926{ 3927{
3927 IncomingDialog *icd = mDialogManager->incomingDialog(); 3928 IncomingDialog *icd = mDialogManager->incomingDialog();
3928 icd->retrieve(); 3929 icd->retrieve();
3929} 3930}
3930 3931
3931bool CalendarView::removeCompletedSubTodos( Todo* t ) 3932bool CalendarView::removeCompletedSubTodos( Todo* t )
3932{ 3933{
3933 bool deleteTodo = true; 3934 bool deleteTodo = true;
3934 QPtrList<Incidence> subTodos; 3935 QPtrList<Incidence> subTodos;
3935 Incidence *aTodo; 3936 Incidence *aTodo;
3936 subTodos = t->relations(); 3937 subTodos = t->relations();
3937 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3938 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3938 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3939 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3939 deleteTodo = false; 3940 deleteTodo = false;
3940 } 3941 }
3941 if ( deleteTodo ) { 3942 if ( deleteTodo ) {
3942 if ( t->isCompleted() && !t->doesRecur()) { 3943 if ( t->isCompleted() && !t->doesRecur()) {
3943 checkExternalId( t ); 3944 checkExternalId( t );
3944 mCalendar->deleteTodo( t ); 3945 mCalendar->deleteTodo( t );
3945 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3946 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3946 } 3947 }
3947 else 3948 else
3948 deleteTodo = false; 3949 deleteTodo = false;
3949 } 3950 }
3950 return deleteTodo; 3951 return deleteTodo;
3951 3952
3952} 3953}
3953void CalendarView::purgeCompleted() 3954void CalendarView::purgeCompleted()
3954{ 3955{
3955 int result = KMessageBox::warningContinueCancel(this, 3956 int result = KMessageBox::warningContinueCancel(this,
3956 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3957 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge"));
3957 3958
3958 if (result == KMessageBox::Continue) { 3959 if (result == KMessageBox::Continue) {
3959 3960
3960 QPtrList<Todo> todoCal; 3961 QPtrList<Todo> todoCal;
3961 QPtrList<Todo> rootTodos; 3962 QPtrList<Todo> rootTodos;
3962 //QPtrList<Incidence> rel; 3963 //QPtrList<Incidence> rel;
3963 Todo *aTodo;//, *rTodo; 3964 Todo *aTodo;//, *rTodo;
3964 Incidence *rIncidence; 3965 Incidence *rIncidence;
3965 bool childDelete = false; 3966 bool childDelete = false;
3966 bool deletedOne = true; 3967 bool deletedOne = true;
3967 todoCal = calendar()->todos(); 3968 todoCal = calendar()->todos();
3968 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 3969 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
3969 if ( !aTodo->relatedTo() ) 3970 if ( !aTodo->relatedTo() )
3970 rootTodos.append( aTodo ); 3971 rootTodos.append( aTodo );
3971 } 3972 }
3972 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 3973 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
3973 removeCompletedSubTodos( aTodo ); 3974 removeCompletedSubTodos( aTodo );
3974 } 3975 }
3975 3976
3976 updateView(); 3977 updateView();
3977 } 3978 }
3978} 3979}
3979 3980
3980void CalendarView::slotCalendarChanged() 3981void CalendarView::slotCalendarChanged()
3981{ 3982{
3982 ; 3983 ;
3983} 3984}
3984 3985
3985void CalendarView::keyPressEvent ( QKeyEvent *e) 3986void CalendarView::keyPressEvent ( QKeyEvent *e)
3986{ 3987{
3987 //qDebug(" alendarView::keyPressEvent "); 3988 //qDebug(" alendarView::keyPressEvent ");
3988 e->ignore(); 3989 e->ignore();
3989} 3990}
3990 3991
3991 3992
3992bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 3993bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
3993{ 3994{
3994 // mSyncManager = manager; 3995 // mSyncManager = manager;
3995 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 3996 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
3996 qDebug("KO: SyncKDE request detected!"); 3997 qDebug("KO: SyncKDE request detected!");
3997 } 3998 }
3998 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 3999 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
3999 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4000 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4000 return syncCalendar( filename, mode ); 4001 return syncCalendar( filename, mode );
4001} 4002}
4002bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 4003bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
4003{ 4004{
4004 //mSyncManager = manager; 4005 //mSyncManager = manager;
4005 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4006 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4006 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4007 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4007 if ( resource == "sharp" ) 4008 if ( resource == "sharp" )
4008 syncExternal( 0 ); 4009 syncExternal( 0 );
4009 if ( resource == "phone" ) 4010 if ( resource == "phone" )
4010 syncExternal( 1 ); 4011 syncExternal( 1 );
4011 // pending setmodified 4012 // pending setmodified
4012 return true; 4013 return true;
4013} 4014}
4014void CalendarView::setSyncManager(KSyncManager* manager) 4015void CalendarView::setSyncManager(KSyncManager* manager)
4015{ 4016{
4016 mSyncManager = manager; 4017 mSyncManager = manager;
4017} 4018}
4018 4019
4019void CalendarView::removeSyncInfo( QString syncProfile) 4020void CalendarView::removeSyncInfo( QString syncProfile)
4020{ 4021{
4021 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 4022 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
4022 mCalendar->removeSyncInfo( syncProfile ); 4023 mCalendar->removeSyncInfo( syncProfile );
4023 4024
4024} 4025}
4025 4026
4026void CalendarView::undo_delete() 4027void CalendarView::undo_delete()
4027{ 4028{
4028 //qDebug("undo_delete() "); 4029 //qDebug("undo_delete() ");
4029 Incidence* undo = mCalendar->undoIncidence(); 4030 Incidence* undo = mCalendar->undoIncidence();
4030 if ( !undo ) { 4031 if ( !undo ) {
4031 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 4032 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
4032 i18n("KO/Pi")); 4033 i18n("KO/Pi"));
4033 return; 4034 return;
4034 } 4035 }
4035 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 4036 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) +
4036 i18n("\nAre you sure you want\nto restore this?"), 4037 i18n("\nAre you sure you want\nto restore this?"),
4037 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 4038 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
4038 mCalendar->undoDeleteIncidence(); 4039 mCalendar->undoDeleteIncidence();
4039 updateView(); 4040 updateView();
4040 } 4041 }
4041} 4042}
4042 4043
4043void CalendarView::slotViewerClosed() 4044void CalendarView::slotViewerClosed()
4044{ 4045{
4045 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 4046 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
4046} 4047}
4047 4048
4048void CalendarView::resetFocus() 4049void CalendarView::resetFocus()
4049{ 4050{
4050 if ( mViewerCallerIsSearchDialog ) { 4051 if ( mViewerCallerIsSearchDialog ) {
4051 if ( mDialogManager->getSearchDialog()->isVisible() ){ 4052 if ( mDialogManager->getSearchDialog()->isVisible() ){
4052 mDialogManager->getSearchDialog()->raise(); 4053 mDialogManager->getSearchDialog()->raise();
4053 mDialogManager->getSearchDialog()->setActiveWindow(); 4054 mDialogManager->getSearchDialog()->setActiveWindow();
4054 mDialogManager->getSearchDialog()->listview()->resetFocus(); 4055 mDialogManager->getSearchDialog()->listview()->resetFocus();
4055 } else 4056 } else
4056 mViewerCallerIsSearchDialog = false; 4057 mViewerCallerIsSearchDialog = false;
4057 } 4058 }
4058 if ( !mViewerCallerIsSearchDialog ) { 4059 if ( !mViewerCallerIsSearchDialog ) {
4059 //mViewManager->currentView()->setFocus(); 4060 //mViewManager->currentView()->setFocus();
4060 //qDebug("sssssssssssssssset focus "); 4061 //qDebug("sssssssssssssssset focus ");
4061 topLevelWidget()->raise(); 4062 topLevelWidget()->raise();
4062 setActiveWindow(); 4063 setActiveWindow();
4063 //setFocus(); 4064 //setFocus();
4064 } 4065 }
4065 mViewerCallerIsSearchDialog = false; 4066 mViewerCallerIsSearchDialog = false;
4066} 4067}
4068
4069void CalendarView::showNextAlarms()
4070{
4071 QString message;
4072 if ( mNextAlarmDateTime > QDateTime::currentDateTime() ) {
4073 QString sum = mCalendar->nextSummary();
4074 QDateTime nextA = mNextAlarmDateTime;
4075 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
4076 message = i18n("The next alarm is on:\n%1\nat: %2\n\n%3\n(%4)").arg( KGlobal::locale()->formatDate(nextA.date() , false)).arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
4077 } else {
4078 message = i18n("There is no next alarm.");
4079
4080 }
4081 KMessageBox::information( this, message);
4082}
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 16e671f..9782ffe 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -1,617 +1,619 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000, 2001 3 Copyright (c) 2000, 2001
4 Cornelius Schumacher <schumacher@kde.org> 4 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef CALENDARVIEW_H 24#ifndef CALENDARVIEW_H
25#define CALENDARVIEW_H 25#define CALENDARVIEW_H
26 26
27#include <qframe.h> 27#include <qframe.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qwidget.h> 29#include <qwidget.h>
30#include <qptrlist.h> 30#include <qptrlist.h>
31#include <qvbox.h> 31#include <qvbox.h>
32#include <qmap.h> 32#include <qmap.h>
33#ifndef DESKTOP_VERSION 33#ifndef DESKTOP_VERSION
34#include <qtopia/ir.h> 34#include <qtopia/ir.h>
35#else 35#else
36#define Ir char 36#define Ir char
37#endif 37#endif
38#include <libkcal/calendar.h> 38#include <libkcal/calendar.h>
39#include <libkcal/scheduler.h> 39#include <libkcal/scheduler.h>
40#include <libkcal/calendarresources.h> 40#include <libkcal/calendarresources.h>
41#include <libkcal/resourcecalendar.h> 41#include <libkcal/resourcecalendar.h>
42#include <KDGanttMinimizeSplitter.h> 42#include <KDGanttMinimizeSplitter.h>
43 43
44#include <korganizer/calendarviewbase.h> 44#include <korganizer/calendarviewbase.h>
45 45
46#include <ksyncmanager.h> 46#include <ksyncmanager.h>
47 47
48class QWidgetStack; 48class QWidgetStack;
49class QSplitter; 49class QSplitter;
50 50
51class CalPrinter; 51class CalPrinter;
52class KOFilterView; 52class KOFilterView;
53class KOViewManager; 53class KOViewManager;
54class KODialogManager; 54class KODialogManager;
55class KOTodoView; 55class KOTodoView;
56class KDateNavigator; 56class KDateNavigator;
57class DateNavigatorContainer; 57class DateNavigatorContainer;
58class DateNavigator; 58class DateNavigator;
59class KOIncidenceEditor; 59class KOIncidenceEditor;
60class KDatePicker; 60class KDatePicker;
61class ResourceView; 61class ResourceView;
62class KOEventEditor; 62class KOEventEditor;
63class KOTodoEditor ; 63class KOTodoEditor ;
64class KOEventViewerDialog; 64class KOEventViewerDialog;
65class KOBeamPrefs; 65class KOBeamPrefs;
66class KSyncProfile; 66class KSyncProfile;
67class AlarmDialog; 67class AlarmDialog;
68class KCal::Attendee; 68class KCal::Attendee;
69 69
70namespace KCal { class FileStorage; } 70namespace KCal { class FileStorage; }
71 71
72using namespace KCal; 72using namespace KCal;
73 73
74/** 74/**
75 This is the main calendar widget. It provides the different vies on t he 75 This is the main calendar widget. It provides the different vies on t he
76 calendar data as well as the date navigator. It also handles synchronisation 76 calendar data as well as the date navigator. It also handles synchronisation
77 of the different views and controls the different dialogs like preferences, 77 of the different views and controls the different dialogs like preferences,
78 event editor, search dialog etc. 78 event editor, search dialog etc.
79 79
80 @short main calendar view widget 80 @short main calendar view widget
81 @author Cornelius Schumacher 81 @author Cornelius Schumacher
82*/ 82*/
83class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface 83class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface
84{ 84{
85 Q_OBJECT 85 Q_OBJECT
86 public: 86 public:
87 /** 87 /**
88 Constructs a new calendar view widget. 88 Constructs a new calendar view widget.
89 89
90 @param calendar calendar document 90 @param calendar calendar document
91 @param parent parent window 91 @param parent parent window
92 @param name Qt internal widget object name 92 @param name Qt internal widget object name
93 */ 93 */
94 CalendarView( CalendarResources *calendar, QWidget *parent = 0, 94 CalendarView( CalendarResources *calendar, QWidget *parent = 0,
95 const char *name = 0 ); 95 const char *name = 0 );
96 CalendarView( Calendar *calendar, QWidget *parent = 0, 96 CalendarView( Calendar *calendar, QWidget *parent = 0,
97 const char *name = 0 ); 97 const char *name = 0 );
98 virtual ~CalendarView(); 98 virtual ~CalendarView();
99 99
100 Calendar *calendar() { return mCalendar; } 100 Calendar *calendar() { return mCalendar; }
101 101
102 KOViewManager *viewManager(); 102 KOViewManager *viewManager();
103 KODialogManager *dialogManager(); 103 KODialogManager *dialogManager();
104 104
105 QDate startDate(); 105 QDate startDate();
106 QDate endDate(); 106 QDate endDate();
107 107
108 QWidgetStack *viewStack(); 108 QWidgetStack *viewStack();
109 QWidget *leftFrame(); 109 QWidget *leftFrame();
110 110
111 DateNavigator *dateNavigator(); 111 DateNavigator *dateNavigator();
112 KDateNavigator *dateNavigatorWidget(); 112 KDateNavigator *dateNavigatorWidget();
113 113
114 void addView(KOrg::BaseView *); 114 void addView(KOrg::BaseView *);
115 void showView(KOrg::BaseView *); 115 void showView(KOrg::BaseView *);
116 KOEventViewerDialog* getEventViewerDialog(); 116 KOEventViewerDialog* getEventViewerDialog();
117 Incidence *currentSelection(); 117 Incidence *currentSelection();
118 118
119 signals: 119 signals:
120 void save (); 120 void save ();
121 void saveStopTimer (); 121 void saveStopTimer ();
122 void tempDisableBR(bool); 122 void tempDisableBR(bool);
123 /** This todo has been modified */ 123 /** This todo has been modified */
124 void todoModified(Todo *, int); 124 void todoModified(Todo *, int);
125 125
126 /** when change is made to options dialog, the topwidget will catch this 126 /** when change is made to options dialog, the topwidget will catch this
127 * and emit this signal which notifies all widgets which have registered 127 * and emit this signal which notifies all widgets which have registered
128 * for notification to update their settings. */ 128 * for notification to update their settings. */
129 void configChanged(); 129 void configChanged();
130 /** emitted when the topwidget is closing down, so that any attached 130 /** emitted when the topwidget is closing down, so that any attached
131 child windows can also close. */ 131 child windows can also close. */
132 void closingDown(); 132 void closingDown();
133 /** emitted right before we die */ 133 /** emitted right before we die */
134 void closed(QWidget *); 134 void closed(QWidget *);
135 135
136 /** Emitted when state of modified flag changes */ 136 /** Emitted when state of modified flag changes */
137 void modifiedChanged(bool); 137 void modifiedChanged(bool);
138 void signalmodified(); 138 void signalmodified();
139 139
140 /** Emitted when state of read-only flag changes */ 140 /** Emitted when state of read-only flag changes */
141 void readOnlyChanged(bool); 141 void readOnlyChanged(bool);
142 142
143 /** Emitted when the unit of navigation changes */ 143 /** Emitted when the unit of navigation changes */
144 void changeNavStringPrev(const QString &); 144 void changeNavStringPrev(const QString &);
145 void changeNavStringNext(const QString &); 145 void changeNavStringNext(const QString &);
146 146
147 /** Emitted when state of events selection has changed and user is organizer*/ 147 /** Emitted when state of events selection has changed and user is organizer*/
148 void organizerEventsSelected(bool); 148 void organizerEventsSelected(bool);
149 /** Emitted when state of events selection has changed and user is attendee*/ 149 /** Emitted when state of events selection has changed and user is attendee*/
150 void groupEventsSelected(bool); 150 void groupEventsSelected(bool);
151 /** 151 /**
152 Emitted when an incidence gets selected. If the selection is cleared the 152 Emitted when an incidence gets selected. If the selection is cleared the
153 signal is emitted with 0 as argument. 153 signal is emitted with 0 as argument.
154 */ 154 */
155 void incidenceSelected( Incidence * ); 155 void incidenceSelected( Incidence * );
156 /** Emitted, when a todoitem is selected or deselected. */ 156 /** Emitted, when a todoitem is selected or deselected. */
157 void todoSelected( bool ); 157 void todoSelected( bool );
158 158
159 /** 159 /**
160 Emitted, when clipboard content changes. Parameter indicates if paste 160 Emitted, when clipboard content changes. Parameter indicates if paste
161 is possible or not. 161 is possible or not.
162 */ 162 */
163 void pasteEnabled(bool); 163 void pasteEnabled(bool);
164 164
165 /** Emitted, when the number of incoming messages has changed. */ 165 /** Emitted, when the number of incoming messages has changed. */
166 void numIncomingChanged(int); 166 void numIncomingChanged(int);
167 167
168 /** Emitted, when the number of outgoing messages has changed. */ 168 /** Emitted, when the number of outgoing messages has changed. */
169 void numOutgoingChanged(int); 169 void numOutgoingChanged(int);
170 170
171 /** Send status message, which can e.g. be displayed in the status bar. */ 171 /** Send status message, which can e.g. be displayed in the status bar. */
172 void statusMessage(const QString &); 172 void statusMessage(const QString &);
173 173
174 void calendarViewExpanded( bool ); 174 void calendarViewExpanded( bool );
175 void updateSearchDialog(); 175 void updateSearchDialog();
176 176
177 177
178 public slots: 178 public slots:
179 void showNextAlarms();
179 void showOpenError(); 180 void showOpenError();
180 void watchSavedFile(); 181 void watchSavedFile();
181 void recheckTimerAlarm(); 182 void recheckTimerAlarm();
182 void checkNextTimerAlarm(); 183 void checkNextTimerAlarm();
183 void addAlarm(const QDateTime &qdt, const QString &noti ); 184 void addAlarm(const QDateTime &qdt, const QString &noti );
184 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 185 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
185 void removeAlarm(const QDateTime &qdt, const QString &noti ); 186 void removeAlarm(const QDateTime &qdt, const QString &noti );
186 187
187 /** options dialog made a changed to the configuration. we catch this 188 /** options dialog made a changed to the configuration. we catch this
188 * and notify all widgets which need to update their configuration. */ 189 * and notify all widgets which need to update their configuration. */
189 void updateConfig(); 190 void updateConfig();
190 191
191 void insertBirthdays(const QString& uid, const QStringList& birthdayList, 192 void insertBirthdays(const QString& uid, const QStringList& birthdayList,
192 const QStringList& anniversaryList, const QStringList& realNameList, 193 const QStringList& anniversaryList, const QStringList& realNameList,
193 const QStringList& emailList, const QStringList& assembledNameList, 194 const QStringList& emailList, const QStringList& assembledNameList,
194 const QStringList& uidList); 195 const QStringList& uidList);
195 196
196 /** 197 /**
197 Load calendar from file \a filename. If \a merge is true, load 198 Load calendar from file \a filename. If \a merge is true, load
198 calendar into existing one, if it is false, clear calendar, before 199 calendar into existing one, if it is false, clear calendar, before
199 loading. Return true, if calendar could be successfully loaded. 200 loading. Return true, if calendar could be successfully loaded.
200 */ 201 */
201 bool openCalendar(QString filename, bool merge=false); 202 bool openCalendar(QString filename, bool merge=false);
202 bool syncCalendar(QString filename,int mode = 0 ); 203 bool syncCalendar(QString filename,int mode = 0 );
203 204
204 /** 205 /**
205 Save calendar data to file. Return true if calendar could be 206 Save calendar data to file. Return true if calendar could be
206 successfully saved. 207 successfully saved.
207 */ 208 */
208 bool saveCalendar(QString filename); 209 bool saveCalendar(QString filename);
209 210
210 /** 211 /**
211 Close calendar. Clear calendar data and reset views to display an empty 212 Close calendar. Clear calendar data and reset views to display an empty
212 calendar. 213 calendar.
213 */ 214 */
214 void closeCalendar(); 215 void closeCalendar();
215 216
216 /** Archive old events of calendar */ 217 /** Archive old events of calendar */
217 void archiveCalendar(); 218 void archiveCalendar();
218 219
219 void showIncidence(); 220 void showIncidence();
220 void editIncidence(); 221 void editIncidence();
221 void editIncidenceDescription(); 222 void editIncidenceDescription();
222 void deleteIncidence(); 223 void deleteIncidence();
223 void cloneIncidence(); 224 void cloneIncidence();
224 void moveIncidence(); 225 void moveIncidence();
225 void beamIncidence(); 226 void beamIncidence();
226 void toggleCancelIncidence(); 227 void toggleCancelIncidence();
227 228
228 /** create an editeventwin with supplied date/time, and if bool is true, 229 /** create an editeventwin with supplied date/time, and if bool is true,
229 * make the event take all day. */ 230 * make the event take all day. */
230 void newEvent(QDateTime, QDateTime, bool allDay ); 231 void newEvent(QDateTime, QDateTime, bool allDay );
231 void newEvent(QDateTime, QDateTime); 232 void newEvent(QDateTime, QDateTime);
232 void newEvent(QDateTime fh); 233 void newEvent(QDateTime fh);
233 void newEvent(QDate dt); 234 void newEvent(QDate dt);
234 /** create new event without having a date hint. Takes current date as 235 /** create new event without having a date hint. Takes current date as
235 default hint. */ 236 default hint. */
236 void newEvent(); 237 void newEvent();
237 void newFloatingEvent(); 238 void newFloatingEvent();
238 239
239 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 240 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
240 void showIncidence(Incidence *); 241 void showIncidence(Incidence *);
241 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 242 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
242 void editIncidence(Incidence *); 243 void editIncidence(Incidence *);
243 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 244 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
244 void deleteIncidence(Incidence *); 245 void deleteIncidence(Incidence *);
245 void cloneIncidence(Incidence *); 246 void cloneIncidence(Incidence *);
246 void cancelIncidence(Incidence *); 247 void cancelIncidence(Incidence *);
247 /** Create an editor for the supplied event. */ 248 /** Create an editor for the supplied event. */
248 void editEvent(Event *); 249 void editEvent(Event *);
249 /** Delete the supplied event. */ 250 /** Delete the supplied event. */
250 void deleteEvent(Event *); 251 void deleteEvent(Event *);
251 /** Delete the event with the given unique ID. Returns false, if event wasn't 252 /** Delete the event with the given unique ID. Returns false, if event wasn't
252 found. */ 253 found. */
253 bool deleteEvent(const QString &uid); 254 bool deleteEvent(const QString &uid);
254 /** Create a read-only viewer dialog for the supplied event. */ 255 /** Create a read-only viewer dialog for the supplied event. */
255 void showEvent(Event *); 256 void showEvent(Event *);
256 257
257 void editJournal(Journal *); 258 void editJournal(Journal *);
258 void showJournal(Journal *); 259 void showJournal(Journal *);
259 void deleteJournal(Journal *); 260 void deleteJournal(Journal *);
260 /** Create an editor dialog for a todo */ 261 /** Create an editor dialog for a todo */
261 void editTodo(Todo *); 262 void editTodo(Todo *);
262 /** Create a read-only viewer dialog for the supplied todo */ 263 /** Create a read-only viewer dialog for the supplied todo */
263 void showTodo(Todo *); 264 void showTodo(Todo *);
264 /** create new todo */ 265 /** create new todo */
265 void newTodo(); 266 void newTodo();
266 void newTodoDateTime(QDateTime, bool allday); 267 void newTodoDateTime(QDateTime, bool allday);
267 /** create new todo with a parent todo */ 268 /** create new todo with a parent todo */
268 void newSubTodo(); 269 void newSubTodo();
269 /** create new todo with a parent todo */ 270 /** create new todo with a parent todo */
270 void newSubTodo(Todo *); 271 void newSubTodo(Todo *);
271 /** Delete todo */ 272 /** Delete todo */
272 void deleteTodo(Todo *); 273 void deleteTodo(Todo *);
273 274
274 275
275 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 276 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
276 * emitted as result. */ 277 * emitted as result. */
277 void checkClipboard(); 278 void checkClipboard();
278 279
279 /** using the KConfig associated with the kapp variable, read in the 280 /** using the KConfig associated with the kapp variable, read in the
280 * settings from the config file. 281 * settings from the config file.
281 */ 282 */
282 void readSettings(); 283 void readSettings();
283 284
284 /** write current state to config file. */ 285 /** write current state to config file. */
285 void writeSettings(); 286 void writeSettings();
286 287
287 /** read settings for calendar filters */ 288 /** read settings for calendar filters */
288 void readFilterSettings(KConfig *config); 289 void readFilterSettings(KConfig *config);
289 290
290 /** write settings for calendar filters */ 291 /** write settings for calendar filters */
291 void writeFilterSettings(KConfig *config); 292 void writeFilterSettings(KConfig *config);
292 293
293 /** passes on the message that an event has changed to the currently 294 /** passes on the message that an event has changed to the currently
294 * activated view so that it can make appropriate display changes. */ 295 * activated view so that it can make appropriate display changes. */
295 void changeEventDisplay(Event *, int); 296 void changeEventDisplay(Event *, int);
296 void changeIncidenceDisplay(Incidence *, int); 297 void changeIncidenceDisplay(Incidence *, int);
297 void changeTodoDisplay(Todo *, int); 298 void changeTodoDisplay(Todo *, int);
298 299
299 void eventAdded(Event *); 300 void eventAdded(Event *);
300 void eventChanged(Event *); 301 void eventChanged(Event *);
301 void eventToBeDeleted(Event *); 302 void eventToBeDeleted(Event *);
302 void eventDeleted(); 303 void eventDeleted();
303 304
304 void todoAdded(Todo *); 305 void todoAdded(Todo *);
305 void todoChanged(Todo *); 306 void todoChanged(Todo *);
306 void todoToBeDeleted(Todo *); 307 void todoToBeDeleted(Todo *);
307 void todoDeleted(); 308 void todoDeleted();
308 309
309 void updateView(const QDate &start, const QDate &end); 310 void updateView(const QDate &start, const QDate &end);
310 void updateView(); 311 void updateView();
311 312
312 /** Full update of visible todo views */ 313 /** Full update of visible todo views */
313 void updateTodoViews(); 314 void updateTodoViews();
314 315
315 void updateUnmanagedViews(); 316 void updateUnmanagedViews();
316 317
317 /** cut the current appointment to the clipboard */ 318 /** cut the current appointment to the clipboard */
318 void edit_cut(); 319 void edit_cut();
319 320
320 /** copy the current appointment(s) to the clipboard */ 321 /** copy the current appointment(s) to the clipboard */
321 void edit_copy(); 322 void edit_copy();
322 323
323 /** paste the current vobject(s) in the clipboard buffer into calendar */ 324 /** paste the current vobject(s) in the clipboard buffer into calendar */
324 void edit_paste(); 325 void edit_paste();
325 326
326 /** edit viewing and configuration options. */ 327 /** edit viewing and configuration options. */
327 void edit_options(); 328 void edit_options();
328 /** 329 /**
329 Functions for printing, previewing a print, and setting up printing 330 Functions for printing, previewing a print, and setting up printing
330 parameters. 331 parameters.
331 */ 332 */
332 void print(); 333 void print();
333 void printSetup(); 334 void printSetup();
334 void printPreview(); 335 void printPreview();
335 336
336 /** Export as iCalendar file */ 337 /** Export as iCalendar file */
337 void exportICalendar(); 338 void exportICalendar();
338 339
339 /** Export as vCalendar file */ 340 /** Export as vCalendar file */
340 bool exportVCalendar( QString fn); 341 bool exportVCalendar( QString fn);
341 342
342 /** pop up a dialog to show an existing appointment. */ 343 /** pop up a dialog to show an existing appointment. */
343 void appointment_show(); 344 void appointment_show();
344 /** 345 /**
345 * pop up an Appointment Dialog to edit an existing appointment.Get 346 * pop up an Appointment Dialog to edit an existing appointment.Get
346 * information on the appointment from the list of unique IDs that is 347 * information on the appointment from the list of unique IDs that is
347 * currently in the View, called currIds. 348 * currently in the View, called currIds.
348 */ 349 */
349 void appointment_edit(); 350 void appointment_edit();
350 /** 351 /**
351 * pop up dialog confirming deletion of currently selected event in the 352 * pop up dialog confirming deletion of currently selected event in the
352 * View. 353 * View.
353 */ 354 */
354 void appointment_delete(); 355 void appointment_delete();
355 356
356 /** mails the currently selected event to a particular user as a vCalendar 357 /** mails the currently selected event to a particular user as a vCalendar
357 attachment. */ 358 attachment. */
358 void action_mail(); 359 void action_mail();
359 360
360 /* frees a subtodo from it's relation */ 361 /* frees a subtodo from it's relation */
361 void todo_unsub( Todo * ); 362 void todo_unsub( Todo * );
362 void todo_resub( Todo * parent, Todo * sub ); 363 void todo_resub( Todo * parent, Todo * sub );
363 364
364 /** Take ownership of selected event. */ 365 /** Take ownership of selected event. */
365 void takeOverEvent(); 366 void takeOverEvent();
366 367
367 /** Take ownership of all events in calendar. */ 368 /** Take ownership of all events in calendar. */
368 void takeOverCalendar(); 369 void takeOverCalendar();
369 370
370 /** query whether or not the calendar is "dirty". */ 371 /** query whether or not the calendar is "dirty". */
371 bool isModified(); 372 bool isModified();
372 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 373 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
373 void setModified(bool modified=true); 374 void setModified(bool modified=true);
374 375
375 /** query if the calendar is read-only. */ 376 /** query if the calendar is read-only. */
376 bool isReadOnly(); 377 bool isReadOnly();
377 /** set state of calendar to read-only */ 378 /** set state of calendar to read-only */
378 void setReadOnly(bool readOnly=true); 379 void setReadOnly(bool readOnly=true);
379 380
380 void eventUpdated(Incidence *); 381 void eventUpdated(Incidence *);
381 382
382 /* iTIP scheduling actions */ 383 /* iTIP scheduling actions */
383 void schedule_publish(Incidence *incidence = 0); 384 void schedule_publish(Incidence *incidence = 0);
384 void schedule_request(Incidence *incidence = 0); 385 void schedule_request(Incidence *incidence = 0);
385 void schedule_refresh(Incidence *incidence = 0); 386 void schedule_refresh(Incidence *incidence = 0);
386 void schedule_cancel(Incidence *incidence = 0); 387 void schedule_cancel(Incidence *incidence = 0);
387 void schedule_add(Incidence *incidence = 0); 388 void schedule_add(Incidence *incidence = 0);
388 void schedule_reply(Incidence *incidence = 0); 389 void schedule_reply(Incidence *incidence = 0);
389 void schedule_counter(Incidence *incidence = 0); 390 void schedule_counter(Incidence *incidence = 0);
390 void schedule_declinecounter(Incidence *incidence = 0); 391 void schedule_declinecounter(Incidence *incidence = 0);
391 void schedule_publish_freebusy(int daysToPublish = 30); 392 void schedule_publish_freebusy(int daysToPublish = 30);
392 393
393 void openAddressbook(); 394 void openAddressbook();
394 395
395 void editFilters(); 396 void editFilters();
396 void toggleFilerEnabled(); 397 void toggleFilerEnabled();
397 QPtrList<CalFilter> filters(); 398 QPtrList<CalFilter> filters();
398 void toggleFilter(); 399 void toggleFilter();
399 void showFilter(bool visible); 400 void showFilter(bool visible);
400 void updateFilter(); 401 void updateFilter();
401 void filterEdited(); 402 void filterEdited();
402 void selectFilter( int ); 403 void selectFilter( int );
403 KOFilterView *filterView(); 404 KOFilterView *filterView();
404 405
405 void showIntro(); 406 void showIntro();
406 407
407 /** Move the curdatepient view date to today */ 408 /** Move the curdatepient view date to today */
408 void goToday(); 409 void goToday();
409 410
410 /** Move to the next date(s) in the current view */ 411 /** Move to the next date(s) in the current view */
411 void goNext(); 412 void goNext();
412 413
413 /** Move to the previous date(s) in the current view */ 414 /** Move to the previous date(s) in the current view */
414 void goPrevious(); 415 void goPrevious();
415 /** Move to the next date(s) in the current view */ 416 /** Move to the next date(s) in the current view */
416 void goNextMonth(); 417 void goNextMonth();
417 418
418 /** Move to the previous date(s) in the current view */ 419 /** Move to the previous date(s) in the current view */
419 void goPreviousMonth(); 420 void goPreviousMonth();
420 421
421 void toggleExpand(); 422 void toggleExpand();
422 void toggleDateNavigatorWidget(); 423 void toggleDateNavigatorWidget();
423 void toggleAllDaySize(); 424 void toggleAllDaySize();
424 void dialogClosing(Incidence *); 425 void dialogClosing(Incidence *);
425 426
426 /** Look for new messages in the inbox */ 427 /** Look for new messages in the inbox */
427 void lookForIncomingMessages(); 428 void lookForIncomingMessages();
428 /** Look for new messages in the outbox */ 429 /** Look for new messages in the outbox */
429 void lookForOutgoingMessages(); 430 void lookForOutgoingMessages();
430 431
431 void processMainViewSelection( Incidence * ); 432 void processMainViewSelection( Incidence * );
432 void processTodoListSelection( Incidence * ); 433 void processTodoListSelection( Incidence * );
433 434
434 void processIncidenceSelection( Incidence * ); 435 void processIncidenceSelection( Incidence * );
435 436
436 void purgeCompleted(); 437 void purgeCompleted();
437 bool removeCompletedSubTodos( Todo* ); 438 bool removeCompletedSubTodos( Todo* );
438 void slotCalendarChanged(); 439 void slotCalendarChanged();
439 bool importBday(); 440 bool importBday();
440 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 441 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
441 bool importQtopia( const QString &categoriesFile, 442 bool importQtopia( const QString &categoriesFile,
442 const QString &datebookFile, 443 const QString &datebookFile,
443 const QString &tasklistFile ); 444 const QString &tasklistFile );
444 void syncExternal( int mode ); 445 void syncExternal( int mode );
445 void slotSelectPickerDate( QDate ) ; 446 void slotSelectPickerDate( QDate ) ;
446 void showDatePicker() ; 447 void showDatePicker() ;
447 void showDatePickerPopup() ; 448 void showDatePickerPopup() ;
448 void moveIncidence(Incidence *) ; 449 void moveIncidence(Incidence *) ;
449 void beamIncidence(Incidence *) ; 450 void beamIncidence(Incidence *) ;
450 void beamCalendar() ; 451 void beamCalendar() ;
451 void beamFilteredCalendar() ; 452 void beamFilteredCalendar() ;
452 void beamIncidenceList(QPtrList<Incidence>) ; 453 void beamIncidenceList(QPtrList<Incidence>) ;
453 void manageCategories(); 454 void manageCategories();
454 int addCategories(); 455 int addCategories();
455 void removeCategories(); 456 void removeCategories();
456 void setSyncDevice( QString ); 457 void setSyncDevice( QString );
457 void setSyncName( QString ); 458 void setSyncName( QString );
458 void showDay( QDate ); 459 void showDay( QDate );
459 void undo_delete(); 460 void undo_delete();
460 protected slots: 461 protected slots:
461 void resetFocus(); 462 void resetFocus();
462 void slotViewerClosed(); 463 void slotViewerClosed();
463 void timerAlarm(); 464 void timerAlarm();
464 void suspendAlarm(); 465 void suspendAlarm();
465 void beamDone( Ir *ir ); 466 void beamDone( Ir *ir );
466 /** Select a view or adapt the current view to display the specified dates. */ 467 /** Select a view or adapt the current view to display the specified dates. */
467 void showDates( const KCal::DateList & ); 468 void showDates( const KCal::DateList & );
468 void selectWeekNum ( int ); 469 void selectWeekNum ( int );
469 470
470 public: 471 public:
471 // show a standard warning 472 // show a standard warning
472 // returns KMsgBox::yesNoCancel() 473 // returns KMsgBox::yesNoCancel()
473 int msgCalModified(); 474 int msgCalModified();
474 virtual bool sync(KSyncManager* manager, QString filename, int mode); 475 virtual bool sync(KSyncManager* manager, QString filename, int mode);
475 476
476 virtual bool syncExternal(KSyncManager* manager, QString resource); 477 virtual bool syncExternal(KSyncManager* manager, QString resource);
477 virtual void removeSyncInfo( QString syncProfile); 478 virtual void removeSyncInfo( QString syncProfile);
478 void setSyncManager(KSyncManager* manager); 479 void setSyncManager(KSyncManager* manager);
479 void setLoadedFileVersion(QDateTime); 480 void setLoadedFileVersion(QDateTime);
480 bool checkFileVersion(QString fn); 481 bool checkFileVersion(QString fn);
481 bool checkFileChanged(QString fn); 482 bool checkFileChanged(QString fn);
482 Event* getLastSyncEvent(); 483 Event* getLastSyncEvent();
483 /** Adapt navigation units correpsonding to step size of navigation of the 484 /** Adapt navigation units correpsonding to step size of navigation of the
484 * current view. 485 * current view.
485 */ 486 */
486 void adaptNavigationUnits(); 487 void adaptNavigationUnits();
487 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 488 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
488 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 489 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
489 //Attendee* getYourAttendee(Event *event); 490 //Attendee* getYourAttendee(Event *event);
490 void setBlockShowDates( bool b ) { mBlockShowDates = b ;} 491 void setBlockShowDates( bool b ) { mBlockShowDates = b ;}
491 protected: 492 protected:
492 void schedule(Scheduler::Method, Incidence *incidence = 0); 493 void schedule(Scheduler::Method, Incidence *incidence = 0);
493 494
494 // returns KMsgBox::OKCandel() 495 // returns KMsgBox::OKCandel()
495 int msgItemDelete(const QString name); 496 int msgItemDelete(const QString name);
496 void showEventEditor(); 497 void showEventEditor();
497 void showTodoEditor(); 498 void showTodoEditor();
498 void writeLocale(); 499 void writeLocale();
499 Todo *selectedTodo(); 500 Todo *selectedTodo();
500 501
501 private: 502 private:
503 QDateTime mNextAlarmDateTime;
502 bool mViewerCallerIsSearchDialog; 504 bool mViewerCallerIsSearchDialog;
503 bool mBlockShowDates; 505 bool mBlockShowDates;
504 KSyncManager* mSyncManager; 506 KSyncManager* mSyncManager;
505 AlarmDialog * mAlarmDialog; 507 AlarmDialog * mAlarmDialog;
506 QString mAlarmNotification; 508 QString mAlarmNotification;
507 QString mSuspendAlarmNotification; 509 QString mSuspendAlarmNotification;
508 QTimer* mSuspendTimer; 510 QTimer* mSuspendTimer;
509 QTimer* mAlarmTimer; 511 QTimer* mAlarmTimer;
510 QTimer* mRecheckAlarmTimer; 512 QTimer* mRecheckAlarmTimer;
511 void computeAlarm( QString ); 513 void computeAlarm( QString );
512 void startAlarm( QString, QString ); 514 void startAlarm( QString, QString );
513 void setSyncEventsReadOnly(); 515 void setSyncEventsReadOnly();
514 516
515 QDateTime loadedFileVersion; 517 QDateTime loadedFileVersion;
516 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 518 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
517 void checkExternalId( Incidence * inc ); 519 void checkExternalId( Incidence * inc );
518 int mGlobalSyncMode; 520 int mGlobalSyncMode;
519 QString mCurrentSyncDevice; 521 QString mCurrentSyncDevice;
520 QString mCurrentSyncName; 522 QString mCurrentSyncName;
521 KOBeamPrefs* beamDialog; 523 KOBeamPrefs* beamDialog;
522 void init(); 524 void init();
523 int mDatePickerMode; 525 int mDatePickerMode;
524 bool mFlagEditDescription; 526 bool mFlagEditDescription;
525 QDateTime mLastCalendarSync; 527 QDateTime mLastCalendarSync;
526 void createPrinter(); 528 void createPrinter();
527 529
528 void calendarModified( bool, Calendar * ); 530 void calendarModified( bool, Calendar * );
529 531
530 CalPrinter *mCalPrinter; 532 CalPrinter *mCalPrinter;
531 533
532 QSplitter *mPanner; 534 QSplitter *mPanner;
533 QSplitter *mLeftSplitter; 535 QSplitter *mLeftSplitter;
534 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame; 536 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame;
535 QWidgetStack *mRightFrame; 537 QWidgetStack *mRightFrame;
536 538
537 KDatePicker* mDatePicker; 539 KDatePicker* mDatePicker;
538 QVBox* mDateFrame; 540 QVBox* mDateFrame;
539 541
540 DateNavigatorContainer *mDateNavigator; // widget showing small month view. 542 DateNavigatorContainer *mDateNavigator; // widget showing small month view.
541 543
542 KOFilterView *mFilterView; 544 KOFilterView *mFilterView;
543 545
544 ResourceView *mResourceView; 546 ResourceView *mResourceView;
545 547
546 // calendar object for this viewing instance 548 // calendar object for this viewing instance
547 Calendar *mCalendar; 549 Calendar *mCalendar;
548 550
549 CalendarResourceManager *mResourceManager; 551 CalendarResourceManager *mResourceManager;
550 552
551 FileStorage *mStorage; 553 FileStorage *mStorage;
552 554
553 DateNavigator *mNavigator; 555 DateNavigator *mNavigator;
554 556
555 KOViewManager *mViewManager; 557 KOViewManager *mViewManager;
556 KODialogManager *mDialogManager; 558 KODialogManager *mDialogManager;
557 559
558 // Calendar filters 560 // Calendar filters
559 QPtrList<CalFilter> mFilters; 561 QPtrList<CalFilter> mFilters;
560 562
561 // various housekeeping variables. 563 // various housekeeping variables.
562 bool mModified; // flag indicating if calendar is modified 564 bool mModified; // flag indicating if calendar is modified
563 bool mReadOnly; // flag indicating if calendar is read-only 565 bool mReadOnly; // flag indicating if calendar is read-only
564 QDate mSaveSingleDate; 566 QDate mSaveSingleDate;
565 567
566 Incidence *mSelectedIncidence; 568 Incidence *mSelectedIncidence;
567 Incidence *mMoveIncidence; 569 Incidence *mMoveIncidence;
568 QDate mMoveIncidenceOldDate; 570 QDate mMoveIncidenceOldDate;
569 KOTodoView *mTodoList; 571 KOTodoView *mTodoList;
570 KOEventEditor * mEventEditor; 572 KOEventEditor * mEventEditor;
571 KOTodoEditor * mTodoEditor; 573 KOTodoEditor * mTodoEditor;
572 KOEventViewerDialog * mEventViewerDialog; 574 KOEventViewerDialog * mEventViewerDialog;
573 void keyPressEvent ( QKeyEvent *e) ; 575 void keyPressEvent ( QKeyEvent *e) ;
574 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 576 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
575}; 577};
576 578
577 579
578class CalendarViewVisitor : public Incidence::Visitor 580class CalendarViewVisitor : public Incidence::Visitor
579{ 581{
580 public: 582 public:
581 CalendarViewVisitor() : mView( 0 ) {} 583 CalendarViewVisitor() : mView( 0 ) {}
582 584
583 bool act( Incidence *incidence, CalendarView *view ) 585 bool act( Incidence *incidence, CalendarView *view )
584 { 586 {
585 mView = view; 587 mView = view;
586 return incidence->accept( *this ); 588 return incidence->accept( *this );
587 } 589 }
588 590
589 protected: 591 protected:
590 CalendarView *mView; 592 CalendarView *mView;
591}; 593};
592 594
593class ShowIncidenceVisitor : public CalendarViewVisitor 595class ShowIncidenceVisitor : public CalendarViewVisitor
594{ 596{
595 protected: 597 protected:
596 bool visit( Event *event ) { mView->showEvent( event ); return true; } 598 bool visit( Event *event ) { mView->showEvent( event ); return true; }
597 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 599 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
598 bool visit( Journal * j ) { mView->showJournal( j );return true; } 600 bool visit( Journal * j ) { mView->showJournal( j );return true; }
599}; 601};
600 602
601class EditIncidenceVisitor : public CalendarViewVisitor 603class EditIncidenceVisitor : public CalendarViewVisitor
602{ 604{
603 protected: 605 protected:
604 bool visit( Event *event ) { mView->editEvent( event ); return true; } 606 bool visit( Event *event ) { mView->editEvent( event ); return true; }
605 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; } 607 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; }
606 bool visit( Journal *j ) { mView->editJournal( j); return true; } 608 bool visit( Journal *j ) { mView->editJournal( j); return true; }
607}; 609};
608 610
609class DeleteIncidenceVisitor : public CalendarViewVisitor 611class DeleteIncidenceVisitor : public CalendarViewVisitor
610{ 612{
611 protected: 613 protected:
612 bool visit( Event *event ) { mView->deleteEvent( event ); return true; } 614 bool visit( Event *event ) { mView->deleteEvent( event ); return true; }
613 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; } 615 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; }
614 bool visit( Journal * j) {mView->deleteJournal( j ); return true; } 616 bool visit( Journal * j) {mView->deleteJournal( j ); return true; }
615}; 617};
616 618
617#endif 619#endif
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 95b836c..7a4275b 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -401,385 +401,385 @@ void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
401 401
402 if ( cmsg == "setDocument(QString)" ) { 402 if ( cmsg == "setDocument(QString)" ) {
403 QDataStream stream( data, IO_ReadOnly ); 403 QDataStream stream( data, IO_ReadOnly );
404 QString fileName; 404 QString fileName;
405 stream >> fileName; 405 stream >> fileName;
406 //qDebug("filename %s ", fileName.latin1()); 406 //qDebug("filename %s ", fileName.latin1());
407 showMaximized(); 407 showMaximized();
408 raise(); 408 raise();
409 KOPrefs::instance()->mLastSyncedLocalFile = fileName ; 409 KOPrefs::instance()->mLastSyncedLocalFile = fileName ;
410 mSyncManager->slotSyncMenu( 1002 ); 410 mSyncManager->slotSyncMenu( 1002 );
411 return; 411 return;
412 } 412 }
413 413
414 if ( cmsg == "-writeFile" ) { 414 if ( cmsg == "-writeFile" ) {
415 // I made from the "-writeFile" an "-writeAlarm" 415 // I made from the "-writeFile" an "-writeAlarm"
416 mView->viewManager()->showWhatsNextView(); 416 mView->viewManager()->showWhatsNextView();
417 mCalendar->checkAlarmForIncidence( 0, true); 417 mCalendar->checkAlarmForIncidence( 0, true);
418 showMaximized(); 418 showMaximized();
419 raise(); 419 raise();
420 return; 420 return;
421 421
422 } 422 }
423 if ( cmsg == "-writeFileSilent" ) { 423 if ( cmsg == "-writeFileSilent" ) {
424 // I made from the "-writeFile" an "-writeAlarm" 424 // I made from the "-writeFile" an "-writeAlarm"
425 // mView->viewManager()->showWhatsNextView(); 425 // mView->viewManager()->showWhatsNextView();
426 mCalendar->checkAlarmForIncidence( 0, true); 426 mCalendar->checkAlarmForIncidence( 0, true);
427 //showMaximized(); 427 //showMaximized();
428 //raise(); 428 //raise();
429 hide(); 429 hide();
430 return; 430 return;
431 } 431 }
432 if ( cmsg == "-newCountdown" ) { 432 if ( cmsg == "-newCountdown" ) {
433 qDebug("newCountdown "); 433 qDebug("newCountdown ");
434 434
435 } 435 }
436 QString msg ; 436 QString msg ;
437 QString allmsg = cmsg; 437 QString allmsg = cmsg;
438 while ( allmsg.length() > 0 ) { 438 while ( allmsg.length() > 0 ) {
439 int nextC = allmsg.find( "-", 1 ); 439 int nextC = allmsg.find( "-", 1 );
440 if ( nextC == -1 ) { 440 if ( nextC == -1 ) {
441 msg = allmsg; 441 msg = allmsg;
442 allmsg = ""; 442 allmsg = "";
443 } else{ 443 } else{
444 msg = allmsg.left( nextC ); 444 msg = allmsg.left( nextC );
445 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 445 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
446 } 446 }
447 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 447 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
448 if ( msg == "-newEvent" ) { 448 if ( msg == "-newEvent" ) {
449 mView->newEvent(); 449 mView->newEvent();
450 } 450 }
451 if ( msg == "-newTodo" ) { 451 if ( msg == "-newTodo" ) {
452 mView->newTodo(); 452 mView->newTodo();
453 453
454 } 454 }
455 if ( msg == "-showWN" ) { 455 if ( msg == "-showWN" ) {
456 mView->viewManager()->showWhatsNextView(); 456 mView->viewManager()->showWhatsNextView();
457 } 457 }
458 if ( msg == "-showTodo" ) { 458 if ( msg == "-showTodo" ) {
459 mView->viewManager()->showTodoView(); 459 mView->viewManager()->showTodoView();
460 } 460 }
461 if ( msg == "-showList" ) { 461 if ( msg == "-showList" ) {
462 mView->viewManager()->showListView(); 462 mView->viewManager()->showListView();
463 } 463 }
464 else if ( msg == "-showDay" ) { 464 else if ( msg == "-showDay" ) {
465 mView->viewManager()->showDayView(); 465 mView->viewManager()->showDayView();
466 } 466 }
467 else if ( msg == "-showWWeek" ) { 467 else if ( msg == "-showWWeek" ) {
468 mView->viewManager()->showWorkWeekView(); 468 mView->viewManager()->showWorkWeekView();
469 } 469 }
470 else if ( msg == "-ringSync" ) { 470 else if ( msg == "-ringSync" ) {
471 mSyncManager->multiSync( false ); 471 mSyncManager->multiSync( false );
472 } 472 }
473 else if ( msg == "-showWeek" ) { 473 else if ( msg == "-showWeek" ) {
474 mView->viewManager()->showWeekView(); 474 mView->viewManager()->showWeekView();
475 } 475 }
476 else if ( msg == "-showTodo" ) { 476 else if ( msg == "-showTodo" ) {
477 mView->viewManager()->showTodoView(); 477 mView->viewManager()->showTodoView();
478 } 478 }
479 else if ( msg == "-showJournal" ) { 479 else if ( msg == "-showJournal" ) {
480 mView->dateNavigator()->selectDates( 1 ); 480 mView->dateNavigator()->selectDates( 1 );
481 mView->dateNavigator()->selectToday(); 481 mView->dateNavigator()->selectToday();
482 mView->viewManager()->showJournalView(); 482 mView->viewManager()->showJournalView();
483 } 483 }
484 else if ( msg == "-showKO" ) { 484 else if ( msg == "-showKO" ) {
485 mView->viewManager()->showNextXView(); 485 mView->viewManager()->showNextXView();
486 } 486 }
487 else if ( msg == "-showWNext" ) { 487 else if ( msg == "-showWNext" ) {
488 mView->viewManager()->showWhatsNextView(); 488 mView->viewManager()->showWhatsNextView();
489 } 489 }
490 else if ( msg == "nextView()" ) { 490 else if ( msg == "nextView()" ) {
491 mView->viewManager()->showNextView(); 491 mView->viewManager()->showNextView();
492 } 492 }
493 else if ( msg == "-showNextXView" ) { 493 else if ( msg == "-showNextXView" ) {
494 mView->viewManager()->showNextXView(); 494 mView->viewManager()->showNextXView();
495 } 495 }
496 496
497 497
498 } 498 }
499 499
500 showMaximized(); 500 showMaximized();
501 raise(); 501 raise();
502} 502}
503 503
504QPixmap MainWindow::loadPixmap( QString name ) 504QPixmap MainWindow::loadPixmap( QString name )
505{ 505{
506 return SmallIcon( name ); 506 return SmallIcon( name );
507 507
508} 508}
509void MainWindow::initActions() 509void MainWindow::initActions()
510{ 510{
511 //KOPrefs::instance()->mShowFullMenu 511 //KOPrefs::instance()->mShowFullMenu
512 iconToolBar->clear(); 512 iconToolBar->clear();
513 KOPrefs *p = KOPrefs::instance(); 513 KOPrefs *p = KOPrefs::instance();
514 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 514 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
515 515
516 QPopupMenu *viewMenu = new QPopupMenu( this ); 516 QPopupMenu *viewMenu = new QPopupMenu( this );
517 QPopupMenu *actionMenu = new QPopupMenu( this ); 517 QPopupMenu *actionMenu = new QPopupMenu( this );
518 QPopupMenu *importMenu = new QPopupMenu( this ); 518 QPopupMenu *importMenu = new QPopupMenu( this );
519 QPopupMenu *importMenu_X = new QPopupMenu( this ); 519 QPopupMenu *importMenu_X = new QPopupMenu( this );
520 QPopupMenu *exportMenu_X = new QPopupMenu( this ); 520 QPopupMenu *exportMenu_X = new QPopupMenu( this );
521 QPopupMenu *beamMenu_X = new QPopupMenu( this ); 521 QPopupMenu *beamMenu_X = new QPopupMenu( this );
522 selectFilterMenu = new QPopupMenu( this ); 522 selectFilterMenu = new QPopupMenu( this );
523 selectFilterMenu->setCheckable( true ); 523 selectFilterMenu->setCheckable( true );
524 syncMenu = new QPopupMenu( this ); 524 syncMenu = new QPopupMenu( this );
525 configureAgendaMenu = new QPopupMenu( this ); 525 configureAgendaMenu = new QPopupMenu( this );
526 configureToolBarMenu = new QPopupMenu( this ); 526 configureToolBarMenu = new QPopupMenu( this );
527 QPopupMenu *helpMenu = new QPopupMenu( this ); 527 QPopupMenu *helpMenu = new QPopupMenu( this );
528 QIconSet icon; 528 QIconSet icon;
529 int pixWid = 22, pixHei = 22; 529 int pixWid = 22, pixHei = 22;
530 QString pathString = ""; 530 QString pathString = "";
531 if ( !p->mToolBarMiniIcons ) { 531 if ( !p->mToolBarMiniIcons ) {
532 if ( QApplication::desktop()->width() < 480 ) { 532 if ( QApplication::desktop()->width() < 480 ) {
533 pathString += "icons16/"; 533 pathString += "icons16/";
534 pixWid = 18; pixHei = 16; 534 pixWid = 18; pixHei = 16;
535 } 535 }
536 } else { 536 } else {
537 pathString += "iconsmini/"; 537 pathString += "iconsmini/";
538 pixWid = 18; pixHei = 16; 538 pixWid = 18; pixHei = 16;
539 } 539 }
540 if ( KOPrefs::instance()->mShowFullMenu ) { 540 if ( KOPrefs::instance()->mShowFullMenu ) {
541 QMenuBar *menuBar1; 541 QMenuBar *menuBar1;
542 menuBar1 = menuBar(); 542 menuBar1 = menuBar();
543 menuBar1->insertItem( i18n("File"), importMenu ); 543 menuBar1->insertItem( i18n("File"), importMenu );
544 menuBar1->insertItem( i18n("View"), viewMenu ); 544 menuBar1->insertItem( i18n("View"), viewMenu );
545 menuBar1->insertItem( i18n("Actions"), actionMenu ); 545 menuBar1->insertItem( i18n("Actions"), actionMenu );
546#ifdef DESKTOP_VERSION 546#ifdef DESKTOP_VERSION
547 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 547 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
548 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 548 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
549#else 549#else
550 menuBar1->insertItem( i18n("Sync"), syncMenu ); 550 menuBar1->insertItem( i18n("Sync"), syncMenu );
551 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu ); 551 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu );
552#endif 552#endif
553 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 553 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
554 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 554 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
555 menuBar1->insertItem( i18n("Help"), helpMenu ); 555 menuBar1->insertItem( i18n("Help"), helpMenu );
556 } else { 556 } else {
557 QPEMenuBar *menuBar1; 557 QPEMenuBar *menuBar1;
558 menuBar1 = new QPEMenuBar( iconToolBar ); 558 menuBar1 = new QPEMenuBar( iconToolBar );
559 QPopupMenu *menuBar = new QPopupMenu( this ); 559 QPopupMenu *menuBar = new QPopupMenu( this );
560 icon = loadPixmap( pathString + "z_menu" ); 560 icon = loadPixmap( pathString + "z_menu" );
561 menuBar1->insertItem( icon.pixmap(), menuBar); 561 menuBar1->insertItem( icon.pixmap(), menuBar);
562 //menuBar1->insertItem( i18n("ME"), menuBar); 562 //menuBar1->insertItem( i18n("ME"), menuBar);
563 menuBar->insertItem( i18n("File"), importMenu ); 563 menuBar->insertItem( i18n("File"), importMenu );
564 menuBar->insertItem( i18n("View"), viewMenu ); 564 menuBar->insertItem( i18n("View"), viewMenu );
565 menuBar->insertItem( i18n("Actions"), actionMenu ); 565 menuBar->insertItem( i18n("Actions"), actionMenu );
566 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 566 menuBar->insertItem( i18n("Synchronize"), syncMenu );
567 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 567 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
568 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 568 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
569 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 569 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
570 menuBar->insertItem( i18n("Help"), helpMenu ); 570 menuBar->insertItem( i18n("Help"), helpMenu );
571 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 571 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
572 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 572 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
573 } 573 }
574 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 574 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
575 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) ); 575 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) );
576 mWeekBgColor = iconToolBar->backgroundColor(); 576 mWeekBgColor = iconToolBar->backgroundColor();
577 mWeekPixmap.resize( pixWid , pixHei ); 577 mWeekPixmap.resize( pixWid , pixHei );
578 mWeekPixmap.fill( mWeekBgColor ); 578 mWeekPixmap.fill( mWeekBgColor );
579 icon = mWeekPixmap; 579 icon = mWeekPixmap;
580 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this ); 580 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this );
581 if ( p-> mShowIconWeekNum ) 581 if ( p-> mShowIconWeekNum )
582 mWeekAction->addTo( iconToolBar ); 582 mWeekAction->addTo( iconToolBar );
583 mWeekFont = font(); 583 mWeekFont = font();
584 584
585 int fontPoint = mWeekFont.pointSize(); 585 int fontPoint = mWeekFont.pointSize();
586 QFontMetrics f( mWeekFont ); 586 QFontMetrics f( mWeekFont );
587 int fontWid = f.width( "30" ); 587 int fontWid = f.width( "30" );
588 while ( fontWid > pixWid ) { 588 while ( fontWid > pixWid ) {
589 --fontPoint; 589 --fontPoint;
590 mWeekFont.setPointSize( fontPoint ); 590 mWeekFont.setPointSize( fontPoint );
591 QFontMetrics f( mWeekFont ); 591 QFontMetrics f( mWeekFont );
592 fontWid = f.width( "30" ); 592 fontWid = f.width( "30" );
593 qDebug("dec-- "); 593 //qDebug("dec-- ");
594 } 594 }
595 595
596 connect( mWeekAction, SIGNAL( activated() ), 596 connect( mWeekAction, SIGNAL( activated() ),
597 this, SLOT( weekAction() ) ); 597 this, SLOT( weekAction() ) );
598 598
599 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) ); 599 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) );
600 600
601 //#endif 601 //#endif
602 // ****************** 602 // ******************
603 QAction *action; 603 QAction *action;
604 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 604 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
605 configureToolBarMenu->setCheckable( true ); 605 configureToolBarMenu->setCheckable( true );
606 606
607 607
608 configureAgendaMenu->setCheckable( true ); 608 configureAgendaMenu->setCheckable( true );
609 int iii ; 609 int iii ;
610 for ( iii = 1;iii<= 10 ;++iii ){ 610 for ( iii = 1;iii<= 10 ;++iii ){
611 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 ); 611 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 );
612 } 612 }
613 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 613 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
614 614
615 connect( configureAgendaMenu, SIGNAL( aboutToShow()), 615 connect( configureAgendaMenu, SIGNAL( aboutToShow()),
616 this, SLOT( showConfigureAgenda( ) ) ); 616 this, SLOT( showConfigureAgenda( ) ) );
617 617
618 icon = loadPixmap( pathString + "configure" ); 618 icon = loadPixmap( pathString + "configure" );
619 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this ); 619 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this );
620 action->addTo( actionMenu ); 620 action->addTo( actionMenu );
621 connect( action, SIGNAL( activated() ), 621 connect( action, SIGNAL( activated() ),
622 mView, SLOT( edit_options() ) ); 622 mView, SLOT( edit_options() ) );
623 actionMenu->insertSeparator(); 623 actionMenu->insertSeparator();
624 624
625 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this ); 625 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this );
626 action->addTo( actionMenu ); 626 action->addTo( actionMenu );
627 connect( action, SIGNAL( activated() ), 627 connect( action, SIGNAL( activated() ),
628 mView, SLOT( undo_delete() ) ); 628 mView, SLOT( undo_delete() ) );
629 actionMenu->insertSeparator(); 629 actionMenu->insertSeparator();
630 630
631 icon = loadPixmap( pathString + "newevent" ); 631 icon = loadPixmap( pathString + "newevent" );
632 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 632 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
633 configureToolBarMenu->insertSeparator(); 633 configureToolBarMenu->insertSeparator();
634 configureToolBarMenu->insertItem(i18n("Week Number"), 400); 634 configureToolBarMenu->insertItem(i18n("Week Number"), 400);
635 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 635 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
636 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 636 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
637 ne_action->addTo( actionMenu ); 637 ne_action->addTo( actionMenu );
638 connect( ne_action, SIGNAL( activated() ), 638 connect( ne_action, SIGNAL( activated() ),
639 mView, SLOT( newEvent() ) ); 639 mView, SLOT( newEvent() ) );
640 icon = loadPixmap( pathString + "newtodo" ); 640 icon = loadPixmap( pathString + "newtodo" );
641 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 641 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
642 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); 642 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
643 nt_action->addTo( actionMenu ); 643 nt_action->addTo( actionMenu );
644 connect( nt_action, SIGNAL( activated() ), 644 connect( nt_action, SIGNAL( activated() ),
645 mView, SLOT( newTodo() ) ); 645 mView, SLOT( newTodo() ) );
646 646
647 icon = loadPixmap( pathString + "today" ); 647 icon = loadPixmap( pathString + "today" );
648 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 648 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
649 today_action->addTo( viewMenu ); 649 today_action->addTo( viewMenu );
650 connect( today_action, SIGNAL( activated() ), 650 connect( today_action, SIGNAL( activated() ),
651 mView, SLOT( goToday() ) ); 651 mView, SLOT( goToday() ) );
652 viewMenu->insertSeparator(); 652 viewMenu->insertSeparator();
653 653
654 icon = loadPixmap( pathString + "navi" ); 654 icon = loadPixmap( pathString + "navi" );
655 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 655 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
656 action->addTo( viewMenu ); 656 action->addTo( viewMenu );
657 connect( action, SIGNAL( activated() ), 657 connect( action, SIGNAL( activated() ),
658 mView, SLOT( toggleDateNavigatorWidget() ) ); 658 mView, SLOT( toggleDateNavigatorWidget() ) );
659 mToggleNav = action ; 659 mToggleNav = action ;
660 icon = loadPixmap( pathString + "filter" ); 660 icon = loadPixmap( pathString + "filter" );
661 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this ); 661 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this );
662 action->addTo( viewMenu ); 662 action->addTo( viewMenu );
663 connect( action, SIGNAL( activated() ), 663 connect( action, SIGNAL( activated() ),
664 mView, SLOT( toggleFilter() ) ); 664 mView, SLOT( toggleFilter() ) );
665 mToggleFilter = action; 665 mToggleFilter = action;
666 icon = loadPixmap( pathString + "allday" ); 666 icon = loadPixmap( pathString + "allday" );
667 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this ); 667 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this );
668 action->addTo( viewMenu ); 668 action->addTo( viewMenu );
669 connect( action, SIGNAL( activated() ), 669 connect( action, SIGNAL( activated() ),
670 mView, SLOT( toggleAllDaySize() ) ); 670 mView, SLOT( toggleAllDaySize() ) );
671 mToggleAllday = action; 671 mToggleAllday = action;
672 672
673 673
674 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 674 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
675 mToggleNav, SLOT( setEnabled ( bool ) ) ); 675 mToggleNav, SLOT( setEnabled ( bool ) ) );
676 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 676 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
677 mToggleFilter, SLOT( setEnabled ( bool ) ) ); 677 mToggleFilter, SLOT( setEnabled ( bool ) ) );
678 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 678 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
679 mToggleAllday, SLOT( setEnabled ( bool ) ) ); 679 mToggleAllday, SLOT( setEnabled ( bool ) ) );
680 680
681 viewMenu->insertSeparator(); 681 viewMenu->insertSeparator();
682 icon = loadPixmap( pathString + "picker" ); 682 icon = loadPixmap( pathString + "picker" );
683 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this ); 683 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this );
684 action->addTo( viewMenu ); 684 action->addTo( viewMenu );
685 connect( action, SIGNAL( activated() ), 685 connect( action, SIGNAL( activated() ),
686 mView, SLOT( showDatePicker() ) ); 686 mView, SLOT( showDatePicker() ) );
687 action->addTo( iconToolBar ); 687 action->addTo( iconToolBar );
688 viewMenu->insertSeparator(); 688 viewMenu->insertSeparator();
689 689
690 690
691 icon = loadPixmap( pathString + "whatsnext" ); 691 icon = loadPixmap( pathString + "whatsnext" );
692 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 ); 692 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 );
693 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 693 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
694 whatsnext_action->addTo( viewMenu ); 694 whatsnext_action->addTo( viewMenu );
695 connect( whatsnext_action, SIGNAL( activated() ), 695 connect( whatsnext_action, SIGNAL( activated() ),
696 mView->viewManager(), SLOT( showWhatsNextView() ) ); 696 mView->viewManager(), SLOT( showWhatsNextView() ) );
697 697
698 icon = loadPixmap( pathString + "xdays" ); 698 icon = loadPixmap( pathString + "xdays" );
699 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 ); 699 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 );
700 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 700 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
701 xdays_action->addTo( viewMenu ); 701 xdays_action->addTo( viewMenu );
702 connect( xdays_action, SIGNAL( activated() ), 702 connect( xdays_action, SIGNAL( activated() ),
703 mView->viewManager(), SLOT( showNextXView() ) ); 703 mView->viewManager(), SLOT( showNextXView() ) );
704 704
705 705
706 icon = loadPixmap( pathString + "journal" ); 706 icon = loadPixmap( pathString + "journal" );
707 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 707 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
708 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 708 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
709 viewjournal_action->addTo( viewMenu ); 709 viewjournal_action->addTo( viewMenu );
710 connect( viewjournal_action, SIGNAL( activated() ), 710 connect( viewjournal_action, SIGNAL( activated() ),
711 mView->viewManager(), SLOT( showJournalView() ) ); 711 mView->viewManager(), SLOT( showJournalView() ) );
712 712
713 713
714 icon = loadPixmap( pathString + "day" ); 714 icon = loadPixmap( pathString + "day" );
715 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 715 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
716 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 716 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
717 day1_action->addTo( viewMenu ); 717 day1_action->addTo( viewMenu );
718 // action->addTo( toolBar ); 718 // action->addTo( toolBar );
719 connect( day1_action, SIGNAL( activated() ), 719 connect( day1_action, SIGNAL( activated() ),
720 mView->viewManager(), SLOT( showDayView() ) ); 720 mView->viewManager(), SLOT( showDayView() ) );
721 721
722 icon = loadPixmap( pathString + "workweek" ); 722 icon = loadPixmap( pathString + "workweek" );
723 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 723 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
724 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 724 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
725 day5_action->addTo( viewMenu ); 725 day5_action->addTo( viewMenu );
726 connect( day5_action, SIGNAL( activated() ), 726 connect( day5_action, SIGNAL( activated() ),
727 mView->viewManager(), SLOT( showWorkWeekView() ) ); 727 mView->viewManager(), SLOT( showWorkWeekView() ) );
728 728
729 icon = loadPixmap( pathString + "week" ); 729 icon = loadPixmap( pathString + "week" );
730 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 730 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
731 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 731 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
732 day7_action->addTo( viewMenu ); 732 day7_action->addTo( viewMenu );
733 connect( day7_action, SIGNAL( activated() ), 733 connect( day7_action, SIGNAL( activated() ),
734 mView->viewManager(), SLOT( showWeekView() ) ); 734 mView->viewManager(), SLOT( showWeekView() ) );
735 735
736 icon = loadPixmap( pathString + "workweek2" ); 736 icon = loadPixmap( pathString + "workweek2" );
737 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 ); 737 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 );
738 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this ); 738 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this );
739 day6_action->addTo( viewMenu ); 739 day6_action->addTo( viewMenu );
740 connect( day6_action, SIGNAL( activated() ), 740 connect( day6_action, SIGNAL( activated() ),
741 mView->viewManager(), SLOT( showMonthViewWeek() ) ); 741 mView->viewManager(), SLOT( showMonthViewWeek() ) );
742 742
743 icon = loadPixmap( pathString + "month" ); 743 icon = loadPixmap( pathString + "month" );
744 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 744 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
745 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 745 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
746 month_action->addTo( viewMenu ); 746 month_action->addTo( viewMenu );
747 connect( month_action, SIGNAL( activated() ), 747 connect( month_action, SIGNAL( activated() ),
748 mView->viewManager(), SLOT( showMonthView() ) ); 748 mView->viewManager(), SLOT( showMonthView() ) );
749 749
750 icon = loadPixmap( pathString + "list" ); 750 icon = loadPixmap( pathString + "list" );
751 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 751 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
752 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 752 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
753 showlist_action->addTo( viewMenu ); 753 showlist_action->addTo( viewMenu );
754 connect( showlist_action, SIGNAL( activated() ), 754 connect( showlist_action, SIGNAL( activated() ),
755 mView->viewManager(), SLOT( showListView() ) ); 755 mView->viewManager(), SLOT( showListView() ) );
756 756
757 icon = loadPixmap( pathString + "todo" ); 757 icon = loadPixmap( pathString + "todo" );
758 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 758 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
759 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 759 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
760 todoview_action->addTo( viewMenu ); 760 todoview_action->addTo( viewMenu );
761 connect( todoview_action, SIGNAL( activated() ), 761 connect( todoview_action, SIGNAL( activated() ),
762 mView->viewManager(), SLOT( showTodoView() ) ); 762 mView->viewManager(), SLOT( showTodoView() ) );
763 763
764 764
765 765
766#if 0 766#if 0
767 action = new QAction( "view_timespan", "Time Span", 0, this ); 767 action = new QAction( "view_timespan", "Time Span", 0, this );
768 action->addTo( viewMenu ); 768 action->addTo( viewMenu );
769 connect( action, SIGNAL( activated() ), 769 connect( action, SIGNAL( activated() ),
770 mView->viewManager(), SLOT( showTimeSpanView() ) ); 770 mView->viewManager(), SLOT( showTimeSpanView() ) );
771#endif 771#endif
772 772
773 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 773 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
774 this ); 774 this );
775 mNewSubTodoAction->addTo( actionMenu ); 775 mNewSubTodoAction->addTo( actionMenu );
776 connect( mNewSubTodoAction, SIGNAL( activated() ), 776 connect( mNewSubTodoAction, SIGNAL( activated() ),
777 mView, SLOT( newSubTodo() ) ); 777 mView, SLOT( newSubTodo() ) );
778 778
779 actionMenu->insertSeparator(); 779 actionMenu->insertSeparator();
780 780
781 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this ); 781 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this );
782 mShowAction->addTo( actionMenu ); 782 mShowAction->addTo( actionMenu );
783 connect( mShowAction, SIGNAL( activated() ), 783 connect( mShowAction, SIGNAL( activated() ),
784 mView, SLOT( showIncidence() ) ); 784 mView, SLOT( showIncidence() ) );
785 785
@@ -1559,577 +1559,592 @@ void MainWindow::importQtopia()
1559 1559
1560void MainWindow::saveOnClose() 1560void MainWindow::saveOnClose()
1561{ 1561{
1562 KOPrefs *p = KOPrefs::instance(); 1562 KOPrefs *p = KOPrefs::instance();
1563 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1563 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1564 p->mToolBarUp = iconToolBar->x() > width()/2 || 1564 p->mToolBarUp = iconToolBar->x() > width()/2 ||
1565 iconToolBar->y() > height()/2; 1565 iconToolBar->y() > height()/2;
1566 mView->writeSettings(); 1566 mView->writeSettings();
1567 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) 1567 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName()))
1568 save(); 1568 save();
1569} 1569}
1570void MainWindow::slotModifiedChanged( bool changed ) 1570void MainWindow::slotModifiedChanged( bool changed )
1571{ 1571{
1572 if ( mBlockAtStartup ) 1572 if ( mBlockAtStartup )
1573 return; 1573 return;
1574 1574
1575 int msec; 1575 int msec;
1576 // we store the changes after 1 minute, 1576 // we store the changes after 1 minute,
1577 // and for safety reasons after 10 minutes again 1577 // and for safety reasons after 10 minutes again
1578 if ( !mSyncManager->blockSave() ) 1578 if ( !mSyncManager->blockSave() )
1579 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1579 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1580 else 1580 else
1581 msec = 1000 * 600; 1581 msec = 1000 * 600;
1582 mSaveTimer.start( msec, true ); // 1 minute 1582 mSaveTimer.start( msec, true ); // 1 minute
1583 qDebug("KO: Saving File in %d secs!", msec/1000); 1583 qDebug("KO: Saving File in %d secs!", msec/1000);
1584 mCalendarModifiedFlag = true; 1584 mCalendarModifiedFlag = true;
1585} 1585}
1586void MainWindow::saveStopTimer() 1586void MainWindow::saveStopTimer()
1587{ 1587{
1588 mSaveTimer.stop(); 1588 mSaveTimer.stop();
1589 if (mSaveTimer.isActive() ) 1589 if (mSaveTimer.isActive() )
1590 qDebug("ti active "); 1590 qDebug("ti active ");
1591 else 1591 else
1592 qDebug("KO: Save timer stopped"); 1592 qDebug("KO: Save timer stopped");
1593} 1593}
1594void MainWindow::save() 1594void MainWindow::save()
1595{ 1595{
1596 if ( !mCalendarModifiedFlag ) { 1596 if ( !mCalendarModifiedFlag ) {
1597 qDebug("KO: Calendar not modified. Nothing saved."); 1597 qDebug("KO: Calendar not modified. Nothing saved.");
1598 return; 1598 return;
1599 } 1599 }
1600 if ( mSyncManager->blockSave() ) 1600 if ( mSyncManager->blockSave() )
1601 return; 1601 return;
1602 mSyncManager->setBlockSave(true); 1602 mSyncManager->setBlockSave(true);
1603 if ( mView->checkFileVersion( defaultFileName()) ) { 1603 if ( mView->checkFileVersion( defaultFileName()) ) {
1604 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1604 QTime neededSaveTime = QDateTime::currentDateTime().time();
1605 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1605 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1606 qDebug("KO: Start saving data to file!"); 1606 qDebug("KO: Start saving data to file!");
1607 mView->saveCalendar( defaultFileName() ); 1607 mView->saveCalendar( defaultFileName() );
1608 mCalendarModifiedFlag = false; 1608 mCalendarModifiedFlag = false;
1609 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1609 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1610 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1610 qDebug("KO: Needed %d ms for saving.",msNeeded );
1611 QString savemes; 1611 QString savemes;
1612 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1612 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1613 setCaption(savemes); 1613 setCaption(savemes);
1614 } else 1614 } else
1615 setCaption(i18n("Saving cancelled!")); 1615 setCaption(i18n("Saving cancelled!"));
1616 mSyncManager->setBlockSave( false ); 1616 mSyncManager->setBlockSave( false );
1617} 1617}
1618 1618
1619void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1619void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1620{ 1620{
1621 if ( !e->isAutoRepeat() ) { 1621 if ( !e->isAutoRepeat() ) {
1622 mFlagKeyPressed = false; 1622 mFlagKeyPressed = false;
1623 } 1623 }
1624} 1624}
1625void MainWindow::keyPressEvent ( QKeyEvent * e ) 1625void MainWindow::keyPressEvent ( QKeyEvent * e )
1626{ 1626{
1627 qApp->processEvents(); 1627 qApp->processEvents();
1628 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1628 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1629 e->ignore(); 1629 e->ignore();
1630 // qDebug(" ignore %d",e->isAutoRepeat() ); 1630 // qDebug(" ignore %d",e->isAutoRepeat() );
1631 return; 1631 return;
1632 } 1632 }
1633 if (! e->isAutoRepeat() ) 1633 if (! e->isAutoRepeat() )
1634 mFlagKeyPressed = true; 1634 mFlagKeyPressed = true;
1635 KOPrefs *p = KOPrefs::instance(); 1635 KOPrefs *p = KOPrefs::instance();
1636 bool showSelectedDates = false; 1636 bool showSelectedDates = false;
1637 int size; 1637 int size;
1638 int pro = 0; 1638 int pro = 0;
1639 //qDebug("MainWindow::keyPressEvent "); 1639 //qDebug("MainWindow::keyPressEvent ");
1640 switch ( e->key() ) { 1640 switch ( e->key() ) {
1641 case Qt::Key_Right: 1641 case Qt::Key_Right:
1642 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1642 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1643 mView->goNextMonth(); 1643 mView->goNextMonth();
1644 else 1644 else
1645 mView->goNext(); 1645 mView->goNext();
1646 showSelectedDates = true; 1646 showSelectedDates = true;
1647 break; 1647 break;
1648 case Qt::Key_Left: 1648 case Qt::Key_Left:
1649 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1649 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1650 mView->goPreviousMonth(); 1650 mView->goPreviousMonth();
1651 else 1651 else
1652 mView->goPrevious(); 1652 mView->goPrevious();
1653 showSelectedDates = true; 1653 showSelectedDates = true;
1654 break; 1654 break;
1655 case Qt::Key_Down: 1655 case Qt::Key_Down:
1656 mView->viewManager()->agendaView()->scrollOneHourDown(); 1656 mView->viewManager()->agendaView()->scrollOneHourDown();
1657 break; 1657 break;
1658 case Qt::Key_Up: 1658 case Qt::Key_Up:
1659 mView->viewManager()->agendaView()->scrollOneHourUp(); 1659 mView->viewManager()->agendaView()->scrollOneHourUp();
1660 break; 1660 break;
1661 case Qt::Key_K: 1661 case Qt::Key_K:
1662 mView->viewManager()->showMonthViewWeek(); 1662 mView->viewManager()->showMonthViewWeek();
1663 break; 1663 break;
1664 case Qt::Key_I: 1664 case Qt::Key_I:
1665 mView->showIncidence(); 1665 mView->showIncidence();
1666 break; 1666 break;
1667 case Qt::Key_Delete: 1667 case Qt::Key_Delete:
1668 case Qt::Key_Backspace: 1668 case Qt::Key_Backspace:
1669 mView->deleteIncidence(); 1669 mView->deleteIncidence();
1670 break; 1670 break;
1671 case Qt::Key_D: 1671 case Qt::Key_D:
1672 mView->viewManager()->showDayView(); 1672 mView->viewManager()->showDayView();
1673 showSelectedDates = true; 1673 showSelectedDates = true;
1674 break; 1674 break;
1675 case Qt::Key_O: 1675 case Qt::Key_O:
1676 mView->toggleFilerEnabled( ); 1676 mView->toggleFilerEnabled( );
1677 break; 1677 break;
1678 case Qt::Key_0: 1678 case Qt::Key_0:
1679 case Qt::Key_1: 1679 case Qt::Key_1:
1680 case Qt::Key_2: 1680 case Qt::Key_2:
1681 case Qt::Key_3: 1681 case Qt::Key_3:
1682 case Qt::Key_4: 1682 case Qt::Key_4:
1683 case Qt::Key_5: 1683 case Qt::Key_5:
1684 case Qt::Key_6: 1684 case Qt::Key_6:
1685 case Qt::Key_7: 1685 case Qt::Key_7:
1686 case Qt::Key_8: 1686 case Qt::Key_8:
1687 case Qt::Key_9: 1687 case Qt::Key_9:
1688 pro = e->key()-48; 1688 pro = e->key()-48;
1689 if ( pro == 0 ) 1689 if ( pro == 0 )
1690 pro = 10; 1690 pro = 10;
1691 if ( e->state() == Qt::ControlButton) 1691 if ( e->state() == Qt::ControlButton)
1692 pro += 10; 1692 pro += 10;
1693 break; 1693 break;
1694 case Qt::Key_M: 1694 case Qt::Key_M:
1695 mView->viewManager()->showMonthView(); 1695 mView->viewManager()->showMonthView();
1696 showSelectedDates = true; 1696 showSelectedDates = true;
1697 break; 1697 break;
1698 case Qt::Key_Insert: 1698 case Qt::Key_Insert:
1699 mView->newEvent(); 1699 mView->newEvent();
1700 break; 1700 break;
1701 case Qt::Key_S : 1701 case Qt::Key_S :
1702 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1702 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1703 mView->newSubTodo(); 1703 mView->newSubTodo();
1704 else 1704 else
1705 mView->dialogManager()->showSearchDialog(); 1705 mView->dialogManager()->showSearchDialog();
1706 break; 1706 break;
1707 case Qt::Key_Y : 1707 case Qt::Key_Y :
1708 case Qt::Key_Z : 1708 case Qt::Key_Z :
1709 mView->viewManager()->showWorkWeekView(); 1709 mView->viewManager()->showWorkWeekView();
1710 showSelectedDates = true; 1710 showSelectedDates = true;
1711 break; 1711 break;
1712 case Qt::Key_U : 1712 case Qt::Key_U :
1713 mView->viewManager()->showWeekView(); 1713 mView->viewManager()->showWeekView();
1714 showSelectedDates = true; 1714 showSelectedDates = true;
1715 break; 1715 break;
1716 case Qt::Key_H : 1716 case Qt::Key_H :
1717 keyBindings(); 1717 keyBindings();
1718 break; 1718 break;
1719 case Qt::Key_W: 1719 case Qt::Key_W:
1720 mView->viewManager()->showWhatsNextView(); 1720 mView->viewManager()->showWhatsNextView();
1721 break; 1721 break;
1722 case Qt::Key_L: 1722 case Qt::Key_L:
1723 mView->viewManager()->showListView(); 1723 mView->viewManager()->showListView();
1724 break; 1724 break;
1725 case Qt::Key_N: 1725 case Qt::Key_N:
1726 mView->viewManager()->showNextXView(); 1726 mView->viewManager()->showNextXView();
1727 showSelectedDates = true; 1727 showSelectedDates = true;
1728 break; 1728 break;
1729 case Qt::Key_V: 1729 case Qt::Key_V:
1730 mView->viewManager()->showTodoView(); 1730 mView->viewManager()->showTodoView();
1731 break; 1731 break;
1732 case Qt::Key_C: 1732 case Qt::Key_C:
1733 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 1733 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
1734 break; 1734 break;
1735 case Qt::Key_P: 1735 case Qt::Key_P:
1736 mView->showDatePicker( ); 1736 mView->showDatePicker( );
1737 break; 1737 break;
1738 case Qt::Key_F: 1738 case Qt::Key_F:
1739 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1739 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1740 mView->editFilters(); 1740 mView->editFilters();
1741 else 1741 else
1742 mView->toggleFilter(); 1742 mView->toggleFilter();
1743 break; 1743 break;
1744 case Qt::Key_X: 1744 case Qt::Key_X:
1745 mView->toggleDateNavigatorWidget(); 1745 mView->toggleDateNavigatorWidget();
1746 break; 1746 break;
1747 case Qt::Key_Space: 1747 case Qt::Key_Space:
1748 mView->toggleExpand(); 1748 mView->toggleExpand();
1749 break; 1749 break;
1750 case Qt::Key_A: 1750 case Qt::Key_A:
1751 mView->toggleAllDaySize(); 1751 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton )
1752 mView->showNextAlarms();
1753 else
1754 mView->toggleAllDaySize();
1752 break; 1755 break;
1753 case Qt::Key_T: 1756 case Qt::Key_T:
1754 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1757 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1755 mView->newTodo(); 1758 mView->newTodo();
1756 else { 1759 else {
1757 mView->goToday(); 1760 mView->goToday();
1758 showSelectedDates = true; 1761 showSelectedDates = true;
1759 } 1762 }
1760 break; 1763 break;
1761 case Qt::Key_J: 1764 case Qt::Key_J:
1762 mView->viewManager()->showJournalView(); 1765 mView->viewManager()->showJournalView();
1763 break; 1766 break;
1764 case Qt::Key_B: 1767 case Qt::Key_B:
1765 mView->editIncidenceDescription();; 1768 mView->editIncidenceDescription();;
1766 break; 1769 break;
1767 // case Qt::Key_Return: 1770 // case Qt::Key_Return:
1768 case Qt::Key_E: 1771 case Qt::Key_E:
1769 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1772 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1770 mView->newEvent(); 1773 mView->newEvent();
1771 else 1774 else
1772 mView->editIncidence(); 1775 mView->editIncidence();
1773 break; 1776 break;
1774 case Qt::Key_Plus: 1777 case Qt::Key_Plus:
1775 size = p->mHourSize +2; 1778 size = p->mHourSize +2;
1776 if ( size <= 22 ) 1779 if ( size <= 22 )
1777 configureAgenda( size ); 1780 configureAgenda( size );
1778 break; 1781 break;
1779 case Qt::Key_Minus: 1782 case Qt::Key_Minus:
1780 size = p->mHourSize - 2; 1783 size = p->mHourSize - 2;
1781 if ( size >= 4 ) 1784 if ( size >= 4 )
1782 configureAgenda( size ); 1785 configureAgenda( size );
1783 break; 1786 break;
1784 1787
1785 1788
1786 default: 1789 default:
1787 e->ignore(); 1790 e->ignore();
1788 } 1791 }
1789 if ( pro > 0 ) { 1792 if ( pro > 0 ) {
1790 mView->selectFilter( pro-1 ); 1793 mView->selectFilter( pro-1 );
1791 } 1794 }
1792 if ( showSelectedDates ) { 1795 if ( showSelectedDates ) {
1793 ;// setCaptionToDates(); 1796 ;// setCaptionToDates();
1794 } 1797 }
1795 1798
1796} 1799}
1797 1800
1798void MainWindow::fillFilterMenu() 1801void MainWindow::fillFilterMenu()
1799{ 1802{
1800 selectFilterMenu->clear(); 1803 selectFilterMenu->clear();
1801 bool disable = false; 1804 bool disable = false;
1802 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); 1805 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
1803 selectFilterMenu->insertSeparator(); 1806 selectFilterMenu->insertSeparator();
1804 if ( mView->filterView()->filtersEnabled() ) { 1807 if ( mView->filterView()->filtersEnabled() ) {
1805 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 ); 1808 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 );
1806 } 1809 }
1807 else { 1810 else {
1808 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 ); 1811 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 );
1809 disable = true; 1812 disable = true;
1810 } 1813 }
1811 selectFilterMenu->insertSeparator(); 1814 selectFilterMenu->insertSeparator();
1812 QPtrList<CalFilter> fili = mView->filters(); 1815 QPtrList<CalFilter> fili = mView->filters();
1813 CalFilter *curfilter = mView->filterView()->selectedFilter(); 1816 CalFilter *curfilter = mView->filterView()->selectedFilter();
1814 CalFilter *filter = fili.first(); 1817 CalFilter *filter = fili.first();
1815 int iii = 2; 1818 int iii = 2;
1816 while(filter) { 1819 while(filter) {
1817 selectFilterMenu->insertItem( filter->name(), iii ); 1820 selectFilterMenu->insertItem( filter->name(), iii );
1818 if ( filter == curfilter) 1821 if ( filter == curfilter)
1819 selectFilterMenu->setItemChecked( iii, true ); 1822 selectFilterMenu->setItemChecked( iii, true );
1820 if ( disable ) 1823 if ( disable )
1821 selectFilterMenu->setItemEnabled( iii, false ); 1824 selectFilterMenu->setItemEnabled( iii, false );
1822 filter = fili.next(); 1825 filter = fili.next();
1823 ++iii; 1826 ++iii;
1824 } 1827 }
1825} 1828}
1826void MainWindow::selectFilter( int fil ) 1829void MainWindow::selectFilter( int fil )
1827{ 1830{
1828 if ( fil == 0 ) { 1831 if ( fil == 0 ) {
1829 mView->editFilters( ); 1832 mView->editFilters( );
1830 } else if ( fil == 1 ){ 1833 } else if ( fil == 1 ){
1831 mView->toggleFilerEnabled( ); 1834 mView->toggleFilerEnabled( );
1832 } else { 1835 } else {
1833 mView->selectFilter( fil-2 ); 1836 mView->selectFilter( fil-2 );
1834 } 1837 }
1835} 1838}
1836void MainWindow::configureToolBar( int item ) 1839void MainWindow::configureToolBar( int item )
1837{ 1840{
1838 1841
1839 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); 1842 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
1840 KOPrefs *p = KOPrefs::instance(); 1843 KOPrefs *p = KOPrefs::instance();
1841 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); 1844 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
1842 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); 1845 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
1843 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); 1846 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
1844 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); 1847 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
1845 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); 1848 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
1846 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); 1849 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
1847 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); 1850 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
1848 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 ); 1851 p-> mShowIconDay6= configureToolBarMenu->isItemChecked( 75 );
1849 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); 1852 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
1850 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); 1853 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
1851 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); 1854 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
1852 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); 1855 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
1853 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); 1856 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
1854 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); 1857 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
1855 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); 1858 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
1856 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); 1859 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
1857 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); 1860 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
1858 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); 1861 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
1859 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); 1862 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );
1860 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); 1863 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 );
1861 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 ); 1864 p-> mShowIconWeekNum= configureToolBarMenu->isItemChecked( 400 );
1862 // initActions(); 1865 // initActions();
1863} 1866}
1864void MainWindow::setCaption ( const QString & c ) 1867void MainWindow::setCaption ( const QString & c )
1865{ 1868{
1866 QString cap = c; 1869 QString cap = c;
1867 cap.replace( QRegExp("\n"), " " ); 1870 cap.replace( QRegExp("\n"), " " );
1868 cap = cap.stripWhiteSpace(); 1871 cap = cap.stripWhiteSpace();
1869 if ( cap.isEmpty() ) 1872 if ( cap.isEmpty() )
1870 cap = "KO/Pi"; 1873 cap = "KO/Pi";
1871 QWidget::setCaption( cap ); 1874 QWidget::setCaption( cap );
1872} 1875}
1873void MainWindow::setCaptionToDates() 1876void MainWindow::setCaptionToDates()
1874{ 1877{
1875 QString selDates; 1878 QString selDates;
1876 QDate date = mView->startDate(); 1879 QDate date = mView->startDate();
1877 if ( ! date.isValid() ) { 1880 if ( ! date.isValid() ) {
1878 setCaption(""); 1881 setCaption("");
1879 return; 1882 return;
1880 } 1883 }
1881 selDates = KGlobal::locale()->formatDate( date, true); 1884 selDates = KGlobal::locale()->formatDate( date, true);
1882 if (mView->startDate() < mView->endDate() ) 1885 if (mView->startDate() < mView->endDate() )
1883 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true); 1886 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true);
1884 else { 1887 else {
1885 QString addString; 1888 QString addString;
1886 if ( date == QDateTime::currentDateTime().date() ) 1889 if ( date == QDateTime::currentDateTime().date() )
1887 addString = i18n("Today"); 1890 addString = i18n("Today");
1888 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 1891 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
1889 addString = i18n("Tomorrow"); 1892 addString = i18n("Tomorrow");
1890 if ( !addString.isEmpty() ) 1893 if ( !addString.isEmpty() )
1891 selDates = addString+", "+selDates ; 1894 selDates = addString+", "+selDates ;
1892 } 1895 }
1893 setCaption( i18n("Dates: ") + selDates ); 1896 setCaption( i18n("Dates: ") + selDates );
1894 1897
1895} 1898}
1896void MainWindow::showConfigureAgenda( ) 1899void MainWindow::showConfigureAgenda( )
1897{ 1900{
1898 int iii; 1901 int iii;
1899 for ( iii = 1;iii<= 10 ;++iii ){ 1902 for ( iii = 1;iii<= 10 ;++iii ){
1900 configureAgendaMenu->setItemChecked( (iii+1)*2, false ); 1903 configureAgendaMenu->setItemChecked( (iii+1)*2, false );
1901 } 1904 }
1902 configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true ); 1905 configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true );
1903} 1906}
1904void MainWindow::configureAgenda( int item ) 1907void MainWindow::configureAgenda( int item )
1905{ 1908{
1906 if ( KOPrefs::instance()->mHourSize == item ) 1909 if ( KOPrefs::instance()->mHourSize == item )
1907 return; 1910 return;
1908 KOPrefs::instance()->mHourSize=item; 1911 KOPrefs::instance()->mHourSize=item;
1909 mView->viewManager()->agendaView()->updateConfig(); 1912 mView->viewManager()->agendaView()->updateConfig();
1910} 1913}
1911 1914
1912void MainWindow::saveCalendar() 1915void MainWindow::saveCalendar()
1913{ 1916{
1914 QString fn = KOPrefs::instance()->mLastSaveFile; 1917 QString fn = KOPrefs::instance()->mLastSaveFile;
1915 fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this ); 1918 fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this );
1916 1919
1917 if ( fn == "" ) 1920 if ( fn == "" )
1918 return; 1921 return;
1919 QFileInfo info; 1922 QFileInfo info;
1920 info.setFile( fn ); 1923 info.setFile( fn );
1921 QString mes; 1924 QString mes;
1922 bool createbup = true; 1925 bool createbup = true;
1923 if ( info. exists() ) { 1926 if ( info. exists() ) {
1924 mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ; 1927 mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ;
1925 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 1928 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
1926 i18n("Overwrite!"), i18n("Cancel"), 0, 1929 i18n("Overwrite!"), i18n("Cancel"), 0,
1927 0, 1 ); 1930 0, 1 );
1928 if ( result != 0 ) { 1931 if ( result != 0 ) {
1929 createbup = false; 1932 createbup = false;
1930 } 1933 }
1931 } 1934 }
1932 if ( createbup ) { 1935 if ( createbup ) {
1933 mView->saveCalendar( fn ); 1936 mView->saveCalendar( fn );
1934 mes = i18n("KO/Pi:Saved %1").arg(fn); 1937 mes = i18n("KO/Pi:Saved %1").arg(fn);
1935 KOPrefs::instance()->mLastSaveFile = fn; 1938 KOPrefs::instance()->mLastSaveFile = fn;
1936 setCaption(mes); 1939 setCaption(mes);
1937 } 1940 }
1938} 1941}
1939void MainWindow::loadCalendar() 1942void MainWindow::loadCalendar()
1940{ 1943{
1941 1944
1942 QString fn = KOPrefs::instance()->mLastLoadFile; 1945 QString fn = KOPrefs::instance()->mLastLoadFile;
1943 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); 1946 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this );
1944 1947
1945 if ( fn == "" ) 1948 if ( fn == "" )
1946 return; 1949 return;
1947 QFileInfo info; 1950 QFileInfo info;
1948 info.setFile( fn ); 1951 info.setFile( fn );
1949 QString mess; 1952 QString mess;
1950 bool loadbup = true; 1953 bool loadbup = true;
1951 if ( info. exists() ) { 1954 if ( info. exists() ) {
1952 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 1955 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
1953 int result = QMessageBox::warning( this, "KO/Pi: Warning!", 1956 int result = QMessageBox::warning( this, "KO/Pi: Warning!",
1954 mess, 1957 mess,
1955 i18n("Load!"), i18n("Cancel"), 0, 1958 i18n("Load!"), i18n("Cancel"), 0,
1956 0, 1 ); 1959 0, 1 );
1957 if ( result != 0 ) { 1960 if ( result != 0 ) {
1958 loadbup = false; 1961 loadbup = false;
1959 } 1962 }
1960 } else { 1963 } else {
1961 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1964 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1962 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, 1965 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0,
1963 0, 1 ); 1966 0, 1 );
1964 1967
1965 return; 1968 return;
1966 } 1969 }
1967 if ( loadbup ) { 1970 if ( loadbup ) {
1968 mView->openCalendar( fn ); 1971 mView->openCalendar( fn );
1969 KOPrefs::instance()->mLastLoadFile = fn; 1972 KOPrefs::instance()->mLastLoadFile = fn;
1970 mess = i18n("KO/Pi:Loaded %1").arg(fn) ; 1973 mess = i18n("KO/Pi:Loaded %1").arg(fn) ;
1971 setCaption(mess); 1974 setCaption(mess);
1972 } 1975 }
1973 1976
1974} 1977}
1975void MainWindow::quickImportIcal() 1978void MainWindow::quickImportIcal()
1976{ 1979{
1977 importFile( KOPrefs::instance()->mLastImportFile, false ); 1980 importFile( KOPrefs::instance()->mLastImportFile, false );
1978} 1981}
1979void MainWindow::importFile( QString fn, bool quick ) 1982void MainWindow::importFile( QString fn, bool quick )
1980{ 1983{
1981 QFileInfo info; 1984 QFileInfo info;
1982 info.setFile( fn ); 1985 info.setFile( fn );
1983 QString mess; 1986 QString mess;
1984 bool loadbup = true; 1987 bool loadbup = true;
1985 if ( !info. exists() ) { 1988 if ( !info. exists() ) {
1986 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30)); 1989 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30));
1987 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1990 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1988 mess ); 1991 mess );
1989 return; 1992 return;
1990 } 1993 }
1991 int result = 0; 1994 int result = 0;
1992 if ( !quick ) { 1995 if ( !quick ) {
1993 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 1996 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
1994 result = QMessageBox::warning( this, "KO/Pi: Warning!", 1997 result = QMessageBox::warning( this, "KO/Pi: Warning!",
1995 mess, 1998 mess,
1996 "Import", "Cancel", 0, 1999 "Import", "Cancel", 0,
1997 0, 1 ); 2000 0, 1 );
1998 } 2001 }
1999 if ( result == 0 ) { 2002 if ( result == 0 ) {
2000 if ( mView->openCalendar( fn, true )) { 2003 if ( mView->openCalendar( fn, true )) {
2001 KOPrefs::instance()->mLastImportFile = fn; 2004 KOPrefs::instance()->mLastImportFile = fn;
2002 setCaption(i18n("Imported file successfully")); 2005 setCaption(i18n("Imported file successfully"));
2003 } else { 2006 } else {
2004 setCaption(i18n("Error importing file")); 2007 setCaption(i18n("Error importing file"));
2005 } 2008 }
2006 } 2009 }
2007} 2010}
2008 2011
2009void MainWindow::importIcal() 2012void MainWindow::importIcal()
2010{ 2013{
2011 2014
2012 QString fn =KOPrefs::instance()->mLastImportFile; 2015 QString fn =KOPrefs::instance()->mLastImportFile;
2013 2016
2014 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this ); 2017 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this );
2015 if ( fn == "" ) 2018 if ( fn == "" )
2016 return; 2019 return;
2017 importFile( fn, true ); 2020 importFile( fn, true );
2018 2021
2019} 2022}
2020 2023
2021void MainWindow::exportVCalendar() 2024void MainWindow::exportVCalendar()
2022{ 2025{
2023 QString fn = KOPrefs::instance()->mLastVcalFile; 2026 QString fn = KOPrefs::instance()->mLastVcalFile;
2024 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); 2027 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this );
2025 if ( fn == "" ) 2028 if ( fn == "" )
2026 return; 2029 return;
2027 QFileInfo info; 2030 QFileInfo info;
2028 info.setFile( fn ); 2031 info.setFile( fn );
2029 QString mes; 2032 QString mes;
2030 bool createbup = true; 2033 bool createbup = true;
2031 if ( info. exists() ) { 2034 if ( info. exists() ) {
2032 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 2035 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
2033 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 2036 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
2034 i18n("Overwrite!"), i18n("Cancel"), 0, 2037 i18n("Overwrite!"), i18n("Cancel"), 0,
2035 0, 1 ); 2038 0, 1 );
2036 if ( result != 0 ) { 2039 if ( result != 0 ) {
2037 createbup = false; 2040 createbup = false;
2038 } 2041 }
2039 } 2042 }
2040 if ( createbup ) { 2043 if ( createbup ) {
2041 if ( mView->exportVCalendar( fn ) ) { 2044 if ( mView->exportVCalendar( fn ) ) {
2042 KOPrefs::instance()->mLastVcalFile = fn; 2045 KOPrefs::instance()->mLastVcalFile = fn;
2043 if ( fn.length() > 20 ) 2046 if ( fn.length() > 20 )
2044 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; 2047 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ;
2045 else 2048 else
2046 mes = i18n("KO/Pi:Exported to %1").arg(fn ); 2049 mes = i18n("KO/Pi:Exported to %1").arg(fn );
2047 setCaption(mes); 2050 setCaption(mes);
2048 } 2051 }
2049 } 2052 }
2050 2053
2051} 2054}
2052QString MainWindow::sentSyncFile() 2055QString MainWindow::sentSyncFile()
2053{ 2056{
2054#ifdef DESKTOP_VERSION 2057#ifdef DESKTOP_VERSION
2055 return locateLocal( "tmp", "copysynccal.ics" ); 2058 return locateLocal( "tmp", "copysynccal.ics" );
2056#else 2059#else
2057 return QString( "/tmp/copysynccal.ics" ); 2060 return QString( "/tmp/copysynccal.ics" );
2058#endif 2061#endif
2059} 2062}
2060 2063
2061void MainWindow::syncFileRequest() 2064void MainWindow::syncFileRequest()
2062{ 2065{
2063 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2066 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2064 mSyncManager->slotSyncMenu( 999 ); 2067 mSyncManager->slotSyncMenu( 999 );
2065 } 2068 }
2066 2069
2067 setCaption(i18n("Saving Data to temp file ..." )); 2070 setCaption(i18n("Saving Data to temp file ..." ));
2068 mView->saveCalendar( sentSyncFile() ); 2071 mView->saveCalendar( sentSyncFile() );
2069 setCaption(i18n("Data saved to temp file!" )); 2072 setCaption(i18n("Data saved to temp file!" ));
2070 2073
2071} 2074}
2072void MainWindow::getFile( bool success ) 2075void MainWindow::getFile( bool success )
2073{ 2076{
2074 if ( ! success ) { 2077 if ( ! success ) {
2075 setCaption( i18n("Error receiving file. Nothing changed!") ); 2078 setCaption( i18n("Error receiving file. Nothing changed!") );
2076 return; 2079 return;
2077 } 2080 }
2078 mView->openCalendar( sentSyncFile() ); 2081 mView->openCalendar( sentSyncFile() );
2079 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) { 2082 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
2080 mSyncManager->slotSyncMenu( 999 ); 2083 mSyncManager->slotSyncMenu( 999 );
2081 } 2084 }
2082 setCaption( i18n("Pi-Sync successful!") ); 2085 setCaption( i18n("Pi-Sync successful!") );
2083} 2086}
2084 2087
2085void MainWindow::printSel( ) 2088void MainWindow::printSel( )
2086{ 2089{
2087 mView->viewManager()->agendaView()->agenda()->printSelection(); 2090 mView->viewManager()->agendaView()->agenda()->printSelection();
2088} 2091}
2089 2092
2090void MainWindow::printCal() 2093void MainWindow::printCal()
2091{ 2094{
2092 mView->print();//mCp->showDialog(); 2095 mView->print();//mCp->showDialog();
2093} 2096}
2094 2097
2095 2098
2096#include "libkdepim/kdatepicker.h" 2099#include "libkdepim/kdatepicker.h"
2097#include <kdatetbl.h> 2100#include <kdatetbl.h>
2098void MainWindow::weekAction() 2101void MainWindow::weekAction()
2099{ 2102{
2100 int month; 2103 int month;
2101 KPopupFrame* popup = new KPopupFrame(this); 2104 KPopupFrame* popup = new KPopupFrame(this);
2102 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup); 2105 KDateInternalWeekPicker* picker = new KDateInternalWeekPicker(popup);
2103 // ----- 2106 // -----
2104 picker->resize(picker->sizeHint()); 2107 picker->resize(picker->sizeHint());
2105 popup->setMainWidget(picker); 2108 popup->setMainWidget(picker);
2106 picker->setFocus(); 2109 picker->setFocus();
2107 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); 2110 connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int)));
2108 int x = 0; 2111 int x = 0;
2109 int y = iconToolBar->height(); 2112 int y = iconToolBar->height();
2110 int dX = 0; 2113 int dX = 0;
2111 int dY = 0; 2114 int dY = 0;
2112 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 2115 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
2113 if ( iconToolBar->y() > height()/2 ) { 2116 if ( iconToolBar->y() > height()/2 ) {
2114 dY = picker->sizeHint().height()+8; 2117 dY = picker->sizeHint().height()+8;
2115 y = 0; 2118 y = 0;
2116 } 2119 }
2117 } else { 2120 } else {
2118 if ( iconToolBar->x() > width()/2 ) { // right side 2121 if ( iconToolBar->x() > width()/2 ) { // right side
2119 x=0; 2122 x=0;
2120 dX= picker->sizeHint().width()+8; 2123 dX= picker->sizeHint().width()+8;
2121 y = 0; 2124 y = 0;
2122 } else { 2125 } else {
2123 x= iconToolBar->width(); 2126 x= iconToolBar->width();
2124 y = 0; 2127 y = 0;
2125 } 2128 }
2126 } 2129 }
2127 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() ); 2130 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() );
2128 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY)))) 2131 if(popup->exec(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY))))
2129 { 2132 {
2130 month = picker->getResult(); 2133 month = picker->getResult();
2131 emit selectWeek ( month ); 2134 emit selectWeek ( month );
2132 //qDebug("weekSelected %d ", month); 2135 //qDebug("weekSelected %d ", month);
2133 } 2136 }
2134 delete popup; 2137 delete popup;
2135} 2138}
2139
2140void MainWindow::hideEvent ( QHideEvent * )
2141{
2142 QString message;
2143 QDateTime nextA = mCalendar->nextAlarmEventDateTime();
2144 if ( nextA.isValid() ) {
2145 QString sum = mCalendar->nextSummary();
2146
2147 message = i18n("%1 %2 - %3 (next event/todo with alarm)").arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDate(nextA.date() , false));
2148 setCaption( message );
2149 }
2150}
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index 7604529..b3041dc 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -1,160 +1,161 @@
1#ifndef KORGE_MAINWINDOW_H 1#ifndef KORGE_MAINWINDOW_H
2#define KORGE_MAINWINDOW_H 2#define KORGE_MAINWINDOW_H
3 3
4#include <qmainwindow.h> 4#include <qmainwindow.h>
5#include <qtimer.h> 5#include <qtimer.h>
6#include <qdict.h> 6#include <qdict.h>
7#include <qfile.h> 7#include <qfile.h>
8#include <qmenubar.h> 8#include <qmenubar.h>
9#include <qtextstream.h> 9#include <qtextstream.h>
10#include <qregexp.h> 10#include <qregexp.h>
11 11
12#include <libkcal/incidence.h> 12#include <libkcal/incidence.h>
13#include "simplealarmclient.h" 13#include "simplealarmclient.h"
14#include <ksyncmanager.h> 14#include <ksyncmanager.h>
15#ifndef DESKTOP_VERSION 15#ifndef DESKTOP_VERSION
16#include <qcopchannel_qws.h> 16#include <qcopchannel_qws.h>
17#endif 17#endif
18class QAction; 18class QAction;
19class CalendarView; 19class CalendarView;
20class KSyncProfile; 20class KSyncProfile;
21#ifdef DESKTOP_VERSION 21#ifdef DESKTOP_VERSION
22 22
23#define QPEToolBar QToolBar 23#define QPEToolBar QToolBar
24#define QPEMenuBar QMenuBar 24#define QPEMenuBar QMenuBar
25#endif 25#endif
26class QPEToolBar; 26class QPEToolBar;
27 27
28 28
29namespace KCal { 29namespace KCal {
30class CalendarLocal; 30class CalendarLocal;
31} 31}
32 32
33class KOMenuBar : public QMenuBar 33class KOMenuBar : public QMenuBar
34{ 34{
35 public: 35 public:
36 KOMenuBar( QWidget *parent=0 ): QMenuBar (parent ) {;} 36 KOMenuBar( QWidget *parent=0 ): QMenuBar (parent ) {;}
37 QSize sizeHint () const{ qDebug("sizejint ");return QSize ( 40,25 );} 37 QSize sizeHint () const{ qDebug("sizejint ");return QSize ( 40,25 );}
38}; 38};
39 39
40using namespace KCal; 40using namespace KCal;
41 41
42class MainWindow : public QMainWindow 42class MainWindow : public QMainWindow
43{ 43{
44 Q_OBJECT 44 Q_OBJECT
45 public: 45 public:
46 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = ""); 46 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = "");
47 ~MainWindow(); 47 ~MainWindow();
48 bool beamReceiveEnabled(); 48 bool beamReceiveEnabled();
49 static QString defaultFileName(); 49 static QString defaultFileName();
50 static QString syncFileName(); 50 static QString syncFileName();
51 static QString resourcePath(); 51 static QString resourcePath();
52 public slots: 52 public slots:
53 void setCaption ( const QString & ); 53 void setCaption ( const QString & );
54 void updateWeekNum(const KCal::DateList &); 54 void updateWeekNum(const KCal::DateList &);
55 void updateWeek(QDate); 55 void updateWeek(QDate);
56 virtual void showMaximized (); 56 virtual void showMaximized ();
57 void configureAgenda( int ); 57 void configureAgenda( int );
58 void recieve( const QCString& msg, const QByteArray& data ); 58 void recieve( const QCString& msg, const QByteArray& data );
59 protected slots: 59 protected slots:
60 void setCaptionToDates(); 60 void setCaptionToDates();
61 void weekAction(); 61 void weekAction();
62 void about(); 62 void about();
63 void licence(); 63 void licence();
64 void faq(); 64 void faq();
65 void usertrans(); 65 void usertrans();
66 void features(); 66 void features();
67 void synchowto(); 67 void synchowto();
68 void kdesynchowto(); 68 void kdesynchowto();
69 void multisynchowto(); 69 void multisynchowto();
70 void whatsNew(); 70 void whatsNew();
71 void keyBindings(); 71 void keyBindings();
72 void aboutAutoSaving();; 72 void aboutAutoSaving();;
73 void aboutKnownBugs(); 73 void aboutKnownBugs();
74 74
75 void processIncidenceSelection( Incidence * ); 75 void processIncidenceSelection( Incidence * );
76 76
77 void importQtopia(); 77 void importQtopia();
78 void importBday(); 78 void importBday();
79 void importOL(); 79 void importOL();
80 void importIcal(); 80 void importIcal();
81 void importFile( QString, bool ); 81 void importFile( QString, bool );
82 void quickImportIcal(); 82 void quickImportIcal();
83 83
84 void slotModifiedChanged( bool ); 84 void slotModifiedChanged( bool );
85 85
86 void save(); 86 void save();
87 void saveStopTimer(); 87 void saveStopTimer();
88 void configureToolBar( int ); 88 void configureToolBar( int );
89 void printSel(); 89 void printSel();
90 void printCal(); 90 void printCal();
91 void saveCalendar(); 91 void saveCalendar();
92 void loadCalendar(); 92 void loadCalendar();
93 void exportVCalendar(); 93 void exportVCalendar();
94 void fillFilterMenu(); 94 void fillFilterMenu();
95 void selectFilter( int ); 95 void selectFilter( int );
96 void exportToPhone( int ); 96 void exportToPhone( int );
97 void toggleBeamReceive(); 97 void toggleBeamReceive();
98 void disableBR(bool); 98 void disableBR(bool);
99 signals: 99 signals:
100 void selectWeek ( int ); 100 void selectWeek ( int );
101 private slots: 101 private slots:
102 void showConfigureAgenda(); 102 void showConfigureAgenda();
103 void getFile( bool ); 103 void getFile( bool );
104 void syncFileRequest(); 104 void syncFileRequest();
105 105
106 protected: 106 protected:
107 void hideEvent ( QHideEvent * );
107 QString sentSyncFile(); 108 QString sentSyncFile();
108 void displayText( QString, QString); 109 void displayText( QString, QString);
109 void enableIncidenceActions( bool ); 110 void enableIncidenceActions( bool );
110 111
111 private: 112 private:
112 bool mBRdisabled; 113 bool mBRdisabled;
113#ifndef DESKTOP_VERSION 114#ifndef DESKTOP_VERSION
114 QCopChannel* infrared; 115 QCopChannel* infrared;
115#endif 116#endif
116 QAction* brAction; 117 QAction* brAction;
117 KSyncManager* mSyncManager; 118 KSyncManager* mSyncManager;
118 bool mClosed; 119 bool mClosed;
119 void saveOnClose(); 120 void saveOnClose();
120 bool mFlagKeyPressed; 121 bool mFlagKeyPressed;
121 bool mBlockAtStartup; 122 bool mBlockAtStartup;
122 QPEToolBar *iconToolBar; 123 QPEToolBar *iconToolBar;
123 void initActions(); 124 void initActions();
124 void setDefaultPreferences(); 125 void setDefaultPreferences();
125 void keyPressEvent ( QKeyEvent * ) ; 126 void keyPressEvent ( QKeyEvent * ) ;
126 void keyReleaseEvent ( QKeyEvent * ) ; 127 void keyReleaseEvent ( QKeyEvent * ) ;
127 QPopupMenu *configureToolBarMenu; 128 QPopupMenu *configureToolBarMenu;
128 QPopupMenu *selectFilterMenu; 129 QPopupMenu *selectFilterMenu;
129 QPopupMenu *configureAgendaMenu, *syncMenu; 130 QPopupMenu *configureAgendaMenu, *syncMenu;
130 CalendarLocal *mCalendar; 131 CalendarLocal *mCalendar;
131 CalendarView *mView; 132 CalendarView *mView;
132 QAction *mNewSubTodoAction; 133 QAction *mNewSubTodoAction;
133 QAction *mWeekAction; 134 QAction *mWeekAction;
134 QFont mWeekFont; 135 QFont mWeekFont;
135 QPixmap mWeekPixmap; 136 QPixmap mWeekPixmap;
136 QColor mWeekBgColor; 137 QColor mWeekBgColor;
137 138
138 QAction *mShowAction; 139 QAction *mShowAction;
139 QAction *mEditAction; 140 QAction *mEditAction;
140 QAction *mDeleteAction; 141 QAction *mDeleteAction;
141 QAction *mCloneAction; 142 QAction *mCloneAction;
142 QAction *mMoveAction; 143 QAction *mMoveAction;
143 QAction *mBeamAction; 144 QAction *mBeamAction;
144 QAction *mCancelAction; 145 QAction *mCancelAction;
145 146
146 QAction *mToggleNav; 147 QAction *mToggleNav;
147 QAction *mToggleFilter; 148 QAction *mToggleFilter;
148 QAction *mToggleAllday; 149 QAction *mToggleAllday;
149 150
150 151
151 void closeEvent( QCloseEvent* ce ); 152 void closeEvent( QCloseEvent* ce );
152 SimpleAlarmClient mAlarmClient; 153 SimpleAlarmClient mAlarmClient;
153 QTimer mSaveTimer; 154 QTimer mSaveTimer;
154 //bool mBlockSaveFlag; 155 //bool mBlockSaveFlag;
155 bool mCalendarModifiedFlag; 156 bool mCalendarModifiedFlag;
156 QPixmap loadPixmap( QString ); 157 QPixmap loadPixmap( QString );
157}; 158};
158 159
159 160
160#endif 161#endif