-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 | |||
@@ -1279,103 +1279,103 @@ | |||
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,161 +1,164 @@ | |||
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 | } |
@@ -187,193 +190,204 @@ bool ListItemVisitor::visit(Todo *t) | |||
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 | { |
@@ -629,192 +643,213 @@ void KOListView::saveDescriptionToFile() | |||
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 |
@@ -1194,96 +1229,143 @@ KOListViewListView::KOListViewListView(KOListView * lv ) | |||
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 | |||
@@ -123,192 +123,195 @@ void pickAlarmSound() | |||
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"; | ||