-rw-r--r-- | bin/kdepim/WhatsNew.txt | 6 | ||||
-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 4 | ||||
-rw-r--r-- | desktop/rpm/kdepim_rpm | 2 | ||||
-rw-r--r-- | korganizer/kolistview.cpp | 82 | ||||
-rw-r--r-- | korganizer/kolistview.h | 3 | ||||
-rw-r--r-- | version | 2 |
6 files changed, 95 insertions, 4 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 6e3b886..719f120 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -1,92 +1,98 @@ | |||
1 | Info about the changes in new versions of KDE-Pim/Pi | 1 | Info about the changes in new versions of KDE-Pim/Pi |
2 | 2 | ||
3 | ********** VERSION 2.1.6 ************ | ||
4 | |||
5 | KO/Pi: | ||
6 | Added to the list view (the list view is used in search dialog as well) the possibility to print it. | ||
7 | Added to the list view the possibility to hide entries, if you do not want to print all entries of the list view. | ||
8 | |||
3 | ********** VERSION 2.1.5 ************ | 9 | ********** VERSION 2.1.5 ************ |
4 | 10 | ||
5 | This is the new stable version. | 11 | This is the new stable version. |
6 | Bugfix: | 12 | Bugfix: |
7 | Fixed a problem with agenda popup on the desktop in KO/Pi. | 13 | Fixed a problem with agenda popup on the desktop in KO/Pi. |
8 | Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization. | 14 | Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization. |
9 | Added config option to not display completed todos in agenda view. | 15 | Added config option to not display completed todos in agenda view. |
10 | Addressee view is now using the formatted name, if defined. | 16 | Addressee view is now using the formatted name, if defined. |
11 | That makes it possible to display "lastname, firstname" in that view now. | 17 | That makes it possible to display "lastname, firstname" in that view now. |
12 | To set the formatted name for all contacts, please use menu: | 18 | To set the formatted name for all contacts, please use menu: |
13 | Edit->Change->Set formatted name. | 19 | Edit->Change->Set formatted name. |
14 | Fixed the bug in KA/Pi that is was not possible to add images to a contact on Windows. | 20 | Fixed the bug in KA/Pi that is was not possible to add images to a contact on Windows. |
15 | 21 | ||
16 | ********** VERSION 2.1.4 ************ | 22 | ********** VERSION 2.1.4 ************ |
17 | 23 | ||
18 | Fixed two more bugs in the KA/Pi CSV import dialog: | 24 | Fixed two more bugs in the KA/Pi CSV import dialog: |
19 | Made it possible to read multi-line fields and import it to the "Note" field. | 25 | Made it possible to read multi-line fields and import it to the "Note" field. |
20 | Fixed a problem in mapping custom fields, whatever a custem field is... | 26 | Fixed a problem in mapping custom fields, whatever a custem field is... |
21 | 27 | ||
22 | ********** VERSION 2.1.3 ************ | 28 | ********** VERSION 2.1.3 ************ |
23 | 29 | ||
24 | Changed the menu structure of the alarm applet: | 30 | Changed the menu structure of the alarm applet: |
25 | Moved "Simulate" to " Play Beeps" submenu and re-added "Todo List". | 31 | Moved "Simulate" to " Play Beeps" submenu and re-added "Todo List". |
26 | 32 | ||
27 | Fixed several problems in the KA/Pi CSV import dialog: | 33 | Fixed several problems in the KA/Pi CSV import dialog: |
28 | Added "Category", made codec configureable and made it possible to map many fields to the "Note" field. | 34 | Added "Category", made codec configureable and made it possible to map many fields to the "Note" field. |
29 | 35 | ||
30 | 36 | ||
31 | ********** VERSION 2.1.2 ************ | 37 | ********** VERSION 2.1.2 ************ |
32 | 38 | ||
33 | Fixed a problem closing the alarm dialog on Zaurus with "OK" button. | 39 | Fixed a problem closing the alarm dialog on Zaurus with "OK" button. |
34 | 40 | ||
35 | Fixed a problem when importing data from Outlook with mutiple categories set. | 41 | Fixed a problem when importing data from Outlook with mutiple categories set. |
36 | 42 | ||
37 | Changed display of days in datenavigator: | 43 | Changed display of days in datenavigator: |
38 | Birthdays are now blue, not dark green. | 44 | Birthdays are now blue, not dark green. |
39 | When todo view is shown, no birtdays are shown and days with due todos are shown blue. | 45 | When todo view is shown, no birtdays are shown and days with due todos are shown blue. |
40 | When journal view is shown, only holidays are shown and days with journals are blue. | 46 | When journal view is shown, only holidays are shown and days with journals are blue. |
41 | 47 | ||
42 | Added Backup options to global config: | 48 | Added Backup options to global config: |
43 | You can create now x-daily backups for KO/Pi, KA/Pi (for file resources only, file resource is the standard type) and PwM/Pi ( all files you will open ). | 49 | You can create now x-daily backups for KO/Pi, KA/Pi (for file resources only, file resource is the standard type) and PwM/Pi ( all files you will open ). |
44 | It is recommended to use another HDD/Memory card for the backup directory. If (very useful on the Zaurus) the specified backup directory does not exist you are asked if you want to try again to create a backup. That makes it possible to insert your memory card in the Zaurus and then trying again. | 50 | It is recommended to use another HDD/Memory card for the backup directory. If (very useful on the Zaurus) the specified backup directory does not exist you are asked if you want to try again to create a backup. That makes it possible to insert your memory card in the Zaurus and then trying again. |
45 | The backup is created when the application wants to save for the first time on a backup-day. You can specify the amount of backups and the day interval of backups. | 51 | The backup is created when the application wants to save for the first time on a backup-day. You can specify the amount of backups and the day interval of backups. |
46 | 52 | ||
47 | ********** VERSION 2.1.1 ************ | 53 | ********** VERSION 2.1.1 ************ |
48 | 54 | ||
49 | Stable release 2.1.1! | 55 | Stable release 2.1.1! |
50 | 56 | ||
51 | KO/Pi: | 57 | KO/Pi: |
52 | Fixed one problem in the layout of the edit dialogs on the Zaurus with 640x480 display. | 58 | Fixed one problem in the layout of the edit dialogs on the Zaurus with 640x480 display. |
53 | 59 | ||
54 | ********** VERSION 2.1.0 ************ | 60 | ********** VERSION 2.1.0 ************ |
55 | 61 | ||
56 | Stable release 2.1.0! | 62 | Stable release 2.1.0! |
57 | 63 | ||
58 | Summary of changes/fixes compared to version 2.0.6: | 64 | Summary of changes/fixes compared to version 2.0.6: |
59 | 65 | ||
60 | Many bugs of version 2.0.6 fixed. | 66 | Many bugs of version 2.0.6 fixed. |
61 | Most of them were small bugs, but some of them were important. | 67 | Most of them were small bugs, but some of them were important. |
62 | It is recommended to use version 2.1.0 and not version 2.0.6. | 68 | It is recommended to use version 2.1.0 and not version 2.0.6. |
63 | 69 | ||
64 | Important changes: | 70 | Important changes: |
65 | 71 | ||
66 | Added recurring todos to KO/Pi. | 72 | Added recurring todos to KO/Pi. |
67 | 73 | ||
68 | Added global application font settings (for all KDE-Pim/Pi apps) to the general settings. | 74 | Added global application font settings (for all KDE-Pim/Pi apps) to the general settings. |
69 | 75 | ||
70 | Made Passwordmanager PwM/Pi more userfriendly: Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. | 76 | Made Passwordmanager PwM/Pi more userfriendly: Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. |
71 | 77 | ||
72 | Datenavigator can now display many months. Very useful on the desktop. | 78 | Datenavigator can now display many months. Very useful on the desktop. |
73 | 79 | ||
74 | KO/Pi alarm applet changed: Made buttons in alarm dialog much bigger and other usebility enhancements. | 80 | KO/Pi alarm applet changed: Made buttons in alarm dialog much bigger and other usebility enhancements. |
75 | 81 | ||
76 | Made alarm sound working on Linux desktop. | 82 | Made alarm sound working on Linux desktop. |
77 | 83 | ||
78 | Made KO/Pi and KA/Pi running from a memory stick. Please read storage HowTo for details. | 84 | Made KO/Pi and KA/Pi running from a memory stick. Please read storage HowTo for details. |
79 | 85 | ||
80 | Added timetracking feature in KO/Pi todo view. Please read timetraker HowTo for details. | 86 | Added timetracking feature in KO/Pi todo view. Please read timetraker HowTo for details. |
81 | 87 | ||
82 | Many other usebility enhancements. | 88 | Many other usebility enhancements. |
83 | Special thanks to Ben for his suggestions! | 89 | Special thanks to Ben for his suggestions! |
84 | 90 | ||
85 | You can find the complete changelog | 91 | You can find the complete changelog |
86 | from version 1.7.7 to 2.1.0 | 92 | from version 1.7.7 to 2.1.0 |
87 | in the source package or on | 93 | in the source package or on |
88 | 94 | ||
89 | http://www.pi-sync.net/html/changelog.html | 95 | http://www.pi-sync.net/html/changelog.html |
90 | 96 | ||
91 | 97 | ||
92 | 98 | ||
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index 5a27a10..8f28234 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt | |||
@@ -1119,263 +1119,263 @@ | |||
1119 | { "Landscape","Landschaft" }, | 1119 | { "Landscape","Landschaft" }, |
1120 | { "Print day","Drucke Tag" }, | 1120 | { "Print day","Drucke Tag" }, |
1121 | { "CalPrintDay_Base","CalPrintDay_Base" }, | 1121 | { "CalPrintDay_Base","CalPrintDay_Base" }, |
1122 | { "Date && Time Range","Datum && Zeitspanne" }, | 1122 | { "Date && Time Range","Datum && Zeitspanne" }, |
1123 | { "&End date:","&Enddatum:" }, | 1123 | { "&End date:","&Enddatum:" }, |
1124 | { "&Start date:","&Startdatum:" }, | 1124 | { "&Start date:","&Startdatum:" }, |
1125 | { "Start &time:","Startzeit:" }, | 1125 | { "Start &time:","Startzeit:" }, |
1126 | { "End ti&me:","Endzeit:" }, | 1126 | { "End ti&me:","Endzeit:" }, |
1127 | { "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" }, | 1127 | { "E&xtend time range to include all events","Erweitere Zeitspanne um alle Termine einzuschliessen" }, |
1128 | { "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, | 1128 | { "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, |
1129 | { "Alt+D","Alt+D" }, | 1129 | { "Alt+D","Alt+D" }, |
1130 | { "&Use colors","Nutze Farben" }, | 1130 | { "&Use colors","Nutze Farben" }, |
1131 | { "Alt+U","Alt+U" }, | 1131 | { "Alt+U","Alt+U" }, |
1132 | { "Print week","Drucke Woche" }, | 1132 | { "Print week","Drucke Woche" }, |
1133 | { "CalPrintWeek_Base","CalPrintWeek_Base" }, | 1133 | { "CalPrintWeek_Base","CalPrintWeek_Base" }, |
1134 | { "Use &colors","Nutze Farben" }, | 1134 | { "Use &colors","Nutze Farben" }, |
1135 | { "Type of View","Typ der Ansicht" }, | 1135 | { "Type of View","Typ der Ansicht" }, |
1136 | { "Print as &Filofax page","Drucke als &Filofax Seite" }, | 1136 | { "Print as &Filofax page","Drucke als &Filofax Seite" }, |
1137 | { "Alt+F","Alt+F" }, | 1137 | { "Alt+F","Alt+F" }, |
1138 | { "Print as &timetable view:","Drucke als Zeittabelle:" }, | 1138 | { "Print as &timetable view:","Drucke als Zeittabelle:" }, |
1139 | { "Alt+T","Alt+T" }, | 1139 | { "Alt+T","Alt+T" }, |
1140 | { "Print as split week view","Drucke als gesplittete Wochenansicht" }, | 1140 | { "Print as split week view","Drucke als gesplittete Wochenansicht" }, |
1141 | { "Print month","Drucke Monat" }, | 1141 | { "Print month","Drucke Monat" }, |
1142 | { "CalPrintMonth_Base","CalPrintMonth_Base" }, | 1142 | { "CalPrintMonth_Base","CalPrintMonth_Base" }, |
1143 | { "&Start month:","&Startmonat:" }, | 1143 | { "&Start month:","&Startmonat:" }, |
1144 | { "&End month:","&Endmonat:" }, | 1144 | { "&End month:","&Endmonat:" }, |
1145 | { "Print week &numbers","Drucke Wochen Nummer(n)" }, | 1145 | { "Print week &numbers","Drucke Wochen Nummer(n)" }, |
1146 | { "Print todos","Drucke Todos" }, | 1146 | { "Print todos","Drucke Todos" }, |
1147 | { "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, | 1147 | { "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, |
1148 | { "Include &description of the item","Inclusive Itembeschreibung" }, | 1148 | { "Include &description of the item","Inclusive Itembeschreibung" }, |
1149 | { "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" }, | 1149 | { "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" }, |
1150 | { "Include &priority of the item","Inclusive Priorität des Items" }, | 1150 | { "Include &priority of the item","Inclusive Priorität des Items" }, |
1151 | { "Items to Print","Zu druckende Items" }, | 1151 | { "Items to Print","Zu druckende Items" }, |
1152 | { "&From:","Von:" }, | 1152 | { "&From:","Von:" }, |
1153 | { "&To:","Bis:" }, | 1153 | { "&To:","Bis:" }, |
1154 | { "Print &all todo items","Drucke alle Todo Items" }, | 1154 | { "Print &all todo items","Drucke alle Todo Items" }, |
1155 | { "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, | 1155 | { "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, |
1156 | { "Only items due in the &range:","Nur Items in dem Zeitraum:" }, | 1156 | { "Only items due in the &range:","Nur Items in dem Zeitraum:" }, |
1157 | { "Todo List","Todo Liste" }, | 1157 | { "Todo List","Todo Liste" }, |
1158 | { "&Title:","&Titel:" }, | 1158 | { "&Title:","&Titel:" }, |
1159 | { "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" }, | 1159 | { "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" }, |
1160 | { "Todo list","Todo Liste" }, | 1160 | { "Todo list","Todo Liste" }, |
1161 | { "&Print...","Drucke..." }, | 1161 | { "&Print...","Drucke..." }, |
1162 | { "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, | 1162 | { "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, |
1163 | { "[Unconfigured]","[Unkonfiguriert]" }, | 1163 | { "[Unconfigured]","[Unkonfiguriert]" }, |
1164 | { "OK","OK" }, | 1164 | { "OK","OK" }, |
1165 | { "FilterEditor","FilterEditor" }, | 1165 | { "FilterEditor","FilterEditor" }, |
1166 | { "Include","Inclusive" }, | 1166 | { "Include","Inclusive" }, |
1167 | { "Exclude","Exclusive" }, | 1167 | { "Exclude","Exclusive" }, |
1168 | { "Edit Selection...","Editiere Auswahl" }, | 1168 | { "Edit Selection...","Editiere Auswahl" }, |
1169 | { "recurring events","wiederholende Termine" }, | 1169 | { "recurring events","wiederholende Termine" }, |
1170 | { "recurr. events","wiederh.Termine" }, | 1170 | { "recurr. events","wiederh.Termine" }, |
1171 | { "completed to-dos","erledigte Todos" }, | 1171 | { "completed to-dos","erledigte Todos" }, |
1172 | { "events","Termine" }, | 1172 | { "events","Termine" }, |
1173 | { "todos","Todos" }, | 1173 | { "todos","Todos" }, |
1174 | { "journals","Journale" }, | 1174 | { "journals","Journale" }, |
1175 | { "public","öffentl." }, | 1175 | { "public","öffentl." }, |
1176 | { "private","privat" }, | 1176 | { "private","privat" }, |
1177 | { "confidential","vertraul." }, | 1177 | { "confidential","vertraul." }, |
1178 | { "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gelöscht!" }, | 1178 | { "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gelöscht!" }, |
1179 | { "Yesterday","Gestern" }, | 1179 | { "Yesterday","Gestern" }, |
1180 | { "Day after tomorrow","Übermorgen" }, | 1180 | { "Day after tomorrow","Übermorgen" }, |
1181 | { "Tomorrow","Morgen" }, | 1181 | { "Tomorrow","Morgen" }, |
1182 | { "Day before yesterday","Vorgestern" }, | 1182 | { "Day before yesterday","Vorgestern" }, |
1183 | { "Size %1","Größe %1" }, | 1183 | { "Size %1","Größe %1" }, |
1184 | { "New Agendasize: %1","Neue Agendagröße: %1" }, | 1184 | { "New Agendasize: %1","Neue Agendagröße: %1" }, |
1185 | { " (%1 y.)"," (%1 J.)" }, | 1185 | { " (%1 y.)"," (%1 J.)" }, |
1186 | { "Allday:","Ganztägig:" }, | 1186 | { "Allday:","Ganztägig:" }, |
1187 | { "compl.todos","erled.Todos" }, | 1187 | { "compl.todos","erled.Todos" }, |
1188 | { "Day view","Tagesansicht" }, | 1188 | { "Day view","Tagesansicht" }, |
1189 | { "Next days","Nächste Tage" }, | 1189 | { "Next days","Nächste Tage" }, |
1190 | { "Next week","Nächste Woche" }, | 1190 | { "Next week","Nächste Woche" }, |
1191 | { "Next two weeks","Nächste zwei Wochen" }, | 1191 | { "Next two weeks","Nächste zwei Wochen" }, |
1192 | { "This month","Dieser Monat" }, | 1192 | { "This month","Dieser Monat" }, |
1193 | { "Journal view","Journal" }, | 1193 | { "Journal view","Journal" }, |
1194 | { "Display all opened","Zeige alle geöffnet" }, | 1194 | { "Display all opened","Zeige alle geöffnet" }, |
1195 | { "Display all closed","Zeige alle geschlossen" }, | 1195 | { "Display all closed","Zeige alle geschlossen" }, |
1196 | { "Display all flat","Zeige alle flach" }, | 1196 | { "Display all flat","Zeige alle flach" }, |
1197 | { "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" }, | 1197 | { "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" }, |
1198 | { "Default todo done color:","Standard Todo erledigt Farbe" }, | 1198 | { "Default todo done color:","Standard Todo erledigt Farbe" }, |
1199 | { "Select week %1-%2","Wähle Woche %1-%2" }, | 1199 | { "Select week %1-%2","Wähle Woche %1-%2" }, |
1200 | { "Select Week","Wähle Woche" }, | 1200 | { "Select Week","Wähle Woche" }, |
1201 | { "Set alarm for selected...","Setze Alarm für Selekt..." }, | 1201 | { "Set alarm for selected...","Setze Alarm für Selekt..." }, |
1202 | { "Set Alarm!","Setze Alarm!" }, | 1202 | { "Set Alarm!","Setze Alarm!" }, |
1203 | { "Changed alarm for %1 items","Alarm für %1 Items geändert" }, | 1203 | { "Changed alarm for %1 items","Alarm für %1 Items geändert" }, |
1204 | { " and "," und " }, | 1204 | { " and "," und " }, |
1205 | { "<IMG src="%1"> only )","nur <IMG src="%1"> )" }, | 1205 | { "<IMG src="%1"> only )","nur <IMG src="%1"> )" }, |
1206 | { "Mail to selected","Mail an Ausgewählte" }, | 1206 | { "Mail to selected","Mail an Ausgewählte" }, |
1207 | { "Mail to all","Mail an Alle" }, | 1207 | { "Mail to all","Mail an Alle" }, |
1208 | { "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" }, | 1208 | { "Week view mode uses bigger font","Wochenansicht Modus nutzt größeren Font" }, |
1209 | { "Set reminder ON with offset to:","Alarm AN mit Offset auf:" }, | 1209 | { "Set reminder ON with offset to:","Alarm AN mit Offset auf:" }, |
1210 | { " on"," am" }, | 1210 | { " on"," am" }, |
1211 | { " completed on "," erledigt am " }, | 1211 | { " completed on "," erledigt am " }, |
1212 | { "Save as Event template","Speichere als Vorlage" }, | 1212 | { "Save as Event template","Speichere als Vorlage" }, |
1213 | { "Load Event template","Lade Termin Vorlage" }, | 1213 | { "Load Event template","Lade Termin Vorlage" }, |
1214 | { "Save as Journal template","Speichere als Journal Vorlage" }, | 1214 | { "Save as Journal template","Speichere als Journal Vorlage" }, |
1215 | { "Insert Journal template","Füge Journal Vorlage ein" }, | 1215 | { "Insert Journal template","Füge Journal Vorlage ein" }, |
1216 | { "Sub todos:<br>","Unter Todos:<br>" }, | 1216 | { "Sub todos:<br>","Unter Todos:<br>" }, |
1217 | { "Parent todo:<br>","Über Todo:<br>" }, | 1217 | { "Parent todo:<br>","Über Todo:<br>" }, |
1218 | { "Set current as color category","Setze Gewählte als Farbkategorie" }, | 1218 | { "Set current as color category","Setze Gewählte als Farbkategorie" }, |
1219 | { " completed"," erledigt" }, | 1219 | { " completed"," erledigt" }, |
1220 | { "(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!" }, | 1220 | { "(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!" }, |
1221 | { "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, | 1221 | { "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." }, |
1222 | { "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, | 1222 | { "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." }, |
1223 | { "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, | 1223 | { "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." }, |
1224 | { "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?" }, | 1224 | { "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?" }, |
1225 | { "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, | 1225 | { "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." }, |
1226 | { "Error","Fehler" }, | 1226 | { "Error","Fehler" }, |
1227 | { ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, | 1227 | { ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." }, |
1228 | { "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, | 1228 | { "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." }, |
1229 | { "Warning","Warnung" }, | 1229 | { "Warning","Warnung" }, |
1230 | { "Select week number","Wähle Wochen Nummer" }, | 1230 | { "Select week number","Wähle Wochen Nummer" }, |
1231 | { "Februar","Februar" }, | 1231 | { "Februar","Februar" }, |
1232 | { "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" }, | 1232 | { "Click on the week number to\nshow week zoomed","Klicke auf die Wochennummer\num die Woche groß zu zeigen" }, |
1233 | { "W","W" }, | 1233 | { "W","W" }, |
1234 | { "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" }, | 1234 | { "Click on this to\nselect week number","Klicke hierauf um\ndie Woche auszuwählen" }, |
1235 | { "T: %1","T: %1" }, | 1235 | { "T: %1","T: %1" }, |
1236 | { "Start: ","Start: " }, | 1236 | { "Start: ","Start: " }, |
1237 | { "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, | 1237 | { "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " }, |
1238 | { "Password for remote access:","Passwort für fernen Zugriff:" }, | 1238 | { "Password for remote access:","Passwort für fernen Zugriff:" }, |
1239 | { "Remote IP address:","Ferne IP Adresse:" }, | 1239 | { "Remote IP address:","Ferne IP Adresse:" }, |
1240 | { "Remote port number:","Ferne Port Nummer:" }, | 1240 | { "Remote port number:","Ferne Port Nummer:" }, |
1241 | { "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, | 1241 | { "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." }, |
1242 | { "Remote from: ","Fern von: " }, | 1242 | { "Remote from: ","Fern von: " }, |
1243 | { "Local from: ","Lokal von: " }, | 1243 | { "Local from: ","Lokal von: " }, |
1244 | { "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" }, | 1244 | { "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" }, |
1245 | { "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, | 1245 | { "Local calendar changed!\n","Lokaler Kalender geändert!\n" }, |
1246 | { "Write back","Schreibe zurück" }, | 1246 | { "Write back","Schreibe zurück" }, |
1247 | { "KO/Pi Synchronization","KO/Pi Synchronisation" }, | 1247 | { "KO/Pi Synchronization","KO/Pi Synchronisation" }, |
1248 | { "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, | 1248 | { "Pi-Sync succesful!","Pi-Sync erfolgreich!" }, |
1249 | { "Received sync request","Sync Anfrage erhalten" }, | 1249 | { "Received sync request","Sync Anfrage erhalten" }, |
1250 | { "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." }, | 1250 | { "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." }, |
1251 | { "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, | 1251 | { "Saving Data to temp file ...","Speichere Daten in temp Datei..." }, |
1252 | { "Data saved to temp file!","Daten in temp Datei gespeichert!" }, | 1252 | { "Data saved to temp file!","Daten in temp Datei gespeichert!" }, |
1253 | { "Sending file...","Sende Datei..." }, | 1253 | { "Sending file...","Sende Datei..." }, |
1254 | { "Waiting for synced file...","Warte auf gesyncte Daten..." }, | 1254 | { "Waiting for synced file...","Warte auf gesyncte Daten..." }, |
1255 | { "Receiving synced file...","Gesyncte Daten erhalten..." }, | 1255 | { "Receiving synced file...","Gesyncte Daten erhalten..." }, |
1256 | { "Received %1 bytes","%1 Bytes erhalten" }, | 1256 | { "Received %1 bytes","%1 Bytes erhalten" }, |
1257 | { "Writing file to disk...","Speichere Datei..." }, | 1257 | { "Writing file to disk...","Speichere Datei..." }, |
1258 | { "Pi-Sync successful!","Pi-Sync erfolgreich!" }, | 1258 | { "Pi-Sync successful!","Pi-Sync erfolgreich!" }, |
1259 | { "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, | 1259 | { "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" }, |
1260 | { "Synchronize!","Synchronisiere!" }, | 1260 | { "Synchronize!","Synchronisiere!" }, |
1261 | { "High clock skew!","Großer Uhrzeitunterschied!" }, | 1261 | { "High clock skew!","Großer Uhrzeitunterschied!" }, |
1262 | { "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, | 1262 | { "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, |
1263 | { "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!" }, | 1263 | { "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!" }, |
1264 | { "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." }, | 1264 | { "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." }, |
1265 | { "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" }, | 1265 | { "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" }, |
1266 | { "List week view","Listenwochenansicht" }, | 1266 | { "List week view","Listenwochenansicht" }, |
1267 | { "List week","Listenwochenansicht" }, | 1267 | { "List week","Listenwochenansicht" }, |
1268 | { "Next Week","Nächste Woche" }, | 1268 | { "Next Week","Nächste Woche" }, |
1269 | { "Previous Week","Vorherige Woche" }, | 1269 | { "Previous Week","Vorherige Woche" }, |
1270 | { "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." }, | 1270 | { "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." }, |
1271 | { "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" }, | 1271 | { "Show in todo/event viewer:","Zeige in Termin/Todo Anzeige:" }, |
1272 | { "Details","Details" }, | 1272 | { "Details","Details" }, |
1273 | { "Created time","Erstellt Zeit" }, | 1273 | { "Created time","Erstellt Zeit" }, |
1274 | { "Last modified time","Geändert Zeit" }, | 1274 | { "Last modified time","Geändert Zeit" }, |
1275 | { "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" }, | 1275 | { "Show in What'sThis quick overview:","Zeige in What'sThis Schnellübersicht:" }, |
1276 | { "View Options","Anzeige Optionen" }, | 1276 | { "View Options","Anzeige Optionen" }, |
1277 | { "<b>Created: ","<b>Erstellt am: " }, | 1277 | { "<b>Created: ","<b>Erstellt am: " }, |
1278 | { "<b>Last modified: ","<b>Zuletzt geändert am: " }, | 1278 | { "<b>Last modified: ","<b>Zuletzt geändert am: " }, |
1279 | { "Journal: ","Journal: " }, | 1279 | { "Journal: ","Journal: " }, |
1280 | { "yearly","jährlich" }, | 1280 | { "yearly","jährlich" }, |
1281 | { "(%1) ","%1-" }, | 1281 | { "(%1) ","%1-" }, |
1282 | { "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" }, | 1282 | { "<p><b>K</b>: Week view in Month view syle</p>\n","<p><b>K</b>: Wochenansicht in Art der Monatsansicht</p>\n" }, |
1283 | { "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" }, | 1283 | { "Enable tooltips displaying summary of ev.","Titel-Tooltips anzeigen" }, |
1284 | { "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" }, | 1284 | { "Enable scrollbars in month view cells","Scrollbar in Zellen anzeigen" }, |
1285 | { "Summary/Loc.","Titel/Ort" }, | 1285 | { "Summary/Loc.","Titel/Ort" }, |
1286 | { "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." }, | 1286 | { "No items found. Use '*' and '?' where needed.","Nichts gefunden. Benutze '*' and '?' wo benötigt." }, |
1287 | { "Week Number","Wochennummer" }, | 1287 | { "Week Number","Wochennummer" }, |
1288 | { "Import","Importiere" }, | 1288 | { "Import","Importiere" }, |
1289 | { "Export","Exportiere" }, | 1289 | { "Export","Exportiere" }, |
1290 | { "Beam","Beame" }, | 1290 | { "Beam","Beame" }, |
1291 | { "Export selected","Exportiere Selektierte" }, | 1291 | { "Export selected","Exportiere Selektierte" }, |
1292 | { "As iCal (ics) file...","Als iCal (ics) Datei..." }, | 1292 | { "As iCal (ics) file...","Als iCal (ics) Datei..." }, |
1293 | { "As vCal (vcs) file...","Als vCal (vcs) Datei..." }, | 1293 | { "As vCal (vcs) file...","Als vCal (vcs) Datei..." }, |
1294 | { "Journal/Details...","Journale/Details..." }, | 1294 | { "Journal/Details...","Journale/Details..." }, |
1295 | { "Agenda View","Agenda Ansicht" }, | 1295 | { "Agenda View","Agenda Ansicht" }, |
1296 | { "Show current time","Zeige aktuelle Zeit" }, | 1296 | { "Show current time","Zeige aktuelle Zeit" }, |
1297 | { "Edit new item","Bearbeite neuen Eintrag" }, | 1297 | { "Edit new item","Bearbeite neuen Eintrag" }, |
1298 | { "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" }, | 1298 | { "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" }, |
1299 | { "There is no next alarm.","Es gibt keinen nächsten Alarm." }, | 1299 | { "There is no next alarm.","Es gibt keinen nächsten Alarm." }, |
1300 | { "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (nächster Termin/Todo mit Alarm)" }, | 1300 | { "%1 %2 - %3 (next event/todo with alarm)","%1 %2 - %3 (nächster Termin/Todo mit Alarm)" }, |
1301 | { "The next alarm is in:\n","Der nächste Alarm ist in:\n" }, | 1301 | { "The next alarm is in:\n","Der nächste Alarm ist in:\n" }, |
1302 | { "%1 days\n","%1 Tagen\n" }, | 1302 | { "%1 days\n","%1 Tagen\n" }, |
1303 | { "1 day\n","1 Tag\n" }, | 1303 | { "1 day\n","1 Tag\n" }, |
1304 | { "%1 hours\n","%1 Stunden\n" }, | 1304 | { "%1 hours\n","%1 Stunden\n" }, |
1305 | { "1 hour\n","1 Stunde\n" }, | 1305 | { "1 hour\n","1 Stunde\n" }, |
1306 | { "%1 minutes\n","%1 Minuten\n" }, | 1306 | { "%1 minutes\n","%1 Minuten\n" }, |
1307 | { "1 minute\n","1 Minute\n" }, | 1307 | { "1 minute\n","1 Minute\n" }, |
1308 | { "Only one toolbar","Nur eine Toolbar" }, | 1308 | { "Only one toolbar","Nur eine Toolbar" }, |
1309 | { "Print","Drucke" }, | 1309 | { "Print","Drucke" }, |
1310 | { "Print selected event / todo...","Drucke ausgewählten Termin / Todo..." }, | 1310 | { "Print selected event / todo...","Drucke ausgewählten Termin / Todo..." }, |
1311 | { "There is nothing selected!","Es ist nichts ausgewählt!" }, | 1311 | { "There is nothing selected!","Es ist nichts ausgewählt!" }, |
1312 | { "\n\nDo you really want to print this item?","\n\nMöchten Sie wirklich diesen Eintrag ausdrucken? " }, | 1312 | { "\n\nDo you really want to print this item?","\n\nMöchten Sie wirklich diesen Eintrag ausdrucken? " }, |
1313 | { "KO/Pi Print Confirmation","KO/Pi Druckbestätigung" }, | 1313 | { "KO/Pi Print Confirmation","KO/Pi Druckbestätigung" }, |
1314 | { "This prints the view as you see it.\n(With the complete content, of course.)\nYou may change the print layout by resizing the view.\nPrint unscaled may print several pages\ndepending on the amount of data.\nPrint scaled down will print all on one page.\nPrint scaled up/down will print all on one page,\nbut will scale up the text to page boundaries,\nif the text is smaller than the page.\nYou can select page geometry setup in the next dialog.\n","Dies druckt die Ansicht wie man sie sieht.\n(Mit dem kompletten Inhalt natürlich.)\nMan kann das Layout ändern durch ändern der Fenstergröße.\nDrucke unskaliert druckt ggf. mehrere Seiten\nabhängig von der Menge der Daten.\nDrucke runterskaliert um auf eine Seite zu passen\ndruckt alles auf eine Seite.\nDrucke hoch/runterskaliert um genau auf eine Seite zu passen\nvergrößert den Text gegebenenfalls.\nDas Seitenlayout kann im nächsten Dialog gewählt werden.\n" }, | 1314 | { "This prints the view as you see it.\n(With the complete content, of course.)\nYou may change the print layout by resizing the view.\nPrint unscaled may print several pages\ndepending on the amount of data.\nPrint scaled down will print all on one page.\nPrint scaled up/down will print all on one page,\nbut will scale up the text to page boundaries,\nif the text is smaller than the page.\nYou can select page geometry setup in the next dialog.\n","Dies druckt die Ansicht wie man sie sieht.\n(Mit dem kompletten Inhalt natürlich.)\nMan kann das Layout ändern durch ändern der Fenstergröße.\nDrucke unskaliert druckt ggf. mehrere Seiten\nabhängig von der Menge der Daten.\nDrucke runterskaliert um auf eine Seite zu passen\ndruckt alles auf eine Seite.\nDrucke hoch/runterskaliert um genau auf eine Seite zu passen\nvergrößert den Text gegebenenfalls.\nDas Seitenlayout kann im nächsten Dialog gewählt werden.\n" }, |
1315 | { "KO/Pi Printout","KO/Pi Ausdruck" }, | 1315 | { "KO/Pi Printout","KO/Pi Ausdruck" }, |
1316 | { "Print unscaled","Drucke unskaliert" }, | 1316 | { "Print unscaled","Drucke unskaliert" }, |
1317 | { "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." }, | 1317 | { "Print scaled down to fit one page","Drucke runterskaliert um auf eine Seite zu passen." }, |
1318 | { "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." }, | 1318 | { "Print scaled up/down to fit one page","Drucke hoch/runterskaliert um genau auf eine Seite zu passen." }, |
1319 | { "Printout Mode","Druck Modus" }, | 1319 | { "Printout Mode","Druck Modus" }, |
1320 | { "Filter menu icon","Filtermenu Icon" }, | 1320 | { "Filter menu icon","Filtermenu Icon" }, |
1321 | { "<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n","<p><b>A+(shift oder ctrl)</b>: Zeige Zeit bis zum nächsten Alarm</p>\n" }, | 1321 | { "<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n","<p><b>A+(shift oder ctrl)</b>: Zeige Zeit bis zum nächsten Alarm</p>\n" }, |
1322 | { "<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n","<p><b>N</b>: Wechsle zur nächsten Ansicht, die ein Icon in der Toolbar hat</p>\n" }, | 1322 | { "<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n","<p><b>N</b>: Wechsle zur nächsten Ansicht, die ein Icon in der Toolbar hat</p>\n" }, |
1323 | { "%1d","%1t" }, | 1323 | { "%1d","%1t" }, |
1324 | { "%1h","%1std" }, | 1324 | { "%1h","%1std" }, |
1325 | { "%1min","%1min" }, | 1325 | { "%1min","%1min" }, |
1326 | { "( %1 before )","( %1 vorher )" }, | 1326 | { "( %1 before )","( %1 vorher )" }, |
1327 | { "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" }, | 1327 | { "The next alarm is in\nless than one minute!","Der nächste Alarm kommt in\nweniger als einer Minute!" }, |
1328 | { "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" }, | 1328 | { "\nThe internal alarm notification is disabled!\n","\nDie interne Alarmbenachrichtigung ist ausgeschaltet!\n" }, |
1329 | { "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." }, | 1329 | { "Enable it in the settings menu, TAB alarm.","Schalten Sie sie an im Menu Einstellungen, TAB Alarm." }, |
1330 | { "Show Sync Events","Zeige Sync-Ereignisse" }, | 1330 | { "Show Sync Events","Zeige Sync-Ereignisse" }, |
1331 | { "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" }, | 1331 | { "Use short date in WN+Event view","Zeige Kurzdatum in WN+Terminanzeige" }, |
1332 | { "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" }, | 1332 | { "Number of max.displayed todo prios:","Anzahl max.angezeigter Todo-Prios:" }, |
1333 | { " on "," am " }, | 1333 | { " on "," am " }, |
1334 | { "On: ","Am: " }, | 1334 | { "On: ","Am: " }, |
1335 | { "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" }, | 1335 | { "<i>The recurrence is computed from the start datetime!</i>","<i>Die Wiederholung wird vom Startwert aus berechnet!</i>" }, |
1336 | { "Start/Stop todo...","Starte/Stoppe Todo..." }, | 1336 | { "Start/Stop todo...","Starte/Stoppe Todo..." }, |
1337 | { "Color for running todos:","Farbe für laufende Todos:" }, | 1337 | { "Color for running todos:","Farbe für laufende Todos:" }, |
1338 | { "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" }, | 1338 | { "The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?","Das Todo\n%1\nist gestartet.\nWollen Sie es\nauf gestoppt setzen?" }, |
1339 | { "Todo is started","Todo ist gestartet" }, | 1339 | { "Todo is started","Todo ist gestartet" }, |
1340 | { "Stop todo","Stoppe Todo" }, | 1340 | { "Stop todo","Stoppe Todo" }, |
1341 | { "Todo is stopped","Todo ist gestoppt" }, | 1341 | { "Todo is stopped","Todo ist gestoppt" }, |
1342 | { "Start todo","Starte Todo" }, | 1342 | { "Start todo","Starte Todo" }, |
1343 | { "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" }, | 1343 | { "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" }, |
1344 | { "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie alle\nUntertodos auch klonen?" }, | 1344 | { "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie alle\nUntertodos auch klonen?" }, |
1345 | { "Todo has subtodos","Todo hat Untertodos" }, | 1345 | { "Todo has subtodos","Todo hat Untertodos" }, |
1346 | { "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" }, | 1346 | { "Block popup until mouse button release","Sperre Popup bis Mausknopf losgelassen" }, |
1347 | { "Colors","Farben" }, | 1347 | { "Colors","Farben" }, |
1348 | { "Click on new parent item","Klicke auf neues Übertodo" }, | 1348 | { "Click on new parent item","Klicke auf neues Übertodo" }, |
1349 | { "Reparenting aborted!","Übertodo setzen abgebrochen" }, | 1349 | { "Reparenting aborted!","Übertodo setzen abgebrochen" }, |
1350 | { "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" }, | 1350 | { "Cannot move Todo to itself\nor a child of itself","Kann nicht Todo auf\nsich selbst oder\nein Untertodo verschieben" }, |
1351 | { "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" }, | 1351 | { "Recursive reparenting not possible!","Rekursives Verschieben nicht möglich" }, |
1352 | { "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" }, | 1352 | { "Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)","Entferne alle erledigten Todos?\n(Erledigte wiederholende Todos\nwerden nicht gelöscht!)" }, |
1353 | { "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, | 1353 | { "Alternating background of list views","Abwechselnder Hintergrund für Listen" }, |
1354 | { "times","Zeiten" }, | 1354 | { "times","Zeiten" }, |
1355 | { "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nMöchten Sie die Kategorien\nauch für alle Untertodos setzen?" }, | 1355 | { "The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?","Das Todo\n%1\nhat Untertodos!\nMöchten Sie die Kategorien\nauch für alle Untertodos setzen?" }, |
1356 | { "Backup enabled","Backup angeschaltet" }, | 1356 | { "Backup enabled","Backup angeschaltet" }, |
1357 | { "Use standard backup dir","Standard Backupverzeichnis" }, | 1357 | { "Use standard backup dir","Standard Backupverzeichnis" }, |
1358 | { "Number of Backups:","Anzahl der Backups" }, | 1358 | { "Number of Backups:","Anzahl der Backups" }, |
1359 | { "Make backup every ","Mache ein Backup alle " }, | 1359 | { "Make backup every ","Mache ein Backup alle " }, |
1360 | { " days"," Tage" }, | 1360 | { " days"," Tage" }, |
1361 | { "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." }, | 1361 | { "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." }, |
1362 | { "Backup Failed!","Backup Problem!" }, | 1362 | { "Backup Failed!","Backup Problem!" }, |
1363 | { "Try again now","Versuche jetzt nochmal" }, | 1363 | { "Try again now","Versuche jetzt nochmal" }, |
1364 | { "Try again later","Versuche später nochmal" }, | 1364 | { "Try again later","Versuche später nochmal" }, |
1365 | { "Try again tomorrow","Versuche morgen nochmal" }, | 1365 | { "Try again tomorrow","Versuche morgen nochmal" }, |
1366 | { "Disable backup","Schalte Backup ab" }, | 1366 | { "Disable backup","Schalte Backup ab" }, |
1367 | { "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, | 1367 | { "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, |
1368 | { "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, | 1368 | { "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, |
1369 | { "Choose action","Wähle Aktion" }, | 1369 | { "Choose action","Wähle Aktion" }, |
1370 | { "Comment for todo:","Kommentar zum Todo:" }, | 1370 | { "Comment for todo:","Kommentar zum Todo:" }, |
1371 | { "Stop+note","Stop+Notiz" }, | 1371 | { "Stop+note","Stop+Notiz" }, |
1372 | { "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" }, | 1372 | { "Agenda view shows completed todos","Agenda Ansicht zeigt erledigte Todos" }, |
1373 | { "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" }, | 1373 | { "KO/Pi: Missing alarms!","KO/Pi: Verpasste Alarme!" }, |
1374 | { "You missed the alarms for the following events or todos:","Sie verpassten die Alarme für folgende Termine oder Todos:" }, | 1374 | { "You missed the alarms for the following events or todos:","Sie verpassten die Alarme für folgende Termine oder Todos:" }, |
1375 | { "","" }, | 1375 | { "Print complete list","Drucke komplette Liste" }, |
1376 | { "","" }, | 1376 | { "Hide all selected","Verstecke Selektierte" }, |
1377 | { "","" }, | 1377 | { "","" }, |
1378 | { "","" }, | 1378 | { "","" }, |
1379 | { "","" }, | 1379 | { "","" }, |
1380 | { "","" }, | 1380 | { "","" }, |
1381 | { "","" }, \ No newline at end of file | 1381 | { "","" }, \ No newline at end of file |
diff --git a/desktop/rpm/kdepim_rpm b/desktop/rpm/kdepim_rpm index cf68670..ee00372 100644 --- a/desktop/rpm/kdepim_rpm +++ b/desktop/rpm/kdepim_rpm | |||
@@ -1,84 +1,84 @@ | |||
1 | Summary: A collection of PIM programs | 1 | Summary: A collection of PIM programs |
2 | Name: KDE-Pim-Pi | 2 | Name: KDE-Pim-Pi |
3 | Version: 2.1.5 | 3 | Version: 2.1.6 |
4 | Release: SuSE_9.2 | 4 | Release: SuSE_9.2 |
5 | Copyright:GPL | 5 | Copyright:GPL |
6 | Group: Productivity/Pim | 6 | Group: Productivity/Pim |
7 | Source:http://sourceforge.net/projects/kdepimpi/ | 7 | Source:http://sourceforge.net/projects/kdepimpi/ |
8 | URL:http://sourceforge.net/projects/kdepimpi/ | 8 | URL:http://sourceforge.net/projects/kdepimpi/ |
9 | Packager: zautrix | 9 | Packager: zautrix |
10 | 10 | ||
11 | %description | 11 | %description |
12 | This package contains the platform-independent PIM programs from | 12 | This package contains the platform-independent PIM programs from |
13 | www.pi-sync.info, compiled for SuSE 9.2: | 13 | www.pi-sync.info, compiled for SuSE 9.2: |
14 | KTimeTacker/Pi | 14 | KTimeTacker/Pi |
15 | KPhone/Pi | 15 | KPhone/Pi |
16 | KAddressbook/Pi | 16 | KAddressbook/Pi |
17 | KOrganizer/Pi | 17 | KOrganizer/Pi |
18 | PasswordManager/Pi | 18 | PasswordManager/Pi |
19 | KOPieMail/Pi | 19 | KOPieMail/Pi |
20 | 20 | ||
21 | These applications do not need anything from the KDE-desktop | 21 | These applications do not need anything from the KDE-desktop |
22 | at all to run on Linux. However, there is a dependency from | 22 | at all to run on Linux. However, there is a dependency from |
23 | two KDE libs, because a small command line program is included | 23 | two KDE libs, because a small command line program is included |
24 | to make it possible to sync with the KDE-desktop applications. | 24 | to make it possible to sync with the KDE-desktop applications. |
25 | 25 | ||
26 | These applications are independent from the KDE-desktop | 26 | These applications are independent from the KDE-desktop |
27 | environment. That means, nothing of your existing | 27 | environment. That means, nothing of your existing |
28 | KDE-desktop setup will be changed, or any data | 28 | KDE-desktop setup will be changed, or any data |
29 | (calendar-addressbook) used by the KDE-desktop | 29 | (calendar-addressbook) used by the KDE-desktop |
30 | applications will be changed or accessed. | 30 | applications will be changed or accessed. |
31 | These applications stores their data and config in | 31 | These applications stores their data and config in |
32 | $HOME/kdepim/ | 32 | $HOME/kdepim/ |
33 | However, because the same file format is used, | 33 | However, because the same file format is used, |
34 | an easy exchange of data with the KDE-desktop | 34 | an easy exchange of data with the KDE-desktop |
35 | is possible. | 35 | is possible. |
36 | A small command line program is included | 36 | A small command line program is included |
37 | to make it possible to sync with the KDE-desktop applications. | 37 | to make it possible to sync with the KDE-desktop applications. |
38 | You do not need to call this program from the commandline, | 38 | You do not need to call this program from the commandline, |
39 | it is called from the KDE-Pim/Pi apps when you choose there: | 39 | it is called from the KDE-Pim/Pi apps when you choose there: |
40 | Sync with KDE_Desktop. | 40 | Sync with KDE_Desktop. |
41 | If something is going wrong, please start the | 41 | If something is going wrong, please start the |
42 | KDE-Pim/Pi program itself from the console to get detailed output. | 42 | KDE-Pim/Pi program itself from the console to get detailed output. |
43 | 43 | ||
44 | After installation, you should have a | 44 | After installation, you should have a |
45 | PIM-pi | 45 | PIM-pi |
46 | folder in your KDE start menu, where you can | 46 | folder in your KDE start menu, where you can |
47 | start the applications from. | 47 | start the applications from. |
48 | 48 | ||
49 | These programs makes it possible to sync your Zaurus easily | 49 | These programs makes it possible to sync your Zaurus easily |
50 | (with the KDE-Pim/Pi programs running on the Zaurus) | 50 | (with the KDE-Pim/Pi programs running on the Zaurus) |
51 | with the KDE-desktop calendar/addressbook data. | 51 | with the KDE-desktop calendar/addressbook data. |
52 | If you want to use that, you have to update your | 52 | If you want to use that, you have to update your |
53 | KDE-desktop to version 3.3.0 or higher. | 53 | KDE-desktop to version 3.3.0 or higher. |
54 | SuSE 9.2 contains KDE 3.3.0 such that no update is needed. | 54 | SuSE 9.2 contains KDE 3.3.0 such that no update is needed. |
55 | Actually - after the (non difficult) configuration is set up - | 55 | Actually - after the (non difficult) configuration is set up - |
56 | with two mouseklicks on the Zaurus, | 56 | with two mouseklicks on the Zaurus, |
57 | the Zaurus syncs with the corresponding KDE-Pim/Pi | 57 | the Zaurus syncs with the corresponding KDE-Pim/Pi |
58 | program on the Linux Desktop which syncs automatically | 58 | program on the Linux Desktop which syncs automatically |
59 | with the KDE-desktop data. | 59 | with the KDE-desktop data. |
60 | 60 | ||
61 | If you want to use the KDE-desktop calendar/addressbook applications, | 61 | If you want to use the KDE-desktop calendar/addressbook applications, |
62 | just install these apps in this package and use them as a syncing tool for the | 62 | just install these apps in this package and use them as a syncing tool for the |
63 | Zaurus <-> KDE-desktop sync. | 63 | Zaurus <-> KDE-desktop sync. |
64 | The sync requires a network connection from your Zaurus to | 64 | The sync requires a network connection from your Zaurus to |
65 | the PC. A detailed Sync HowTo is available in the | 65 | the PC. A detailed Sync HowTo is available in the |
66 | Help menu of the applications. | 66 | Help menu of the applications. |
67 | 67 | ||
68 | These applications makes it also possible, that you can sync | 68 | These applications makes it also possible, that you can sync |
69 | (or just export the data to) your mobile phone with your | 69 | (or just export the data to) your mobile phone with your |
70 | data of the KDE-desktop calendar/addressbook applications. | 70 | data of the KDE-desktop calendar/addressbook applications. |
71 | This is tested and working for Nokia mobile phones, | 71 | This is tested and working for Nokia mobile phones, |
72 | it may work with others as well. | 72 | it may work with others as well. |
73 | (More info about that: -> Sync HowTo) | 73 | (More info about that: -> Sync HowTo) |
74 | 74 | ||
75 | NOTE: | 75 | NOTE: |
76 | When using SuSE 9.1 you have to update your KDE to 3.3.x | 76 | When using SuSE 9.1 you have to update your KDE to 3.3.x |
77 | and you have to make an online update in SuSE 9.1 to make it | 77 | and you have to make an online update in SuSE 9.1 to make it |
78 | possible to get the infrared connection working, such that | 78 | possible to get the infrared connection working, such that |
79 | you can sync your (Nokia) mobile phone via infrared. | 79 | you can sync your (Nokia) mobile phone via infrared. |
80 | 80 | ||
81 | %files | 81 | %files |
82 | /opt/kde3/share/applnk/PIM-pi/ | 82 | /opt/kde3/share/applnk/PIM-pi/ |
83 | /opt/kdepimpi/ | 83 | /opt/kdepimpi/ |
84 | /usr/lib/libmicro* | 84 | /usr/lib/libmicro* |
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp index bc52281..7022e02 100644 --- a/korganizer/kolistview.cpp +++ b/korganizer/kolistview.cpp | |||
@@ -1,980 +1,1015 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 1999 Preston Brown | 3 | Copyright (c) 1999 Preston Brown |
4 | Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> | 4 | Copyright (c) 2000,2001 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 | 24 | ||
25 | #include <qlistview.h> | 25 | #include <qlistview.h> |
26 | #include <qlayout.h> | 26 | #include <qlayout.h> |
27 | #include <qlabel.h> | 27 | #include <qlabel.h> |
28 | #include <qpopupmenu.h> | 28 | #include <qpopupmenu.h> |
29 | #include <qprogressbar.h> | 29 | #include <qprogressbar.h> |
30 | #include <qfileinfo.h> | 30 | #include <qfileinfo.h> |
31 | #include <qmessagebox.h> | 31 | #include <qmessagebox.h> |
32 | #include <qdialog.h> | 32 | #include <qdialog.h> |
33 | #include <qtextstream.h> | 33 | #include <qtextstream.h> |
34 | #include <qdir.h> | 34 | #include <qdir.h> |
35 | #include <qwhatsthis.h> | 35 | #include <qwhatsthis.h> |
36 | #include <qregexp.h> | 36 | #include <qregexp.h> |
37 | #include <qpainter.h> | ||
38 | #include <qpaintdevicemetrics.h> | ||
37 | 39 | ||
38 | #include <klocale.h> | 40 | #include <klocale.h> |
39 | #include <kdebug.h> | 41 | #include <kdebug.h> |
40 | #include <kiconloader.h> | 42 | #include <kiconloader.h> |
41 | #include <kglobal.h> | 43 | #include <kglobal.h> |
42 | 44 | ||
43 | #include <libkdepim/kpimglobalprefs.h> | 45 | #include <libkdepim/kpimglobalprefs.h> |
44 | #include <libkcal/calendar.h> | 46 | #include <libkcal/calendar.h> |
45 | #include <libkcal/calendarlocal.h> | 47 | #include <libkcal/calendarlocal.h> |
46 | #include <libkcal/icalformat.h> | 48 | #include <libkcal/icalformat.h> |
47 | #include <libkcal/vcalformat.h> | 49 | #include <libkcal/vcalformat.h> |
48 | #include <libkcal/recurrence.h> | 50 | #include <libkcal/recurrence.h> |
49 | #include <libkcal/filestorage.h> | 51 | #include <libkcal/filestorage.h> |
50 | #include <libkdepim/categoryselectdialog.h> | 52 | #include <libkdepim/categoryselectdialog.h> |
51 | #include <libkcal/kincidenceformatter.h> | 53 | #include <libkcal/kincidenceformatter.h> |
52 | #ifndef DESKTOP_VERSION | 54 | #ifndef DESKTOP_VERSION |
53 | #include <qpe/qpeapplication.h> | 55 | #include <qpe/qpeapplication.h> |
54 | #else | 56 | #else |
55 | #include <qapplication.h> | 57 | #include <qapplication.h> |
56 | #endif | 58 | #endif |
57 | 59 | ||
58 | #ifndef KORG_NOPRINTER | 60 | #ifndef KORG_NOPRINTER |
59 | #include "calprinter.h" | 61 | #include "calprinter.h" |
60 | #endif | 62 | #endif |
61 | #include "koglobals.h" | 63 | #include "koglobals.h" |
62 | #include "koprefs.h" | 64 | #include "koprefs.h" |
63 | #include "kfiledialog.h" | 65 | #include "kfiledialog.h" |
64 | 66 | ||
65 | #include "kolistview.h" | 67 | #include "kolistview.h" |
68 | #include "koeventviewer.h" | ||
66 | 69 | ||
67 | 70 | ||
68 | 71 | ||
69 | 72 | ||
70 | class KOListViewWhatsThis :public QWhatsThis | 73 | class KOListViewWhatsThis :public QWhatsThis |
71 | { | 74 | { |
72 | public: | 75 | public: |
73 | KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { }; | 76 | KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { }; |
74 | 77 | ||
75 | protected: | 78 | protected: |
76 | virtual QString text( const QPoint& p) | 79 | virtual QString text( const QPoint& p) |
77 | { | 80 | { |
78 | return _view->getWhatsThisText(p) ; | 81 | return _view->getWhatsThisText(p) ; |
79 | } | 82 | } |
80 | private: | 83 | private: |
81 | QWidget* _wid; | 84 | QWidget* _wid; |
82 | KOListView * _view; | 85 | KOListView * _view; |
83 | }; | 86 | }; |
84 | 87 | ||
85 | 88 | ||
86 | ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) | 89 | ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) |
87 | { | 90 | { |
88 | mItem = item; | 91 | mItem = item; |
89 | mDate = date; | 92 | mDate = date; |
90 | } | 93 | } |
91 | 94 | ||
92 | ListItemVisitor::~ListItemVisitor() | 95 | ListItemVisitor::~ListItemVisitor() |
93 | { | 96 | { |
94 | } | 97 | } |
95 | 98 | ||
96 | bool ListItemVisitor::visit(Event *e) | 99 | bool ListItemVisitor::visit(Event *e) |
97 | { | 100 | { |
98 | bool ok = false; | 101 | bool ok = false; |
99 | QString start, end; | 102 | QString start, end; |
100 | QDate ds, de; | 103 | QDate ds, de; |
101 | if ( e->doesRecur() ) { | 104 | if ( e->doesRecur() ) { |
102 | ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date(); | 105 | ds = e->getNextOccurence( QDateTime( mDate, QTime(0,0,0)), &ok ).date(); |
103 | if ( ok ) { | 106 | if ( ok ) { |
104 | int days = e->dtStart().date().daysTo(e->dtEnd().date() ); | 107 | int days = e->dtStart().date().daysTo(e->dtEnd().date() ); |
105 | start = KGlobal::locale()->formatDate(ds,true); | 108 | start = KGlobal::locale()->formatDate(ds,true); |
106 | de = ds.addDays( days); | 109 | de = ds.addDays( days); |
107 | end = KGlobal::locale()->formatDate(de,true); | 110 | end = KGlobal::locale()->formatDate(de,true); |
108 | } | 111 | } |
109 | 112 | ||
110 | } | 113 | } |
111 | if ( ! ok ) { | 114 | if ( ! ok ) { |
112 | start =e->dtStartDateStr(); | 115 | start =e->dtStartDateStr(); |
113 | end = e->dtEndDateStr(); | 116 | end = e->dtEndDateStr(); |
114 | ds = e->dtStart().date(); | 117 | ds = e->dtStart().date(); |
115 | de = e->dtEnd().date(); | 118 | de = e->dtEnd().date(); |
116 | } | 119 | } |
117 | mItem->setText(0,e->summary()); | 120 | mItem->setText(0,e->summary()); |
118 | mItem->setText(1,start); | 121 | mItem->setText(1,start); |
119 | if ( e->doesFloat() ) | 122 | if ( e->doesFloat() ) |
120 | mItem->setText(2,"---"); | 123 | mItem->setText(2,"---"); |
121 | else | 124 | else |
122 | mItem->setText(2,e->dtStartTimeStr()); | 125 | mItem->setText(2,e->dtStartTimeStr()); |
123 | mItem->setText(3,end); | 126 | mItem->setText(3,end); |
124 | if ( e->doesFloat() ) | 127 | if ( e->doesFloat() ) |
125 | mItem->setText(4,"---"); | 128 | mItem->setText(4,"---"); |
126 | else | 129 | else |
127 | mItem->setText(4,e->dtEndTimeStr()); | 130 | mItem->setText(4,e->dtEndTimeStr()); |
128 | if ( e->isAlarmEnabled() ) { | 131 | if ( e->isAlarmEnabled() ) { |
129 | mItem->setText(5,e->alarms().first()->offsetText() ); | 132 | mItem->setText(5,e->alarms().first()->offsetText() ); |
130 | } else { | 133 | } else { |
131 | mItem->setText(5, i18n("No")); | 134 | mItem->setText(5, i18n("No")); |
132 | } | 135 | } |
133 | mItem->setText(6, e->recurrence()->recurrenceText()); | 136 | mItem->setText(6, e->recurrence()->recurrenceText()); |
134 | if( ! e->doesRecur() ) | 137 | if( ! e->doesRecur() ) |
135 | mItem->setSortKey( 6, "-" ); | 138 | mItem->setSortKey( 6, "-" ); |
136 | mItem->setText(7,"---"); | 139 | mItem->setText(7,"---"); |
137 | mItem->setText(8,"---"); | 140 | mItem->setText(8,"---"); |
138 | mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No")); | 141 | mItem->setText(9, e->cancelled() ? i18n("Yes") : i18n("No")); |
139 | mItem->setText(10,e->categoriesStr()); | 142 | mItem->setText(10,e->categoriesStr()); |
140 | 143 | ||
141 | QString key; | 144 | QString key; |
142 | QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time(); | 145 | QTime t = e->doesFloat() ? QTime(0,0) : e->dtStart().time(); |
143 | key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute()); | 146 | key.sprintf("%04d%02d%02d%02d%02d",ds.year(),ds.month(),ds.day(),t.hour(),t.minute()); |
144 | mItem->setSortKey(1,key); | 147 | mItem->setSortKey(1,key); |
145 | 148 | ||
146 | t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time(); | 149 | t = e->doesFloat() ? QTime(0,0) : e->dtEnd().time(); |
147 | key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute()); | 150 | key.sprintf("%04d%02d%02d%02d%02d",de.year(),de.month(),de.day(),t.hour(),t.minute()); |
148 | mItem->setSortKey(3,key); | 151 | mItem->setSortKey(3,key); |
149 | return true; | 152 | return true; |
150 | } | 153 | } |
151 | 154 | ||
152 | bool ListItemVisitor::visit(Todo *t) | 155 | bool ListItemVisitor::visit(Todo *t) |
153 | { | 156 | { |
154 | mItem->setText(0,i18n("Todo: %1").arg(t->summary())); | 157 | mItem->setText(0,i18n("Todo: %1").arg(t->summary())); |
155 | if (t->hasStartDate()) { | 158 | if (t->hasStartDate()) { |
156 | mItem->setText(1,t->dtStartDateStr()); | 159 | mItem->setText(1,t->dtStartDateStr()); |
157 | if (t->doesFloat()) { | 160 | if (t->doesFloat()) { |
158 | mItem->setText(2,"---"); | 161 | mItem->setText(2,"---"); |
159 | } else { | 162 | } else { |
160 | mItem->setText(2,t->dtStartTimeStr()); | 163 | mItem->setText(2,t->dtStartTimeStr()); |
161 | } | 164 | } |
162 | } else { | 165 | } else { |
163 | mItem->setText(1,"---"); | 166 | mItem->setText(1,"---"); |
164 | mItem->setText(2,"---"); | 167 | mItem->setText(2,"---"); |
165 | } | 168 | } |
166 | mItem->setText(3,"---"); | 169 | mItem->setText(3,"---"); |
167 | mItem->setText(4,"---"); | 170 | mItem->setText(4,"---"); |
168 | if ( t->isAlarmEnabled() ) { | 171 | if ( t->isAlarmEnabled() ) { |
169 | mItem->setText(5,t->alarms().first()->offsetText() ); | 172 | mItem->setText(5,t->alarms().first()->offsetText() ); |
170 | } else { | 173 | } else { |
171 | mItem->setText(5, i18n("No")); | 174 | mItem->setText(5, i18n("No")); |
172 | } | 175 | } |
173 | mItem->setText(6, t->recurrence()->recurrenceText()); | 176 | mItem->setText(6, t->recurrence()->recurrenceText()); |
174 | if( ! t->doesRecur() ) | 177 | if( ! t->doesRecur() ) |
175 | mItem->setSortKey( 6, "-" ); | 178 | mItem->setSortKey( 6, "-" ); |
176 | if (t->hasDueDate()) { | 179 | if (t->hasDueDate()) { |
177 | mItem->setText(7,t->dtDueDateStr()); | 180 | mItem->setText(7,t->dtDueDateStr()); |
178 | if (t->doesFloat()) { | 181 | if (t->doesFloat()) { |
179 | mItem->setText(8,"---"); | 182 | mItem->setText(8,"---"); |
180 | } else { | 183 | } else { |
181 | mItem->setText(8,t->dtDueTimeStr()); | 184 | mItem->setText(8,t->dtDueTimeStr()); |
182 | } | 185 | } |
183 | } else { | 186 | } else { |
184 | mItem->setText(7,"---"); | 187 | mItem->setText(7,"---"); |
185 | mItem->setText(8,"---"); | 188 | mItem->setText(8,"---"); |
186 | } | 189 | } |
187 | mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No")); | 190 | mItem->setText(9, t->cancelled() ? i18n("Yes") : i18n("No")); |
188 | mItem->setText(10,t->categoriesStr()); | 191 | mItem->setText(10,t->categoriesStr()); |
189 | 192 | ||
190 | QString key; | 193 | QString key; |
191 | QDate d; | 194 | QDate d; |
192 | if (t->hasDueDate()) { | 195 | if (t->hasDueDate()) { |
193 | d = t->dtDue().date(); | 196 | d = t->dtDue().date(); |
194 | QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time(); | 197 | QTime tm = t->doesFloat() ? QTime(0,0) : t->dtDue().time(); |
195 | key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); | 198 | key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); |
196 | mItem->setSortKey(7,key); | 199 | mItem->setSortKey(7,key); |
197 | } | 200 | } |
198 | if ( t->hasStartDate() ) { | 201 | if ( t->hasStartDate() ) { |
199 | d = t->dtStart().date(); | 202 | d = t->dtStart().date(); |
200 | QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time(); | 203 | QTime tm = t->doesFloat() ? QTime(0,0) : t->dtStart().time(); |
201 | key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); | 204 | key.sprintf("%04d%02d%02d%02d%02d",d.year(),d.month(),d.day(),tm.hour(),tm.minute()); |
202 | mItem->setSortKey(1,key); | 205 | mItem->setSortKey(1,key); |
203 | } | 206 | } |
204 | return true; | 207 | return true; |
205 | } | 208 | } |
206 | 209 | ||
207 | bool ListItemVisitor::visit(Journal * j) | 210 | bool ListItemVisitor::visit(Journal * j) |
208 | { | 211 | { |
209 | QString des = j->description().left(30); | 212 | QString des = j->description().left(30); |
210 | des = des.simplifyWhiteSpace (); | 213 | des = des.simplifyWhiteSpace (); |
211 | des.replace (QRegExp ("\\n"),"" ); | 214 | des.replace (QRegExp ("\\n"),"" ); |
212 | des.replace (QRegExp ("\\r"),"" ); | 215 | des.replace (QRegExp ("\\r"),"" ); |
213 | mItem->setText(0,i18n("Journal: ")+des.left(25)); | 216 | mItem->setText(0,i18n("Journal: ")+des.left(25)); |
214 | mItem->setText(1,j->dtStartDateStr()); | 217 | mItem->setText(1,j->dtStartDateStr()); |
215 | mItem->setText(2,"---"); | 218 | mItem->setText(2,"---"); |
216 | mItem->setText(3,"---"); | 219 | mItem->setText(3,"---"); |
217 | mItem->setText(4,"---"); | 220 | mItem->setText(4,"---"); |
218 | mItem->setText(5,"---"); | 221 | mItem->setText(5,"---"); |
219 | mItem->setText(6,"---"); | 222 | mItem->setText(6,"---"); |
220 | mItem->setText(7,j->dtStartDateStr()); | 223 | mItem->setText(7,j->dtStartDateStr()); |
221 | mItem->setText(8,"---"); | 224 | mItem->setText(8,"---"); |
222 | mItem->setText(9,"---"); | 225 | mItem->setText(9,"---"); |
223 | mItem->setText(10,i18n("Last Modified: ")+ KGlobal::locale()->formatDateTime( j->lastModified() , true) ); | 226 | mItem->setText(10,i18n("Last Modified: ")+ KGlobal::locale()->formatDateTime( j->lastModified() , true) ); |
224 | 227 | ||
225 | QString key; | 228 | QString key; |
226 | QDate d = j->dtStart().date(); | 229 | QDate d = j->dtStart().date(); |
227 | key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); | 230 | key.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); |
228 | mItem->setSortKey(1,key); | 231 | mItem->setSortKey(1,key); |
229 | mItem->setSortKey(7,key); | 232 | mItem->setSortKey(7,key); |
230 | 233 | ||
231 | return true; | 234 | return true; |
232 | } | 235 | } |
233 | 236 | ||
234 | KOListView::KOListView(Calendar *calendar, QWidget *parent, | 237 | KOListView::KOListView(Calendar *calendar, QWidget *parent, |
235 | const char *name) | 238 | const char *name) |
236 | : KOEventView(calendar, parent, name) | 239 | : KOEventView(calendar, parent, name) |
237 | { | 240 | { |
238 | mActiveItem = 0; | 241 | mActiveItem = 0; |
239 | mListView = new KOListViewListView(this); | 242 | mListView = new KOListViewListView(this); |
240 | mListView->addColumn(i18n("Summary")); | 243 | mListView->addColumn(i18n("Summary")); |
241 | mListView->addColumn(i18n("Start Date")); | 244 | mListView->addColumn(i18n("Start Date")); |
242 | mListView->addColumn(i18n("Start Time")); | 245 | mListView->addColumn(i18n("Start Time")); |
243 | mListView->addColumn(i18n("End Date")); | 246 | mListView->addColumn(i18n("End Date")); |
244 | mListView->addColumn(i18n("End Time")); | 247 | mListView->addColumn(i18n("End Time")); |
245 | mListView->addColumn(i18n("Alarm")); // alarm set? | 248 | mListView->addColumn(i18n("Alarm")); // alarm set? |
246 | mListView->addColumn(i18n("Recurs")); // recurs? | 249 | mListView->addColumn(i18n("Recurs")); // recurs? |
247 | mListView->addColumn(i18n("Due Date")); | 250 | mListView->addColumn(i18n("Due Date")); |
248 | mListView->addColumn(i18n("Due Time")); | 251 | mListView->addColumn(i18n("Due Time")); |
249 | mListView->addColumn(i18n("Cancelled")); | 252 | mListView->addColumn(i18n("Cancelled")); |
250 | mListView->addColumn(i18n("Categories")); | 253 | mListView->addColumn(i18n("Categories")); |
251 | 254 | ||
252 | mListView->setColumnAlignment(0,AlignLeft); | 255 | mListView->setColumnAlignment(0,AlignLeft); |
253 | mListView->setColumnAlignment(1,AlignLeft); | 256 | mListView->setColumnAlignment(1,AlignLeft); |
254 | mListView->setColumnAlignment(2,AlignHCenter); | 257 | mListView->setColumnAlignment(2,AlignHCenter); |
255 | mListView->setColumnAlignment(3,AlignLeft); | 258 | mListView->setColumnAlignment(3,AlignLeft); |
256 | mListView->setColumnAlignment(4,AlignHCenter); | 259 | mListView->setColumnAlignment(4,AlignHCenter); |
257 | mListView->setColumnAlignment(5,AlignLeft); | 260 | mListView->setColumnAlignment(5,AlignLeft); |
258 | mListView->setColumnAlignment(6,AlignLeft); | 261 | mListView->setColumnAlignment(6,AlignLeft); |
259 | mListView->setColumnAlignment(7,AlignLeft); | 262 | mListView->setColumnAlignment(7,AlignLeft); |
260 | mListView->setColumnAlignment(8,AlignLeft); | 263 | mListView->setColumnAlignment(8,AlignLeft); |
261 | mListView->setColumnAlignment(9,AlignLeft); | 264 | mListView->setColumnAlignment(9,AlignLeft); |
262 | mListView->setColumnAlignment(10,AlignLeft); | 265 | mListView->setColumnAlignment(10,AlignLeft); |
263 | mListView->setColumnWidthMode(10, QListView::Manual); | 266 | mListView->setColumnWidthMode(10, QListView::Manual); |
264 | mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this); | 267 | mKOListViewWhatsThis = new KOListViewWhatsThis(mListView->viewport(),this); |
265 | 268 | ||
266 | int iii = 0; | 269 | int iii = 0; |
267 | for ( iii = 0; iii< 10 ; ++iii ) | 270 | for ( iii = 0; iii< 10 ; ++iii ) |
268 | mListView->setColumnWidthMode( iii, QListView::Manual ); | 271 | mListView->setColumnWidthMode( iii, QListView::Manual ); |
269 | 272 | ||
270 | QBoxLayout *layoutTop = new QVBoxLayout(this); | 273 | QBoxLayout *layoutTop = new QVBoxLayout(this); |
271 | layoutTop->addWidget(mListView); | 274 | layoutTop->addWidget(mListView); |
272 | mListView->setFont ( KOPrefs::instance()->mListViewFont ); | 275 | mListView->setFont ( KOPrefs::instance()->mListViewFont ); |
273 | mPopupMenu = eventPopup(); | 276 | mPopupMenu = eventPopup(); |
274 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 277 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
275 | i18n("Select all"),this, | 278 | i18n("Select all"),this, |
276 | SLOT(allSelection()),true); | 279 | SLOT(allSelection()),true); |
277 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 280 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
278 | i18n("Deselect all"),this, | 281 | i18n("Deselect all"),this, |
279 | SLOT(clearSelection()),true); | 282 | SLOT(clearSelection()),true); |
280 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 283 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
281 | i18n("Delete all selected"),this, | 284 | i18n("Delete all selected"),this, |
282 | SLOT(deleteAll()),true); | 285 | SLOT(deleteAll()),true); |
286 | #ifdef DESKTOP_VERSION | ||
287 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | ||
288 | i18n("Hide all selected"),this, | ||
289 | SLOT(hideAll()),true); | ||
290 | #endif | ||
291 | mPopupMenu->insertSeparator(); | ||
292 | #ifdef DESKTOP_VERSION | ||
293 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | ||
294 | i18n("Print complete list"),this, | ||
295 | SLOT(printList()),true); | ||
283 | mPopupMenu->insertSeparator(); | 296 | mPopupMenu->insertSeparator(); |
297 | #endif | ||
284 | QPopupMenu * exportPO = new QPopupMenu ( this ); | 298 | QPopupMenu * exportPO = new QPopupMenu ( this ); |
285 | mPopupMenu->insertItem( i18n("Export selected"), exportPO ); | 299 | mPopupMenu->insertItem( i18n("Export selected"), exportPO ); |
286 | exportPO->insertItem( i18n("As iCal (ics) file..."),this, | 300 | exportPO->insertItem( i18n("As iCal (ics) file..."),this, |
287 | SLOT(saveToFile())); | 301 | SLOT(saveToFile())); |
288 | exportPO->insertItem( i18n("As vCal (vcs) file..."),this, | 302 | exportPO->insertItem( i18n("As vCal (vcs) file..."),this, |
289 | SLOT(saveToFileVCS())); | 303 | SLOT(saveToFileVCS())); |
290 | exportPO->insertItem( i18n("Journal/Details..."),this, | 304 | exportPO->insertItem( i18n("Journal/Details..."),this, |
291 | SLOT(saveDescriptionToFile())); | 305 | SLOT(saveDescriptionToFile())); |
292 | // mPopupMenu->insertSeparator(); | 306 | // mPopupMenu->insertSeparator(); |
293 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 307 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
294 | i18n("Add Categ. to selected..."),this, | 308 | i18n("Add Categ. to selected..."),this, |
295 | SLOT(addCat()),true); | 309 | SLOT(addCat()),true); |
296 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 310 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
297 | i18n("Set Categ. for selected..."),this, | 311 | i18n("Set Categ. for selected..."),this, |
298 | SLOT(setCat()),true); | 312 | SLOT(setCat()),true); |
299 | //mPopupMenu->insertSeparator(); | 313 | //mPopupMenu->insertSeparator(); |
300 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 314 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
301 | i18n("Set alarm for selected..."),this, | 315 | i18n("Set alarm for selected..."),this, |
302 | SLOT(setAlarm()),true); | 316 | SLOT(setAlarm()),true); |
303 | 317 | ||
304 | 318 | ||
305 | #ifndef DESKTOP_VERSION | 319 | #ifndef DESKTOP_VERSION |
306 | mPopupMenu->insertSeparator(); | 320 | mPopupMenu->insertSeparator(); |
307 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), | 321 | mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), |
308 | i18n("Beam selected via IR"),this, | 322 | i18n("Beam selected via IR"),this, |
309 | SLOT(beamSelected()),true); | 323 | SLOT(beamSelected()),true); |
310 | #endif | 324 | #endif |
311 | /* | 325 | /* |
312 | mPopupMenu = new QPopupMenu; | 326 | mPopupMenu = new QPopupMenu; |
313 | mPopupMenu->insertItem(i18n("Edit Event"), this, | 327 | mPopupMenu->insertItem(i18n("Edit Event"), this, |
314 | SLOT (editEvent())); | 328 | SLOT (editEvent())); |
315 | mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, | 329 | mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, |
316 | SLOT (deleteEvent())); | 330 | SLOT (deleteEvent())); |
317 | mPopupMenu->insertSeparator(); | 331 | mPopupMenu->insertSeparator(); |
318 | mPopupMenu->insertItem(i18n("Show Dates"), this, | 332 | mPopupMenu->insertItem(i18n("Show Dates"), this, |
319 | SLOT(showDates())); | 333 | SLOT(showDates())); |
320 | mPopupMenu->insertItem(i18n("Hide Dates"), this, | 334 | mPopupMenu->insertItem(i18n("Hide Dates"), this, |
321 | SLOT(hideDates())); | 335 | SLOT(hideDates())); |
322 | */ | 336 | */ |
323 | QObject::connect(mListView,SIGNAL( newEvent()), | 337 | QObject::connect(mListView,SIGNAL( newEvent()), |
324 | this,SIGNAL(signalNewEvent())); | 338 | this,SIGNAL(signalNewEvent())); |
325 | QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), | 339 | QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), |
326 | this,SLOT(defaultItemAction(QListViewItem *))); | 340 | this,SLOT(defaultItemAction(QListViewItem *))); |
327 | QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *, | 341 | QObject::connect(mListView,SIGNAL(rightButtonPressed( QListViewItem *, |
328 | const QPoint &, int )), | 342 | const QPoint &, int )), |
329 | this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); | 343 | this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); |
330 | QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), | 344 | QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), |
331 | SLOT(processSelectionChange(QListViewItem *))); | 345 | SLOT(processSelectionChange(QListViewItem *))); |
332 | QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), | 346 | QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), |
333 | SIGNAL(showIncidenceSignal(Incidence *)) ); | 347 | SIGNAL(showIncidenceSignal(Incidence *)) ); |
334 | 348 | ||
335 | readSettings(KOGlobals::config(),"KOListView Layout"); | 349 | readSettings(KOGlobals::config(),"KOListView Layout"); |
336 | } | 350 | } |
337 | 351 | ||
338 | KOListView::~KOListView() | 352 | KOListView::~KOListView() |
339 | { | 353 | { |
340 | delete mPopupMenu; | 354 | delete mPopupMenu; |
341 | #if QT_VERSION >= 0x030000 | 355 | #if QT_VERSION >= 0x030000 |
342 | 356 | ||
343 | #else | 357 | #else |
344 | delete mKOListViewWhatsThis; | 358 | delete mKOListViewWhatsThis; |
345 | #endif | 359 | #endif |
346 | } | 360 | } |
347 | 361 | ||
348 | QString KOListView::getWhatsThisText(QPoint p) | 362 | QString KOListView::getWhatsThisText(QPoint p) |
349 | { | 363 | { |
350 | KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); | 364 | KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); |
351 | if ( item ) | 365 | if ( item ) |
352 | return KIncidenceFormatter::instance()->getFormattedText( item->data(), | 366 | return KIncidenceFormatter::instance()->getFormattedText( item->data(), |
353 | KOPrefs::instance()->mWTshowDetails, | 367 | KOPrefs::instance()->mWTshowDetails, |
354 | KOPrefs::instance()->mWTshowCreated, | 368 | KOPrefs::instance()->mWTshowCreated, |
355 | KOPrefs::instance()->mWTshowChanged); | 369 | KOPrefs::instance()->mWTshowChanged); |
356 | return i18n("That is the list view" ); | 370 | return i18n("That is the list view" ); |
357 | 371 | ||
358 | } | 372 | } |
359 | 373 | ||
360 | void KOListView::updateList() | 374 | void KOListView::updateList() |
361 | { | 375 | { |
362 | // qDebug(" KOListView::updateList() "); | 376 | // qDebug(" KOListView::updateList() "); |
363 | 377 | ||
364 | } | 378 | } |
365 | 379 | ||
366 | void KOListView::clearList() | 380 | void KOListView::clearList() |
367 | { | 381 | { |
368 | clear (); | 382 | clear (); |
369 | } | 383 | } |
370 | void KOListView::addCat( ) | 384 | void KOListView::addCat( ) |
371 | { | 385 | { |
372 | setCategories( false ); | 386 | setCategories( false ); |
373 | } | 387 | } |
374 | void KOListView::setCat() | 388 | void KOListView::setCat() |
375 | { | 389 | { |
376 | setCategories( true ); | 390 | setCategories( true ); |
377 | } | 391 | } |
378 | void KOListView::setAlarm() | 392 | void KOListView::setAlarm() |
379 | { | 393 | { |
380 | KOAlarmPrefs kap( this); | 394 | KOAlarmPrefs kap( this); |
381 | if ( !kap.exec() ) | 395 | if ( !kap.exec() ) |
382 | return; | 396 | return; |
383 | QStringList itemList; | 397 | QStringList itemList; |
384 | QPtrList<KOListViewItem> sel ; | 398 | QPtrList<KOListViewItem> sel ; |
385 | QListViewItem *qitem = mListView->firstChild (); | 399 | QListViewItem *qitem = mListView->firstChild (); |
386 | while ( qitem ) { | 400 | while ( qitem ) { |
387 | if ( qitem->isSelected() ) { | 401 | if ( qitem->isSelected() ) { |
388 | Incidence* inc = ((KOListViewItem *) qitem)->data(); | 402 | Incidence* inc = ((KOListViewItem *) qitem)->data(); |
389 | if ( inc->type() != "Journal" ) { | 403 | if ( inc->type() != "Journal" ) { |
390 | if ( inc->type() == "Todo" ) { | 404 | if ( inc->type() == "Todo" ) { |
391 | if ( ((Todo*)inc)->hasDueDate() ) | 405 | if ( ((Todo*)inc)->hasDueDate() ) |
392 | sel.append(((KOListViewItem *)qitem)); | 406 | sel.append(((KOListViewItem *)qitem)); |
393 | } else | 407 | } else |
394 | sel.append(((KOListViewItem *)qitem)); | 408 | sel.append(((KOListViewItem *)qitem)); |
395 | } | 409 | } |
396 | } | 410 | } |
397 | qitem = qitem->nextSibling(); | 411 | qitem = qitem->nextSibling(); |
398 | } | 412 | } |
399 | int count = 0; | 413 | int count = 0; |
400 | KOListViewItem * item, *temp; | 414 | KOListViewItem * item, *temp; |
401 | item = sel.first(); | 415 | item = sel.first(); |
402 | Incidence* inc; | 416 | Incidence* inc; |
403 | while ( item ) { | 417 | while ( item ) { |
404 | inc = item->data(); | 418 | inc = item->data(); |
405 | ++count; | 419 | ++count; |
406 | if (kap.mAlarmButton->isChecked()) { | 420 | if (kap.mAlarmButton->isChecked()) { |
407 | if (inc->alarms().count() == 0) | 421 | if (inc->alarms().count() == 0) |
408 | inc->newAlarm(); | 422 | inc->newAlarm(); |
409 | QPtrList<Alarm> alarms = inc->alarms(); | 423 | QPtrList<Alarm> alarms = inc->alarms(); |
410 | Alarm *alarm; | 424 | Alarm *alarm; |
411 | for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { | 425 | for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { |
412 | alarm->setEnabled(true); | 426 | alarm->setEnabled(true); |
413 | int j = kap.mAlarmTimeEdit->value()* -60; | 427 | int j = kap.mAlarmTimeEdit->value()* -60; |
414 | if (kap.mAlarmIncrCombo->currentItem() == 1) | 428 | if (kap.mAlarmIncrCombo->currentItem() == 1) |
415 | j = j * 60; | 429 | j = j * 60; |
416 | else if (kap.mAlarmIncrCombo->currentItem() == 2) | 430 | else if (kap.mAlarmIncrCombo->currentItem() == 2) |
417 | j = j * (60 * 24); | 431 | j = j * (60 * 24); |
418 | alarm->setStartOffset( j ); | 432 | alarm->setStartOffset( j ); |
419 | 433 | ||
420 | if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { | 434 | if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { |
421 | alarm->setProcedureAlarm(kap.mAlarmProgram); | 435 | alarm->setProcedureAlarm(kap.mAlarmProgram); |
422 | } | 436 | } |
423 | else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) | 437 | else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) |
424 | alarm->setAudioAlarm(kap.mAlarmSound); | 438 | alarm->setAudioAlarm(kap.mAlarmSound); |
425 | else | 439 | else |
426 | alarm->setType(Alarm::Invalid); | 440 | alarm->setType(Alarm::Invalid); |
427 | //alarm->setAudioAlarm("default"); | 441 | //alarm->setAudioAlarm("default"); |
428 | // TODO: Deal with multiple alarms | 442 | // TODO: Deal with multiple alarms |
429 | break; // For now, stop after the first alarm | 443 | break; // For now, stop after the first alarm |
430 | } | 444 | } |
431 | } else { | 445 | } else { |
432 | Alarm* alarm = inc->alarms().first(); | 446 | Alarm* alarm = inc->alarms().first(); |
433 | if ( alarm ) { | 447 | if ( alarm ) { |
434 | alarm->setEnabled(false); | 448 | alarm->setEnabled(false); |
435 | alarm->setType(Alarm::Invalid); | 449 | alarm->setType(Alarm::Invalid); |
436 | } | 450 | } |
437 | } | 451 | } |
438 | ListItemVisitor v(item, mStartDate ); | 452 | ListItemVisitor v(item, mStartDate ); |
439 | inc->accept(v); | 453 | inc->accept(v); |
440 | item = sel.next(); | 454 | item = sel.next(); |
441 | } | 455 | } |
442 | topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) ); | 456 | topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) ); |
443 | qDebug("KO: Set alarm for %d items", count); | 457 | qDebug("KO: Set alarm for %d items", count); |
444 | calendar()->reInitAlarmSettings(); | 458 | calendar()->reInitAlarmSettings(); |
445 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); | 459 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); |
446 | } | 460 | } |
447 | void KOListView::setCategories( bool removeOld ) | 461 | void KOListView::setCategories( bool removeOld ) |
448 | { | 462 | { |
449 | 463 | ||
450 | KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); | 464 | KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); |
451 | csd->setColorEnabled(); | 465 | csd->setColorEnabled(); |
452 | if (! csd->exec()) { | 466 | if (! csd->exec()) { |
453 | delete csd; | 467 | delete csd; |
454 | return; | 468 | return; |
455 | } | 469 | } |
456 | QStringList catList = csd->selectedCategories(); | 470 | QStringList catList = csd->selectedCategories(); |
457 | delete csd; | 471 | delete csd; |
458 | // if ( catList.count() == 0 ) | 472 | // if ( catList.count() == 0 ) |
459 | // return; | 473 | // return; |
460 | //catList.sort(); | 474 | //catList.sort(); |
461 | QString categoriesStr = catList.join(","); | 475 | QString categoriesStr = catList.join(","); |
462 | int i; | 476 | int i; |
463 | QStringList itemList; | 477 | QStringList itemList; |
464 | QPtrList<KOListViewItem> sel ; | 478 | QPtrList<KOListViewItem> sel ; |
465 | QListViewItem *qitem = mListView->firstChild (); | 479 | QListViewItem *qitem = mListView->firstChild (); |
466 | while ( qitem ) { | 480 | while ( qitem ) { |
467 | if ( qitem->isSelected() ) { | 481 | if ( qitem->isSelected() ) { |
468 | sel.append(((KOListViewItem *)qitem)); | 482 | sel.append(((KOListViewItem *)qitem)); |
469 | } | 483 | } |
470 | qitem = qitem->nextSibling(); | 484 | qitem = qitem->nextSibling(); |
471 | } | 485 | } |
472 | KOListViewItem * item, *temp; | 486 | KOListViewItem * item, *temp; |
473 | item = sel.first(); | 487 | item = sel.first(); |
474 | if( item ) { | 488 | if( item ) { |
475 | Incidence* inc = item->data() ; | 489 | Incidence* inc = item->data() ; |
476 | bool setSub = false; | 490 | bool setSub = false; |
477 | if( inc->type() == "Todo" && sel.count() == 1 && inc->relations().count() > 0 ) { | 491 | if( inc->type() == "Todo" && sel.count() == 1 && inc->relations().count() > 0 ) { |
478 | int result = KMessageBox::warningYesNoCancel(this, | 492 | int result = KMessageBox::warningYesNoCancel(this, |
479 | i18n("The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?").arg( inc->summary().left ( 25 ) ), | 493 | i18n("The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?").arg( inc->summary().left ( 25 ) ), |
480 | i18n("Todo has subtodos"), | 494 | i18n("Todo has subtodos"), |
481 | i18n("Yes"), | 495 | i18n("Yes"), |
482 | i18n("No")); | 496 | i18n("No")); |
483 | if (result == KMessageBox::Cancel) item = 0; | 497 | if (result == KMessageBox::Cancel) item = 0; |
484 | if (result == KMessageBox::Yes) setSub = true; | 498 | if (result == KMessageBox::Yes) setSub = true; |
485 | } | 499 | } |
486 | while ( item ) { | 500 | while ( item ) { |
487 | inc = item->data(); | 501 | inc = item->data(); |
488 | if ( removeOld ) { | 502 | if ( removeOld ) { |
489 | inc->setCategories( catList, setSub ); | 503 | inc->setCategories( catList, setSub ); |
490 | } else { | 504 | } else { |
491 | inc->addCategories( catList, setSub ); | 505 | inc->addCategories( catList, setSub ); |
492 | } | 506 | } |
493 | ListItemVisitor v(item, mStartDate ); | 507 | ListItemVisitor v(item, mStartDate ); |
494 | inc->accept(v); | 508 | inc->accept(v); |
495 | item = sel.next(); | 509 | item = sel.next(); |
496 | } | 510 | } |
497 | } | 511 | } |
498 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); | 512 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); |
499 | } | 513 | } |
500 | 514 | ||
501 | void KOListView::beamSelected() | 515 | void KOListView::beamSelected() |
502 | { | 516 | { |
503 | int icount = 0; | 517 | int icount = 0; |
504 | QPtrList<Incidence> delSel ; | 518 | QPtrList<Incidence> delSel ; |
505 | QListViewItem *item = mListView->firstChild (); | 519 | QListViewItem *item = mListView->firstChild (); |
506 | while ( item ) { | 520 | while ( item ) { |
507 | if ( item->isSelected() ) { | 521 | if ( item->isSelected() ) { |
508 | delSel.append(((KOListViewItem *)item)->data()); | 522 | delSel.append(((KOListViewItem *)item)->data()); |
509 | ++icount; | 523 | ++icount; |
510 | } | 524 | } |
511 | 525 | ||
512 | item = item->nextSibling(); | 526 | item = item->nextSibling(); |
513 | } | 527 | } |
514 | if ( icount ) { | 528 | if ( icount ) { |
515 | emit beamIncidenceList( delSel ); | 529 | emit beamIncidenceList( delSel ); |
516 | return; | 530 | return; |
517 | QString fn ; | 531 | QString fn ; |
518 | fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs"; | 532 | fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs"; |
519 | QString mes; | 533 | QString mes; |
520 | bool createbup = true; | 534 | bool createbup = true; |
521 | if ( createbup ) { | 535 | if ( createbup ) { |
522 | QString description = "\n"; | 536 | QString description = "\n"; |
523 | CalendarLocal* cal = new CalendarLocal(); | 537 | CalendarLocal* cal = new CalendarLocal(); |
524 | cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); | 538 | cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); |
525 | Incidence *incidence = delSel.first(); | 539 | Incidence *incidence = delSel.first(); |
526 | while ( incidence ) { | 540 | while ( incidence ) { |
527 | Incidence *in = incidence->clone(); | 541 | Incidence *in = incidence->clone(); |
528 | description += in->summary() + "\n"; | 542 | description += in->summary() + "\n"; |
529 | cal->addIncidence( in ); | 543 | cal->addIncidence( in ); |
530 | incidence = delSel.next(); | 544 | incidence = delSel.next(); |
531 | } | 545 | } |
532 | FileStorage storage( cal, fn, new VCalFormat ); | 546 | FileStorage storage( cal, fn, new VCalFormat ); |
533 | storage.save(); | 547 | storage.save(); |
534 | delete cal; | 548 | delete cal; |
535 | mes = i18n("KO/Pi: Ready for beaming"); | 549 | mes = i18n("KO/Pi: Ready for beaming"); |
536 | topLevelWidget()->setCaption(mes); | 550 | topLevelWidget()->setCaption(mes); |
537 | 551 | ||
538 | #ifndef DESKTOP_VERSION | 552 | #ifndef DESKTOP_VERSION |
539 | Ir *ir = new Ir( this ); | 553 | Ir *ir = new Ir( this ); |
540 | connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); | 554 | connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); |
541 | ir->send( fn, description, "text/x-vCalendar" ); | 555 | ir->send( fn, description, "text/x-vCalendar" ); |
542 | #endif | 556 | #endif |
543 | } | 557 | } |
544 | } | 558 | } |
545 | } | 559 | } |
546 | void KOListView::beamDone( Ir *ir ) | 560 | void KOListView::beamDone( Ir *ir ) |
547 | { | 561 | { |
548 | #ifndef DESKTOP_VERSION | 562 | #ifndef DESKTOP_VERSION |
549 | delete ir; | 563 | delete ir; |
550 | #endif | 564 | #endif |
551 | topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done")); | 565 | topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done")); |
552 | } | 566 | } |
553 | 567 | ||
554 | void KOListView::saveDescriptionToFile() | 568 | void KOListView::saveDescriptionToFile() |
555 | { | 569 | { |
556 | 570 | ||
557 | int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), | 571 | int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), |
558 | i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), | 572 | i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), |
559 | i18n("Continue"), i18n("Cancel"), 0, | 573 | i18n("Continue"), i18n("Cancel"), 0, |
560 | 0, 1 ); | 574 | 0, 1 ); |
561 | if ( result != 0 ) { | 575 | if ( result != 0 ) { |
562 | return; | 576 | return; |
563 | } | 577 | } |
564 | int icount = 0; | 578 | int icount = 0; |
565 | QPtrList<Incidence> delSel ; | 579 | QPtrList<Incidence> delSel ; |
566 | QListViewItem *item = mListView->firstChild (); | 580 | QListViewItem *item = mListView->firstChild (); |
567 | while ( item ) { | 581 | while ( item ) { |
568 | if ( item->isSelected() ) { | 582 | if ( item->isSelected() ) { |
569 | delSel.append(((KOListViewItem *)item)->data()); | 583 | delSel.append(((KOListViewItem *)item)->data()); |
570 | ++icount; | 584 | ++icount; |
571 | } | 585 | } |
572 | 586 | ||
573 | item = item->nextSibling(); | 587 | item = item->nextSibling(); |
574 | } | 588 | } |
575 | if ( icount ) { | 589 | if ( icount ) { |
576 | QString fn = KOPrefs::instance()->mLastSaveFile; | 590 | QString fn = KOPrefs::instance()->mLastSaveFile; |
577 | fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); | 591 | fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); |
578 | 592 | ||
579 | if ( fn == "" ) | 593 | if ( fn == "" ) |
580 | return; | 594 | return; |
581 | QFileInfo info; | 595 | QFileInfo info; |
582 | info.setFile( fn ); | 596 | info.setFile( fn ); |
583 | QString mes; | 597 | QString mes; |
584 | bool createbup = true; | 598 | bool createbup = true; |
585 | if ( info. exists() ) { | 599 | if ( info. exists() ) { |
586 | mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); | 600 | mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); |
587 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, | 601 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, |
588 | i18n("Overwrite!"), i18n("Cancel"), 0, | 602 | i18n("Overwrite!"), i18n("Cancel"), 0, |
589 | 0, 1 ); | 603 | 0, 1 ); |
590 | if ( result != 0 ) { | 604 | if ( result != 0 ) { |
591 | createbup = false; | 605 | createbup = false; |
592 | } | 606 | } |
593 | } | 607 | } |
594 | if ( createbup ) { | 608 | if ( createbup ) { |
595 | QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") + | 609 | QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") + |
596 | KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false); | 610 | KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false); |
597 | Incidence *incidence = delSel.first(); | 611 | Incidence *incidence = delSel.first(); |
598 | icount = 0; | 612 | icount = 0; |
599 | while ( incidence ) { | 613 | while ( incidence ) { |
600 | if ( incidence->type() == "Journal" ) { | 614 | if ( incidence->type() == "Journal" ) { |
601 | text += "\n************************************\n"; | 615 | text += "\n************************************\n"; |
602 | text += i18n("Journal from: ") +incidence->dtStartDateStr( false ); | 616 | text += i18n("Journal from: ") +incidence->dtStartDateStr( false ); |
603 | text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); | 617 | text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); |
604 | text +="\n" + i18n("Description: ") + "\n"+ incidence->description(); | 618 | text +="\n" + i18n("Description: ") + "\n"+ incidence->description(); |
605 | ++icount; | 619 | ++icount; |
606 | 620 | ||
607 | } else { | 621 | } else { |
608 | if ( !incidence->description().isEmpty() ) { | 622 | if ( !incidence->description().isEmpty() ) { |
609 | text += "\n************************************\n"; | 623 | text += "\n************************************\n"; |
610 | if ( incidence->type() == "Todo" ) | 624 | if ( incidence->type() == "Todo" ) |
611 | text += i18n("To-Do: "); | 625 | text += i18n("To-Do: "); |
612 | text += incidence->summary(); | 626 | text += incidence->summary(); |
613 | if ( incidence->hasStartDate() ) | 627 | if ( incidence->hasStartDate() ) |
614 | text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false ); | 628 | text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false ); |
615 | text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); | 629 | text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); |
616 | if ( !incidence->location().isEmpty() ) | 630 | if ( !incidence->location().isEmpty() ) |
617 | text += "\n" +i18n("Location: ") + incidence->location(); | 631 | text += "\n" +i18n("Location: ") + incidence->location(); |
618 | text += "\n" + i18n("Description: ") + "\n" + incidence->description(); | 632 | text += "\n" + i18n("Description: ") + "\n" + incidence->description(); |
619 | ++icount; | 633 | ++icount; |
620 | 634 | ||
621 | } | 635 | } |
622 | } | 636 | } |
623 | incidence = delSel.next(); | 637 | incidence = delSel.next(); |
624 | } | 638 | } |
625 | QFile file( fn ); | 639 | QFile file( fn ); |
626 | if (!file.open( IO_WriteOnly ) ) { | 640 | if (!file.open( IO_WriteOnly ) ) { |
627 | topLevelWidget()->setCaption(i18n("File open error - nothing saved!") ); | 641 | topLevelWidget()->setCaption(i18n("File open error - nothing saved!") ); |
628 | return; | 642 | return; |
629 | } | 643 | } |
630 | QTextStream ts( &file ); | 644 | QTextStream ts( &file ); |
631 | ts << text; | 645 | ts << text; |
632 | file.close(); | 646 | file.close(); |
633 | //qDebug("%s ", text.latin1()); | 647 | //qDebug("%s ", text.latin1()); |
634 | mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount ); | 648 | mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount ); |
635 | KOPrefs::instance()->mLastSaveFile = fn; | 649 | KOPrefs::instance()->mLastSaveFile = fn; |
636 | topLevelWidget()->setCaption(mes); | 650 | topLevelWidget()->setCaption(mes); |
637 | } | 651 | } |
638 | } | 652 | } |
639 | } | 653 | } |
640 | void KOListView::saveToFileVCS() | 654 | void KOListView::saveToFileVCS() |
641 | { | 655 | { |
642 | writeToFile( false ); | 656 | writeToFile( false ); |
643 | } | 657 | } |
644 | void KOListView::saveToFile() | 658 | void KOListView::saveToFile() |
645 | { | 659 | { |
646 | writeToFile( true ); | 660 | writeToFile( true ); |
647 | } | 661 | } |
648 | void KOListView::writeToFile( bool iCal ) | 662 | void KOListView::writeToFile( bool iCal ) |
649 | { | 663 | { |
650 | 664 | ||
651 | int icount = 0; | 665 | int icount = 0; |
652 | QPtrList<Incidence> delSel ; | 666 | QPtrList<Incidence> delSel ; |
653 | QListViewItem *item = mListView->firstChild (); | 667 | QListViewItem *item = mListView->firstChild (); |
654 | bool journal = iCal; // warn only for vCal | 668 | bool journal = iCal; // warn only for vCal |
655 | while ( item ) { | 669 | while ( item ) { |
656 | if ( item->isSelected() ) { | 670 | if ( item->isSelected() ) { |
657 | if ( !journal ) | 671 | if ( !journal ) |
658 | if ( ((KOListViewItem *)item)->data()->type() == "Journal") | 672 | if ( ((KOListViewItem *)item)->data()->type() == "Journal") |
659 | journal = true; | 673 | journal = true; |
660 | delSel.append(((KOListViewItem *)item)->data()); | 674 | delSel.append(((KOListViewItem *)item)->data()); |
661 | ++icount; | 675 | ++icount; |
662 | } | 676 | } |
663 | 677 | ||
664 | item = item->nextSibling(); | 678 | item = item->nextSibling(); |
665 | } | 679 | } |
666 | if ( !iCal && journal ) { | 680 | if ( !iCal && journal ) { |
667 | int result = KMessageBox::warningContinueCancel(this, | 681 | int result = KMessageBox::warningContinueCancel(this, |
668 | i18n("The journal entries can not be\nexported to a vCalendar file."), | 682 | i18n("The journal entries can not be\nexported to a vCalendar file."), |
669 | i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), | 683 | i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), |
670 | true); | 684 | true); |
671 | if (result != KMessageBox::Continue) return; | 685 | if (result != KMessageBox::Continue) return; |
672 | } | 686 | } |
673 | if ( icount ) { | 687 | if ( icount ) { |
674 | QString fn = KOPrefs::instance()->mLastSaveFile; | 688 | QString fn = KOPrefs::instance()->mLastSaveFile; |
675 | QString extension; | 689 | QString extension; |
676 | if ( iCal ) { | 690 | if ( iCal ) { |
677 | if ( fn.right( 4 ).lower() == ".vcs" ) { | 691 | if ( fn.right( 4 ).lower() == ".vcs" ) { |
678 | fn = fn.left( fn.length() -3) + "ics"; | 692 | fn = fn.left( fn.length() -3) + "ics"; |
679 | } | 693 | } |
680 | } else { | 694 | } else { |
681 | if ( fn.right( 4 ).lower() == ".ics" ) { | 695 | if ( fn.right( 4 ).lower() == ".ics" ) { |
682 | fn = fn.left( fn.length() -3) + "vcs"; | 696 | fn = fn.left( fn.length() -3) + "vcs"; |
683 | } | 697 | } |
684 | } | 698 | } |
685 | fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); | 699 | fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); |
686 | 700 | ||
687 | if ( fn == "" ) | 701 | if ( fn == "" ) |
688 | return; | 702 | return; |
689 | QFileInfo info; | 703 | QFileInfo info; |
690 | info.setFile( fn ); | 704 | info.setFile( fn ); |
691 | QString mes; | 705 | QString mes; |
692 | bool createbup = true; | 706 | bool createbup = true; |
693 | if ( info. exists() ) { | 707 | if ( info. exists() ) { |
694 | mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); | 708 | mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); |
695 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, | 709 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, |
696 | i18n("Overwrite!"), i18n("Cancel"), 0, | 710 | i18n("Overwrite!"), i18n("Cancel"), 0, |
697 | 0, 1 ); | 711 | 0, 1 ); |
698 | if ( result != 0 ) { | 712 | if ( result != 0 ) { |
699 | createbup = false; | 713 | createbup = false; |
700 | } | 714 | } |
701 | } | 715 | } |
702 | if ( createbup ) { | 716 | if ( createbup ) { |
703 | CalendarLocal cal; | 717 | CalendarLocal cal; |
704 | cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); | 718 | cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); |
705 | Incidence *incidence = delSel.first(); | 719 | Incidence *incidence = delSel.first(); |
706 | while ( incidence ) { | 720 | while ( incidence ) { |
707 | cal.addIncidence( incidence->clone() ); | 721 | cal.addIncidence( incidence->clone() ); |
708 | incidence = delSel.next(); | 722 | incidence = delSel.next(); |
709 | } | 723 | } |
710 | if ( iCal ) { | 724 | if ( iCal ) { |
711 | ICalFormat format; | 725 | ICalFormat format; |
712 | format.save( &cal, fn ); | 726 | format.save( &cal, fn ); |
713 | } else { | 727 | } else { |
714 | 728 | ||
715 | VCalFormat format; | 729 | VCalFormat format; |
716 | format.save( &cal, fn ); | 730 | format.save( &cal, fn ); |
717 | } | 731 | } |
718 | mes = i18n("KO/Pi:Saved %1").arg(fn ); | 732 | mes = i18n("KO/Pi:Saved %1").arg(fn ); |
719 | KOPrefs::instance()->mLastSaveFile = fn; | 733 | KOPrefs::instance()->mLastSaveFile = fn; |
720 | topLevelWidget()->setCaption(mes); | 734 | topLevelWidget()->setCaption(mes); |
721 | } | 735 | } |
722 | } | 736 | } |
723 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); | 737 | QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); |
724 | } | 738 | } |
739 | void KOListView::hideAll() | ||
740 | { | ||
741 | QPtrList<QListViewItem> delSel ; | ||
742 | QListViewItem *item = mListView->firstChild (); | ||
743 | while ( item ) { | ||
744 | if ( item->isSelected() ) { | ||
745 | delSel.append(item); | ||
746 | } | ||
747 | item = item->nextSibling(); | ||
748 | } | ||
749 | item = delSel.first() ; | ||
750 | while ( item ) { | ||
751 | QListViewItem * del = item; | ||
752 | item = delSel.next(); | ||
753 | delete del; | ||
754 | } | ||
755 | } | ||
756 | void KOListView::printList() | ||
757 | { | ||
758 | mListView->printList(); | ||
759 | } | ||
725 | void KOListView::deleteAll() | 760 | void KOListView::deleteAll() |
726 | { | 761 | { |
727 | int icount = 0; | 762 | int icount = 0; |
728 | QPtrList<Incidence> delSel ; | 763 | QPtrList<Incidence> delSel ; |
729 | QListViewItem *item = mListView->firstChild (); | 764 | QListViewItem *item = mListView->firstChild (); |
730 | while ( item ) { | 765 | while ( item ) { |
731 | if ( item->isSelected() ) { | 766 | if ( item->isSelected() ) { |
732 | delSel.append(((KOListViewItem *)item)->data()); | 767 | delSel.append(((KOListViewItem *)item)->data()); |
733 | ++icount; | 768 | ++icount; |
734 | } | 769 | } |
735 | 770 | ||
736 | item = item->nextSibling(); | 771 | item = item->nextSibling(); |
737 | } | 772 | } |
738 | if ( icount ) { | 773 | if ( icount ) { |
739 | Incidence *incidence = delSel.first(); | 774 | Incidence *incidence = delSel.first(); |
740 | Incidence *toDelete; | 775 | Incidence *toDelete; |
741 | KOPrefs *p = KOPrefs::instance(); | 776 | KOPrefs *p = KOPrefs::instance(); |
742 | bool confirm = p->mConfirm; | 777 | bool confirm = p->mConfirm; |
743 | QString mess; | 778 | QString mess; |
744 | mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); | 779 | mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); |
745 | if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) { | 780 | if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) { |
746 | p->mConfirm = false; | 781 | p->mConfirm = false; |
747 | int delCounter = 0; | 782 | int delCounter = 0; |
748 | QDialog dia ( this, "p-dialog", true ); | 783 | QDialog dia ( this, "p-dialog", true ); |
749 | QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); | 784 | QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); |
750 | QVBoxLayout lay( &dia ); | 785 | QVBoxLayout lay( &dia ); |
751 | lay.setMargin(7); | 786 | lay.setMargin(7); |
752 | lay.setSpacing(7); | 787 | lay.setSpacing(7); |
753 | lay.addWidget( &lab); | 788 | lay.addWidget( &lab); |
754 | QProgressBar bar( icount, &dia ); | 789 | QProgressBar bar( icount, &dia ); |
755 | lay.addWidget( &bar); | 790 | lay.addWidget( &bar); |
756 | int w = 220; | 791 | int w = 220; |
757 | int h = 50; | 792 | int h = 50; |
758 | int dw = QApplication::desktop()->width(); | 793 | int dw = QApplication::desktop()->width(); |
759 | int dh = QApplication::desktop()->height(); | 794 | int dh = QApplication::desktop()->height(); |
760 | dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); | 795 | dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); |
761 | //dia.resize( 240,50 ); | 796 | //dia.resize( 240,50 ); |
762 | dia.show(); | 797 | dia.show(); |
763 | 798 | ||
764 | while ( incidence ) { | 799 | while ( incidence ) { |
765 | bar.setProgress( delCounter ); | 800 | bar.setProgress( delCounter ); |
766 | mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); | 801 | mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); |
767 | dia.setCaption( mess ); | 802 | dia.setCaption( mess ); |
768 | qApp->processEvents(); | 803 | qApp->processEvents(); |
769 | toDelete = (incidence); | 804 | toDelete = (incidence); |
770 | incidence = delSel.next(); | 805 | incidence = delSel.next(); |
771 | emit deleteIncidenceSignal(toDelete ); | 806 | emit deleteIncidenceSignal(toDelete ); |
772 | if ( dia.result() != 0 ) | 807 | if ( dia.result() != 0 ) |
773 | break; | 808 | break; |
774 | 809 | ||
775 | } | 810 | } |
776 | mess = mess.sprintf( i18n("%d items remaining in list."), count() ); | 811 | mess = mess.sprintf( i18n("%d items remaining in list."), count() ); |
777 | topLevelWidget ()->setCaption( mess ); | 812 | topLevelWidget ()->setCaption( mess ); |
778 | p->mConfirm = confirm; | 813 | p->mConfirm = confirm; |
779 | } | 814 | } |
780 | } | 815 | } |
781 | 816 | ||
782 | 817 | ||
783 | } | 818 | } |
784 | int KOListView::maxDatesHint() | 819 | int KOListView::maxDatesHint() |
785 | { | 820 | { |
786 | return 0; | 821 | return 0; |
787 | } | 822 | } |
788 | 823 | ||
789 | int KOListView::currentDateCount() | 824 | int KOListView::currentDateCount() |
790 | { | 825 | { |
791 | return 0; | 826 | return 0; |
792 | } | 827 | } |
793 | 828 | ||
794 | QPtrList<Incidence> KOListView::selectedIncidences() | 829 | QPtrList<Incidence> KOListView::selectedIncidences() |
795 | { | 830 | { |
796 | QPtrList<Incidence> eventList; | 831 | QPtrList<Incidence> eventList; |
797 | QListViewItem *item = mListView->firstChild (); | 832 | QListViewItem *item = mListView->firstChild (); |
798 | while ( item ) { | 833 | while ( item ) { |
799 | if ( item->isSelected() ) { | 834 | if ( item->isSelected() ) { |
800 | eventList.append(((KOListViewItem *)item)->data()); | 835 | eventList.append(((KOListViewItem *)item)->data()); |
801 | } | 836 | } |
802 | 837 | ||
803 | item = item->nextSibling(); | 838 | item = item->nextSibling(); |
804 | } | 839 | } |
805 | 840 | ||
806 | // // QListViewItem *item = mListView->selectedItem(); | 841 | // // QListViewItem *item = mListView->selectedItem(); |
807 | //if (item) eventList.append(((KOListViewItem *)item)->data()); | 842 | //if (item) eventList.append(((KOListViewItem *)item)->data()); |
808 | 843 | ||
809 | return eventList; | 844 | return eventList; |
810 | } | 845 | } |
811 | 846 | ||
812 | DateList KOListView::selectedDates() | 847 | DateList KOListView::selectedDates() |
813 | { | 848 | { |
814 | DateList eventList; | 849 | DateList eventList; |
815 | return eventList; | 850 | return eventList; |
816 | } | 851 | } |
817 | 852 | ||
818 | void KOListView::showDates(bool show) | 853 | void KOListView::showDates(bool show) |
819 | { | 854 | { |
820 | // Shouldn't we set it to a value greater 0? When showDates is called with | 855 | // Shouldn't we set it to a value greater 0? When showDates is called with |
821 | // show == true at first, then the columnwidths are set to zero. | 856 | // show == true at first, then the columnwidths are set to zero. |
822 | static int oldColWidth1 = 0; | 857 | static int oldColWidth1 = 0; |
823 | static int oldColWidth3 = 0; | 858 | static int oldColWidth3 = 0; |
824 | 859 | ||
825 | if (!show) { | 860 | if (!show) { |
826 | oldColWidth1 = mListView->columnWidth(1); | 861 | oldColWidth1 = mListView->columnWidth(1); |
827 | oldColWidth3 = mListView->columnWidth(3); | 862 | oldColWidth3 = mListView->columnWidth(3); |
828 | mListView->setColumnWidth(1, 0); | 863 | mListView->setColumnWidth(1, 0); |
829 | mListView->setColumnWidth(3, 0); | 864 | mListView->setColumnWidth(3, 0); |
830 | } else { | 865 | } else { |
831 | mListView->setColumnWidth(1, oldColWidth1); | 866 | mListView->setColumnWidth(1, oldColWidth1); |
832 | mListView->setColumnWidth(3, oldColWidth3); | 867 | mListView->setColumnWidth(3, oldColWidth3); |
833 | } | 868 | } |
834 | mListView->repaint(); | 869 | mListView->repaint(); |
835 | } | 870 | } |
836 | 871 | ||
837 | void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, | 872 | void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, |
838 | const QDate &td) | 873 | const QDate &td) |
839 | { | 874 | { |
840 | #ifndef KORG_NOPRINTER | 875 | #ifndef KORG_NOPRINTER |
841 | calPrinter->preview(CalPrinter::Day, fd, td); | 876 | calPrinter->preview(CalPrinter::Day, fd, td); |
842 | #endif | 877 | #endif |
843 | } | 878 | } |
844 | 879 | ||
845 | void KOListView::showDates() | 880 | void KOListView::showDates() |
846 | { | 881 | { |
847 | showDates(true); | 882 | showDates(true); |
848 | } | 883 | } |
849 | 884 | ||
850 | void KOListView::hideDates() | 885 | void KOListView::hideDates() |
851 | { | 886 | { |
852 | showDates(false); | 887 | showDates(false); |
853 | } | 888 | } |
854 | 889 | ||
855 | void KOListView::resetFocus() | 890 | void KOListView::resetFocus() |
856 | { | 891 | { |
857 | topLevelWidget()->setActiveWindow(); | 892 | topLevelWidget()->setActiveWindow(); |
858 | topLevelWidget()->raise(); | 893 | topLevelWidget()->raise(); |
859 | mListView->setFocus(); | 894 | mListView->setFocus(); |
860 | } | 895 | } |
861 | void KOListView::updateView() | 896 | void KOListView::updateView() |
862 | { | 897 | { |
863 | mListView->setFocus(); | 898 | mListView->setFocus(); |
864 | if ( mListView->firstChild () ) | 899 | if ( mListView->firstChild () ) |
865 | mListView->setCurrentItem( mListView->firstChild () ); | 900 | mListView->setCurrentItem( mListView->firstChild () ); |
866 | } | 901 | } |
867 | void KOListView::updateConfig() | 902 | void KOListView::updateConfig() |
868 | { | 903 | { |
869 | 904 | ||
870 | mListView->setFont ( KOPrefs::instance()->mListViewFont ); | 905 | mListView->setFont ( KOPrefs::instance()->mListViewFont ); |
871 | updateView(); | 906 | updateView(); |
872 | 907 | ||
873 | } | 908 | } |
874 | void KOListView::setStartDate(const QDate &start) | 909 | void KOListView::setStartDate(const QDate &start) |
875 | { | 910 | { |
876 | mStartDate = start; | 911 | mStartDate = start; |
877 | } | 912 | } |
878 | 913 | ||
879 | void KOListView::showDates(const QDate &start, const QDate &end) | 914 | void KOListView::showDates(const QDate &start, const QDate &end) |
880 | { | 915 | { |
881 | clear(); | 916 | clear(); |
882 | mStartDate = start; | 917 | mStartDate = start; |
883 | QDate date = start; | 918 | QDate date = start; |
884 | QPtrList<Journal> j_list; | 919 | QPtrList<Journal> j_list; |
885 | while( date <= end ) { | 920 | while( date <= end ) { |
886 | addEvents(calendar()->events(date)); | 921 | addEvents(calendar()->events(date)); |
887 | addTodos(calendar()->todos(date)); | 922 | addTodos(calendar()->todos(date)); |
888 | Journal* jo = calendar()->journal(date); | 923 | Journal* jo = calendar()->journal(date); |
889 | if ( jo ) | 924 | if ( jo ) |
890 | j_list.append( jo ); | 925 | j_list.append( jo ); |
891 | date = date.addDays( 1 ); | 926 | date = date.addDays( 1 ); |
892 | } | 927 | } |
893 | addJournals(j_list); | 928 | addJournals(j_list); |
894 | emit incidenceSelected( 0 ); | 929 | emit incidenceSelected( 0 ); |
895 | updateView(); | 930 | updateView(); |
896 | 931 | ||
897 | } | 932 | } |
898 | 933 | ||
899 | void KOListView::addEvents(QPtrList<Event> eventList) | 934 | void KOListView::addEvents(QPtrList<Event> eventList) |
900 | { | 935 | { |
901 | 936 | ||
902 | Event *ev; | 937 | Event *ev; |
903 | for(ev = eventList.first(); ev; ev = eventList.next()) { | 938 | for(ev = eventList.first(); ev; ev = eventList.next()) { |
904 | addIncidence(ev); | 939 | addIncidence(ev); |
905 | } | 940 | } |
906 | if ( !mListView->currentItem() ){ | 941 | if ( !mListView->currentItem() ){ |
907 | updateView(); | 942 | updateView(); |
908 | } | 943 | } |
909 | } | 944 | } |
910 | 945 | ||
911 | void KOListView::addTodos(QPtrList<Todo> eventList) | 946 | void KOListView::addTodos(QPtrList<Todo> eventList) |
912 | { | 947 | { |
913 | Todo *ev; | 948 | Todo *ev; |
914 | for(ev = eventList.first(); ev; ev = eventList.next()) { | 949 | for(ev = eventList.first(); ev; ev = eventList.next()) { |
915 | addIncidence(ev); | 950 | addIncidence(ev); |
916 | } | 951 | } |
917 | if ( !mListView->currentItem() ){ | 952 | if ( !mListView->currentItem() ){ |
918 | updateView(); | 953 | updateView(); |
919 | } | 954 | } |
920 | } | 955 | } |
921 | void KOListView::addJournals(QPtrList<Journal> eventList) | 956 | void KOListView::addJournals(QPtrList<Journal> eventList) |
922 | { | 957 | { |
923 | Journal *ev; | 958 | Journal *ev; |
924 | for(ev = eventList.first(); ev; ev = eventList.next()) { | 959 | for(ev = eventList.first(); ev; ev = eventList.next()) { |
925 | addIncidence(ev); | 960 | addIncidence(ev); |
926 | } | 961 | } |
927 | if ( !mListView->currentItem() ){ | 962 | if ( !mListView->currentItem() ){ |
928 | updateView(); | 963 | updateView(); |
929 | } | 964 | } |
930 | } | 965 | } |
931 | 966 | ||
932 | void KOListView::addIncidence(Incidence *incidence) | 967 | void KOListView::addIncidence(Incidence *incidence) |
933 | { | 968 | { |
934 | if ( mUidDict.find( incidence->uid() ) ) return; | 969 | if ( mUidDict.find( incidence->uid() ) ) return; |
935 | 970 | ||
936 | // mListView->setFont ( KOPrefs::instance()->mListViewFont ); | 971 | // mListView->setFont ( KOPrefs::instance()->mListViewFont ); |
937 | mUidDict.insert( incidence->uid(), incidence ); | 972 | mUidDict.insert( incidence->uid(), incidence ); |
938 | KOListViewItem *item = new KOListViewItem( incidence, mListView ); | 973 | KOListViewItem *item = new KOListViewItem( incidence, mListView ); |
939 | ListItemVisitor v(item, mStartDate ); | 974 | ListItemVisitor v(item, mStartDate ); |
940 | if (incidence->accept(v)) { | 975 | if (incidence->accept(v)) { |
941 | return; | 976 | return; |
942 | } | 977 | } |
943 | else delete item; | 978 | else delete item; |
944 | } | 979 | } |
945 | 980 | ||
946 | void KOListView::showEvents(QPtrList<Event> eventList) | 981 | void KOListView::showEvents(QPtrList<Event> eventList) |
947 | { | 982 | { |
948 | clear(); | 983 | clear(); |
949 | 984 | ||
950 | addEvents(eventList); | 985 | addEvents(eventList); |
951 | 986 | ||
952 | // After new creation of list view no events are selected. | 987 | // After new creation of list view no events are selected. |
953 | emit incidenceSelected( 0 ); | 988 | emit incidenceSelected( 0 ); |
954 | } | 989 | } |
955 | int KOListView::count() | 990 | int KOListView::count() |
956 | { | 991 | { |
957 | return mListView->childCount(); | 992 | return mListView->childCount(); |
958 | } | 993 | } |
959 | 994 | ||
960 | void KOListView::changeEventDisplay(Event *event, int action) | 995 | void KOListView::changeEventDisplay(Event *event, int action) |
961 | { | 996 | { |
962 | KOListViewItem *item; | 997 | KOListViewItem *item; |
963 | 998 | ||
964 | switch(action) { | 999 | switch(action) { |
965 | case KOGlobals::EVENTADDED: | 1000 | case KOGlobals::EVENTADDED: |
966 | addIncidence( event ); | 1001 | addIncidence( event ); |
967 | break; | 1002 | break; |
968 | case KOGlobals::EVENTEDITED: | 1003 | case KOGlobals::EVENTEDITED: |
969 | item = getItemForEvent(event); | 1004 | item = getItemForEvent(event); |
970 | if (item) { | 1005 | if (item) { |
971 | mUidDict.remove( event->uid() ); | 1006 | mUidDict.remove( event->uid() ); |
972 | delete item; | 1007 | delete item; |
973 | addIncidence( event ); | 1008 | addIncidence( event ); |
974 | } | 1009 | } |
975 | break; | 1010 | break; |
976 | case KOGlobals::EVENTDELETED: | 1011 | case KOGlobals::EVENTDELETED: |
977 | item = getItemForEvent(event); | 1012 | item = getItemForEvent(event); |
978 | if (item) { | 1013 | if (item) { |
979 | mUidDict.remove( event->uid() ); | 1014 | mUidDict.remove( event->uid() ); |
980 | delete item; | 1015 | delete item; |
@@ -1034,256 +1069,303 @@ void KOListView::writeSettings(KConfig *config, QString setting) | |||
1034 | void KOListView::processSelectionChange(QListViewItem *) | 1069 | void KOListView::processSelectionChange(QListViewItem *) |
1035 | { | 1070 | { |
1036 | 1071 | ||
1037 | KOListViewItem *item = | 1072 | KOListViewItem *item = |
1038 | static_cast<KOListViewItem *>( mListView->currentItem() ); | 1073 | static_cast<KOListViewItem *>( mListView->currentItem() ); |
1039 | 1074 | ||
1040 | if ( !item ) { | 1075 | if ( !item ) { |
1041 | emit incidenceSelected( 0 ); | 1076 | emit incidenceSelected( 0 ); |
1042 | } else { | 1077 | } else { |
1043 | emit incidenceSelected( item->data() ); | 1078 | emit incidenceSelected( item->data() ); |
1044 | } | 1079 | } |
1045 | } | 1080 | } |
1046 | 1081 | ||
1047 | void KOListView::clearSelection() | 1082 | void KOListView::clearSelection() |
1048 | { | 1083 | { |
1049 | mListView->selectAll( false ); | 1084 | mListView->selectAll( false ); |
1050 | } | 1085 | } |
1051 | void KOListView::allSelection() | 1086 | void KOListView::allSelection() |
1052 | { | 1087 | { |
1053 | mListView->selectAll( true ); | 1088 | mListView->selectAll( true ); |
1054 | } | 1089 | } |
1055 | 1090 | ||
1056 | void KOListView::clear() | 1091 | void KOListView::clear() |
1057 | { | 1092 | { |
1058 | mListView->clear(); | 1093 | mListView->clear(); |
1059 | mUidDict.clear(); | 1094 | mUidDict.clear(); |
1060 | } | 1095 | } |
1061 | 1096 | ||
1062 | Incidence* KOListView::currentItem() | 1097 | Incidence* KOListView::currentItem() |
1063 | { | 1098 | { |
1064 | if ( mListView->currentItem() ) | 1099 | if ( mListView->currentItem() ) |
1065 | return ((KOListViewItem*) mListView->currentItem())->data(); | 1100 | return ((KOListViewItem*) mListView->currentItem())->data(); |
1066 | return 0; | 1101 | return 0; |
1067 | } | 1102 | } |
1068 | void KOListView::keyPressEvent ( QKeyEvent *e) | 1103 | void KOListView::keyPressEvent ( QKeyEvent *e) |
1069 | { | 1104 | { |
1070 | 1105 | ||
1071 | if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) { | 1106 | if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) { |
1072 | deleteAll(); | 1107 | deleteAll(); |
1073 | return; | 1108 | return; |
1074 | } | 1109 | } |
1075 | 1110 | ||
1076 | e->ignore(); | 1111 | e->ignore(); |
1077 | } | 1112 | } |
1078 | void KOListViewListView::keyPressEvent ( QKeyEvent *e) | 1113 | void KOListViewListView::keyPressEvent ( QKeyEvent *e) |
1079 | { | 1114 | { |
1080 | 1115 | ||
1081 | switch ( e->key() ) { | 1116 | switch ( e->key() ) { |
1082 | case Qt::Key_Down: | 1117 | case Qt::Key_Down: |
1083 | if ( e->state() == ShiftButton ) { | 1118 | if ( e->state() == ShiftButton ) { |
1084 | QListViewItem* cn = currentItem(); | 1119 | QListViewItem* cn = currentItem(); |
1085 | if ( !cn ) | 1120 | if ( !cn ) |
1086 | cn = firstChild(); | 1121 | cn = firstChild(); |
1087 | if ( !cn ) | 1122 | if ( !cn ) |
1088 | return; | 1123 | return; |
1089 | while ( cn->nextSibling() ) | 1124 | while ( cn->nextSibling() ) |
1090 | cn = cn->nextSibling(); | 1125 | cn = cn->nextSibling(); |
1091 | setCurrentItem ( cn ); | 1126 | setCurrentItem ( cn ); |
1092 | ensureItemVisible ( cn ); | 1127 | ensureItemVisible ( cn ); |
1093 | 1128 | ||
1094 | e->accept(); | 1129 | e->accept(); |
1095 | return; | 1130 | return; |
1096 | } | 1131 | } |
1097 | if ( e->state() == ControlButton ) { | 1132 | if ( e->state() == ControlButton ) { |
1098 | int count = childCount (); | 1133 | int count = childCount (); |
1099 | int jump = count / 5; | 1134 | int jump = count / 5; |
1100 | QListViewItem* cn; | 1135 | QListViewItem* cn; |
1101 | cn = currentItem(); | 1136 | cn = currentItem(); |
1102 | if ( ! cn ) | 1137 | if ( ! cn ) |
1103 | return; | 1138 | return; |
1104 | if ( jump == 0 ) | 1139 | if ( jump == 0 ) |
1105 | jump = 1; | 1140 | jump = 1; |
1106 | while ( jump && cn->nextSibling() ) { | 1141 | while ( jump && cn->nextSibling() ) { |
1107 | cn = cn->nextSibling(); | 1142 | cn = cn->nextSibling(); |
1108 | --jump; | 1143 | --jump; |
1109 | } | 1144 | } |
1110 | setCurrentItem ( cn ); | 1145 | setCurrentItem ( cn ); |
1111 | ensureItemVisible ( cn ); | 1146 | ensureItemVisible ( cn ); |
1112 | 1147 | ||
1113 | } else | 1148 | } else |
1114 | QListView::keyPressEvent ( e ) ; | 1149 | QListView::keyPressEvent ( e ) ; |
1115 | e->accept(); | 1150 | e->accept(); |
1116 | break; | 1151 | break; |
1117 | 1152 | ||
1118 | case Qt::Key_Up: | 1153 | case Qt::Key_Up: |
1119 | if ( e->state() == ShiftButton ) { | 1154 | if ( e->state() == ShiftButton ) { |
1120 | QListViewItem* cn = firstChild(); | 1155 | QListViewItem* cn = firstChild(); |
1121 | if ( cn ) { | 1156 | if ( cn ) { |
1122 | setCurrentItem ( cn ); | 1157 | setCurrentItem ( cn ); |
1123 | ensureItemVisible ( cn ); | 1158 | ensureItemVisible ( cn ); |
1124 | } | 1159 | } |
1125 | e->accept(); | 1160 | e->accept(); |
1126 | return; | 1161 | return; |
1127 | } | 1162 | } |
1128 | if ( e->state() == ControlButton ) { | 1163 | if ( e->state() == ControlButton ) { |
1129 | int count = childCount (); | 1164 | int count = childCount (); |
1130 | int jump = count / 5; | 1165 | int jump = count / 5; |
1131 | QListViewItem* cn; | 1166 | QListViewItem* cn; |
1132 | cn = currentItem(); | 1167 | cn = currentItem(); |
1133 | if ( ! cn ) | 1168 | if ( ! cn ) |
1134 | return; | 1169 | return; |
1135 | if ( jump == 0 ) | 1170 | if ( jump == 0 ) |
1136 | jump = 1; | 1171 | jump = 1; |
1137 | while ( jump && cn->itemAbove ()) { | 1172 | while ( jump && cn->itemAbove ()) { |
1138 | cn = cn->itemAbove (); | 1173 | cn = cn->itemAbove (); |
1139 | --jump; | 1174 | --jump; |
1140 | } | 1175 | } |
1141 | setCurrentItem ( cn ); | 1176 | setCurrentItem ( cn ); |
1142 | ensureItemVisible ( cn ); | 1177 | ensureItemVisible ( cn ); |
1143 | } else | 1178 | } else |
1144 | QListView::keyPressEvent ( e ) ; | 1179 | QListView::keyPressEvent ( e ) ; |
1145 | e->accept(); | 1180 | e->accept(); |
1146 | break; | 1181 | break; |
1147 | case Qt::Key_I: { | 1182 | case Qt::Key_I: { |
1148 | QListViewItem* cn; | 1183 | QListViewItem* cn; |
1149 | cn = currentItem(); | 1184 | cn = currentItem(); |
1150 | if ( cn ) { | 1185 | if ( cn ) { |
1151 | KOListViewItem* ci = (KOListViewItem*)( cn ); | 1186 | KOListViewItem* ci = (KOListViewItem*)( cn ); |
1152 | if ( ci ){ | 1187 | if ( ci ){ |
1153 | //emit showIncidence( ci->data()); | 1188 | //emit showIncidence( ci->data()); |
1154 | cn = cn->nextSibling(); | 1189 | cn = cn->nextSibling(); |
1155 | if ( cn ) { | 1190 | if ( cn ) { |
1156 | setCurrentItem ( cn ); | 1191 | setCurrentItem ( cn ); |
1157 | ensureItemVisible ( cn ); | 1192 | ensureItemVisible ( cn ); |
1158 | } | 1193 | } |
1159 | emit showIncidence( ci->data()); | 1194 | emit showIncidence( ci->data()); |
1160 | } | 1195 | } |
1161 | } | 1196 | } |
1162 | e->accept(); | 1197 | e->accept(); |
1163 | } | 1198 | } |
1164 | break; | 1199 | break; |
1165 | case Qt::Key_Return: | 1200 | case Qt::Key_Return: |
1166 | case Qt::Key_Enter: | 1201 | case Qt::Key_Enter: |
1167 | { | 1202 | { |
1168 | QListViewItem* cn; | 1203 | QListViewItem* cn; |
1169 | cn = currentItem(); | 1204 | cn = currentItem(); |
1170 | if ( cn ) { | 1205 | if ( cn ) { |
1171 | KOListViewItem* ci = (KOListViewItem*)( cn ); | 1206 | KOListViewItem* ci = (KOListViewItem*)( cn ); |
1172 | if ( ci ){ | 1207 | if ( ci ){ |
1173 | if ( e->state() == ShiftButton ) | 1208 | if ( e->state() == ShiftButton ) |
1174 | ci->setSelected( false ); | 1209 | ci->setSelected( false ); |
1175 | else | 1210 | else |
1176 | ci->setSelected( true ); | 1211 | ci->setSelected( true ); |
1177 | cn = cn->nextSibling(); | 1212 | cn = cn->nextSibling(); |
1178 | if ( cn ) { | 1213 | if ( cn ) { |
1179 | setCurrentItem ( cn ); | 1214 | setCurrentItem ( cn ); |
1180 | ensureItemVisible ( cn ); | 1215 | ensureItemVisible ( cn ); |
1181 | } | 1216 | } |
1182 | } | 1217 | } |
1183 | } | 1218 | } |
1184 | e->accept(); | 1219 | e->accept(); |
1185 | } | 1220 | } |
1186 | break; | 1221 | break; |
1187 | default: | 1222 | default: |
1188 | e->ignore(); | 1223 | e->ignore(); |
1189 | } | 1224 | } |
1190 | } | 1225 | } |
1191 | KOListViewListView::KOListViewListView(KOListView * lv ) | 1226 | KOListViewListView::KOListViewListView(KOListView * lv ) |
1192 | : KListView( lv, "kolistlistview", false ) | 1227 | : KListView( lv, "kolistlistview", false ) |
1193 | { | 1228 | { |
1194 | mYMousePos = 0; | 1229 | mYMousePos = 0; |
1195 | mPopupTimer = new QTimer(this); | 1230 | mPopupTimer = new QTimer(this); |
1196 | connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu())); | 1231 | connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu())); |
1197 | #ifndef DESKTOP_VERSION | 1232 | #ifndef DESKTOP_VERSION |
1198 | //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); | 1233 | //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); |
1199 | #endif | 1234 | #endif |
1200 | setSelectionMode( QListView::Multi ); | 1235 | setSelectionMode( QListView::Multi ); |
1201 | setMultiSelection( true); | 1236 | setMultiSelection( true); |
1202 | } | 1237 | } |
1203 | bool KOListViewListView::hasMultiSelection(QListViewItem* item) | 1238 | bool KOListViewListView::hasMultiSelection(QListViewItem* item) |
1204 | { | 1239 | { |
1205 | int selCount = 0; | 1240 | int selCount = 0; |
1206 | QListViewItem *qitem = firstChild (); | 1241 | QListViewItem *qitem = firstChild (); |
1207 | while ( qitem ) { | 1242 | while ( qitem ) { |
1208 | if ( qitem->isSelected() && item != qitem ) | 1243 | if ( qitem->isSelected() && item != qitem ) |
1209 | return true; | 1244 | return true; |
1210 | qitem = qitem->nextSibling(); | 1245 | qitem = qitem->nextSibling(); |
1211 | } | 1246 | } |
1212 | return false; | 1247 | return false; |
1213 | } | 1248 | } |
1214 | void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e) | 1249 | void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e) |
1215 | { | 1250 | { |
1216 | if (!e) return; | 1251 | if (!e) return; |
1217 | QPoint vp = contentsToViewport(e->pos()); | 1252 | QPoint vp = contentsToViewport(e->pos()); |
1218 | QListViewItem *item = itemAt(vp); | 1253 | QListViewItem *item = itemAt(vp); |
1219 | if (!item) { | 1254 | if (!item) { |
1220 | emit newEvent(); | 1255 | emit newEvent(); |
1221 | return; | 1256 | return; |
1222 | } | 1257 | } |
1223 | KListView::contentsMouseDoubleClickEvent(e); | 1258 | KListView::contentsMouseDoubleClickEvent(e); |
1224 | } | 1259 | } |
1225 | #if 0 | 1260 | #if 0 |
1226 | void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) | 1261 | void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) |
1227 | { | 1262 | { |
1228 | //qDebug("contentsMousePressEvent++++ "); | 1263 | //qDebug("contentsMousePressEvent++++ "); |
1229 | KListView::contentsMousePressEvent( e ); | 1264 | KListView::contentsMousePressEvent( e ); |
1230 | if ( e->button() == RightButton ) { | 1265 | if ( e->button() == RightButton ) { |
1231 | QListViewItem* ci = currentItem(); | 1266 | QListViewItem* ci = currentItem(); |
1232 | clearSelection () ; | 1267 | clearSelection () ; |
1233 | if ( ci ) | 1268 | if ( ci ) |
1234 | ci->setSelected( true ); | 1269 | ci->setSelected( true ); |
1235 | } | 1270 | } |
1236 | } | 1271 | } |
1237 | void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) | 1272 | void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) |
1238 | { | 1273 | { |
1239 | KListView::contentsMouseReleaseEvent(e); | 1274 | KListView::contentsMouseReleaseEvent(e); |
1240 | } | 1275 | } |
1241 | void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) | 1276 | void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) |
1242 | { | 1277 | { |
1243 | KListView::contentsMouseMoveEvent(e); | 1278 | KListView::contentsMouseMoveEvent(e); |
1244 | } | 1279 | } |
1245 | #endif | 1280 | #endif |
1246 | void KOListViewListView::popupMenu() | 1281 | void KOListViewListView::popupMenu() |
1247 | { | 1282 | { |
1248 | mPopupTimer->stop(); | 1283 | mPopupTimer->stop(); |
1249 | QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton ); | 1284 | QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton ); |
1250 | QApplication::postEvent( this->viewport(), e ); | 1285 | QApplication::postEvent( this->viewport(), e ); |
1251 | 1286 | ||
1252 | } | 1287 | } |
1253 | void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) | 1288 | void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) |
1254 | { | 1289 | { |
1255 | //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y()); | 1290 | //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y()); |
1256 | mYMousePos = mapToGlobal( (e->pos())).y(); | 1291 | mYMousePos = mapToGlobal( (e->pos())).y(); |
1257 | if ( e->button() == LeftButton ) { | 1292 | if ( e->button() == LeftButton ) { |
1258 | mPopupTimer->start( 600 ); | 1293 | mPopupTimer->start( 600 ); |
1259 | mEventPos = contentsToViewport(e->pos()); | 1294 | mEventPos = contentsToViewport(e->pos()); |
1260 | mEventGlobalPos = e->globalPos(); | 1295 | mEventGlobalPos = e->globalPos(); |
1261 | } | 1296 | } |
1262 | KListView::contentsMousePressEvent( e ); | 1297 | KListView::contentsMousePressEvent( e ); |
1263 | if ( e->button() == RightButton ) { | 1298 | if ( e->button() == RightButton ) { |
1264 | QListViewItem* ci = currentItem(); | 1299 | QListViewItem* ci = currentItem(); |
1265 | //clearSelection(); | 1300 | //clearSelection(); |
1266 | if ( ci ) | 1301 | if ( ci ) |
1267 | ci->setSelected( true ); | 1302 | ci->setSelected( true ); |
1268 | } | 1303 | } |
1269 | } | 1304 | } |
1270 | void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) | 1305 | void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) |
1271 | { | 1306 | { |
1272 | mPopupTimer->stop(); | 1307 | mPopupTimer->stop(); |
1273 | KListView::contentsMouseReleaseEvent(e); | 1308 | KListView::contentsMouseReleaseEvent(e); |
1274 | } | 1309 | } |
1275 | void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) | 1310 | void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) |
1276 | { | 1311 | { |
1277 | // qDebug("contentsMouseMoveEv....... "); | 1312 | // qDebug("contentsMouseMoveEv....... "); |
1278 | // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() ); | 1313 | // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() ); |
1279 | int diff = mYMousePos - mapToGlobal( (e->pos())).y(); | 1314 | int diff = mYMousePos - mapToGlobal( (e->pos())).y(); |
1280 | if ( diff < 0 ) diff = -diff; | 1315 | if ( diff < 0 ) diff = -diff; |
1281 | if ( diff > 15 ) | 1316 | if ( diff > 15 ) |
1282 | mPopupTimer->stop(); | 1317 | mPopupTimer->stop(); |
1283 | else { | 1318 | else { |
1284 | mEventPos = contentsToViewport(e->pos()); | 1319 | mEventPos = contentsToViewport(e->pos()); |
1285 | mEventGlobalPos = e->globalPos(); | 1320 | mEventGlobalPos = e->globalPos(); |
1286 | } | 1321 | } |
1287 | KListView::contentsMouseMoveEvent(e); | 1322 | KListView::contentsMouseMoveEvent(e); |
1288 | } | 1323 | } |
1289 | 1324 | ||
1325 | #define protected public | ||
1326 | #include <qheader.h> | ||
1327 | #undef protected | ||
1328 | void KOListViewListView::printList() | ||
1329 | { | ||
1330 | #ifdef DESKTOP_VERSION | ||
1331 | KOPrintPrefs pp ( this ); | ||
1332 | if (!pp.exec() ) | ||
1333 | return; | ||
1334 | int scaleval = pp.printMode() ; | ||
1335 | |||
1336 | QPrinter printer; | ||
1337 | if (!printer.setup() ) | ||
1338 | return; | ||
1339 | clearSelection (); | ||
1340 | QPainter p; | ||
1341 | p.begin ( &printer ); | ||
1342 | QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); | ||
1343 | float dx, dy; | ||
1344 | int wid = (m.width() * 9)/10; | ||
1345 | dx = (float) wid/(float)contentsWidth (); | ||
1346 | dy = (float)(m.height()) / (float)contentsHeight (); | ||
1347 | float scale; | ||
1348 | // scale to fit the width or height of the paper | ||
1349 | if ( dx < dy ) | ||
1350 | scale = dx; | ||
1351 | else | ||
1352 | scale = dy; | ||
1353 | |||
1354 | p.translate( m.width()/10,m.width()/10 ); | ||
1355 | if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) { | ||
1356 | p.scale( scale, scale ); | ||
1357 | } | ||
1358 | |||
1359 | int cou = header()->count(); | ||
1360 | int iii; | ||
1361 | QRect rect ( 0,0,0, header()->height()); | ||
1362 | for ( iii = 0; iii < cou; ++iii ) { | ||
1363 | rect.setLeft ( header()->sectionPos( iii ) ); | ||
1364 | rect.setRight ( header()->sectionPos( iii ) + header()->sectionSize (iii)); | ||
1365 | header()->paintSection ( & p, header()->mapToIndex (iii), rect ); | ||
1366 | } | ||
1367 | p.translate( 0, header()->height()); | ||
1368 | drawContentsOffset ( &p, 0,0, 0,0, contentsWidth (), contentsHeight () ); | ||
1369 | p.end(); | ||
1370 | #endif | ||
1371 | } | ||
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h index f4d6879..c25592d 100644 --- a/korganizer/kolistview.h +++ b/korganizer/kolistview.h | |||
@@ -1,314 +1,317 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 1999 Preston Brown | 3 | Copyright (c) 1999 Preston Brown |
4 | Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> | 4 | Copyright (c) 2000,2001 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 _KOLISTVIEW_H | 24 | #ifndef _KOLISTVIEW_H |
25 | #define _KOLISTVIEW_H | 25 | #define _KOLISTVIEW_H |
26 | 26 | ||
27 | #include <qlistview.h> | 27 | #include <qlistview.h> |
28 | #include <qmap.h> | 28 | #include <qmap.h> |
29 | #include <qdict.h> | 29 | #include <qdict.h> |
30 | 30 | ||
31 | #include <klistview.h> | 31 | #include <klistview.h> |
32 | 32 | ||
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/incidence.h> | 38 | #include <libkcal/incidence.h> |
39 | 39 | ||
40 | #include "koeventview.h" | 40 | #include "koeventview.h" |
41 | #include "customlistviewitem.h" | 41 | #include "customlistviewitem.h" |
42 | 42 | ||
43 | using namespace KCal; | 43 | using namespace KCal; |
44 | 44 | ||
45 | class KOListViewWhatsThis; | 45 | class KOListViewWhatsThis; |
46 | 46 | ||
47 | #include <qpushbutton.h> | 47 | #include <qpushbutton.h> |
48 | #include <qlayout.h> | 48 | #include <qlayout.h> |
49 | #include <qdialog.h> | 49 | #include <qdialog.h> |
50 | #include <qtimer.h> | 50 | #include <qtimer.h> |
51 | #include <qcombobox.h> | 51 | #include <qcombobox.h> |
52 | #include <qspinbox.h> | 52 | #include <qspinbox.h> |
53 | #include <qtooltip.h> | 53 | #include <qtooltip.h> |
54 | #include <qcheckbox.h> | 54 | #include <qcheckbox.h> |
55 | #include <qhbox.h> | 55 | #include <qhbox.h> |
56 | #include <qlabel.h> | 56 | #include <qlabel.h> |
57 | #include <kiconloader.h> | 57 | #include <kiconloader.h> |
58 | #include "kfiledialog.h" | 58 | #include "kfiledialog.h" |
59 | #include "koprefs.h" | 59 | #include "koprefs.h" |
60 | class KOAlarmPrefs : public QDialog | 60 | class KOAlarmPrefs : public QDialog |
61 | { | 61 | { |
62 | Q_OBJECT | 62 | Q_OBJECT |
63 | public: | 63 | public: |
64 | KOAlarmPrefs( QWidget *par=0, const char *name=0 ) : | 64 | KOAlarmPrefs( QWidget *par=0, const char *name=0 ) : |
65 | QDialog( par, name, true ) | 65 | QDialog( par, name, true ) |
66 | { | 66 | { |
67 | setCaption( i18n("Alarm Options") ); | 67 | setCaption( i18n("Alarm Options") ); |
68 | QVBoxLayout* alarmLayout = new QVBoxLayout( this ); | 68 | QVBoxLayout* alarmLayout = new QVBoxLayout( this ); |
69 | alarmLayout->setSpacing( 3 ); | 69 | alarmLayout->setSpacing( 3 ); |
70 | alarmLayout->setMargin( 3 ); | 70 | alarmLayout->setMargin( 3 ); |
71 | QWidget *parent = this; | 71 | QWidget *parent = this; |
72 | mAlarmButton = new QCheckBox(i18n("Set reminder ON with offset to:"),parent); | 72 | mAlarmButton = new QCheckBox(i18n("Set reminder ON with offset to:"),parent); |
73 | alarmLayout->addWidget(mAlarmButton); | 73 | alarmLayout->addWidget(mAlarmButton); |
74 | mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; | 74 | mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ; |
75 | mAlarmTimeEdit->setValue( 15 ); | 75 | mAlarmTimeEdit->setValue( 15 ); |
76 | alarmLayout->addWidget(mAlarmTimeEdit); | 76 | alarmLayout->addWidget(mAlarmTimeEdit); |
77 | mAlarmIncrCombo = new QComboBox(false, parent); | 77 | mAlarmIncrCombo = new QComboBox(false, parent); |
78 | mAlarmIncrCombo->insertItem(i18n("minute(s)")); | 78 | mAlarmIncrCombo->insertItem(i18n("minute(s)")); |
79 | mAlarmIncrCombo->insertItem(i18n("hour(s)")); | 79 | mAlarmIncrCombo->insertItem(i18n("hour(s)")); |
80 | mAlarmIncrCombo->insertItem(i18n("day(s)")); | 80 | mAlarmIncrCombo->insertItem(i18n("day(s)")); |
81 | alarmLayout->addWidget(mAlarmIncrCombo); | 81 | alarmLayout->addWidget(mAlarmIncrCombo); |
82 | QHBox * hb = new QHBox ( parent ); | 82 | QHBox * hb = new QHBox ( parent ); |
83 | alarmLayout->addWidget(hb); | 83 | alarmLayout->addWidget(hb); |
84 | mAlarmSoundButton = new QPushButton(hb); | 84 | mAlarmSoundButton = new QPushButton(hb); |
85 | mAlarmSoundButton->setPixmap(SmallIcon("playsound")); | 85 | mAlarmSoundButton->setPixmap(SmallIcon("playsound")); |
86 | mAlarmSoundButton->setToggleButton(true); | 86 | mAlarmSoundButton->setToggleButton(true); |
87 | connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); | 87 | connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound())); |
88 | mAlarmProgramButton = new QPushButton(hb); | 88 | mAlarmProgramButton = new QPushButton(hb); |
89 | mAlarmProgramButton->setPixmap(SmallIcon("run")); | 89 | mAlarmProgramButton->setPixmap(SmallIcon("run")); |
90 | mAlarmProgramButton->setToggleButton(true); | 90 | mAlarmProgramButton->setToggleButton(true); |
91 | connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); | 91 | connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram())); |
92 | mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); | 92 | mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 ); |
93 | mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); | 93 | mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 ); |
94 | mAlarmLabel = new QLabel( this ); | 94 | mAlarmLabel = new QLabel( this ); |
95 | alarmLayout->addWidget( mAlarmLabel ); | 95 | alarmLayout->addWidget( mAlarmLabel ); |
96 | mAlarmLabel->setText( "..."+KOPrefs::instance()->mDefaultAlarmFile.right( 30 ) ); | 96 | mAlarmLabel->setText( "..."+KOPrefs::instance()->mDefaultAlarmFile.right( 30 ) ); |
97 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; | 97 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; |
98 | mAlarmSoundButton->setOn( true ); | 98 | mAlarmSoundButton->setOn( true ); |
99 | QPushButton * ok = new QPushButton( i18n("Set Alarm!"), this ); | 99 | QPushButton * ok = new QPushButton( i18n("Set Alarm!"), this ); |
100 | alarmLayout->addWidget( ok ); | 100 | alarmLayout->addWidget( ok ); |
101 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); | 101 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); |
102 | alarmLayout->addWidget( cancel ); | 102 | alarmLayout->addWidget( cancel ); |
103 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); | 103 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); |
104 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); | 104 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); |
105 | resize( 200, 200 ); | 105 | resize( 200, 200 ); |
106 | 106 | ||
107 | } | 107 | } |
108 | 108 | ||
109 | 109 | ||
110 | 110 | ||
111 | QString mAlarmSound, mAlarmProgram ; | 111 | QString mAlarmSound, mAlarmProgram ; |
112 | QCheckBox* mAlarmButton; | 112 | QCheckBox* mAlarmButton; |
113 | QSpinBox* mAlarmTimeEdit; | 113 | QSpinBox* mAlarmTimeEdit; |
114 | QLabel* mAlarmLabel; | 114 | QLabel* mAlarmLabel; |
115 | QComboBox* mAlarmIncrCombo ; | 115 | QComboBox* mAlarmIncrCombo ; |
116 | QPushButton* mAlarmSoundButton ,*mAlarmProgramButton; | 116 | QPushButton* mAlarmSoundButton ,*mAlarmProgramButton; |
117 | private slots: | 117 | private slots: |
118 | 118 | ||
119 | void pickAlarmSound() | 119 | void pickAlarmSound() |
120 | { | 120 | { |
121 | //QString prefix = mAlarmSound; | 121 | //QString prefix = mAlarmSound; |
122 | if (!mAlarmSoundButton->isOn()) { | 122 | if (!mAlarmSoundButton->isOn()) { |
123 | //mAlarmSound = ""; | 123 | //mAlarmSound = ""; |
124 | QToolTip::remove(mAlarmSoundButton); | 124 | QToolTip::remove(mAlarmSoundButton); |
125 | QToolTip::add(mAlarmSoundButton, i18n("No sound set")); | 125 | QToolTip::add(mAlarmSoundButton, i18n("No sound set")); |
126 | mAlarmProgramButton->setOn(true); | 126 | mAlarmProgramButton->setOn(true); |
127 | mAlarmSoundButton->setOn(false); | 127 | mAlarmSoundButton->setOn(false); |
128 | } else { | 128 | } else { |
129 | QString fileName(KFileDialog::getOpenFileName(mAlarmSound, | 129 | QString fileName(KFileDialog::getOpenFileName(mAlarmSound, |
130 | i18n("*.wav|Wav Files"), 0)); | 130 | i18n("*.wav|Wav Files"), 0)); |
131 | if (!fileName.isEmpty()) { | 131 | if (!fileName.isEmpty()) { |
132 | mAlarmSound = fileName; | 132 | mAlarmSound = fileName; |
133 | mAlarmLabel->setText( "..."+fileName.right( 30 ) ); | 133 | mAlarmLabel->setText( "..."+fileName.right( 30 ) ); |
134 | QToolTip::remove(mAlarmSoundButton); | 134 | QToolTip::remove(mAlarmSoundButton); |
135 | QString dispStr = i18n("Playing '%1'").arg(fileName); | 135 | QString dispStr = i18n("Playing '%1'").arg(fileName); |
136 | QToolTip::add(mAlarmSoundButton, dispStr); | 136 | QToolTip::add(mAlarmSoundButton, dispStr); |
137 | mAlarmProgramButton->setOn(false); | 137 | mAlarmProgramButton->setOn(false); |
138 | mAlarmSoundButton->setOn(true); | 138 | mAlarmSoundButton->setOn(true); |
139 | } else { | 139 | } else { |
140 | mAlarmProgramButton->setOn(true); | 140 | mAlarmProgramButton->setOn(true); |
141 | mAlarmSoundButton->setOn(false); | 141 | mAlarmSoundButton->setOn(false); |
142 | 142 | ||
143 | } | 143 | } |
144 | } | 144 | } |
145 | }; | 145 | }; |
146 | 146 | ||
147 | void pickAlarmProgram() | 147 | void pickAlarmProgram() |
148 | { | 148 | { |
149 | if (!mAlarmProgramButton->isOn()) { | 149 | if (!mAlarmProgramButton->isOn()) { |
150 | //mAlarmProgram = ""; | 150 | //mAlarmProgram = ""; |
151 | QToolTip::remove(mAlarmProgramButton); | 151 | QToolTip::remove(mAlarmProgramButton); |
152 | QToolTip::add(mAlarmProgramButton, i18n("No program set")); | 152 | QToolTip::add(mAlarmProgramButton, i18n("No program set")); |
153 | mAlarmProgramButton->setOn(false); | 153 | mAlarmProgramButton->setOn(false); |
154 | mAlarmSoundButton->setOn(true); | 154 | mAlarmSoundButton->setOn(true); |
155 | } else { | 155 | } else { |
156 | QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); | 156 | QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); |
157 | if (!fileName.isEmpty()) { | 157 | if (!fileName.isEmpty()) { |
158 | mAlarmProgram = fileName; | 158 | mAlarmProgram = fileName; |
159 | mAlarmLabel->setText( "..."+fileName.right( 30 ) ); | 159 | mAlarmLabel->setText( "..."+fileName.right( 30 ) ); |
160 | QToolTip::remove(mAlarmProgramButton); | 160 | QToolTip::remove(mAlarmProgramButton); |
161 | QString dispStr = i18n("Running '%1'").arg(fileName); | 161 | QString dispStr = i18n("Running '%1'").arg(fileName); |
162 | QToolTip::add(mAlarmProgramButton, dispStr); | 162 | QToolTip::add(mAlarmProgramButton, dispStr); |
163 | mAlarmSoundButton->setOn(false); | 163 | mAlarmSoundButton->setOn(false); |
164 | mAlarmProgramButton->setOn(true); | 164 | mAlarmProgramButton->setOn(true); |
165 | } else { | 165 | } else { |
166 | mAlarmProgramButton->setOn(false); | 166 | mAlarmProgramButton->setOn(false); |
167 | mAlarmSoundButton->setOn(true); | 167 | mAlarmSoundButton->setOn(true); |
168 | } | 168 | } |
169 | } | 169 | } |
170 | }; | 170 | }; |
171 | 171 | ||
172 | }; | 172 | }; |
173 | 173 | ||
174 | 174 | ||
175 | 175 | ||
176 | 176 | ||
177 | 177 | ||
178 | 178 | ||
179 | 179 | ||
180 | typedef CustomListViewItem<Incidence *> KOListViewItem; | 180 | typedef CustomListViewItem<Incidence *> KOListViewItem; |
181 | 181 | ||
182 | /** | 182 | /** |
183 | This class provides the initialisation of a KOListViewItem for calendar | 183 | This class provides the initialisation of a KOListViewItem for calendar |
184 | components using the Incidence::Visitor. | 184 | components using the Incidence::Visitor. |
185 | */ | 185 | */ |
186 | class ListItemVisitor : public Incidence::Visitor | 186 | class ListItemVisitor : public Incidence::Visitor |
187 | { | 187 | { |
188 | public: | 188 | public: |
189 | ListItemVisitor(KOListViewItem *, QDate d); | 189 | ListItemVisitor(KOListViewItem *, QDate d); |
190 | ~ListItemVisitor(); | 190 | ~ListItemVisitor(); |
191 | 191 | ||
192 | bool visit(Event *); | 192 | bool visit(Event *); |
193 | bool visit(Todo *); | 193 | bool visit(Todo *); |
194 | bool visit(Journal *); | 194 | bool visit(Journal *); |
195 | 195 | ||
196 | private: | 196 | private: |
197 | KOListViewItem *mItem; | 197 | KOListViewItem *mItem; |
198 | QDate mDate; | 198 | QDate mDate; |
199 | }; | 199 | }; |
200 | 200 | ||
201 | /** | 201 | /** |
202 | This class provides a multi-column list view of events. It can | 202 | This class provides a multi-column list view of events. It can |
203 | display events from one particular day or several days, it doesn't | 203 | display events from one particular day or several days, it doesn't |
204 | matter. To use a view that only handles one day at a time, use | 204 | matter. To use a view that only handles one day at a time, use |
205 | KODayListView. | 205 | KODayListView. |
206 | 206 | ||
207 | @short multi-column list view of various events. | 207 | @short multi-column list view of various events. |
208 | @author Preston Brown <pbrown@kde.org> | 208 | @author Preston Brown <pbrown@kde.org> |
209 | @see KOBaseView, KODayListView | 209 | @see KOBaseView, KODayListView |
210 | */ | 210 | */ |
211 | class KOListView; | 211 | class KOListView; |
212 | 212 | ||
213 | class KOListViewListView : public KListView | 213 | class KOListViewListView : public KListView |
214 | { | 214 | { |
215 | Q_OBJECT | 215 | Q_OBJECT |
216 | public: | 216 | public: |
217 | KOListViewListView(KOListView * lv ); | 217 | KOListViewListView(KOListView * lv ); |
218 | bool hasMultiSelection(QListViewItem*); | 218 | bool hasMultiSelection(QListViewItem*); |
219 | void printList(); | ||
219 | signals: | 220 | signals: |
220 | void newEvent(); | 221 | void newEvent(); |
221 | void showIncidence( Incidence* ); | 222 | void showIncidence( Incidence* ); |
222 | public slots: | 223 | public slots: |
223 | void popupMenu(); | 224 | void popupMenu(); |
224 | private: | 225 | private: |
225 | QPoint mEventPos; | 226 | QPoint mEventPos; |
226 | QPoint mEventGlobalPos; | 227 | QPoint mEventGlobalPos; |
227 | QTimer* mPopupTimer; | 228 | QTimer* mPopupTimer; |
228 | int mYMousePos; | 229 | int mYMousePos; |
229 | void keyPressEvent ( QKeyEvent * ) ; | 230 | void keyPressEvent ( QKeyEvent * ) ; |
230 | void contentsMouseDoubleClickEvent(QMouseEvent *e); | 231 | void contentsMouseDoubleClickEvent(QMouseEvent *e); |
231 | void contentsMousePressEvent(QMouseEvent *e); | 232 | void contentsMousePressEvent(QMouseEvent *e); |
232 | void contentsMouseReleaseEvent(QMouseEvent *e); | 233 | void contentsMouseReleaseEvent(QMouseEvent *e); |
233 | void contentsMouseMoveEvent(QMouseEvent *e); | 234 | void contentsMouseMoveEvent(QMouseEvent *e); |
234 | bool mMouseDown; | 235 | bool mMouseDown; |
235 | }; | 236 | }; |
236 | 237 | ||
237 | class KOListView : public KOEventView | 238 | class KOListView : public KOEventView |
238 | { | 239 | { |
239 | Q_OBJECT | 240 | Q_OBJECT |
240 | public: | 241 | public: |
241 | KOListView(Calendar *calendar, QWidget *parent = 0, | 242 | KOListView(Calendar *calendar, QWidget *parent = 0, |
242 | const char *name = 0); | 243 | const char *name = 0); |
243 | ~KOListView(); | 244 | ~KOListView(); |
244 | 245 | ||
245 | virtual int maxDatesHint(); | 246 | virtual int maxDatesHint(); |
246 | virtual int currentDateCount(); | 247 | virtual int currentDateCount(); |
247 | virtual QPtrList<Incidence> selectedIncidences(); | 248 | virtual QPtrList<Incidence> selectedIncidences(); |
248 | virtual DateList selectedDates(); | 249 | virtual DateList selectedDates(); |
249 | 250 | ||
250 | void showDates(bool show); | 251 | void showDates(bool show); |
251 | Incidence* currentItem(); | 252 | Incidence* currentItem(); |
252 | void addTodos(QPtrList<Todo> eventList); | 253 | void addTodos(QPtrList<Todo> eventList); |
253 | void addJournals(QPtrList<Journal> eventList); | 254 | void addJournals(QPtrList<Journal> eventList); |
254 | virtual void printPreview(CalPrinter *calPrinter, | 255 | virtual void printPreview(CalPrinter *calPrinter, |
255 | const QDate &, const QDate &); | 256 | const QDate &, const QDate &); |
256 | 257 | ||
257 | void readSettings(KConfig *config, QString setting = "KOListView Layout"); | 258 | void readSettings(KConfig *config, QString setting = "KOListView Layout"); |
258 | void writeSettings(KConfig *config, QString setting = "KOListView Layout"); | 259 | void writeSettings(KConfig *config, QString setting = "KOListView Layout"); |
259 | void updateList(); | 260 | void updateList(); |
260 | void clearList(); | 261 | void clearList(); |
261 | void setStartDate(const QDate &start); | 262 | void setStartDate(const QDate &start); |
262 | int count(); | 263 | int count(); |
263 | QString getWhatsThisText(QPoint p); | 264 | QString getWhatsThisText(QPoint p); |
264 | signals: | 265 | signals: |
265 | void signalNewEvent(); | 266 | void signalNewEvent(); |
266 | void beamIncidenceList(QPtrList<Incidence>); | 267 | void beamIncidenceList(QPtrList<Incidence>); |
267 | 268 | ||
268 | public slots: | 269 | public slots: |
270 | void hideAll(); | ||
271 | void printList(); | ||
269 | void resetFocus(); | 272 | void resetFocus(); |
270 | virtual void updateView(); | 273 | virtual void updateView(); |
271 | virtual void showDates(const QDate &start, const QDate &end); | 274 | virtual void showDates(const QDate &start, const QDate &end); |
272 | virtual void showEvents(QPtrList<Event> eventList); | 275 | virtual void showEvents(QPtrList<Event> eventList); |
273 | void clearSelection(); | 276 | void clearSelection(); |
274 | void allSelection(); | 277 | void allSelection(); |
275 | 278 | ||
276 | void clear(); | 279 | void clear(); |
277 | void beamDone( Ir *ir ); | 280 | void beamDone( Ir *ir ); |
278 | void showDates(); | 281 | void showDates(); |
279 | void hideDates(); | 282 | void hideDates(); |
280 | void deleteAll(); | 283 | void deleteAll(); |
281 | void saveToFile(); | 284 | void saveToFile(); |
282 | void saveToFileVCS(); | 285 | void saveToFileVCS(); |
283 | void saveDescriptionToFile(); | 286 | void saveDescriptionToFile(); |
284 | void beamSelected(); | 287 | void beamSelected(); |
285 | void updateConfig(); | 288 | void updateConfig(); |
286 | void addCat(); | 289 | void addCat(); |
287 | void setCat(); | 290 | void setCat(); |
288 | void setAlarm(); | 291 | void setAlarm(); |
289 | void setCategories( bool removeOld ); | 292 | void setCategories( bool removeOld ); |
290 | void changeEventDisplay(Event *, int); | 293 | void changeEventDisplay(Event *, int); |
291 | 294 | ||
292 | void defaultItemAction(QListViewItem *item); | 295 | void defaultItemAction(QListViewItem *item); |
293 | void popupMenu(QListViewItem *item,const QPoint &,int); | 296 | void popupMenu(QListViewItem *item,const QPoint &,int); |
294 | 297 | ||
295 | protected slots: | 298 | protected slots: |
296 | void processSelectionChange(QListViewItem *); | 299 | void processSelectionChange(QListViewItem *); |
297 | 300 | ||
298 | protected: | 301 | protected: |
299 | void writeToFile( bool iCal ); | 302 | void writeToFile( bool iCal ); |
300 | void addEvents(QPtrList<Event> eventList); | 303 | void addEvents(QPtrList<Event> eventList); |
301 | void addIncidence(Incidence *); | 304 | void addIncidence(Incidence *); |
302 | KOListViewItem *getItemForEvent(Event *event); | 305 | KOListViewItem *getItemForEvent(Event *event); |
303 | 306 | ||
304 | private: | 307 | private: |
305 | KOListViewWhatsThis *mKOListViewWhatsThis; | 308 | KOListViewWhatsThis *mKOListViewWhatsThis; |
306 | KOListViewListView *mListView; | 309 | KOListViewListView *mListView; |
307 | KOEventPopupMenu *mPopupMenu; | 310 | KOEventPopupMenu *mPopupMenu; |
308 | KOListViewItem *mActiveItem; | 311 | KOListViewItem *mActiveItem; |
309 | QDict<Incidence> mUidDict; | 312 | QDict<Incidence> mUidDict; |
310 | QDate mStartDate; | 313 | QDate mStartDate; |
311 | void keyPressEvent ( QKeyEvent * ) ; | 314 | void keyPressEvent ( QKeyEvent * ) ; |
312 | }; | 315 | }; |
313 | 316 | ||
314 | #endif | 317 | #endif |
@@ -1 +1 @@ | |||
version = "2.1.5"; | version = "2.1.6"; | ||