summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt2
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt14
-rw-r--r--korganizer/calendarview.cpp80
-rw-r--r--korganizer/calendarview.h4
-rw-r--r--korganizer/mainwindow.cpp71
5 files changed, 142 insertions, 29 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 79de197..814c541 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,135 +1,137 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.1.14 ************ 3********** VERSION 2.1.14 ************
4 4
5Added some buttons to the KO/Pi Quick-todo line to make it possible to quickly access some todo view layout settings like display all flat/open/close and hide/show running/done. 5Added some buttons to the KO/Pi Quick-todo line to make it possible to quickly access some todo view layout settings like display all flat/open/close and hide/show running/done.
6Added a button to add a subtodo quickly. 6Added a button to add a subtodo quickly.
7 7
8Added a possibility to search for conflicting events. (In the Action menu. Keyboard shortcut "q" ).
9
8 10
9********** VERSION 2.1.13 ************ 11********** VERSION 2.1.13 ************
10 12
11Fixed a problem in KA/Pi search. 13Fixed a problem in KA/Pi search.
12Fixed some minor problems in KO/Pi. 14Fixed some minor problems in KO/Pi.
13Added calendar selection possibility to the todo view popup and to the event/todo/journal editor. 15Added calendar selection possibility to the todo view popup and to the event/todo/journal editor.
14 16
15Fixed memory usage problems in KA/Pi: 17Fixed memory usage problems in KA/Pi:
16When loading data KA/Pi did load the file data twice. 18When loading data KA/Pi did load the file data twice.
17Example: 19Example:
18 A 600k file did consume 1200k memory during loading process. 20 A 600k file did consume 1200k memory during loading process.
19 This is fixed, it does now consume only 600k during loading process. 21 This is fixed, it does now consume only 600k during loading process.
20When saving data KA/Pi did consume a lot of memory for the data parsing during the save process. 22When saving data KA/Pi did consume a lot of memory for the data parsing during the save process.
21This is fixed. 23This is fixed.
22Example: 24Example:
23 Before saving a 600k file KA/Pi did consume 21.7 Meg of Ram. 25 Before saving a 600k file KA/Pi did consume 21.7 Meg of Ram.
24 When saving KA/Pi did consume 28.6 Meg of Ram. That causes a crash on the Zaurus because there was no memeory left in the system. 26 When saving KA/Pi did consume 28.6 Meg of Ram. That causes a crash on the Zaurus because there was no memeory left in the system.
25 Now KA/Pi is consuming on saving the same data 22.0 Meg of Ram during the save process. 27 Now KA/Pi is consuming on saving the same data 22.0 Meg of Ram during the save process.
26Note: The memory usage of KA/Pi after the data is loaded/saved has not changed. 28Note: The memory usage of KA/Pi after the data is loaded/saved has not changed.
27The saving of data may be a bit slower now. 29The saving of data may be a bit slower now.
28 30
29Fixed memory usage problems in KO/Pi: 31Fixed memory usage problems in KO/Pi:
30When KO/Pi did save the data to file, it did not release the used buffers after saving. 32When KO/Pi did save the data to file, it did not release the used buffers after saving.
31The used buffer was released after saving the next time, but there was new buffer space allocated again on that save operation. 33The used buffer was released after saving the next time, but there was new buffer space allocated again on that save operation.
32This is fixed. 34This is fixed.
33Example: 35Example:
34 When saving a 400k file KO/Pi do now use 400k less memory now. 36 When saving a 400k file KO/Pi do now use 400k less memory now.
35 37
36Optimized memory usage in KO/Pi Agenda view: 38Optimized memory usage in KO/Pi Agenda view:
37KO/Pi is storing some paint information in extra buffers for faster repainting of the agenda view. 39KO/Pi is storing some paint information in extra buffers for faster repainting of the agenda view.
38These buffers were not made smaller (i.e. downsized) because of performance reasons. 40These buffers were not made smaller (i.e. downsized) because of performance reasons.
39The handling of these buffers are now much smarter: 41The handling of these buffers are now much smarter:
40Two (of six) buffers are removed completely. 42Two (of six) buffers are removed completely.
41The remaing four buffers are now downsized after not using the agenda view for 45 seconds. 43The remaing four buffers are now downsized after not using the agenda view for 45 seconds.
42Such that the memory usage of KO/Pi is smaller now in general ( because 2 buffers are removed) and is much smaller when not using the agenda view. That is very important when using fastload for KO/Pi. 44Such that the memory usage of KO/Pi is smaller now in general ( because 2 buffers are removed) and is much smaller when not using the agenda view. That is very important when using fastload for KO/Pi.
43 45
44Worst case example ( for a maximum size agenda content): 46Worst case example ( for a maximum size agenda content):
45 When resizing the agenda content to a large scale, KO/Pi did use 17Meg of mem ( and did not use less memory until it was stopped). Now KO/Pi is using on the same operation only 14.3 Meg of mem and after 45 seconds not using the agenda view it uses only 9.4 Meg of mem. 47 When resizing the agenda content to a large scale, KO/Pi did use 17Meg of mem ( and did not use less memory until it was stopped). Now KO/Pi is using on the same operation only 14.3 Meg of mem and after 45 seconds not using the agenda view it uses only 9.4 Meg of mem.
46 48
47When switching to an unused Agenda view now KO/Pi is upizing the buffers again. This takes less than a second. Such that switching to Agenda view (after not using it for more than 45 seconds) is now a bit slower. 49When switching to an unused Agenda view now KO/Pi is upizing the buffers again. This takes less than a second. Such that switching to Agenda view (after not using it for more than 45 seconds) is now a bit slower.
48 50
49Summary: 51Summary:
50Many memory wasting problems of KA/Pi and KO/Pi fixed such that it is better to use on the Zaurus. 52Many memory wasting problems of KA/Pi and KO/Pi fixed such that it is better to use on the Zaurus.
51 53
52********** VERSION 2.1.12 ************ 54********** VERSION 2.1.12 ************
53 55
54KO/Pi: 56KO/Pi:
55Many small usability fixes, e.g. rearranged the popup menus such that they are better to use on the Zaurus. 57Many small usability fixes, e.g. rearranged the popup menus such that they are better to use on the Zaurus.
56Fixed a problem with the month view when file was saved but KO/Pi was not the active window. 58Fixed a problem with the month view when file was saved but KO/Pi was not the active window.
57Fixed some problems in the resource config dialog (e.g. added a warning if you set all calendars to read-only). 59Fixed some problems in the resource config dialog (e.g. added a warning if you set all calendars to read-only).
58Fixed some other small problems. 60Fixed some other small problems.
59 61
60********** VERSION 2.1.11 ************ 62********** VERSION 2.1.11 ************
61 63
62KO/Pi: 64KO/Pi:
63Because we can have many calendars now in KO/Pi we can have more than one journal entry per day. 65Because we can have many calendars now in KO/Pi we can have more than one journal entry per day.
64Added features to handle (and add ) more than one journal entry per day. 66Added features to handle (and add ) more than one journal entry per day.
65Added option for a journal title. 67Added option for a journal title.
66 68
67Added info about the calendar, the item belongs to, to the event/todo/journal viewer. 69Added info about the calendar, the item belongs to, to the event/todo/journal viewer.
68Fixed a problem of the alarm of completed recurring todos. 70Fixed a problem of the alarm of completed recurring todos.
69Added to the event/todo editor to set quickly the category of an item. 71Added to the event/todo editor to set quickly the category of an item.
70 72
71 73
72Fixed some problems when calling KO/Pi or KA/Pi from the alarm applet. 74Fixed some problems when calling KO/Pi or KA/Pi from the alarm applet.
73 75
74Added KA/Pi multi sync to the multi sync called from the alarm applet. 76Added KA/Pi multi sync to the multi sync called from the alarm applet.
75 77
76********** VERSION 2.1.10 ************ 78********** VERSION 2.1.10 ************
77 79
78KO/Pi: 80KO/Pi:
79Importing Birthdays will now create another file resource "Birthdays" and import the birthday data from KA/Pi into that file. 81Importing Birthdays will now create another file resource "Birthdays" and import the birthday data from KA/Pi into that file.
80When a multidayevent is selected in monthview all occurences of this event in the monthview are now hightlighted. 82When a multidayevent is selected in monthview all occurences of this event in the monthview are now hightlighted.
81Fixed a bug in searching for a small timerange, i.e. one day. 83Fixed a bug in searching for a small timerange, i.e. one day.
82 84
83KA/Pi: 85KA/Pi:
84Fixed two problems in csv export. 86Fixed two problems in csv export.
85Fixed problems when calling the contact selection dialog from KO/Pi or OM/Pi. 87Fixed problems when calling the contact selection dialog from KO/Pi or OM/Pi.
86 88
87********** VERSION 2.1.9 ************ 89********** VERSION 2.1.9 ************
88 90
89KO/Pi: 91KO/Pi:
90Fixed some problems of the new search options in the search dialog. 92Fixed some problems of the new search options in the search dialog.
91Fixed some problems in the new resource config options. 93Fixed some problems in the new resource config options.
92Changed the recurrence edit of events and todos such that the recurrence edit page now is notified about a change of the start date on the first page. 94Changed the recurrence edit of events and todos such that the recurrence edit page now is notified about a change of the start date on the first page.
93Fixed a problem creating new events in the agenda view if at the day/time is already an agenda item shown: 95Fixed a problem creating new events in the agenda view if at the day/time is already an agenda item shown:
94Now you can click on the bottom/top of an allday agenda item or on the left/right side of an agenda item to get the "new todo/new event" popup. 96Now you can click on the bottom/top of an allday agenda item or on the left/right side of an agenda item to get the "new todo/new event" popup.
95 97
96Fixed a problem in recurrence range in syncing with DTM. 98Fixed a problem in recurrence range in syncing with DTM.
97 99
98KA/Pi: 100KA/Pi:
99Made it posiible to show in the contact overview the details of all data available for that contact( e.g. office, spouse, children, nickname ...) 101Made it posiible to show in the contact overview the details of all data available for that contact( e.g. office, spouse, children, nickname ...)
100 102
101PwM/Pi: 103PwM/Pi:
102Added "sec" to the timeout config settings to make it clear the timeout values are seconds. 104Added "sec" to the timeout config settings to make it clear the timeout values are seconds.
103 105
104********** VERSION 2.1.8 ************ 106********** VERSION 2.1.8 ************
105 107
106KO/Pi: 108KO/Pi:
107Added info about the completion state of a todo in the ListView/Searchdialog. 109Added info about the completion state of a todo in the ListView/Searchdialog.
108If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well. 110If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well.
109Fixed some updating problems when changing the filter. 111Fixed some updating problems when changing the filter.
110 112
111KA/Pi: 113KA/Pi:
112In the addressee selection dialog now the formatted name is shown, if not empty. 114In the addressee selection dialog now the formatted name is shown, if not empty.
113Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category. 115Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category.
114Now in the addressee selection dialog a selected contact is remove with a single click from the selected list. 116Now in the addressee selection dialog a selected contact is remove with a single click from the selected list.
115 117
116Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored. 118Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored.
117Fixed the sorting for size in the file selector on the Z. 119Fixed the sorting for size in the file selector on the Z.
118 120
119Changed the color selection dialog on the Zaurus to a more user friendly version. 121Changed the color selection dialog on the Zaurus to a more user friendly version.
120 122
121********** VERSION 2.1.7 ************ 123********** VERSION 2.1.7 ************
122 124
123KO/Pi: 125KO/Pi:
124Fixed several problems in the new Resource handling. 126Fixed several problems in the new Resource handling.
125Added more options to the search dialog. 127Added more options to the search dialog.
126Fixed a problem in the Month view. 128Fixed a problem in the Month view.
127Added more options to the dialog when setting a todo to stopped. 129Added more options to the dialog when setting a todo to stopped.
128 130
129Fixed two small problems in KO/Pi Alarm applet. 131Fixed two small problems in KO/Pi Alarm applet.
130 132
131********** VERSION 2.1.6 ************ 133********** VERSION 2.1.6 ************
132 134
133This release is for testing only. 135This release is for testing only.
134 136
135KO/Pi: 137KO/Pi:
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index bcc23dc..b225594 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -1369,138 +1369,152 @@
1369{ "Print complete list...","Drucke komplette Liste..." }, 1369{ "Print complete list...","Drucke komplette Liste..." },
1370{ "Hide all selected","Verstecke Ausgewählte" }, 1370{ "Hide all selected","Verstecke Ausgewählte" },
1371{ "Add items","hinzufügen" }, 1371{ "Add items","hinzufügen" },
1372{ "One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?","Ein (oder mehrere) ausgewähltes\nTodo hat Untertodos!\nMöchten Sie der Auswahlliste\nalle Untertodos von allen\nausgewählten Todos hinzufügen?" }, 1372{ "One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?","Ein (oder mehrere) ausgewähltes\nTodo hat Untertodos!\nMöchten Sie der Auswahlliste\nalle Untertodos von allen\nausgewählten Todos hinzufügen?" },
1373{ "Print List View...","Drucke Listenansicht..." }, 1373{ "Print List View...","Drucke Listenansicht..." },
1374{ "You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items.","Sie können die <b>Listenansicht</b> und die Listenansicht im <b>Suchdialog</b> ausdrucken! Um das zu machen gehen Sie bitte zur <b>Listenansicht</b> oder zum <b>Suchdialog</b>. Rechtsklicken Sie auf die Liste. Wählen Sie im Popupmenu den Eintrag <b>Drucke komplette Liste</b>. Das druckt die Liste so, wie man sie sieht. Sie können Listeneinträge entfernen ohne die korrespondierenden Ereignisse/Todos zu löschen! Selektieren sie einfach alle Einträge, die sie nicht ausdrucken möchten. Dann Rechtsklicken Sie auf einen Eintrag und wählen <b>Verstecke Selektierte</b>. Danach können Sie die Liste ohne diese Einträge ausdrucken." }, 1374{ "You can make a printout of the <b>List View</b> and the list view in the <b>Search Dialog</b>! To do this, please go to the <b>List View/Search Dialog</b>. Right click on the list. Select in the popup menu the entry <b>Print complete list</b>. That prints the list as you see it. You can remove items from the list before printing without deleting the corresponding event/todo! Simply select all items you do not want to print out. Then right click on one of the items and choose <b>Hide selected items</b>. After that you can print the list without these items.","Sie können die <b>Listenansicht</b> und die Listenansicht im <b>Suchdialog</b> ausdrucken! Um das zu machen gehen Sie bitte zur <b>Listenansicht</b> oder zum <b>Suchdialog</b>. Rechtsklicken Sie auf die Liste. Wählen Sie im Popupmenu den Eintrag <b>Drucke komplette Liste</b>. Das druckt die Liste so, wie man sie sieht. Sie können Listeneinträge entfernen ohne die korrespondierenden Ereignisse/Todos zu löschen! Selektieren sie einfach alle Einträge, die sie nicht ausdrucken möchten. Dann Rechtsklicken Sie auf einen Eintrag und wählen <b>Verstecke Selektierte</b>. Danach können Sie die Liste ohne diese Einträge ausdrucken." },
1375{ "Configure KO/Pi...","Konfiguriere KO/Pi..." }, 1375{ "Configure KO/Pi...","Konfiguriere KO/Pi..." },
1376{ "Global Settings...","Globale Einstellungen..." }, 1376{ "Global Settings...","Globale Einstellungen..." },
1377{ "<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n","<p><b>R</b>: Zeige Resource Ansicht | <b>F</b>: Editiere Filter </p>\n" }, 1377{ "<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n","<p><b>R</b>: Zeige Resource Ansicht | <b>F</b>: Editiere Filter </p>\n" },
1378{ "(disabled)","(abgeschaltet)" }, 1378{ "(disabled)","(abgeschaltet)" },
1379{ "New Calendar","Neuer Kalender" }, 1379{ "New Calendar","Neuer Kalender" },
1380{ "Calendar","Kalender" }, 1380{ "Calendar","Kalender" },
1381{ "Filter selector","Filterauswahl" }, 1381{ "Filter selector","Filterauswahl" },
1382{ "Filtermenu","Filtermenu" }, 1382{ "Filtermenu","Filtermenu" },
1383{ "Toggle Fullscreen","Vollbild umschalten" }, 1383{ "Toggle Fullscreen","Vollbild umschalten" },
1384{ "Toggle Resource View","Resourcenansicht umschalten" }, 1384{ "Toggle Resource View","Resourcenansicht umschalten" },
1385{ "Storage HowTo...","Speicherort HowTo..." }, 1385{ "Storage HowTo...","Speicherort HowTo..." },
1386{ "Timetracking HowTo...","Timetracking HowTo..." }, 1386{ "Timetracking HowTo...","Timetracking HowTo..." },
1387{ "Juni","Juni" }, 1387{ "Juni","Juni" },
1388{ "Juli","Juli" }, 1388{ "Juli","Juli" },
1389{ "ToDo:","ToDo:" }, 1389{ "ToDo:","ToDo:" },
1390{ "Set Calendar","Setze Kalender" }, 1390{ "Set Calendar","Setze Kalender" },
1391{ "Todo: %1","Todo: %1" }, 1391{ "Todo: %1","Todo: %1" },
1392{ ": (Prio ",": (Prio " }, 1392{ ": (Prio ",": (Prio " },
1393{ "Todos","Todos" }, 1393{ "Todos","Todos" },
1394{ "Todo Viewer","Todo Anzeige" }, 1394{ "Todo Viewer","Todo Anzeige" },
1395{ "Todo ","Todo " }, 1395{ "Todo ","Todo " },
1396{ " Calendar \n Resource "," Kalender \n Resource " }, 1396{ " Calendar \n Resource "," Kalender \n Resource " },
1397{ " Color "," Farbe " }, 1397{ " Color "," Farbe " },
1398{ "The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>. Möchten Sie diesen Kalender aus KO/Pi entfernen? (Die Datei wird dabei nicht gelöscht!)" }, 1398{ "The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>. Möchten Sie diesen Kalender aus KO/Pi entfernen? (Die Datei wird dabei nicht gelöscht!)" },
1399{ "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" }, 1399{ "The calendar <b>%1</b> is displaying file <b>%2</b>","Der Kalender <b>%1</b> zeigt die Datei <b>%2</b>" },
1400{ "Add new Calendar","Füge Kalender hinzu" }, 1400{ "Add new Calendar","Füge Kalender hinzu" },
1401{ "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" }, 1401{ "<b>Name of new calendar:</b>","<b>Name des Kalenders:</b>" },
1402{ "<b>Local ical (*.ics) file:</b>","<b>Lokale ical (*.ics) Datei:</b>" }, 1402{ "<b>Local ical (*.ics) file:</b>","<b>Lokale ical (*.ics) Datei:</b>" },
1403{ "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" }, 1403{ "Sorry, the calendar name is empty!","Sorry, der Kalendername ist leer!" },
1404{ "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" }, 1404{ "Sorry, the file name is empty!","Sorry, der Dateiname ist leer!" },
1405{ "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." }, 1405{ "Error loading calendar file\n%1.","Fehler beim Laden der Kalenderdatei\n%1." },
1406{ "The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>","Der Kalender <b>%1</b> ist nicht geladen! Das Laden der Datei <b>%2</b> schlug fehl! <b>Soll erneut versucht werden den Kalender zu laden?</b>" }, 1406{ "The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>","Der Kalender <b>%1</b> ist nicht geladen! Das Laden der Datei <b>%2</b> schlug fehl! <b>Soll erneut versucht werden den Kalender zu laden?</b>" },
1407{ "Global application font for all apps:","Globale Schriftart:" }, 1407{ "Global application font for all apps:","Globale Schriftart:" },
1408{ "Application Font","Applikationsschriftart" }, 1408{ "Application Font","Applikationsschriftart" },
1409{ "Kx/Pi","Kx/Pi" }, 1409{ "Kx/Pi","Kx/Pi" },
1410{ "Backup","Backup" }, 1410{ "Backup","Backup" },
1411{ "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" }, 1411{ "KDE-Pim Global Settings","KDE-Pim Globale Einstellungen" },
1412{ "Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!","Sorry, der Kalendername \n%1\nist schon in Benutzung!\nBitte wählen Sie einen anderen!" }, 1412{ "Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!","Sorry, der Kalendername \n%1\nist schon in Benutzung!\nBitte wählen Sie einen anderen!" },
1413{ "Sorry, the file \n%1\nis already loaded!\nPlease choose another file!","Sorry, die Datei \n%1\nist schon geladen!\nBitte wählen Sie eine andere!" }, 1413{ "Sorry, the file \n%1\nis already loaded!\nPlease choose another file!","Sorry, die Datei \n%1\nist schon geladen!\nBitte wählen Sie eine andere!" },
1414{ "Choose Color","Wähle Farbe" }, 1414{ "Choose Color","Wähle Farbe" },
1415{ " OK "," OK " }, 1415{ " OK "," OK " },
1416{ " Cancel "," Abbrechen " }, 1416{ " Cancel "," Abbrechen " },
1417{ "Matching items will be added to list","Passende werden zur Liste hinzugefügt" }, 1417{ "Matching items will be added to list","Passende werden zur Liste hinzugefügt" },
1418{ "Matching items will be removed from list","Passende werden von der Liste entfernt" }, 1418{ "Matching items will be removed from list","Passende werden von der Liste entfernt" },
1419{ "Search on displayed list only","Suche auf der dargestellten Liste" }, 1419{ "Search on displayed list only","Suche auf der dargestellten Liste" },
1420{ "List will be cleared before search","Liste wird vor der Suche gelöscht" }, 1420{ "List will be cleared before search","Liste wird vor der Suche gelöscht" },
1421{ "<center>%1</center> <center>is not running. Do you want to set\nthe state to running?</center>","<center>%1</center> <center>ist nicht am Laufen. Möchten Sie den Zustand auf "laufend" setzen?</center>" }, 1421{ "<center>%1</center> <center>is not running. Do you want to set\nthe state to running?</center>","<center>%1</center> <center>ist nicht am Laufen. Möchten Sie den Zustand auf "laufend" setzen?</center>" },
1422{ "%1\nis running!","%1\nist am Laufen!" }, 1422{ "%1\nis running!","%1\nist am Laufen!" },
1423{ "Additional Comment:","Zusätzlicher Kommentar:" }, 1423{ "Additional Comment:","Zusätzlicher Kommentar:" },
1424{ "Stop and save","Stopp und Speichern" }, 1424{ "Stop and save","Stopp und Speichern" },
1425{ "Continue running","Weiter laufen lassen" }, 1425{ "Continue running","Weiter laufen lassen" },
1426{ "Stop - do not save","Stopp - nicht Speichern" }, 1426{ "Stop - do not save","Stopp - nicht Speichern" },
1427{ "Do you really want to set\nthe state to stopped\nwithout saving the data?","Möchten sie den Zustand\nwirklich auf gestoppt setzen\nohne die Daten abzuspeichern?" }, 1427{ "Do you really want to set\nthe state to stopped\nwithout saving the data?","Möchten sie den Zustand\nwirklich auf gestoppt setzen\nohne die Daten abzuspeichern?" },
1428{ "Time mismatch!","Zeiten stimmen nicht!" }, 1428{ "Time mismatch!","Zeiten stimmen nicht!" },
1429{ "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" }, 1429{ "The start time is\nafter the end time!","Die Startzeit ist\nhinter der Endzeit!" },
1430{ "Yes, stop todo","Ja, stoppe Todo" }, 1430{ "Yes, stop todo","Ja, stoppe Todo" },
1431{ "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" }, 1431{ "Todo stopped - no data saved because runtime was < 15 sec!","Todo gestoppt - nichts gespeichert da Laufzeit < 15 sec!" },
1432{ "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" }, 1432{ "Todo started! Double click again to stop!","Todo gestartet! Doppelklicke um es zu stoppen!" },
1433{ "Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.","Bitte wählen Sie den <b>Default-Kalender</b> in dieser Spalte. Neu angelegte oder importierte Einträge werden dem Default-Kalender hinzugefügt." }, 1433{ "Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.","Bitte wählen Sie den <b>Default-Kalender</b> in dieser Spalte. Neu angelegte oder importierte Einträge werden dem Default-Kalender hinzugefügt." },
1434{ "Spouse","Ehegatte" }, 1434{ "Spouse","Ehegatte" },
1435{ "Notes","Notizen" }, 1435{ "Notes","Notizen" },
1436{ "Messanger","Messanger" }, 1436{ "Messanger","Messanger" },
1437{ "Assistant","Assistent" }, 1437{ "Assistant","Assistent" },
1438{ "Manager","Manager" }, 1438{ "Manager","Manager" },
1439{ "Secrecy","Sichtbar" }, 1439{ "Secrecy","Sichtbar" },
1440{ "male","männlich" }, 1440{ "male","männlich" },
1441{ "female","weiblich" }, 1441{ "female","weiblich" },
1442{ "Hide!","Verbergen!" }, 1442{ "Hide!","Verbergen!" },
1443{ "Show!","Anzeigen!" }, 1443{ "Show!","Anzeigen!" },
1444{ "Details","Details" }, 1444{ "Details","Details" },
1445{ "Profession","Beruf" }, 1445{ "Profession","Beruf" },
1446{ "Children","Kinder" }, 1446{ "Children","Kinder" },
1447{ "Department","Abteilung" }, 1447{ "Department","Abteilung" },
1448{ "Backup cancelled","Backup abgebrochen" }, 1448{ "Backup cancelled","Backup abgebrochen" },
1449{ "Backup globally disabled","Backup global abgeschaltet" }, 1449{ "Backup globally disabled","Backup global abgeschaltet" },
1450{ "Backup succesfully finished","Backup erfolgreich beendet" }, 1450{ "Backup succesfully finished","Backup erfolgreich beendet" },
1451{ "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" }, 1451{ "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" },
1452{ "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" }, 1452{ "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" },
1453{ "Birthdays","Geburtstage" }, 1453{ "Birthdays","Geburtstage" },
1454{ "KO/Pi import information!","KO/Pi Import Information!" }, 1454{ "KO/Pi import information!","KO/Pi Import Information!" },
1455{ "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" }, 1455{ "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" },
1456{ "Cancel - do not start"," Abbrechen - Todo nicht starten" }, 1456{ "Cancel - do not start"," Abbrechen - Todo nicht starten" },
1457{ "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde geändert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu ändern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" }, 1457{ "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde geändert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu ändern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" },
1458{ "Reload","Neu laden" }, 1458{ "Reload","Neu laden" },
1459{ "Timezone settings","Zeitzoneneinstellung" }, 1459{ "Timezone settings","Zeitzoneneinstellung" },
1460{ "Title: ","Titel: " }, 1460{ "Title: ","Titel: " },
1461{ "Journal from: ","Journal vom: " }, 1461{ "Journal from: ","Journal vom: " },
1462{ "Journal: %1 from ","Journal: %1 vom " }, 1462{ "Journal: %1 from ","Journal: %1 vom " },
1463{ "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" }, 1463{ "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" },
1464{ "Selected Item","Ausgewähltes Item" }, 1464{ "Selected Item","Ausgewähltes Item" },
1465{ "Select Date...","Wähle Datum..." }, 1465{ "Select Date...","Wähle Datum..." },
1466{ "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugefügt werden. Bitte wählen Sie, was <b>jetzt</b> passieren soll:" }, 1466{ "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugefügt werden. Bitte wählen Sie, was <b>jetzt</b> passieren soll:" },
1467{ "Change category list now!","Ändere Kategorieliste jetzt!" }, 1467{ "Change category list now!","Ändere Kategorieliste jetzt!" },
1468{ "Edit category list...","Ändere Kategorieliste..." }, 1468{ "Edit category list...","Ändere Kategorieliste..." },
1469{ "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" }, 1469{ "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" },
1470{ "Filepath: ","Dateipfad: " }, 1470{ "Filepath: ","Dateipfad: " },
1471{ "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" }, 1471{ "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" },
1472{ "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, 1472{ "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" },
1473{ "Pending Suspend Alarm","Laufender Suspend Alarm" }, 1473{ "Pending Suspend Alarm","Laufender Suspend Alarm" },
1474{ "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, 1474{ "Error loading calendar %1","Fehler beim Laden von Kalender %1" },
1475{ "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, 1475{ "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" },
1476{ "Loding of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, 1476{ "Loding of calendar(s) failed","Laden von Kalendern fehlgeschlagen" },
1477{ "Alarm Options","Alarm Einstellungen" }, 1477{ "Alarm Options","Alarm Einstellungen" },
1478{ "Delete selected...","Lösche Ausgewählte..." }, 1478{ "Delete selected...","Lösche Ausgewählte..." },
1479{ "None","Nichts" }, 1479{ "None","Nichts" },
1480{ "Selection","Auswahl" }, 1480{ "Selection","Auswahl" },
1481{ "Set categories","Setze Kategorien" }, 1481{ "Set categories","Setze Kategorien" },
1482{ "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" }, 1482{ "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" },
1483{ "Reset","Neu setzen" }, 1483{ "Reset","Neu setzen" },
1484{ "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" }, 1484{ "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" },
1485{ "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" }, 1485{ "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" },
1486{ "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" }, 1486{ "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" },
1487{ "\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n","\nKEIN\n SCHREIBBARER\n KALENDER\n GEFUNDEN!\n\nBitte korrigieren Sie\nihre Kalendereinstellungen!\n" }, 1487{ "\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n","\nKEIN\n SCHREIBBARER\n KALENDER\n GEFUNDEN!\n\nBitte korrigieren Sie\nihre Kalendereinstellungen!\n" },
1488{ "\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie Datei\n%1\nwurde verändert!\nDatei Grösse: %2 Bytes.\nZuletzt geändert: %3\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, 1488{ "\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie Datei\n%1\nwurde verändert!\nDatei Grösse: %2 Bytes.\nZuletzt geändert: %3\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" },
1489{ "Edit","Edit" }, 1489{ "Edit","Edit" },
1490{ "Last Modified","Zuletzt geändert" }, 1490{ "Last Modified","Zuletzt geändert" },
1491{ "Journal viewer","Journal Anzeige" }, 1491{ "Journal viewer","Journal Anzeige" },
1492{ "Configure Calendar Files...","Konfiguriere Kalenderdateien..." }, 1492{ "Configure Calendar Files...","Konfiguriere Kalenderdateien..." },
1493{ "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." }, 1493{ "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." },
1494{ "Hide Completed","Verstecke erledigte Todos" }, 1494{ "Hide Completed","Verstecke erledigte Todos" },
1495{ "Show not Running","Zeige nicht Laufende" }, 1495{ "Show not Running","Zeige nicht Laufende" },
1496{ "Click to add new Todo","Klick für neues Todo!" }, 1496{ "Click to add new Todo","Klick für neues Todo!" },
1497{ "Show next conflict for","Zeige nächsten Konflikt für" },
1498{ "All events","Alle Termine" },
1499{ "Allday events","Ganztagestermine" },
1500{ "Events with time","Termine mit Zeit" },
1501{ "No conflict found within the next two years","Kein Konflikt innerhalb der nächsten zwei Jahre gefunden" },
1502{ "Conflict %1 <-> %2","Konflikt %1 <-> %2" },
1503{ "<p><b>Q</b>: Show next date with conflicting events\n ","<p><b>Q</b>: Zeige nächstes Datum mit Terminen im Konflikt\n " },
1504{ "","" },
1505{ "","" },
1506{ "","" },
1507{ "","" },
1508{ "","" },
1509{ "","" },
1510{ "","" },
1497{ "","" }, 1511{ "","" },
1498{ "","" }, 1512{ "","" },
1499{ "","" }, 1513{ "","" },
1500{ "","" }, 1514{ "","" },
1501{ "","" }, 1515{ "","" },
1502{ "","" }, 1516{ "","" },
1503{ "","" }, 1517{ "","" },
1504 1518
1505 1519
1506 1520
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index bc1c0c7..9a114d0 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -529,256 +529,322 @@ void CalendarView::init()
529 connect( mDateNavigator, SIGNAL( goPrevYear() ), 529 connect( mDateNavigator, SIGNAL( goPrevYear() ),
530 mNavigator, SLOT( selectPreviousYear() ) ); 530 mNavigator, SLOT( selectPreviousYear() ) );
531 connect( mDateNavigator, SIGNAL( goNextYear() ), 531 connect( mDateNavigator, SIGNAL( goNextYear() ),
532 mNavigator, SLOT( selectNextYear() ) ); 532 mNavigator, SLOT( selectNextYear() ) );
533 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 533 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
534 mNavigator, SLOT( selectPreviousMonth() ) ); 534 mNavigator, SLOT( selectPreviousMonth() ) );
535 connect( mDateNavigator, SIGNAL( goNextMonth() ), 535 connect( mDateNavigator, SIGNAL( goNextMonth() ),
536 mNavigator, SLOT( selectNextMonth() ) ); 536 mNavigator, SLOT( selectNextMonth() ) );
537 537
538 connect( mDateNavigator, SIGNAL( goPrevious() ), 538 connect( mDateNavigator, SIGNAL( goPrevious() ),
539 mNavigator, SLOT( selectPrevious() ) ); 539 mNavigator, SLOT( selectPrevious() ) );
540 connect( mDateNavigator, SIGNAL( goNext() ), 540 connect( mDateNavigator, SIGNAL( goNext() ),
541 mNavigator, SLOT( selectNext() ) ); 541 mNavigator, SLOT( selectNext() ) );
542 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 542 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
543 mNavigator, SLOT( slotMonthSelect( int ) ) ); 543 mNavigator, SLOT( slotMonthSelect( int ) ) );
544 544
545 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 545 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
546 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 546 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
547#if 0 547#if 0
548 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 548 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
549 SLOT( incidenceAdded( Incidence *) ) ); 549 SLOT( incidenceAdded( Incidence *) ) );
550#endif 550#endif
551 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 551 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
552 552
553 connect( this, SIGNAL( configChanged() ), 553 connect( this, SIGNAL( configChanged() ),
554 mDateNavigator, SLOT( updateConfig() ) ); 554 mDateNavigator, SLOT( updateConfig() ) );
555 555
556 connect( mTodoList, SIGNAL( newTodoSignal() ), 556 connect( mTodoList, SIGNAL( newTodoSignal() ),
557 SLOT( newTodo() ) ); 557 SLOT( newTodo() ) );
558 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 558 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
559 SLOT( newSubTodo( Todo * ) ) ); 559 SLOT( newSubTodo( Todo * ) ) );
560 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 560 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
561 SLOT( editTodo( Todo * ) ) ); 561 SLOT( editTodo( Todo * ) ) );
562 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 562 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
563 SLOT( showTodo( Todo *) ) ); 563 SLOT( showTodo( Todo *) ) );
564 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 564 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
565 SLOT( deleteTodo( Todo *) ) ); 565 SLOT( deleteTodo( Todo *) ) );
566 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 566 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
567 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 567 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
568 SLOT( purgeCompleted() ) ); 568 SLOT( purgeCompleted() ) );
569 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 569 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
570 SIGNAL( todoModified( Todo *, int ) ) ); 570 SIGNAL( todoModified( Todo *, int ) ) );
571 571
572 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 572 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
573 this, SLOT ( cloneIncidence( Incidence * ) ) ); 573 this, SLOT ( cloneIncidence( Incidence * ) ) );
574 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 574 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
575 this, SLOT (cancelIncidence( Incidence * ) ) ); 575 this, SLOT (cancelIncidence( Incidence * ) ) );
576 576
577 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 577 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
578 this, SLOT ( moveIncidence( Incidence * ) ) ); 578 this, SLOT ( moveIncidence( Incidence * ) ) );
579 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 579 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
580 this, SLOT ( beamIncidence( Incidence * ) ) ); 580 this, SLOT ( beamIncidence( Incidence * ) ) );
581 581
582 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 582 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
583 this, SLOT ( todo_unsub( Todo * ) ) ); 583 this, SLOT ( todo_unsub( Todo * ) ) );
584 584
585 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 585 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
586 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 586 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
587 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 587 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
588 SLOT( updateTodo( Todo *, int ) ) ); 588 SLOT( updateTodo( Todo *, int ) ) );
589 connect( this, SIGNAL( todoModified( Todo *, int )), this, 589 connect( this, SIGNAL( todoModified( Todo *, int )), this,
590 SLOT( changeTodoDisplay( Todo *, int ) ) ); 590 SLOT( changeTodoDisplay( Todo *, int ) ) );
591 591
592 592
593 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 593 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
594 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 594 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
595 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 595 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
596 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 596 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
597 597
598 598
599 599
600 600
601 601
602 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 602 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
603 SLOT(checkClipboard())); 603 SLOT(checkClipboard()));
604 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 604 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
605 SLOT( processTodoListSelection( Incidence * ) ) ); 605 SLOT( processTodoListSelection( Incidence * ) ) );
606 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 606 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
607 607
608 // kdDebug() << "CalendarView::CalendarView() done" << endl; 608 // kdDebug() << "CalendarView::CalendarView() done" << endl;
609 609
610 mDateFrame = new QVBox(0,0,WType_Popup); 610 mDateFrame = new QVBox(0,0,WType_Popup);
611 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 611 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
612 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 612 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
613 mDateFrame->setLineWidth(3); 613 mDateFrame->setLineWidth(3);
614 mDateFrame->hide(); 614 mDateFrame->hide();
615 mDateFrame->setCaption( i18n( "Pick a date to display")); 615 mDateFrame->setCaption( i18n( "Pick a date to display"));
616 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 616 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
617 617
618 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 618 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
619 619
620 mEventEditor = mDialogManager->getEventEditor(); 620 mEventEditor = mDialogManager->getEventEditor();
621 mTodoEditor = mDialogManager->getTodoEditor(); 621 mTodoEditor = mDialogManager->getTodoEditor();
622 622
623 mFlagEditDescription = false; 623 mFlagEditDescription = false;
624 624
625 mSuspendTimer = new QTimer( this ); 625 mSuspendTimer = new QTimer( this );
626 mAlarmTimer = new QTimer( this ); 626 mAlarmTimer = new QTimer( this );
627 mRecheckAlarmTimer = new QTimer( this ); 627 mRecheckAlarmTimer = new QTimer( this );
628 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 628 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
629 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 629 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
630 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 630 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
631 mAlarmDialog = new AlarmDialog( this ); 631 mAlarmDialog = new AlarmDialog( this );
632 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 632 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
633 mAlarmDialog->setServerNotification( false ); 633 mAlarmDialog->setServerNotification( false );
634 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 634 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
635 635
636 636
637#ifndef DESKTOP_VERSION 637#ifndef DESKTOP_VERSION
638//US listen for arriving address resultsets 638//US listen for arriving address resultsets
639 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 639 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
640 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 640 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
641#endif 641#endif
642 mDateNavigator->setCalendar( mCalendar ); 642 mDateNavigator->setCalendar( mCalendar );
643} 643}
644 644
645 645
646CalendarView::~CalendarView() 646CalendarView::~CalendarView()
647{ 647{
648 // kdDebug() << "~CalendarView()" << endl; 648 // kdDebug() << "~CalendarView()" << endl;
649 //qDebug("CalendarView::~CalendarView() "); 649 //qDebug("CalendarView::~CalendarView() ");
650 delete mDialogManager; 650 delete mDialogManager;
651 delete mViewManager; 651 delete mViewManager;
652 delete mStorage; 652 delete mStorage;
653 delete mDateFrame ; 653 delete mDateFrame ;
654 delete mEventViewerDialog; 654 delete mEventViewerDialog;
655 //kdDebug() << "~CalendarView() done" << endl; 655 //kdDebug() << "~CalendarView() done" << endl;
656} 656}
657void CalendarView::nextConflict( bool all, bool allday )
658{
659 QDate start = mNavigator->selectedDates().first().addDays(1);
660 QDate end = start.addDays( 365*2);
661 while ( start < end ) {
662 QPtrList<Event> eventList = calendar()->events( start );
663 Event * ev = eventList.first();
664 QPtrList<Event> test = eventList;
665 while ( ev ) {
666 //qDebug("found %d on %s ", eventList.count(), start.toString().latin1());
667 Event * t_ev = test.first();
668 QDateTime es = ev->dtStart();
669 QDateTime ee = ev->dtEnd();
670 if ( ev->doesFloat() )
671 ee = ee.addDays( 1 );
672 if ( ! all ) {
673 if ( ev->doesFloat() != allday )
674 t_ev = 0;
675 }
676 while ( t_ev ) {
677 bool skip = false;
678 if ( ! all ) {
679 if ( t_ev->doesFloat() != allday )
680 skip = true;
681 }
682 if ( !skip && ev != t_ev ) {
683 QDateTime ets = t_ev->dtStart();
684 QDateTime ete = t_ev->dtEnd();
685 if ( t_ev->doesFloat() )
686 ete = ete.addDays( 1 );
687 //qDebug("test %s -- %s -------- %s -- %s ", es.toString().latin1() , ee.toString().latin1(), ets.toString().latin1() , ete.toString().latin1() );
688 if ( es < ete && ets < ee ) {
689 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
690 mViewManager->showDayView();
691 mNavigator->slotDaySelect( start );
692 int hour = es.time().hour();
693 if ( ets > es )
694 hour = ets.time().hour();
695 mViewManager->agendaView()->setStartHour( hour );
696 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( ev->summary().left( 20 ) ).arg( t_ev->summary().left( 20 ) ) );
697 return;
698 }
699 }
700 t_ev = test.next();
701 }
702 ev = eventList.next();
703 }
704 start = start.addDays( 1 );
705 }
706 topLevelWidget()->setCaption( i18n("No conflict found within the next two years") );
707 qDebug("No conflict found ");
708}
709
710void CalendarView::conflictAll()
711{
712 nextConflict ( true, true );
713}
714void CalendarView::conflictAllday()
715{
716 nextConflict ( false, true );
717}
718void CalendarView::conflictNotAll()
719{
720 nextConflict ( false, false );
721}
722
657void CalendarView::setCalReadOnly( int id, bool readO ) 723void CalendarView::setCalReadOnly( int id, bool readO )
658{ 724{
659 if ( readO ) { 725 if ( readO ) {
660 emit save(); 726 emit save();
661 } 727 }
662 mCalendar->setReadOnly( id, readO ); 728 mCalendar->setReadOnly( id, readO );
663} 729}
664void CalendarView::setScrollBarStep(int val ) 730void CalendarView::setScrollBarStep(int val )
665{ 731{
666#ifdef DESKTOP_VERSION 732#ifdef DESKTOP_VERSION
667 mDateScrollBar->setLineStep ( val ); 733 mDateScrollBar->setLineStep ( val );
668#endif 734#endif
669} 735}
670void CalendarView::scrollBarValue(int val ) 736void CalendarView::scrollBarValue(int val )
671{ 737{
672#ifdef DESKTOP_VERSION 738#ifdef DESKTOP_VERSION
673 if ( QApplication::desktop()->width() < 800 ) return; 739 if ( QApplication::desktop()->width() < 800 ) return;
674 static bool block = false; 740 static bool block = false;
675 if ( block ) return; 741 if ( block ) return;
676 block = true; 742 block = true;
677 int count = mNavigator->selectedDates().count(); 743 int count = mNavigator->selectedDates().count();
678 int day = mNavigator->selectedDates().first().dayOfYear(); 744 int day = mNavigator->selectedDates().first().dayOfYear();
679 int stepdays = val; 745 int stepdays = val;
680 if ( mDateScrollBar->lineStep () <= count ) { 746 if ( mDateScrollBar->lineStep () <= count ) {
681 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 747 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
682 //qDebug("VAL %d ",val ); 748 //qDebug("VAL %d ",val );
683 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 749 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
684 stepdays = day+stepdays; 750 stepdays = day+stepdays;
685 if ( stepdays < 0 ) stepdays = 0; 751 if ( stepdays < 0 ) stepdays = 0;
686 } 752 }
687 if ( stepdays == day ) { 753 if ( stepdays == day ) {
688 block = false; 754 block = false;
689 return; 755 return;
690 } 756 }
691 int year = mNavigator->selectedDates().first().year(); 757 int year = mNavigator->selectedDates().first().year();
692 QDate d ( year,1,1 ); 758 QDate d ( year,1,1 );
693 mNavigator->selectDates( d.addDays( stepdays-1) , count ); 759 mNavigator->selectDates( d.addDays( stepdays-1) , count );
694 block = false; 760 block = false;
695#endif 761#endif
696 762
697} 763}
698void CalendarView::updateView(const QDate &start, const QDate &end) 764void CalendarView::updateView(const QDate &start, const QDate &end)
699{ 765{
700#ifdef DESKTOP_VERSION 766#ifdef DESKTOP_VERSION
701 if ( ! mDateScrollBar->draggingSlider () ) { 767 if ( ! mDateScrollBar->draggingSlider () ) {
702 int dof = start.dayOfYear(); 768 int dof = start.dayOfYear();
703 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() ); 769 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() );
704 if ( dof != mDateScrollBar->value() ) { 770 if ( dof != mDateScrollBar->value() ) {
705 mDateScrollBar->blockSignals( true ); 771 mDateScrollBar->blockSignals( true );
706 mDateScrollBar->setValue( start.dayOfYear()); 772 mDateScrollBar->setValue( start.dayOfYear());
707 mDateScrollBar->blockSignals( false ); 773 mDateScrollBar->blockSignals( false );
708 } 774 }
709 } 775 }
710#endif 776#endif
711 mTodoList->updateView(); 777 mTodoList->updateView();
712 mViewManager->updateView(start, end); 778 mViewManager->updateView(start, end);
713 //mDateNavigator->updateView(); 779 //mDateNavigator->updateView();
714} 780}
715 781
716 782
717 783
718void CalendarView::checkFiles() 784void CalendarView::checkFiles()
719{ 785{
720 QString message; 786 QString message;
721 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 787 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
722 KopiCalendarFile * cal = calendars.first(); 788 KopiCalendarFile * cal = calendars.first();
723 while ( cal ) { 789 while ( cal ) {
724 if ( cal->mErrorOnLoad ) { 790 if ( cal->mErrorOnLoad ) {
725 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; 791 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n";
726 } 792 }
727 cal = calendars.next(); 793 cal = calendars.next();
728 } 794 }
729 if ( !message.isEmpty() ) { 795 if ( !message.isEmpty() ) {
730 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0); 796 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0);
731 KMessageBox::error(this,message, i18n("Loding of calendar(s) failed")); 797 KMessageBox::error(this,message, i18n("Loding of calendar(s) failed"));
732 } 798 }
733 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); 799 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() ));
734} 800}
735void CalendarView::checkAlarms() 801void CalendarView::checkAlarms()
736{ 802{
737 803
738 804
739 KConfig *config = KOGlobals::config(); 805 KConfig *config = KOGlobals::config();
740 config->setGroup( "AppRun" ); 806 config->setGroup( "AppRun" );
741 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 807 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
742 int daysto = dt.daysTo( QDate::currentDate() ); 808 int daysto = dt.daysTo( QDate::currentDate() );
743 int days = config->readNumEntry( "LatestProgramStopDays" , daysto); 809 int days = config->readNumEntry( "LatestProgramStopDays" , daysto);
744 dt = dt.addDays( days ); 810 dt = dt.addDays( days );
745 int secto = dt.secsTo( QDateTime::currentDateTime() ); 811 int secto = dt.secsTo( QDateTime::currentDateTime() );
746 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; 812 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30;
747 //qDebug("KO: Reading program stop %d ", secs); 813 //qDebug("KO: Reading program stop %d ", secs);
748 //secs -= ( 3600 * 24*3 ); // debug only 814 //secs -= ( 3600 * 24*3 ); // debug only
749 QDateTime latest = dt.addSecs ( secs ); 815 QDateTime latest = dt.addSecs ( secs );
750 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 816 qDebug("KO: Last termination on %s ", latest.toString().latin1());
751 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 817 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
752 QPtrList<Incidence> el = mCalendar->rawIncidences(); 818 QPtrList<Incidence> el = mCalendar->rawIncidences();
753 QPtrList<Incidence> al; 819 QPtrList<Incidence> al;
754 Incidence* inL = el.first(); 820 Incidence* inL = el.first();
755 QDateTime cur = QDateTime::currentDateTime().addSecs(-59); 821 QDateTime cur = QDateTime::currentDateTime().addSecs(-59);
756 qDebug("KO: Checking alarm until %s ", cur.toString().latin1()); 822 qDebug("KO: Checking alarm until %s ", cur.toString().latin1());
757 while ( inL ) { 823 while ( inL ) {
758 bool ok = false; 824 bool ok = false;
759 int offset = 0; 825 int offset = 0;
760 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 826 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
761 if ( ok ) { 827 if ( ok ) {
762 //qDebug("OK %s",next.toString().latin1()); 828 //qDebug("OK %s",next.toString().latin1());
763 if ( next < cur ) { 829 if ( next < cur ) {
764 al.append( inL ); 830 al.append( inL );
765 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 831 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
766 } 832 }
767 } 833 }
768 inL = el.next(); 834 inL = el.next();
769 } 835 }
770 if ( al.count() ) { 836 if ( al.count() ) {
771 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 837 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
772 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 838 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
773 QVBoxLayout* lay = new QVBoxLayout( dia ); 839 QVBoxLayout* lay = new QVBoxLayout( dia );
774 lay->setSpacing( 0 ); 840 lay->setSpacing( 0 );
775 lay->setMargin( 0 ); 841 lay->setMargin( 0 );
776 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 842 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
777 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 843 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
778 lay->addWidget( matb ); 844 lay->addWidget( matb );
779 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 845 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
780 int wid = 210; 846 int wid = 210;
781 int x = QApplication::desktop()->width() - wid - 7; 847 int x = QApplication::desktop()->width() - wid - 7;
782 int y = QApplication::desktop()->height() - wid - 70; 848 int y = QApplication::desktop()->height() - wid - 70;
783 dia->setGeometry ( x,y,wid,wid); 849 dia->setGeometry ( x,y,wid,wid);
784 } else { 850 } else {
@@ -3037,257 +3103,257 @@ void CalendarView::moveIncidence(Incidence * inc )
3037 //mMoveIncidenceOldDate; 3103 //mMoveIncidenceOldDate;
3038 mDatePicker->setDate( da ); 3104 mDatePicker->setDate( da );
3039} 3105}
3040void CalendarView::showDatePickerPopup() 3106void CalendarView::showDatePickerPopup()
3041{ 3107{
3042 if ( mDateFrame->isVisible() ) 3108 if ( mDateFrame->isVisible() )
3043 mDateFrame->hide(); 3109 mDateFrame->hide();
3044 else { 3110 else {
3045 int offX = 0, offY = 0; 3111 int offX = 0, offY = 0;
3046#ifdef DESKTOP_VERSION 3112#ifdef DESKTOP_VERSION
3047 int w =mDatePicker->sizeHint().width() ; 3113 int w =mDatePicker->sizeHint().width() ;
3048 int h = mDatePicker->sizeHint().height() ; 3114 int h = mDatePicker->sizeHint().height() ;
3049 int dw = topLevelWidget()->width(); 3115 int dw = topLevelWidget()->width();
3050 int dh = topLevelWidget()->height(); 3116 int dh = topLevelWidget()->height();
3051 offX = topLevelWidget()->x(); 3117 offX = topLevelWidget()->x();
3052 offY = topLevelWidget()->y(); 3118 offY = topLevelWidget()->y();
3053#else 3119#else
3054 int w =mDatePicker->sizeHint().width() ; 3120 int w =mDatePicker->sizeHint().width() ;
3055 int h = mDatePicker->sizeHint().height() ; 3121 int h = mDatePicker->sizeHint().height() ;
3056 int dw = QApplication::desktop()->width(); 3122 int dw = QApplication::desktop()->width();
3057 int dh = QApplication::desktop()->height(); 3123 int dh = QApplication::desktop()->height();
3058#endif 3124#endif
3059 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 3125 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
3060 mDateFrame->show(); 3126 mDateFrame->show();
3061 } 3127 }
3062} 3128}
3063void CalendarView::showDatePicker( ) 3129void CalendarView::showDatePicker( )
3064{ 3130{
3065 showDatePickerPopup(); 3131 showDatePickerPopup();
3066 mDatePickerMode = 1; 3132 mDatePickerMode = 1;
3067 mDatePicker->setDate( mNavigator->selectedDates().first() ); 3133 mDatePicker->setDate( mNavigator->selectedDates().first() );
3068} 3134}
3069 3135
3070void CalendarView::showEventEditor() 3136void CalendarView::showEventEditor()
3071{ 3137{
3072#ifdef DESKTOP_VERSION 3138#ifdef DESKTOP_VERSION
3073 int x,y,w,h; 3139 int x,y,w,h;
3074 x = mEventEditor->geometry().x(); 3140 x = mEventEditor->geometry().x();
3075 y = mEventEditor->geometry().y(); 3141 y = mEventEditor->geometry().y();
3076 w = mEventEditor->width(); 3142 w = mEventEditor->width();
3077 h = mEventEditor->height(); 3143 h = mEventEditor->height();
3078 mEventEditor->show(); 3144 mEventEditor->show();
3079 mEventEditor->setGeometry(x,y,w,h); 3145 mEventEditor->setGeometry(x,y,w,h);
3080#else 3146#else
3081 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 3147 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
3082 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3148 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3083 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 3149 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
3084 qApp->processEvents(); 3150 qApp->processEvents();
3085 delete mEventEditor; 3151 delete mEventEditor;
3086 mEventEditor = mDialogManager->getEventEditor(); 3152 mEventEditor = mDialogManager->getEventEditor();
3087 topLevelWidget()->setCaption( i18n("") ); 3153 topLevelWidget()->setCaption( i18n("") );
3088 } 3154 }
3089 mEventEditor->showMaximized(); 3155 mEventEditor->showMaximized();
3090#endif 3156#endif
3091} 3157}
3092void CalendarView::showTodoEditor() 3158void CalendarView::showTodoEditor()
3093{ 3159{
3094#ifdef DESKTOP_VERSION 3160#ifdef DESKTOP_VERSION
3095 int x,y,w,h; 3161 int x,y,w,h;
3096 x = mTodoEditor->geometry().x(); 3162 x = mTodoEditor->geometry().x();
3097 y = mTodoEditor->geometry().y(); 3163 y = mTodoEditor->geometry().y();
3098 w = mTodoEditor->width(); 3164 w = mTodoEditor->width();
3099 h = mTodoEditor->height(); 3165 h = mTodoEditor->height();
3100 mTodoEditor->show(); 3166 mTodoEditor->show();
3101 mTodoEditor->setGeometry(x,y,w,h); 3167 mTodoEditor->setGeometry(x,y,w,h);
3102#else 3168#else
3103 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 3169 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
3104 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3170 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3105 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 3171 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
3106 qApp->processEvents(); 3172 qApp->processEvents();
3107 delete mTodoEditor; 3173 delete mTodoEditor;
3108 mTodoEditor = mDialogManager->getTodoEditor(); 3174 mTodoEditor = mDialogManager->getTodoEditor();
3109 topLevelWidget()->setCaption( i18n("") ); 3175 topLevelWidget()->setCaption( i18n("") );
3110 } 3176 }
3111 mTodoEditor->showMaximized(); 3177 mTodoEditor->showMaximized();
3112#endif 3178#endif
3113} 3179}
3114 3180
3115void CalendarView::cloneIncidence() 3181void CalendarView::cloneIncidence()
3116{ 3182{
3117 Incidence *incidence = currentSelection(); 3183 Incidence *incidence = currentSelection();
3118 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3184 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3119 if ( incidence ) { 3185 if ( incidence ) {
3120 cloneIncidence(incidence); 3186 cloneIncidence(incidence);
3121 } 3187 }
3122} 3188}
3123void CalendarView::moveIncidence() 3189void CalendarView::moveIncidence()
3124{ 3190{
3125 Incidence *incidence = currentSelection(); 3191 Incidence *incidence = currentSelection();
3126 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3192 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3127 if ( incidence ) { 3193 if ( incidence ) {
3128 moveIncidence(incidence); 3194 moveIncidence(incidence);
3129 } 3195 }
3130} 3196}
3131void CalendarView::beamIncidence() 3197void CalendarView::beamIncidence()
3132{ 3198{
3133 Incidence *incidence = currentSelection(); 3199 Incidence *incidence = currentSelection();
3134 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3200 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3135 if ( incidence ) { 3201 if ( incidence ) {
3136 beamIncidence(incidence); 3202 beamIncidence(incidence);
3137 } 3203 }
3138} 3204}
3139void CalendarView::toggleCancelIncidence() 3205void CalendarView::toggleCancelIncidence()
3140{ 3206{
3141 Incidence *incidence = currentSelection(); 3207 Incidence *incidence = currentSelection();
3142 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3208 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3143 if ( incidence ) { 3209 if ( incidence ) {
3144 cancelIncidence(incidence); 3210 cancelIncidence(incidence);
3145 } 3211 }
3146} 3212}
3147 3213
3148 3214
3149void CalendarView::cancelIncidence(Incidence * inc ) 3215void CalendarView::cancelIncidence(Incidence * inc )
3150{ 3216{
3151 inc->setCancelled( ! inc->cancelled() ); 3217 inc->setCancelled( ! inc->cancelled() );
3152 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 3218 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
3153 updateView(); 3219 updateView();
3154} 3220}
3155void CalendarView::cloneIncidence(Incidence * orgInc ) 3221void CalendarView::cloneIncidence(Incidence * orgInc )
3156{ 3222{
3157 Incidence * newInc = orgInc->clone(); 3223 Incidence * newInc = orgInc->clone();
3158 newInc->recreate(); 3224 newInc->recreate();
3159 3225
3160 if ( newInc->typeID() == todoID ) { 3226 if ( newInc->typeID() == todoID ) {
3161 Todo* t = (Todo*) newInc; 3227 Todo* t = (Todo*) newInc;
3162 bool cloneSub = false; 3228 bool cloneSub = false;
3163 if ( orgInc->relations().count() ) { 3229 if ( orgInc->relations().count() ) {
3164 int result = KMessageBox::warningYesNoCancel(this, 3230 int result = KMessageBox::warningYesNoCancel(this,
3165 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( newInc->summary().left ( 25 ) ), 3231 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( KGlobal::formatMessage ( newInc->summary(),0 ) ),
3166 i18n("Todo has subtodos"), 3232 i18n("Todo has subtodos"),
3167 i18n("Yes"), 3233 i18n("Yes"),
3168 i18n("No")); 3234 i18n("No"));
3169 3235
3170 if ( result == KMessageBox::Cancel ) { 3236 if ( result == KMessageBox::Cancel ) {
3171 delete t; 3237 delete t;
3172 return; 3238 return;
3173 } 3239 }
3174 if (result == KMessageBox::Yes) cloneSub = true; 3240 if (result == KMessageBox::Yes) cloneSub = true;
3175 } 3241 }
3176 showTodoEditor(); 3242 showTodoEditor();
3177 mTodoEditor->editTodo( t ); 3243 mTodoEditor->editTodo( t );
3178 if ( mTodoEditor->exec() ) { 3244 if ( mTodoEditor->exec() ) {
3179 if ( cloneSub ) { 3245 if ( cloneSub ) {
3180 orgInc->cloneRelations( t ); 3246 orgInc->cloneRelations( t );
3181 mCalendar->addIncidenceBranch( t ); 3247 mCalendar->addIncidenceBranch( t );
3182 updateView(); 3248 updateView();
3183 3249
3184 } else { 3250 } else {
3185 mCalendar->addTodo( t ); 3251 mCalendar->addTodo( t );
3186 updateView(); 3252 updateView();
3187 } 3253 }
3188 } else { 3254 } else {
3189 delete t; 3255 delete t;
3190 } 3256 }
3191 } 3257 }
3192 else if ( newInc->typeID() == eventID ) { 3258 else if ( newInc->typeID() == eventID ) {
3193 Event* e = (Event*) newInc; 3259 Event* e = (Event*) newInc;
3194 showEventEditor(); 3260 showEventEditor();
3195 mEventEditor->editEvent( e ); 3261 mEventEditor->editEvent( e );
3196 if ( mEventEditor->exec() ) { 3262 if ( mEventEditor->exec() ) {
3197 mCalendar->addEvent( e ); 3263 mCalendar->addEvent( e );
3198 updateView(); 3264 updateView();
3199 } else { 3265 } else {
3200 delete e; 3266 delete e;
3201 } 3267 }
3202 } if ( newInc->typeID() == journalID ) { 3268 } if ( newInc->typeID() == journalID ) {
3203 mCalendar->addJournal( (Journal*) newInc ); 3269 mCalendar->addJournal( (Journal*) newInc );
3204 editJournal( (Journal*) newInc ); 3270 editJournal( (Journal*) newInc );
3205 } 3271 }
3206 setActiveWindow(); 3272 setActiveWindow();
3207} 3273}
3208 3274
3209void CalendarView::newEvent() 3275void CalendarView::newEvent()
3210{ 3276{
3211 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 3277 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
3212 KOAgendaView *aView = mViewManager->agendaView(); 3278 KOAgendaView *aView = mViewManager->agendaView();
3213 if (aView) { 3279 if (aView) {
3214 if (aView->selectionStart().isValid()) { 3280 if (aView->selectionStart().isValid()) {
3215 if (aView->selectedIsAllDay()) { 3281 if (aView->selectedIsAllDay()) {
3216 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 3282 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
3217 } else { 3283 } else {
3218 newEvent(aView->selectionStart(),aView->selectionEnd()); 3284 newEvent(aView->selectionStart(),aView->selectionEnd());
3219 } 3285 }
3220 return; 3286 return;
3221 } 3287 }
3222 } 3288 }
3223 3289
3224 QDate date = mNavigator->selectedDates().first(); 3290 QDate date = mNavigator->selectedDates().first();
3225 QDateTime current = QDateTime::currentDateTime(); 3291 QDateTime current = QDateTime::currentDateTime();
3226 if ( date <= current.date() ) { 3292 if ( date <= current.date() ) {
3227 int hour = current.time().hour() +1; 3293 int hour = current.time().hour() +1;
3228 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 3294 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
3229 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3295 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3230 } else 3296 } else
3231 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 3297 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
3232 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 3298 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
3233 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3299 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3234} 3300}
3235 3301
3236void CalendarView::newEvent(QDateTime fh) 3302void CalendarView::newEvent(QDateTime fh)
3237{ 3303{
3238 newEvent(fh, 3304 newEvent(fh,
3239 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 3305 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
3240} 3306}
3241 3307
3242void CalendarView::newEvent(QDate dt) 3308void CalendarView::newEvent(QDate dt)
3243{ 3309{
3244 newEvent(QDateTime(dt, QTime(0,0,0)), 3310 newEvent(QDateTime(dt, QTime(0,0,0)),
3245 QDateTime(dt, QTime(0,0,0)), true); 3311 QDateTime(dt, QTime(0,0,0)), true);
3246} 3312}
3247void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 3313void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
3248{ 3314{
3249 newEvent(fromHint, toHint, false); 3315 newEvent(fromHint, toHint, false);
3250} 3316}
3251void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 3317void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
3252{ 3318{
3253 3319
3254 showEventEditor(); 3320 showEventEditor();
3255 mEventEditor->newEvent(fromHint,toHint,allDay); 3321 mEventEditor->newEvent(fromHint,toHint,allDay);
3256 if ( mFilterView->filtersEnabled() ) { 3322 if ( mFilterView->filtersEnabled() ) {
3257 CalFilter *filter = mFilterView->selectedFilter(); 3323 CalFilter *filter = mFilterView->selectedFilter();
3258 if (filter && filter->showCategories()) { 3324 if (filter && filter->showCategories()) {
3259 mEventEditor->setCategories(filter->categoryList().join(",") ); 3325 mEventEditor->setCategories(filter->categoryList().join(",") );
3260 } 3326 }
3261 if ( filter ) 3327 if ( filter )
3262 mEventEditor->setSecrecy( filter->getSecrecy() ); 3328 mEventEditor->setSecrecy( filter->getSecrecy() );
3263 } 3329 }
3264 mEventEditor->exec(); 3330 mEventEditor->exec();
3265 setActiveWindow(); 3331 setActiveWindow();
3266} 3332}
3267void CalendarView::todoAdded(Todo * t) 3333void CalendarView::todoAdded(Todo * t)
3268{ 3334{
3269 3335
3270 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 3336 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
3271 updateTodoViews(); 3337 updateTodoViews();
3272} 3338}
3273void CalendarView::todoChanged(Todo * t) 3339void CalendarView::todoChanged(Todo * t)
3274{ 3340{
3275 emit todoModified( t, 4 ); 3341 emit todoModified( t, 4 );
3276 // updateTodoViews(); 3342 // updateTodoViews();
3277} 3343}
3278void CalendarView::todoToBeDeleted(Todo *) 3344void CalendarView::todoToBeDeleted(Todo *)
3279{ 3345{
3280 //qDebug("todoToBeDeleted(Todo *) "); 3346 //qDebug("todoToBeDeleted(Todo *) ");
3281 updateTodoViews(); 3347 updateTodoViews();
3282} 3348}
3283void CalendarView::todoDeleted() 3349void CalendarView::todoDeleted()
3284{ 3350{
3285 //qDebug(" todoDeleted()"); 3351 //qDebug(" todoDeleted()");
3286 updateTodoViews(); 3352 updateTodoViews();
3287} 3353}
3288 3354
3289 3355
3290void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 3356void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
3291{ 3357{
3292 showTodoEditor(); 3358 showTodoEditor();
3293 mTodoEditor->newTodo(dt,0,allday); 3359 mTodoEditor->newTodo(dt,0,allday);
@@ -3375,378 +3441,378 @@ KOEventViewerDialog* CalendarView::getEventViewerDialog()
3375 mEventViewerDialog = new KOEventViewerDialog(0); 3441 mEventViewerDialog = new KOEventViewerDialog(0);
3376 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 3442 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
3377 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 3443 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
3378 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 3444 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
3379 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 3445 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
3380 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 3446 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
3381 viewManager(), SLOT( showAgendaView( bool ) ) ); 3447 viewManager(), SLOT( showAgendaView( bool ) ) );
3382 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 3448 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
3383 this, SLOT( slotViewerClosed() ) ); 3449 this, SLOT( slotViewerClosed() ) );
3384 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 3450 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
3385 this, SLOT( todoChanged(Todo *) ) ); 3451 this, SLOT( todoChanged(Todo *) ) );
3386 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 3452 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
3387 mEventViewerDialog->resize( 640, 480 ); 3453 mEventViewerDialog->resize( 640, 480 );
3388 3454
3389 } 3455 }
3390 return mEventViewerDialog; 3456 return mEventViewerDialog;
3391} 3457}
3392void CalendarView::showEvent(Event *event) 3458void CalendarView::showEvent(Event *event)
3393{ 3459{
3394 getEventViewerDialog()->setEvent(event); 3460 getEventViewerDialog()->setEvent(event);
3395 getEventViewerDialog()->showMe(); 3461 getEventViewerDialog()->showMe();
3396} 3462}
3397 3463
3398void CalendarView::showTodo(Todo *event) 3464void CalendarView::showTodo(Todo *event)
3399{ 3465{
3400 getEventViewerDialog()->setTodo(event); 3466 getEventViewerDialog()->setTodo(event);
3401 getEventViewerDialog()->showMe(); 3467 getEventViewerDialog()->showMe();
3402} 3468}
3403void CalendarView::showJournal( Journal *jour ) 3469void CalendarView::showJournal( Journal *jour )
3404{ 3470{
3405 getEventViewerDialog()->setJournal(jour); 3471 getEventViewerDialog()->setJournal(jour);
3406 getEventViewerDialog()->showMe(); 3472 getEventViewerDialog()->showMe();
3407 3473
3408} 3474}
3409// void CalendarView::todoModified (Todo *event, int changed) 3475// void CalendarView::todoModified (Todo *event, int changed)
3410// { 3476// {
3411// // if (mDialogList.find (event) != mDialogList.end ()) { 3477// // if (mDialogList.find (event) != mDialogList.end ()) {
3412// // kdDebug() << "Todo modified and open" << endl; 3478// // kdDebug() << "Todo modified and open" << endl;
3413// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 3479// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
3414// // temp->modified (changed); 3480// // temp->modified (changed);
3415 3481
3416// // } 3482// // }
3417 3483
3418// mViewManager->updateView(); 3484// mViewManager->updateView();
3419// } 3485// }
3420 3486
3421void CalendarView::appointment_show() 3487void CalendarView::appointment_show()
3422{ 3488{
3423 Event *anEvent = 0; 3489 Event *anEvent = 0;
3424 3490
3425 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3491 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3426 3492
3427 if (mViewManager->currentView()->isEventView()) { 3493 if (mViewManager->currentView()->isEventView()) {
3428 if ( incidence && incidence->typeID() == eventID ) { 3494 if ( incidence && incidence->typeID() == eventID ) {
3429 anEvent = static_cast<Event *>(incidence); 3495 anEvent = static_cast<Event *>(incidence);
3430 } 3496 }
3431 } 3497 }
3432 3498
3433 if (!anEvent) { 3499 if (!anEvent) {
3434 KNotifyClient::beep(); 3500 KNotifyClient::beep();
3435 return; 3501 return;
3436 } 3502 }
3437 3503
3438 showEvent(anEvent); 3504 showEvent(anEvent);
3439} 3505}
3440 3506
3441void CalendarView::appointment_edit() 3507void CalendarView::appointment_edit()
3442{ 3508{
3443 Event *anEvent = 0; 3509 Event *anEvent = 0;
3444 3510
3445 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3511 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3446 3512
3447 if (mViewManager->currentView()->isEventView()) { 3513 if (mViewManager->currentView()->isEventView()) {
3448 if ( incidence && incidence->typeID() == eventID ) { 3514 if ( incidence && incidence->typeID() == eventID ) {
3449 anEvent = static_cast<Event *>(incidence); 3515 anEvent = static_cast<Event *>(incidence);
3450 } 3516 }
3451 } 3517 }
3452 3518
3453 if (!anEvent) { 3519 if (!anEvent) {
3454 KNotifyClient::beep(); 3520 KNotifyClient::beep();
3455 return; 3521 return;
3456 } 3522 }
3457 3523
3458 editEvent(anEvent); 3524 editEvent(anEvent);
3459} 3525}
3460 3526
3461void CalendarView::appointment_delete() 3527void CalendarView::appointment_delete()
3462{ 3528{
3463 Event *anEvent = 0; 3529 Event *anEvent = 0;
3464 3530
3465 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3531 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3466 3532
3467 if (mViewManager->currentView()->isEventView()) { 3533 if (mViewManager->currentView()->isEventView()) {
3468 if ( incidence && incidence->typeID() == eventID ) { 3534 if ( incidence && incidence->typeID() == eventID ) {
3469 anEvent = static_cast<Event *>(incidence); 3535 anEvent = static_cast<Event *>(incidence);
3470 } 3536 }
3471 } 3537 }
3472 3538
3473 if (!anEvent) { 3539 if (!anEvent) {
3474 KNotifyClient::beep(); 3540 KNotifyClient::beep();
3475 return; 3541 return;
3476 } 3542 }
3477 3543
3478 deleteEvent(anEvent); 3544 deleteEvent(anEvent);
3479} 3545}
3480 3546
3481void CalendarView::todo_resub( Todo * parent, Todo * sub ) 3547void CalendarView::todo_resub( Todo * parent, Todo * sub )
3482{ 3548{
3483 if (!sub) return; 3549 if (!sub) return;
3484 if ( sub->relatedTo() == parent ) 3550 if ( sub->relatedTo() == parent )
3485 return; 3551 return;
3486 sub->setRelatedTo(parent); 3552 sub->setRelatedTo(parent);
3487 sub->updated(); 3553 sub->updated();
3488 setModified(true); 3554 setModified(true);
3489 updateView(); 3555 updateView();
3490} 3556}
3491void CalendarView::todo_unsub(Todo *anTodo ) 3557void CalendarView::todo_unsub(Todo *anTodo )
3492{ 3558{
3493 todo_resub( 0, anTodo ); 3559 todo_resub( 0, anTodo );
3494} 3560}
3495 3561
3496void CalendarView::deleteTodo(Todo *todo) 3562void CalendarView::deleteTodo(Todo *todo)
3497{ 3563{
3498 if (!todo) { 3564 if (!todo) {
3499 KNotifyClient::beep(); 3565 KNotifyClient::beep();
3500 return; 3566 return;
3501 } 3567 }
3502 if (KOPrefs::instance()->mConfirm) { 3568 if (KOPrefs::instance()->mConfirm) {
3503 QString text = todo->summary().left(20); 3569 QString text = KGlobal::formatMessage ( todo->summary(),0 );
3504 if (!todo->relations().isEmpty()) { 3570 if (!todo->relations().isEmpty()) {
3505 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 3571 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
3506 3572
3507 } 3573 }
3508 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) { 3574 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) {
3509 case KMessageBox::Continue: // OK 3575 case KMessageBox::Continue: // OK
3510 bool deleteT = false; 3576 bool deleteT = false;
3511 if (!todo->relations().isEmpty()) { 3577 if (!todo->relations().isEmpty()) {
3512 deleteT = removeCompletedSubTodos( todo ); 3578 deleteT = removeCompletedSubTodos( todo );
3513 } 3579 }
3514 // deleteT == true: todo already deleted in removeCompletedSubTodos 3580 // deleteT == true: todo already deleted in removeCompletedSubTodos
3515 if ( !deleteT ) { 3581 if ( !deleteT ) {
3516 checkExternalId( todo ); 3582 checkExternalId( todo );
3517 calendar()->deleteTodo(todo); 3583 calendar()->deleteTodo(todo);
3518 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3584 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3519 updateView(); 3585 updateView();
3520 } 3586 }
3521 break; 3587 break;
3522 } // switch 3588 } // switch
3523 } else { 3589 } else {
3524 checkExternalId( todo ); 3590 checkExternalId( todo );
3525 mCalendar->deleteTodo(todo); 3591 mCalendar->deleteTodo(todo);
3526 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3592 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3527 updateView(); 3593 updateView();
3528 } 3594 }
3529 3595
3530 emit updateSearchDialog(); 3596 emit updateSearchDialog();
3531} 3597}
3532void CalendarView::deleteJournal(Journal *jour) 3598void CalendarView::deleteJournal(Journal *jour)
3533{ 3599{
3534 if (!jour) { 3600 if (!jour) {
3535 KNotifyClient::beep(); 3601 KNotifyClient::beep();
3536 return; 3602 return;
3537 } 3603 }
3538 if (KOPrefs::instance()->mConfirm) { 3604 if (KOPrefs::instance()->mConfirm) {
3539 3605
3540 QString des; 3606 QString des;
3541 if ( !jour->summary().isEmpty() ) { 3607 if ( !jour->summary().isEmpty() ) {
3542 des = jour->summary(); 3608 des = jour->summary();
3543 } else { 3609 } else {
3544 des = jour->description().left(30); 3610 des = jour->description().left(30);
3545 des = des.simplifyWhiteSpace (); 3611 des = des.simplifyWhiteSpace ();
3546 des.replace (QRegExp ("\\n"),"" ); 3612 des.replace (QRegExp ("\\n"),"" );
3547 des.replace (QRegExp ("\\r"),"" ); 3613 des.replace (QRegExp ("\\r"),"" );
3548 } 3614 }
3549 switch (msgItemDelete( i18n("Journal:") +"\n"+des.left(20))) { 3615 switch (msgItemDelete( i18n("Journal:") +"\n"+KGlobal::formatMessage ( des,0 ))) {
3550 case KMessageBox::Continue: // OK 3616 case KMessageBox::Continue: // OK
3551 calendar()->deleteJournal(jour); 3617 calendar()->deleteJournal(jour);
3552 updateView(); 3618 updateView();
3553 break; 3619 break;
3554 } // switch 3620 } // switch
3555 } else { 3621 } else {
3556 calendar()->deleteJournal(jour);; 3622 calendar()->deleteJournal(jour);;
3557 updateView(); 3623 updateView();
3558 } 3624 }
3559 emit updateSearchDialog(); 3625 emit updateSearchDialog();
3560} 3626}
3561 3627
3562void CalendarView::deleteEvent(Event *anEvent) 3628void CalendarView::deleteEvent(Event *anEvent)
3563{ 3629{
3564 if (!anEvent) { 3630 if (!anEvent) {
3565 KNotifyClient::beep(); 3631 KNotifyClient::beep();
3566 return; 3632 return;
3567 } 3633 }
3568 3634
3569 if (anEvent->recurrence()->doesRecur()) { 3635 if (anEvent->recurrence()->doesRecur()) {
3570 QDate itemDate = mViewManager->currentSelectionDate(); 3636 QDate itemDate = mViewManager->currentSelectionDate();
3571 int km; 3637 int km;
3572 if (!itemDate.isValid()) { 3638 if (!itemDate.isValid()) {
3573 //kdDebug() << "Date Not Valid" << endl; 3639 //kdDebug() << "Date Not Valid" << endl;
3574 if (KOPrefs::instance()->mConfirm) { 3640 if (KOPrefs::instance()->mConfirm) {
3575 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3641 km = KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
3576 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 3642 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
3577 i18n("KO/Pi Confirmation"),i18n("Delete All")); 3643 i18n("KO/Pi Confirmation"),i18n("Delete All"));
3578 if ( km == KMessageBox::Continue ) 3644 if ( km == KMessageBox::Continue )
3579 km = KMessageBox::No; // No = all below 3645 km = KMessageBox::No; // No = all below
3580 } else 3646 } else
3581 km = KMessageBox::No; 3647 km = KMessageBox::No;
3582 } else { 3648 } else {
3583 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + 3649 km = KMessageBox::warningYesNoCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
3584 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 3650 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
3585 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 3651 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
3586 i18n("KO/Pi Confirmation"),i18n("Current"), 3652 i18n("KO/Pi Confirmation"),i18n("Current"),
3587 i18n("All")); 3653 i18n("All"));
3588 } 3654 }
3589 switch(km) { 3655 switch(km) {
3590 3656
3591 case KMessageBox::No: // Continue // all 3657 case KMessageBox::No: // Continue // all
3592 //qDebug("KMessageBox::No "); 3658 //qDebug("KMessageBox::No ");
3593 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3659 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3594 schedule(Scheduler::Cancel,anEvent); 3660 schedule(Scheduler::Cancel,anEvent);
3595 3661
3596 checkExternalId( anEvent); 3662 checkExternalId( anEvent);
3597 mCalendar->deleteEvent(anEvent); 3663 mCalendar->deleteEvent(anEvent);
3598 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 3664 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
3599 break; 3665 break;
3600 3666
3601 // Disabled because it does not work 3667 // Disabled because it does not work
3602 //#if 0 3668 //#if 0
3603 case KMessageBox::Yes: // just this one 3669 case KMessageBox::Yes: // just this one
3604 //QDate qd = mNavigator->selectedDates().first(); 3670 //QDate qd = mNavigator->selectedDates().first();
3605 //if (!qd.isValid()) { 3671 //if (!qd.isValid()) {
3606 // kdDebug() << "no date selected, or invalid date" << endl; 3672 // kdDebug() << "no date selected, or invalid date" << endl;
3607 // KNotifyClient::beep(); 3673 // KNotifyClient::beep();
3608 // return; 3674 // return;
3609 //} 3675 //}
3610 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 3676 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
3611 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 3677 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
3612 anEvent->addExDate(itemDate); 3678 anEvent->addExDate(itemDate);
3613 int duration = anEvent->recurrence()->duration(); 3679 int duration = anEvent->recurrence()->duration();
3614 if ( duration > 0 ) { 3680 if ( duration > 0 ) {
3615 anEvent->recurrence()->setDuration( duration - 1 ); 3681 anEvent->recurrence()->setDuration( duration - 1 );
3616 } 3682 }
3617 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 3683 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
3618 } 3684 }
3619 break; 3685 break;
3620 //#endif 3686 //#endif
3621 } // switch 3687 } // switch
3622 } else { 3688 } else {
3623 if (KOPrefs::instance()->mConfirm) { 3689 if (KOPrefs::instance()->mConfirm) {
3624 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3690 switch (KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
3625 i18n("\nAre you sure you want\nto delete this event?"), 3691 i18n("\nAre you sure you want\nto delete this event?"),
3626 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3692 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3627 case KMessageBox::Continue: // OK 3693 case KMessageBox::Continue: // OK
3628 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3694 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3629 schedule(Scheduler::Cancel,anEvent); 3695 schedule(Scheduler::Cancel,anEvent);
3630 checkExternalId( anEvent); 3696 checkExternalId( anEvent);
3631 mCalendar->deleteEvent(anEvent); 3697 mCalendar->deleteEvent(anEvent);
3632 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3698 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3633 break; 3699 break;
3634 } // switch 3700 } // switch
3635 } else { 3701 } else {
3636 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3702 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3637 schedule(Scheduler::Cancel,anEvent); 3703 schedule(Scheduler::Cancel,anEvent);
3638 checkExternalId( anEvent); 3704 checkExternalId( anEvent);
3639 mCalendar->deleteEvent(anEvent); 3705 mCalendar->deleteEvent(anEvent);
3640 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3706 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3641 } 3707 }
3642 } // if-else 3708 } // if-else
3643 emit updateSearchDialog(); 3709 emit updateSearchDialog();
3644} 3710}
3645 3711
3646bool CalendarView::deleteEvent(const QString &uid) 3712bool CalendarView::deleteEvent(const QString &uid)
3647{ 3713{
3648 Event *ev = mCalendar->event(uid); 3714 Event *ev = mCalendar->event(uid);
3649 if (ev) { 3715 if (ev) {
3650 deleteEvent(ev); 3716 deleteEvent(ev);
3651 return true; 3717 return true;
3652 } else { 3718 } else {
3653 return false; 3719 return false;
3654 } 3720 }
3655} 3721}
3656 3722
3657/*****************************************************************************/ 3723/*****************************************************************************/
3658 3724
3659void CalendarView::action_mail() 3725void CalendarView::action_mail()
3660{ 3726{
3661#ifndef KORG_NOMAIL 3727#ifndef KORG_NOMAIL
3662 KOMailClient mailClient; 3728 KOMailClient mailClient;
3663 3729
3664 Incidence *incidence = currentSelection(); 3730 Incidence *incidence = currentSelection();
3665 3731
3666 if (!incidence) { 3732 if (!incidence) {
3667 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3733 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3668 return; 3734 return;
3669 } 3735 }
3670 if(incidence->attendeeCount() == 0 ) { 3736 if(incidence->attendeeCount() == 0 ) {
3671 KMessageBox::sorry(this, 3737 KMessageBox::sorry(this,
3672 i18n("Can't generate mail:\nNo attendees defined.\n")); 3738 i18n("Can't generate mail:\nNo attendees defined.\n"));
3673 return; 3739 return;
3674 } 3740 }
3675 3741
3676 CalendarLocal cal_tmp; 3742 CalendarLocal cal_tmp;
3677 Event *event = 0; 3743 Event *event = 0;
3678 Event *ev = 0; 3744 Event *ev = 0;
3679 if ( incidence && incidence->typeID() == eventID ) { 3745 if ( incidence && incidence->typeID() == eventID ) {
3680 event = static_cast<Event *>(incidence); 3746 event = static_cast<Event *>(incidence);
3681 ev = new Event(*event); 3747 ev = new Event(*event);
3682 cal_tmp.addEvent(ev); 3748 cal_tmp.addEvent(ev);
3683 } 3749 }
3684 ICalFormat mForm(); 3750 ICalFormat mForm();
3685 QString attachment = mForm.toString( &cal_tmp ); 3751 QString attachment = mForm.toString( &cal_tmp );
3686 if (ev) delete(ev); 3752 if (ev) delete(ev);
3687 3753
3688 mailClient.mailAttendees(currentSelection(), attachment); 3754 mailClient.mailAttendees(currentSelection(), attachment);
3689 3755
3690#endif 3756#endif
3691 3757
3692#if 0 3758#if 0
3693 Event *anEvent = 0; 3759 Event *anEvent = 0;
3694 if (mViewManager->currentView()->isEventView()) { 3760 if (mViewManager->currentView()->isEventView()) {
3695 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 3761 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
3696 } 3762 }
3697 3763
3698 if (!anEvent) { 3764 if (!anEvent) {
3699 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3765 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3700 return; 3766 return;
3701 } 3767 }
3702 if(anEvent->attendeeCount() == 0 ) { 3768 if(anEvent->attendeeCount() == 0 ) {
3703 KMessageBox::sorry(this, 3769 KMessageBox::sorry(this,
3704 i18n("Can't generate mail:\nNo attendees defined.\n")); 3770 i18n("Can't generate mail:\nNo attendees defined.\n"));
3705 return; 3771 return;
3706 } 3772 }
3707 3773
3708 mailobject.emailEvent(anEvent); 3774 mailobject.emailEvent(anEvent);
3709#endif 3775#endif
3710} 3776}
3711 3777
3712 3778
3713void CalendarView::schedule_publish(Incidence *incidence) 3779void CalendarView::schedule_publish(Incidence *incidence)
3714{ 3780{
3715 Event *event = 0; 3781 Event *event = 0;
3716 Todo *todo = 0; 3782 Todo *todo = 0;
3717 3783
3718 if (incidence == 0) { 3784 if (incidence == 0) {
3719 incidence = mViewManager->currentView()->selectedIncidences().first(); 3785 incidence = mViewManager->currentView()->selectedIncidences().first();
3720 if (incidence == 0) { 3786 if (incidence == 0) {
3721 incidence = mTodoList->selectedIncidences().first(); 3787 incidence = mTodoList->selectedIncidences().first();
3722 } 3788 }
3723 } 3789 }
3724 if ( incidence && incidence->typeID() == eventID ) { 3790 if ( incidence && incidence->typeID() == eventID ) {
3725 event = static_cast<Event *>(incidence); 3791 event = static_cast<Event *>(incidence);
3726 } else { 3792 } else {
3727 if ( incidence && incidence->typeID() == todoID ) { 3793 if ( incidence && incidence->typeID() == todoID ) {
3728 todo = static_cast<Todo *>(incidence); 3794 todo = static_cast<Todo *>(incidence);
3729 } 3795 }
3730 } 3796 }
3731 3797
3732 if (!event && !todo) { 3798 if (!event && !todo) {
3733 KMessageBox::sorry(this,i18n("No event selected.")); 3799 KMessageBox::sorry(this,i18n("No event selected."));
3734 return; 3800 return;
3735 } 3801 }
3736 3802
3737 PublishDialog *publishdlg = new PublishDialog(); 3803 PublishDialog *publishdlg = new PublishDialog();
3738 if (incidence->attendeeCount()>0) { 3804 if (incidence->attendeeCount()>0) {
3739 QPtrList<Attendee> attendees = incidence->attendees(); 3805 QPtrList<Attendee> attendees = incidence->attendees();
3740 attendees.first(); 3806 attendees.first();
3741 while ( attendees.current()!=0 ) { 3807 while ( attendees.current()!=0 ) {
3742 publishdlg->addAttendee(attendees.current()); 3808 publishdlg->addAttendee(attendees.current());
3743 attendees.next(); 3809 attendees.next();
3744 } 3810 }
3745 } 3811 }
3746 bool send = true; 3812 bool send = true;
3747 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3813 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3748 if ( publishdlg->exec() != QDialog::Accepted ) 3814 if ( publishdlg->exec() != QDialog::Accepted )
3749 send = false; 3815 send = false;
3750 } 3816 }
3751 if ( send ) { 3817 if ( send ) {
3752 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3818 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
@@ -4455,207 +4521,207 @@ void CalendarView::deleteIncidence(Incidence *incidence)
4455 updateView(); 4521 updateView();
4456 emit updateSearchDialog(); 4522 emit updateSearchDialog();
4457 return; 4523 return;
4458 } 4524 }
4459 if ( incidence ) { 4525 if ( incidence ) {
4460 DeleteIncidenceVisitor v; 4526 DeleteIncidenceVisitor v;
4461 v.act( incidence, this ); 4527 v.act( incidence, this );
4462 } 4528 }
4463} 4529}
4464 4530
4465 4531
4466void CalendarView::lookForOutgoingMessages() 4532void CalendarView::lookForOutgoingMessages()
4467{ 4533{
4468 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 4534 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
4469 ogd->loadMessages(); 4535 ogd->loadMessages();
4470} 4536}
4471 4537
4472void CalendarView::lookForIncomingMessages() 4538void CalendarView::lookForIncomingMessages()
4473{ 4539{
4474 IncomingDialog *icd = mDialogManager->incomingDialog(); 4540 IncomingDialog *icd = mDialogManager->incomingDialog();
4475 icd->retrieve(); 4541 icd->retrieve();
4476} 4542}
4477 4543
4478bool CalendarView::removeCompletedSubTodos( Todo* t ) 4544bool CalendarView::removeCompletedSubTodos( Todo* t )
4479{ 4545{
4480 bool deleteTodo = true; 4546 bool deleteTodo = true;
4481 QPtrList<Incidence> subTodos; 4547 QPtrList<Incidence> subTodos;
4482 Incidence *aTodo; 4548 Incidence *aTodo;
4483 subTodos = t->relations(); 4549 subTodos = t->relations();
4484 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 4550 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
4485 if (! removeCompletedSubTodos( (Todo*) aTodo )) 4551 if (! removeCompletedSubTodos( (Todo*) aTodo ))
4486 deleteTodo = false; 4552 deleteTodo = false;
4487 } 4553 }
4488 if ( deleteTodo ) { 4554 if ( deleteTodo ) {
4489 if ( t->isCompleted() && !t->doesRecur()) { 4555 if ( t->isCompleted() && !t->doesRecur()) {
4490 checkExternalId( t ); 4556 checkExternalId( t );
4491 mCalendar->deleteTodo( t ); 4557 mCalendar->deleteTodo( t );
4492 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 4558 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
4493 } 4559 }
4494 else 4560 else
4495 deleteTodo = false; 4561 deleteTodo = false;
4496 } 4562 }
4497 return deleteTodo; 4563 return deleteTodo;
4498 4564
4499} 4565}
4500void CalendarView::purgeCompleted() 4566void CalendarView::purgeCompleted()
4501{ 4567{
4502 int result = KMessageBox::warningContinueCancel(this, 4568 int result = KMessageBox::warningContinueCancel(this,
4503 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge")); 4569 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge"));
4504 4570
4505 if (result == KMessageBox::Continue) { 4571 if (result == KMessageBox::Continue) {
4506 4572
4507 QPtrList<Todo> todoCal; 4573 QPtrList<Todo> todoCal;
4508 QPtrList<Todo> rootTodos; 4574 QPtrList<Todo> rootTodos;
4509 //QPtrList<Incidence> rel; 4575 //QPtrList<Incidence> rel;
4510 Todo *aTodo; 4576 Todo *aTodo;
4511 todoCal = calendar()->todos(); 4577 todoCal = calendar()->todos();
4512 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 4578 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
4513 if ( !aTodo->relatedTo() ) 4579 if ( !aTodo->relatedTo() )
4514 rootTodos.append( aTodo ); 4580 rootTodos.append( aTodo );
4515 } 4581 }
4516 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 4582 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
4517 removeCompletedSubTodos( aTodo ); 4583 removeCompletedSubTodos( aTodo );
4518 } 4584 }
4519 4585
4520 updateView(); 4586 updateView();
4521 } 4587 }
4522} 4588}
4523 4589
4524void CalendarView::slotCalendarChanged() 4590void CalendarView::slotCalendarChanged()
4525{ 4591{
4526 ; 4592 ;
4527} 4593}
4528 4594
4529void CalendarView::keyPressEvent ( QKeyEvent *e) 4595void CalendarView::keyPressEvent ( QKeyEvent *e)
4530{ 4596{
4531 //qDebug(" alendarView::keyPressEvent "); 4597 //qDebug(" alendarView::keyPressEvent ");
4532 e->ignore(); 4598 e->ignore();
4533} 4599}
4534 4600
4535 4601
4536bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 4602bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
4537{ 4603{
4538 4604
4539 if ( manager != mSyncManager) 4605 if ( manager != mSyncManager)
4540 qDebug("KO: Internal error-1. SyncManager mismatch "); 4606 qDebug("KO: Internal error-1. SyncManager mismatch ");
4541 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 4607 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
4542 qDebug("KO: SyncKDE request detected!"); 4608 qDebug("KO: SyncKDE request detected!");
4543 } 4609 }
4544 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4610 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4545 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4611 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4546 return syncCalendar( filename, mode ); 4612 return syncCalendar( filename, mode );
4547} 4613}
4548bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 4614bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
4549{ 4615{
4550 //mSyncManager = manager; 4616 //mSyncManager = manager;
4551 if ( manager != mSyncManager) 4617 if ( manager != mSyncManager)
4552 qDebug("KO: Internal error-2. SyncManager mismatch "); 4618 qDebug("KO: Internal error-2. SyncManager mismatch ");
4553 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4619 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4554 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4620 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4555 if ( resource == "sharp" ) 4621 if ( resource == "sharp" )
4556 syncExternal( 0 ); 4622 syncExternal( 0 );
4557 if ( resource == "phone" ) 4623 if ( resource == "phone" )
4558 syncExternal( 1 ); 4624 syncExternal( 1 );
4559 // pending setmodified 4625 // pending setmodified
4560 return true; 4626 return true;
4561} 4627}
4562void CalendarView::setSyncManager(KSyncManager* manager) 4628void CalendarView::setSyncManager(KSyncManager* manager)
4563{ 4629{
4564 mSyncManager = manager; 4630 mSyncManager = manager;
4565} 4631}
4566 4632
4567void CalendarView::removeSyncInfo( QString syncProfile) 4633void CalendarView::removeSyncInfo( QString syncProfile)
4568{ 4634{
4569 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 4635 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
4570 mCalendar->removeSyncInfo( syncProfile ); 4636 mCalendar->removeSyncInfo( syncProfile );
4571 4637
4572} 4638}
4573 4639
4574void CalendarView::undo_delete() 4640void CalendarView::undo_delete()
4575{ 4641{
4576 //qDebug("undo_delete() "); 4642 //qDebug("undo_delete() ");
4577 Incidence* undo = mCalendar->undoIncidence(); 4643 Incidence* undo = mCalendar->undoIncidence();
4578 if ( !undo ) { 4644 if ( !undo ) {
4579 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 4645 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
4580 i18n("KO/Pi")); 4646 i18n("KO/Pi"));
4581 return; 4647 return;
4582 } 4648 }
4583 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 4649 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( undo->summary(),0 ) +
4584 i18n("\nAre you sure you want\nto restore this?"), 4650 i18n("\nAre you sure you want\nto restore this?"),
4585 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 4651 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
4586 mCalendar->undoDeleteIncidence(); 4652 mCalendar->undoDeleteIncidence();
4587 updateView(); 4653 updateView();
4588 } 4654 }
4589} 4655}
4590 4656
4591void CalendarView::slotViewerClosed() 4657void CalendarView::slotViewerClosed()
4592{ 4658{
4593 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 4659 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
4594} 4660}
4595 4661
4596void CalendarView::resetFocus() 4662void CalendarView::resetFocus()
4597{ 4663{
4598 if ( mViewerCallerIsSearchDialog ) { 4664 if ( mViewerCallerIsSearchDialog ) {
4599 if ( mDialogManager->getSearchDialog()->isVisible() ){ 4665 if ( mDialogManager->getSearchDialog()->isVisible() ){
4600 mDialogManager->getSearchDialog()->raise(); 4666 mDialogManager->getSearchDialog()->raise();
4601 mDialogManager->getSearchDialog()->setActiveWindow(); 4667 mDialogManager->getSearchDialog()->setActiveWindow();
4602 mDialogManager->getSearchDialog()->listview()->resetFocus(); 4668 mDialogManager->getSearchDialog()->listview()->resetFocus();
4603 } else 4669 } else
4604 mViewerCallerIsSearchDialog = false; 4670 mViewerCallerIsSearchDialog = false;
4605 } 4671 }
4606 if ( !mViewerCallerIsSearchDialog ) { 4672 if ( !mViewerCallerIsSearchDialog ) {
4607 //mViewManager->currentView()->setFocus(); 4673 //mViewManager->currentView()->setFocus();
4608 //qDebug("sssssssssssssssset focus "); 4674 //qDebug("sssssssssssssssset focus ");
4609 topLevelWidget()->raise(); 4675 topLevelWidget()->raise();
4610 setActiveWindow(); 4676 setActiveWindow();
4611 //setFocus(); 4677 //setFocus();
4612 } 4678 }
4613 mViewerCallerIsSearchDialog = false; 4679 mViewerCallerIsSearchDialog = false;
4614} 4680}
4615 4681
4616void CalendarView::showNextAlarms() 4682void CalendarView::showNextAlarms()
4617{ 4683{
4618 QString message; 4684 QString message;
4619 QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); 4685 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
4620 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { 4686 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
4621 QString sum = mCalendar->nextSummary(); 4687 QString sum = mCalendar->nextSummary();
4622 QDateTime nextA = mNextAlarmDateTime; 4688 QDateTime nextA = mNextAlarmDateTime;
4623 QDateTime cur = QDateTime::currentDateTime(); 4689 QDateTime cur = QDateTime::currentDateTime();
4624 int secs = cur.secsTo( nextA ); 4690 int secs = cur.secsTo( nextA );
4625 int min = secs /60; 4691 int min = secs /60;
4626 int hours = min /60; 4692 int hours = min /60;
4627 min = min % 60; 4693 min = min % 60;
4628 int days = hours /24; 4694 int days = hours /24;
4629 hours = hours % 24; 4695 hours = hours % 24;
4630 4696
4631 //message = i18n("The next alarm is in:\n"); 4697 //message = i18n("The next alarm is in:\n");
4632 if ( days > 1 ) 4698 if ( days > 1 )
4633 message += i18n("%1 days\n").arg( days ); 4699 message += i18n("%1 days\n").arg( days );
4634 else if ( days == 1 ) 4700 else if ( days == 1 )
4635 message += i18n("1 day\n"); 4701 message += i18n("1 day\n");
4636 if ( hours > 1 ) 4702 if ( hours > 1 )
4637 message += i18n("%1 hours\n").arg( hours ); 4703 message += i18n("%1 hours\n").arg( hours );
4638 else if ( hours == 1 ) 4704 else if ( hours == 1 )
4639 message += i18n("1 hour\n"); 4705 message += i18n("1 hour\n");
4640 if ( min > 1 ) 4706 if ( min > 1 )
4641 message += i18n("%1 minutes\n").arg( min ); 4707 message += i18n("%1 minutes\n").arg( min );
4642 else if ( min == 1 ) 4708 else if ( min == 1 )
4643 message += i18n("1 minute\n"); 4709 message += i18n("1 minute\n");
4644 if ( message.isEmpty() ) 4710 if ( message.isEmpty() )
4645 message = i18n("The next alarm is in\nless than one minute!"); 4711 message = i18n("The next alarm is in\nless than one minute!");
4646 else 4712 else
4647 message = i18n("The next alarm is in:\n") + message; 4713 message = i18n("The next alarm is in:\n") + message;
4648 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; 4714 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
4649 } else { 4715 } else {
4650 message = i18n("There is no next alarm."); 4716 message = i18n("There is no next alarm.");
4651 4717
4652 } 4718 }
4653#ifdef DESKTOP_VERSION 4719#ifdef DESKTOP_VERSION
4654 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 4720 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
4655 message += i18n("\nThe internal alarm notification is disabled!\n"); 4721 message += i18n("\nThe internal alarm notification is disabled!\n");
4656 message += i18n("Enable it in the settings menu, TAB alarm."); 4722 message += i18n("Enable it in the settings menu, TAB alarm.");
4657 } 4723 }
4658 4724
4659#endif 4725#endif
4660 KMessageBox::information( this, message); 4726 KMessageBox::information( this, message);
4661} 4727}
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index a5f230a..51eb1d4 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -75,256 +75,260 @@ namespace KCal { class FileStorage; }
75using namespace KCal; 75using namespace KCal;
76 76
77/** 77/**
78 This is the main calendar widget. It provides the different vies on t he 78 This is the main calendar widget. It provides the different vies on t he
79 calendar data as well as the date navigator. It also handles synchronisation 79 calendar data as well as the date navigator. It also handles synchronisation
80 of the different views and controls the different dialogs like preferences, 80 of the different views and controls the different dialogs like preferences,
81 event editor, search dialog etc. 81 event editor, search dialog etc.
82 82
83 @short main calendar view widget 83 @short main calendar view widget
84 @author Cornelius Schumacher 84 @author Cornelius Schumacher
85*/ 85*/
86 86
87#include <qtextbrowser.h> 87#include <qtextbrowser.h>
88#include <qtextcodec.h> 88#include <qtextcodec.h>
89 89
90class MissedAlarmTextBrowser : public QTextBrowser { 90class MissedAlarmTextBrowser : public QTextBrowser {
91 Q_OBJECT 91 Q_OBJECT
92 public: 92 public:
93 MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms ,QDateTime start); 93 MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms ,QDateTime start);
94 ~MissedAlarmTextBrowser(); 94 ~MissedAlarmTextBrowser();
95 void setSource(const QString & n); 95 void setSource(const QString & n);
96 96
97 private: 97 private:
98 Incidence * getNextInc(QDateTime start ); 98 Incidence * getNextInc(QDateTime start );
99 QPtrList<Incidence> mAlarms; 99 QPtrList<Incidence> mAlarms;
100 signals: 100 signals:
101 void showIncidence( QString uid); 101 void showIncidence( QString uid);
102}; 102};
103 103
104 104
105class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface 105class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface
106{ 106{
107 Q_OBJECT 107 Q_OBJECT
108 public: 108 public:
109 /** 109 /**
110 Constructs a new calendar view widget. 110 Constructs a new calendar view widget.
111 111
112 @param calendar calendar document 112 @param calendar calendar document
113 @param parent parent window 113 @param parent parent window
114 @param name Qt internal widget object name 114 @param name Qt internal widget object name
115 */ 115 */
116 CalendarView( CalendarResources *calendar, QWidget *parent = 0, 116 CalendarView( CalendarResources *calendar, QWidget *parent = 0,
117 const char *name = 0 ); 117 const char *name = 0 );
118 CalendarView( Calendar *calendar, QWidget *parent = 0, 118 CalendarView( Calendar *calendar, QWidget *parent = 0,
119 const char *name = 0 ); 119 const char *name = 0 );
120 virtual ~CalendarView(); 120 virtual ~CalendarView();
121 121
122 Calendar *calendar() { return mCalendar; } 122 Calendar *calendar() { return mCalendar; }
123 123
124 KOViewManager *viewManager(); 124 KOViewManager *viewManager();
125 KODialogManager *dialogManager(); 125 KODialogManager *dialogManager();
126 126
127 QDate startDate(); 127 QDate startDate();
128 QDate endDate(); 128 QDate endDate();
129 129
130 QWidgetStack *viewStack(); 130 QWidgetStack *viewStack();
131 QWidget *leftFrame(); 131 QWidget *leftFrame();
132 132
133 DateNavigator *dateNavigator(); 133 DateNavigator *dateNavigator();
134 KDateNavigator *dateNavigatorWidget(); 134 KDateNavigator *dateNavigatorWidget();
135 135
136 void addView(KOrg::BaseView *); 136 void addView(KOrg::BaseView *);
137 void showView(KOrg::BaseView *); 137 void showView(KOrg::BaseView *);
138 KOEventViewerDialog* getEventViewerDialog(); 138 KOEventViewerDialog* getEventViewerDialog();
139 Incidence *currentSelection(); 139 Incidence *currentSelection();
140 void checkSuspendAlarm(); 140 void checkSuspendAlarm();
141 141
142 signals: 142 signals:
143 void save (); 143 void save ();
144 void saveStopTimer (); 144 void saveStopTimer ();
145 void tempDisableBR(bool); 145 void tempDisableBR(bool);
146 /** This todo has been modified */ 146 /** This todo has been modified */
147 void todoModified(Todo *, int); 147 void todoModified(Todo *, int);
148 148
149 /** when change is made to options dialog, the topwidget will catch this 149 /** when change is made to options dialog, the topwidget will catch this
150 * and emit this signal which notifies all widgets which have registered 150 * and emit this signal which notifies all widgets which have registered
151 * for notification to update their settings. */ 151 * for notification to update their settings. */
152 void configChanged(); 152 void configChanged();
153 /** emitted when the topwidget is closing down, so that any attached 153 /** emitted when the topwidget is closing down, so that any attached
154 child windows can also close. */ 154 child windows can also close. */
155 void closingDown(); 155 void closingDown();
156 /** emitted right before we die */ 156 /** emitted right before we die */
157 void closed(QWidget *); 157 void closed(QWidget *);
158 158
159 /** Emitted when state of modified flag changes */ 159 /** Emitted when state of modified flag changes */
160 void modifiedChanged(bool); 160 void modifiedChanged(bool);
161 void signalmodified(); 161 void signalmodified();
162 162
163 /** Emitted when state of read-only flag changes */ 163 /** Emitted when state of read-only flag changes */
164 void readOnlyChanged(bool); 164 void readOnlyChanged(bool);
165 165
166 /** Emitted when the unit of navigation changes */ 166 /** Emitted when the unit of navigation changes */
167 void changeNavStringPrev(const QString &); 167 void changeNavStringPrev(const QString &);
168 void changeNavStringNext(const QString &); 168 void changeNavStringNext(const QString &);
169 169
170 /** Emitted when state of events selection has changed and user is organizer*/ 170 /** Emitted when state of events selection has changed and user is organizer*/
171 void organizerEventsSelected(bool); 171 void organizerEventsSelected(bool);
172 /** Emitted when state of events selection has changed and user is attendee*/ 172 /** Emitted when state of events selection has changed and user is attendee*/
173 void groupEventsSelected(bool); 173 void groupEventsSelected(bool);
174 /** 174 /**
175 Emitted when an incidence gets selected. If the selection is cleared the 175 Emitted when an incidence gets selected. If the selection is cleared the
176 signal is emitted with 0 as argument. 176 signal is emitted with 0 as argument.
177 */ 177 */
178 void incidenceSelected( Incidence * ); 178 void incidenceSelected( Incidence * );
179 /** Emitted, when a todoitem is selected or deselected. */ 179 /** Emitted, when a todoitem is selected or deselected. */
180 void todoSelected( bool ); 180 void todoSelected( bool );
181 181
182 /** 182 /**
183 Emitted, when clipboard content changes. Parameter indicates if paste 183 Emitted, when clipboard content changes. Parameter indicates if paste
184 is possible or not. 184 is possible or not.
185 */ 185 */
186 void pasteEnabled(bool); 186 void pasteEnabled(bool);
187 187
188 /** Emitted, when the number of incoming messages has changed. */ 188 /** Emitted, when the number of incoming messages has changed. */
189 void numIncomingChanged(int); 189 void numIncomingChanged(int);
190 190
191 /** Emitted, when the number of outgoing messages has changed. */ 191 /** Emitted, when the number of outgoing messages has changed. */
192 void numOutgoingChanged(int); 192 void numOutgoingChanged(int);
193 193
194 /** Send status message, which can e.g. be displayed in the status bar. */ 194 /** Send status message, which can e.g. be displayed in the status bar. */
195 void statusMessage(const QString &); 195 void statusMessage(const QString &);
196 196
197 void calendarViewExpanded( bool ); 197 void calendarViewExpanded( bool );
198 void updateSearchDialog(); 198 void updateSearchDialog();
199 void filtersUpdated(); 199 void filtersUpdated();
200 200
201 201
202 public slots: 202 public slots:
203 void nextConflict( bool all, bool allday );
204 void conflictAll();
205 void conflictAllday();
206 void conflictNotAll();
203 void setCalReadOnly( int id, bool readO ); 207 void setCalReadOnly( int id, bool readO );
204 void checkAlarms(); 208 void checkAlarms();
205 void checkFiles(); 209 void checkFiles();
206 void slotprintSelInc(); 210 void slotprintSelInc();
207 void showNextAlarms(); 211 void showNextAlarms();
208 void showOpenError(); 212 void showOpenError();
209 void watchSavedFile(); 213 void watchSavedFile();
210 void recheckTimerAlarm(); 214 void recheckTimerAlarm();
211 void checkNextTimerAlarm(); 215 void checkNextTimerAlarm();
212 void addAlarm(const QDateTime &qdt, const QString &noti ); 216 void addAlarm(const QDateTime &qdt, const QString &noti );
213 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 217 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
214 void removeAlarm(const QDateTime &qdt, const QString &noti ); 218 void removeAlarm(const QDateTime &qdt, const QString &noti );
215 219
216 /** options dialog made a changed to the configuration. we catch this 220 /** options dialog made a changed to the configuration. we catch this
217 * and notify all widgets which need to update their configuration. */ 221 * and notify all widgets which need to update their configuration. */
218 void updateConfig(); 222 void updateConfig();
219 223
220 void insertBirthdays(const QString& uid, const QStringList& birthdayList, 224 void insertBirthdays(const QString& uid, const QStringList& birthdayList,
221 const QStringList& anniversaryList, const QStringList& realNameList, 225 const QStringList& anniversaryList, const QStringList& realNameList,
222 const QStringList& emailList, const QStringList& assembledNameList, 226 const QStringList& emailList, const QStringList& assembledNameList,
223 const QStringList& uidList); 227 const QStringList& uidList);
224 228
225 /** 229 /**
226 Load calendar from file \a filename. If \a merge is true, load 230 Load calendar from file \a filename. If \a merge is true, load
227 calendar into existing one, if it is false, clear calendar, before 231 calendar into existing one, if it is false, clear calendar, before
228 loading. Return true, if calendar could be successfully loaded. 232 loading. Return true, if calendar could be successfully loaded.
229 */ 233 */
230 bool openCalendar(QString filename, bool merge=false); 234 bool openCalendar(QString filename, bool merge=false);
231 bool loadCalendars(); 235 bool loadCalendars();
232 bool saveCalendars(); 236 bool saveCalendars();
233 bool restoreCalendarSettings(); 237 bool restoreCalendarSettings();
234 bool addCalendar( KopiCalendarFile * ); 238 bool addCalendar( KopiCalendarFile * );
235 void addCalendarId( int id ); 239 void addCalendarId( int id );
236 bool syncCalendar(QString filename,int mode = 0 ); 240 bool syncCalendar(QString filename,int mode = 0 );
237 241
238 /** 242 /**
239 Save calendar data to file. Return true if calendar could be 243 Save calendar data to file. Return true if calendar could be
240 successfully saved. 244 successfully saved.
241 */ 245 */
242 bool saveCalendar(QString filename); 246 bool saveCalendar(QString filename);
243 247
244 /** 248 /**
245 Close calendar. Clear calendar data and reset views to display an empty 249 Close calendar. Clear calendar data and reset views to display an empty
246 calendar. 250 calendar.
247 */ 251 */
248 void closeCalendar(); 252 void closeCalendar();
249 253
250 /** Archive old events of calendar */ 254 /** Archive old events of calendar */
251 void archiveCalendar(); 255 void archiveCalendar();
252 256
253 void showIncidence(); 257 void showIncidence();
254 void editIncidence(); 258 void editIncidence();
255 void editIncidenceDescription(); 259 void editIncidenceDescription();
256 void deleteIncidence(); 260 void deleteIncidence();
257 void cloneIncidence(); 261 void cloneIncidence();
258 void moveIncidence(); 262 void moveIncidence();
259 void beamIncidence(); 263 void beamIncidence();
260 void toggleCancelIncidence(); 264 void toggleCancelIncidence();
261 265
262 /** create an editeventwin with supplied date/time, and if bool is true, 266 /** create an editeventwin with supplied date/time, and if bool is true,
263 * make the event take all day. */ 267 * make the event take all day. */
264 void newEvent(QDateTime, QDateTime, bool allDay ); 268 void newEvent(QDateTime, QDateTime, bool allDay );
265 void newEvent(QDateTime, QDateTime); 269 void newEvent(QDateTime, QDateTime);
266 void newEvent(QDateTime fh); 270 void newEvent(QDateTime fh);
267 void newEvent(QDate dt); 271 void newEvent(QDate dt);
268 /** create new event without having a date hint. Takes current date as 272 /** create new event without having a date hint. Takes current date as
269 default hint. */ 273 default hint. */
270 void newEvent(); 274 void newEvent();
271 void newFloatingEvent(); 275 void newFloatingEvent();
272 276
273 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 277 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
274 void showIncidence(Incidence *); 278 void showIncidence(Incidence *);
275 void showIncidence(QString uid); 279 void showIncidence(QString uid);
276 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 280 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
277 void editIncidence(Incidence *); 281 void editIncidence(Incidence *);
278 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 282 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
279 void deleteIncidence(Incidence *); 283 void deleteIncidence(Incidence *);
280 void cloneIncidence(Incidence *); 284 void cloneIncidence(Incidence *);
281 void cancelIncidence(Incidence *); 285 void cancelIncidence(Incidence *);
282 /** Create an editor for the supplied event. */ 286 /** Create an editor for the supplied event. */
283 void editEvent(Event *); 287 void editEvent(Event *);
284 /** Delete the supplied event. */ 288 /** Delete the supplied event. */
285 void deleteEvent(Event *); 289 void deleteEvent(Event *);
286 /** Delete the event with the given unique ID. Returns false, if event wasn't 290 /** Delete the event with the given unique ID. Returns false, if event wasn't
287 found. */ 291 found. */
288 bool deleteEvent(const QString &uid); 292 bool deleteEvent(const QString &uid);
289 /** Create a read-only viewer dialog for the supplied event. */ 293 /** Create a read-only viewer dialog for the supplied event. */
290 void showEvent(Event *); 294 void showEvent(Event *);
291 295
292 void editJournal(Journal *); 296 void editJournal(Journal *);
293 void showJournal(Journal *); 297 void showJournal(Journal *);
294 void deleteJournal(Journal *); 298 void deleteJournal(Journal *);
295 /** Create an editor dialog for a todo */ 299 /** Create an editor dialog for a todo */
296 void editTodo(Todo *); 300 void editTodo(Todo *);
297 /** Create a read-only viewer dialog for the supplied todo */ 301 /** Create a read-only viewer dialog for the supplied todo */
298 void showTodo(Todo *); 302 void showTodo(Todo *);
299 /** create new todo */ 303 /** create new todo */
300 void newTodo(); 304 void newTodo();
301 void newTodoDateTime(QDateTime, bool allday); 305 void newTodoDateTime(QDateTime, bool allday);
302 /** create new todo with a parent todo */ 306 /** create new todo with a parent todo */
303 void newSubTodo(); 307 void newSubTodo();
304 /** create new todo with a parent todo */ 308 /** create new todo with a parent todo */
305 void newSubTodo(Todo *); 309 void newSubTodo(Todo *);
306 /** Delete todo */ 310 /** Delete todo */
307 void deleteTodo(Todo *); 311 void deleteTodo(Todo *);
308 312
309 313
310 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 314 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
311 * emitted as result. */ 315 * emitted as result. */
312 void checkClipboard(); 316 void checkClipboard();
313 317
314 /** using the KConfig associated with the kapp variable, read in the 318 /** using the KConfig associated with the kapp variable, read in the
315 * settings from the config file. 319 * settings from the config file.
316 */ 320 */
317 void readSettings(); 321 void readSettings();
318 322
319 /** write current state to config file. */ 323 /** write current state to config file. */
320 void writeSettings(); 324 void writeSettings();
321 325
322 /** read settings for calendar filters */ 326 /** read settings for calendar filters */
323 void readFilterSettings(KConfig *config); 327 void readFilterSettings(KConfig *config);
324 328
325 /** write settings for calendar filters */ 329 /** write settings for calendar filters */
326 void writeFilterSettings(KConfig *config); 330 void writeFilterSettings(KConfig *config);
327 331
328 /** passes on the message that an event has changed to the currently 332 /** passes on the message that an event has changed to the currently
329 * activated view so that it can make appropriate display changes. */ 333 * activated view so that it can make appropriate display changes. */
330 void changeEventDisplay(Event *, int); 334 void changeEventDisplay(Event *, int);
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 9c2ac82..bfae1b5 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -534,598 +534,616 @@ void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
534 mSyncManager->slotSyncMenu( 1002 ); 534 mSyncManager->slotSyncMenu( 1002 );
535 return; 535 return;
536 } 536 }
537 537
538 if ( cmsg == "-writeFile" ) { 538 if ( cmsg == "-writeFile" ) {
539 // I made from the "-writeFile" an "-writeAlarm" 539 // I made from the "-writeFile" an "-writeAlarm"
540 mView->viewManager()->showWhatsNextView(); 540 mView->viewManager()->showWhatsNextView();
541 mCalendar->checkAlarmForIncidence( 0, true); 541 mCalendar->checkAlarmForIncidence( 0, true);
542 showMaximized(); 542 showMaximized();
543 raise(); 543 raise();
544 return; 544 return;
545 545
546 } 546 }
547 if ( cmsg == "-writeFileSilent" ) { 547 if ( cmsg == "-writeFileSilent" ) {
548 // I made from the "-writeFile" an "-writeAlarm" 548 // I made from the "-writeFile" an "-writeAlarm"
549 // mView->viewManager()->showWhatsNextView(); 549 // mView->viewManager()->showWhatsNextView();
550 mCalendar->checkAlarmForIncidence( 0, true); 550 mCalendar->checkAlarmForIncidence( 0, true);
551 //showMaximized(); 551 //showMaximized();
552 //raise(); 552 //raise();
553 hide(); 553 hide();
554 return; 554 return;
555 } 555 }
556 if ( cmsg == "-newCountdown" ) { 556 if ( cmsg == "-newCountdown" ) {
557 qDebug("newCountdown "); 557 qDebug("newCountdown ");
558 558
559 } 559 }
560 QString msg ; 560 QString msg ;
561 QString allmsg = cmsg; 561 QString allmsg = cmsg;
562 while ( allmsg.length() > 0 ) { 562 while ( allmsg.length() > 0 ) {
563 int nextC = allmsg.find( "-", 1 ); 563 int nextC = allmsg.find( "-", 1 );
564 if ( nextC == -1 ) { 564 if ( nextC == -1 ) {
565 msg = allmsg; 565 msg = allmsg;
566 allmsg = ""; 566 allmsg = "";
567 } else{ 567 } else{
568 msg = allmsg.left( nextC ); 568 msg = allmsg.left( nextC );
569 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 569 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
570 } 570 }
571 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 571 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
572 if ( msg == "-newEvent" ) { 572 if ( msg == "-newEvent" ) {
573 QTimer::singleShot( 0, mView, SLOT ( newEvent())); 573 QTimer::singleShot( 0, mView, SLOT ( newEvent()));
574 } 574 }
575 if ( msg == "-newTodo" ) { 575 if ( msg == "-newTodo" ) {
576 QTimer::singleShot( 0, mView, SLOT ( newTodo())); 576 QTimer::singleShot( 0, mView, SLOT ( newTodo()));
577 } 577 }
578 if ( msg == "-showWN" ) { 578 if ( msg == "-showWN" ) {
579 mView->viewManager()->showWhatsNextView(); 579 mView->viewManager()->showWhatsNextView();
580 } 580 }
581 if ( msg == "-showTodo" ) { 581 if ( msg == "-showTodo" ) {
582 mView->viewManager()->showTodoView(); 582 mView->viewManager()->showTodoView();
583 } 583 }
584 if ( msg == "-showList" ) { 584 if ( msg == "-showList" ) {
585 mView->viewManager()->showListView(); 585 mView->viewManager()->showListView();
586 } 586 }
587 else if ( msg == "-showDay" ) { 587 else if ( msg == "-showDay" ) {
588 mView->viewManager()->showDayView(); 588 mView->viewManager()->showDayView();
589 } 589 }
590 else if ( msg == "-showWWeek" ) { 590 else if ( msg == "-showWWeek" ) {
591 mView->viewManager()->showWorkWeekView(); 591 mView->viewManager()->showWorkWeekView();
592 } 592 }
593 else if ( msg == "-ringSync" ) { 593 else if ( msg == "-ringSync" ) {
594 QTimer::singleShot( 0, this, SLOT (startMultiSync())); 594 QTimer::singleShot( 0, this, SLOT (startMultiSync()));
595 } 595 }
596 else if ( msg == "-showWeek" ) { 596 else if ( msg == "-showWeek" ) {
597 mView->viewManager()->showWeekView(); 597 mView->viewManager()->showWeekView();
598 } 598 }
599 else if ( msg == "-showTodo" ) { 599 else if ( msg == "-showTodo" ) {
600 mView->viewManager()->showTodoView(); 600 mView->viewManager()->showTodoView();
601 } 601 }
602 else if ( msg == "-showJournal" ) { 602 else if ( msg == "-showJournal" ) {
603 mView->dateNavigator()->selectDates( 1 ); 603 mView->dateNavigator()->selectDates( 1 );
604 mView->dateNavigator()->selectToday(); 604 mView->dateNavigator()->selectToday();
605 mView->viewManager()->showJournalView(); 605 mView->viewManager()->showJournalView();
606 } 606 }
607 else if ( msg == "-showKO" ) { 607 else if ( msg == "-showKO" ) {
608 mView->viewManager()->showNextXView(); 608 mView->viewManager()->showNextXView();
609 } 609 }
610 else if ( msg == "-showWNext" ) { 610 else if ( msg == "-showWNext" ) {
611 mView->viewManager()->showWhatsNextView(); 611 mView->viewManager()->showWhatsNextView();
612 } 612 }
613 else if ( msg == "nextView()" ) { 613 else if ( msg == "nextView()" ) {
614 mView->viewManager()->showNextView(); 614 mView->viewManager()->showNextView();
615 } 615 }
616 else if ( msg == "-showNextXView" ) { 616 else if ( msg == "-showNextXView" ) {
617 mView->viewManager()->showNextXView(); 617 mView->viewManager()->showNextXView();
618 } 618 }
619 619
620 620
621 } 621 }
622 622
623 showMaximized(); 623 showMaximized();
624 raise(); 624 raise();
625} 625}
626void MainWindow::startMultiSync() 626void MainWindow::startMultiSync()
627{ 627{
628 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 628 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
629 if ( QMessageBox::information( this, i18n("KDE-Pim Sync"), 629 if ( QMessageBox::information( this, i18n("KDE-Pim Sync"),
630 question, 630 question,
631 i18n("Yes"), i18n("No"), 631 i18n("Yes"), i18n("No"),
632 0, 0 ) != 0 ) { 632 0, 0 ) != 0 ) {
633 setCaption(i18n("Aborted! Nothing synced!")); 633 setCaption(i18n("Aborted! Nothing synced!"));
634 return; 634 return;
635 } 635 }
636 mSyncManager->multiSync( false ); 636 mSyncManager->multiSync( false );
637#ifndef DESKTOP_VERSION 637#ifndef DESKTOP_VERSION
638 QCopEnvelope e("QPE/Application/kapi", "doRingSync"); 638 QCopEnvelope e("QPE/Application/kapi", "doRingSync");
639#endif 639#endif
640} 640}
641QPixmap MainWindow::loadPixmap( QString name ) 641QPixmap MainWindow::loadPixmap( QString name )
642{ 642{
643 return SmallIcon( name ); 643 return SmallIcon( name );
644 644
645} 645}
646void MainWindow::setUsesBigPixmaps ( bool b ) 646void MainWindow::setUsesBigPixmaps ( bool b )
647{ 647{
648 qDebug("KO: MainWindow::setUsesBigPixmaps %d called", b); 648 qDebug("KO: MainWindow::setUsesBigPixmaps %d called", b);
649 if ( b ) 649 if ( b )
650 qDebug("KO: BigPixmaps are not supported "); 650 qDebug("KO: BigPixmaps are not supported ");
651} 651}
652void MainWindow::initActions() 652void MainWindow::initActions()
653{ 653{
654 //KOPrefs::instance()->mShowFullMenu 654 //KOPrefs::instance()->mShowFullMenu
655 iconToolBar->clear(); 655 iconToolBar->clear();
656 KOPrefs *p = KOPrefs::instance(); 656 KOPrefs *p = KOPrefs::instance();
657 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 657 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
658 658
659 QPopupMenu *viewMenu = new QPopupMenu( this ); 659 QPopupMenu *viewMenu = new QPopupMenu( this );
660 QPopupMenu *actionMenu = new QPopupMenu( this ); 660 QPopupMenu *actionMenu = new QPopupMenu( this );
661 mCurrentItemMenu = new QPopupMenu ( this ); 661 mCurrentItemMenu = new QPopupMenu ( this );
662 QPopupMenu *nextConflictMenu = new QPopupMenu ( this );
662 QPopupMenu *importMenu = new QPopupMenu( this ); 663 QPopupMenu *importMenu = new QPopupMenu( this );
663 QPopupMenu *importMenu_X = new QPopupMenu( this ); 664 QPopupMenu *importMenu_X = new QPopupMenu( this );
664 QPopupMenu *exportMenu_X = new QPopupMenu( this ); 665 QPopupMenu *exportMenu_X = new QPopupMenu( this );
665 QPopupMenu *beamMenu_X = new QPopupMenu( this ); 666 QPopupMenu *beamMenu_X = new QPopupMenu( this );
666 selectFilterMenu = new QPopupMenu( this ); 667 selectFilterMenu = new QPopupMenu( this );
667 selectFilterMenu->setCheckable( true ); 668 selectFilterMenu->setCheckable( true );
668 syncMenu = new QPopupMenu( this ); 669 syncMenu = new QPopupMenu( this );
669 configureAgendaMenu = new QPopupMenu( this ); 670 configureAgendaMenu = new QPopupMenu( this );
670 configureToolBarMenu = new QPopupMenu( this ); 671 configureToolBarMenu = new QPopupMenu( this );
671 QPopupMenu *helpMenu = new QPopupMenu( this ); 672 QPopupMenu *helpMenu = new QPopupMenu( this );
672 QIconSet icon; 673 QIconSet icon;
673 int pixWid = 22, pixHei = 22; 674 int pixWid = 22, pixHei = 22;
674 QString pathString = ""; 675 QString pathString = "";
675 if ( !p->mToolBarMiniIcons ) { 676 if ( !p->mToolBarMiniIcons ) {
676 if ( QApplication::desktop()->width() < 480 /*|| QApplication::desktop()->height() < 320*/) { 677 if ( QApplication::desktop()->width() < 480 /*|| QApplication::desktop()->height() < 320*/) {
677 pathString += "icons16/"; 678 pathString += "icons16/";
678 pixWid = 18; pixHei = 16; 679 pixWid = 18; pixHei = 16;
679 } 680 }
680 } else { 681 } else {
681 pathString += "iconsmini/"; 682 pathString += "iconsmini/";
682 pixWid = 18; pixHei = 16; 683 pixWid = 18; pixHei = 16;
683 } 684 }
684 if ( KOPrefs::instance()->mShowFullMenu ) { 685 if ( KOPrefs::instance()->mShowFullMenu ) {
685 QMenuBar *menuBar1; 686 QMenuBar *menuBar1;
686 menuBar1 = menuBar(); 687 menuBar1 = menuBar();
687 menuBar1->insertItem( i18n("File"), importMenu ); 688 menuBar1->insertItem( i18n("File"), importMenu );
688 menuBar1->insertItem( i18n("View"), viewMenu ); 689 menuBar1->insertItem( i18n("View"), viewMenu );
689 menuBar1->insertItem( i18n("Edit"), mCurrentItemMenu ); 690 menuBar1->insertItem( i18n("Edit"), mCurrentItemMenu );
690 menuBar1->insertItem( i18n("Action"), actionMenu ); 691 menuBar1->insertItem( i18n("Action"), actionMenu );
691#ifdef DESKTOP_VERSION 692#ifdef DESKTOP_VERSION
692 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 693 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
693 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 694 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
694#else 695#else
695 menuBar1->insertItem( i18n("Sync"), syncMenu ); 696 menuBar1->insertItem( i18n("Sync"), syncMenu );
696 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu ); 697 menuBar1->insertItem( i18n("Agenda"),configureAgendaMenu );
697#endif 698#endif
698 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 699 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
699 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 700 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
700 menuBar1->insertItem( i18n("Help"), helpMenu ); 701 menuBar1->insertItem( i18n("Help"), helpMenu );
701 } else { 702 } else {
702 QPEMenuBar *menuBar1; 703 QPEMenuBar *menuBar1;
703 menuBar1 = new QPEMenuBar( iconToolBar ); 704 menuBar1 = new QPEMenuBar( iconToolBar );
704 QPopupMenu *menuBar = new QPopupMenu( this ); 705 QPopupMenu *menuBar = new QPopupMenu( this );
705 icon = loadPixmap( pathString + "z_menu" ); 706 icon = loadPixmap( pathString + "z_menu" );
706 menuBar1->insertItem( icon.pixmap(), menuBar); 707 menuBar1->insertItem( icon.pixmap(), menuBar);
707 //menuBar1->insertItem( i18n("ME"), menuBar); 708 //menuBar1->insertItem( i18n("ME"), menuBar);
708 menuBar->insertItem( i18n("File"), importMenu ); 709 menuBar->insertItem( i18n("File"), importMenu );
709 menuBar->insertItem( i18n("View"), viewMenu ); 710 menuBar->insertItem( i18n("View"), viewMenu );
710 menuBar->insertItem( i18n("Edit"), mCurrentItemMenu ); 711 menuBar->insertItem( i18n("Edit"), mCurrentItemMenu );
711 menuBar->insertItem( i18n("Action"), actionMenu ); 712 menuBar->insertItem( i18n("Action"), actionMenu );
712 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 713 menuBar->insertItem( i18n("Synchronize"), syncMenu );
713 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 714 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
714 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 715 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
715 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 716 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
716 menuBar->insertItem( i18n("Help"), helpMenu ); 717 menuBar->insertItem( i18n("Help"), helpMenu );
717 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 718 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
718 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 719 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
719 } 720 }
720 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 721 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
721 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) ); 722 connect ( selectFilterMenu, SIGNAL( aboutToShow() ), this, SLOT (fillFilterMenu() ) );
722 723
723 724
724 mWeekBgColor = iconToolBar->backgroundColor(); 725 mWeekBgColor = iconToolBar->backgroundColor();
725 mWeekPixmap.resize( pixWid , pixHei ); 726 mWeekPixmap.resize( pixWid , pixHei );
726 mWeekPixmap.fill( mWeekBgColor ); 727 mWeekPixmap.fill( mWeekBgColor );
727 icon = mWeekPixmap; 728 icon = mWeekPixmap;
728 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this ); 729 mWeekAction = new QAction( i18n("Select week number"),icon, i18n("Select week number"), 0, this );
729 if ( p-> mShowIconWeekNum ) 730 if ( p-> mShowIconWeekNum )
730 mWeekAction->addTo( iconToolBar ); 731 mWeekAction->addTo( iconToolBar );
731 mWeekFont = font(); 732 mWeekFont = font();
732 733
733 int fontPoint = mWeekFont.pointSize(); 734 int fontPoint = mWeekFont.pointSize();
734 QFontMetrics f( mWeekFont ); 735 QFontMetrics f( mWeekFont );
735 int fontWid = f.width( "30" ); 736 int fontWid = f.width( "30" );
736 while ( fontWid > pixWid ) { 737 while ( fontWid > pixWid ) {
737 --fontPoint; 738 --fontPoint;
738 mWeekFont.setPointSize( fontPoint ); 739 mWeekFont.setPointSize( fontPoint );
739 QFontMetrics f( mWeekFont ); 740 QFontMetrics f( mWeekFont );
740 fontWid = f.width( "30" ); 741 fontWid = f.width( "30" );
741 //qDebug("dec-- "); 742 //qDebug("dec-- ");
742 } 743 }
743 744
744 connect( mWeekAction, SIGNAL( activated() ), 745 connect( mWeekAction, SIGNAL( activated() ),
745 this, SLOT( weekAction() ) ); 746 this, SLOT( weekAction() ) );
746 747
747 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) ); 748 connect( this, SIGNAL( selectWeek ( int ) ), mView->dateNavigator(), SLOT( selectWeek ( int ) ) );
748 if ( p->mShowIconFilterview ) { 749 if ( p->mShowIconFilterview ) {
749 icon = loadPixmap( pathString + "filter" ); 750 icon = loadPixmap( pathString + "filter" );
750 actionFilterMenuTB = new QAction( i18n("Filter selector"), icon, i18n("Filter selector"), 0, this ); 751 actionFilterMenuTB = new QAction( i18n("Filter selector"), icon, i18n("Filter selector"), 0, this );
751 connect( actionFilterMenuTB, SIGNAL( activated() ), 752 connect( actionFilterMenuTB, SIGNAL( activated() ),
752 this, SLOT( fillFilterMenuTB() ) ); 753 this, SLOT( fillFilterMenuTB() ) );
753 actionFilterMenuTB->addTo( iconToolBar ); 754 actionFilterMenuTB->addTo( iconToolBar );
754 selectFilterMenuTB = new QPopupMenu( this ); 755 selectFilterMenuTB = new QPopupMenu( this );
755 selectFilterMenuTB->setCheckable( true ); 756 selectFilterMenuTB->setCheckable( true );
756 connect ( selectFilterMenuTB, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 757 connect ( selectFilterMenuTB, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
757 } 758 }
758 759
759 //#endif 760 //#endif
760 // ****************** 761 // ******************
761 QAction *action; 762 QAction *action;
762 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 763 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
763 configureToolBarMenu->setCheckable( true ); 764 configureToolBarMenu->setCheckable( true );
764 765
765 766
766 configureAgendaMenu->setCheckable( true ); 767 configureAgendaMenu->setCheckable( true );
767 int iii ; 768 int iii ;
768 for ( iii = 1;iii<= 10 ;++iii ){ 769 for ( iii = 1;iii<= 10 ;++iii ){
769 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 ); 770 configureAgendaMenu->insertItem(i18n("Size %1").arg(iii), (iii+1)*2 );
770 } 771 }
771 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 772 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
772 773
773 connect( configureAgendaMenu, SIGNAL( aboutToShow()), 774 connect( configureAgendaMenu, SIGNAL( aboutToShow()),
774 this, SLOT( showConfigureAgenda( ) ) ); 775 this, SLOT( showConfigureAgenda( ) ) );
775 icon = loadPixmap( pathString + "today" ); 776 icon = loadPixmap( pathString + "today" );
776 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 777 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
777 today_action->addTo( actionMenu ); 778 today_action->addTo( actionMenu );
778 connect( today_action, SIGNAL( activated() ), 779 connect( today_action, SIGNAL( activated() ),
779 mView, SLOT( goToday() ) ); 780 mView, SLOT( goToday() ) );
780 781
781 icon = loadPixmap( pathString + "picker" ); 782 icon = loadPixmap( pathString + "picker" );
782 QAction* dPickerAction = new QAction( i18n("Select Date..."), icon, i18n("Select Date..."), 0, this ); 783 QAction* dPickerAction = new QAction( i18n("Select Date..."), icon, i18n("Select Date..."), 0, this );
783 dPickerAction->addTo( actionMenu ); 784 dPickerAction->addTo( actionMenu );
784 connect( dPickerAction, SIGNAL( activated() ), 785 connect( dPickerAction, SIGNAL( activated() ),
785 mView, SLOT( showDatePicker() ) ); 786 mView, SLOT( showDatePicker() ) );
786 787
787 icon = loadPixmap( pathString + "search" ); 788 icon = loadPixmap( pathString + "search" );
788 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); 789 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this );
789 search_action->addTo( actionMenu ); 790 search_action->addTo( actionMenu );
790 connect( search_action, SIGNAL( activated() ), 791 connect( search_action, SIGNAL( activated() ),
791 mView->dialogManager(), SLOT( showSearchDialog() ) ); 792 mView->dialogManager(), SLOT( showSearchDialog() ) );
793 actionMenu->insertItem( i18n("Show next conflict for"), nextConflictMenu );
792 794
795 action = new QAction( "Undo Delete", i18n("All events"), 0, this );
796 action->addTo( nextConflictMenu );
797 connect( action, SIGNAL( activated() ),
798 mView, SLOT( conflictAll() ) );
799
800 action = new QAction( "Undo Delete", i18n("Allday events"), 0, this );
801 action->addTo( nextConflictMenu );
802 connect( action, SIGNAL( activated() ),
803 mView, SLOT( conflictAllday() ) );
804
805 action = new QAction( "Undo Delete", i18n("Events with time"), 0, this );
806 action->addTo( nextConflictMenu );
807 connect( action, SIGNAL( activated() ),
808 mView, SLOT( conflictNotAll() ) );
809
793 actionMenu->insertSeparator(); 810 actionMenu->insertSeparator();
794 811
812 icon = loadPixmap( pathString + "newevent" );
813 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
814 ne_action->addTo( mCurrentItemMenu );
815 connect( ne_action, SIGNAL( activated() ),
816 mView, SLOT( newEvent() ) );
817 icon = loadPixmap( pathString + "newtodo" );
818 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
819 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
820 nt_action->addTo( mCurrentItemMenu );
821 connect( nt_action, SIGNAL( activated() ),
822 mView, SLOT( newTodo() ) );
823 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
824 this );
825 mNewSubTodoAction->addTo( mCurrentItemMenu );
826 connect( mNewSubTodoAction, SIGNAL( activated() ),
827 mView, SLOT( newSubTodo() ) );
795 828
796
797 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this );
798 action->addTo( mCurrentItemMenu );
799 connect( action, SIGNAL( activated() ),
800 mView, SLOT( undo_delete() ) );
801 mCurrentItemMenu->insertSeparator(); 829 mCurrentItemMenu->insertSeparator();
802 icon = loadPixmap( pathString + "newevent" ); 830 icon = loadPixmap( pathString + "newevent" );
803 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 831 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
804 configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 ); 832 configureToolBarMenu->insertItem(i18n("Only one toolbar"), 6 );
805 configureToolBarMenu->insertSeparator(); 833 configureToolBarMenu->insertSeparator();
806 configureToolBarMenu->insertItem(i18n("Filtermenu"), 7 ); 834 configureToolBarMenu->insertItem(i18n("Filtermenu"), 7 );
807 configureToolBarMenu->insertSeparator(); 835 configureToolBarMenu->insertSeparator();
808 configureToolBarMenu->insertItem(i18n("Week Number"), 400); 836 configureToolBarMenu->insertItem(i18n("Week Number"), 400);
809 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 837 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
810 838
811 //actionMenu->insertItem ( i18n("Selected Item"), mCurrentItemMenu); 839 //actionMenu->insertItem ( i18n("Selected Item"), mCurrentItemMenu);
812 mShowAction = new QAction( "show_incidence", i18n("Show"), 0, this ); 840 mShowAction = new QAction( "show_incidence", i18n("Show"), 0, this );
813 mShowAction->addTo( mCurrentItemMenu ); 841 mShowAction->addTo( mCurrentItemMenu );
814 connect( mShowAction, SIGNAL( activated() ), 842 connect( mShowAction, SIGNAL( activated() ),
815 mView, SLOT( showIncidence() ) ); 843 mView, SLOT( showIncidence() ) );
816 844
817 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this ); 845 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this );
818 mEditAction->addTo( mCurrentItemMenu ); 846 mEditAction->addTo( mCurrentItemMenu );
819 connect( mEditAction, SIGNAL( activated() ), 847 connect( mEditAction, SIGNAL( activated() ),
820 mView, SLOT( editIncidence() ) ); 848 mView, SLOT( editIncidence() ) );
821 849
822 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this ); 850 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this );
823 mDeleteAction->addTo( mCurrentItemMenu ); 851 mDeleteAction->addTo( mCurrentItemMenu );
824 connect( mDeleteAction, SIGNAL( activated() ), 852 connect( mDeleteAction, SIGNAL( activated() ),
825 mView, SLOT( deleteIncidence() ) ); 853 mView, SLOT( deleteIncidence() ) );
826 854
827 855
828 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this ); 856 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this );
829 mCloneAction->addTo( mCurrentItemMenu ); 857 mCloneAction->addTo( mCurrentItemMenu );
830 connect( mCloneAction, SIGNAL( activated() ), 858 connect( mCloneAction, SIGNAL( activated() ),
831 mView, SLOT( cloneIncidence() ) ); 859 mView, SLOT( cloneIncidence() ) );
832 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this ); 860 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this );
833 mMoveAction->addTo( mCurrentItemMenu ); 861 mMoveAction->addTo( mCurrentItemMenu );
834 connect( mMoveAction, SIGNAL( activated() ), 862 connect( mMoveAction, SIGNAL( activated() ),
835 mView, SLOT( moveIncidence() ) ); 863 mView, SLOT( moveIncidence() ) );
836#ifndef DESKTOP_VERSION 864#ifndef DESKTOP_VERSION
837 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this ); 865 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this );
838 mBeamAction->addTo(mCurrentItemMenu ); 866 mBeamAction->addTo(mCurrentItemMenu );
839 connect( mBeamAction, SIGNAL( activated() ), 867 connect( mBeamAction, SIGNAL( activated() ),
840 mView, SLOT( beamIncidence() ) ); 868 mView, SLOT( beamIncidence() ) );
841#endif 869#endif
842 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this ); 870 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this );
843 mCancelAction->addTo( mCurrentItemMenu ); 871 mCancelAction->addTo( mCurrentItemMenu );
844 connect( mCancelAction, SIGNAL( activated() ), 872 connect( mCancelAction, SIGNAL( activated() ),
845 mView, SLOT( toggleCancelIncidence() ) ); 873 mView, SLOT( toggleCancelIncidence() ) );
846 874
847 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 875
848 ne_action->addTo( actionMenu ); 876 mCurrentItemMenu->insertSeparator();
849 connect( ne_action, SIGNAL( activated() ), 877 action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this );
850 mView, SLOT( newEvent() ) ); 878 action->addTo( mCurrentItemMenu );
851 icon = loadPixmap( pathString + "newtodo" ); 879 connect( action, SIGNAL( activated() ),
852 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 880 mView, SLOT( undo_delete() ) );
853 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
854 nt_action->addTo( actionMenu );
855 connect( nt_action, SIGNAL( activated() ),
856 mView, SLOT( newTodo() ) );
857
858
859 881
860 // *********************** 882 // ***********************
861 if ( KOPrefs::instance()->mVerticalScreen ) { 883 if ( KOPrefs::instance()->mVerticalScreen ) {
862 icon = SmallIcon( "1updownarrow" ); 884 icon = SmallIcon( "1updownarrow" );
863 } else { 885 } else {
864 icon = SmallIcon("1leftrightarrow" ); 886 icon = SmallIcon("1leftrightarrow" );
865 } 887 }
866 configureToolBarMenu->insertItem(icon, i18n("Toggle Fullscreen"), 28 ); 888 configureToolBarMenu->insertItem(icon, i18n("Toggle Fullscreen"), 28 );
867 QAction* FSaction = new QAction( i18n("Toggle Fullscreen"), icon, i18n("Toggle Fullscreen"), 0, this ); 889 QAction* FSaction = new QAction( i18n("Toggle Fullscreen"), icon, i18n("Toggle Fullscreen"), 0, this );
868 FSaction->addTo( viewMenu ); 890 FSaction->addTo( viewMenu );
869 connect( FSaction, SIGNAL( activated() ), mView, SLOT( toggleExpand() )); 891 connect( FSaction, SIGNAL( activated() ), mView, SLOT( toggleExpand() ));
870 892
871 893
872 icon = loadPixmap( pathString + "filter" ); 894 icon = loadPixmap( pathString + "filter" );
873 configureToolBarMenu->insertItem(icon, i18n("Filter menu icon"), 26 ); 895 configureToolBarMenu->insertItem(icon, i18n("Filter menu icon"), 26 );
874 icon = loadPixmap( pathString + "configure" ); 896 icon = loadPixmap( pathString + "configure" );
875 action = new QAction( i18n("Toggle Resource View"), icon, i18n("Toggle Resource View"), 0, this ); 897 action = new QAction( i18n("Toggle Resource View"), icon, i18n("Toggle Resource View"), 0, this );
876 action->addTo( viewMenu ); 898 action->addTo( viewMenu );
877 connect( action, SIGNAL( activated() ), 899 connect( action, SIGNAL( activated() ),
878 mView, SLOT( toggleFilter() ) ); 900 mView, SLOT( toggleFilter() ) );
879 mToggleFilter = action; 901 mToggleFilter = action;
880 icon = loadPixmap( pathString + "navi" ); 902 icon = loadPixmap( pathString + "navi" );
881 configureToolBarMenu->insertItem(icon, i18n("Toggle DateNavigator"), 22 ); 903 configureToolBarMenu->insertItem(icon, i18n("Toggle DateNavigator"), 22 );
882 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 904 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
883 action->addTo( viewMenu ); 905 action->addTo( viewMenu );
884 connect( action, SIGNAL( activated() ), 906 connect( action, SIGNAL( activated() ),
885 mView, SLOT( toggleDateNavigatorWidget() ) ); 907 mView, SLOT( toggleDateNavigatorWidget() ) );
886 mToggleNav = action ; 908 mToggleNav = action ;
887 icon = loadPixmap( pathString + "allday" ); 909 icon = loadPixmap( pathString + "allday" );
888 configureToolBarMenu->insertItem(icon, i18n("Toggle Allday"), 24 ); 910 configureToolBarMenu->insertItem(icon, i18n("Toggle Allday"), 24 );
889 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this ); 911 action = new QAction( i18n("Toggle Allday"), icon,i18n("Toggle Allday"), 0, this );
890 action->addTo( viewMenu ); 912 action->addTo( viewMenu );
891 connect( action, SIGNAL( activated() ), 913 connect( action, SIGNAL( activated() ),
892 mView, SLOT( toggleAllDaySize() ) ); 914 mView, SLOT( toggleAllDaySize() ) );
893 mToggleAllday = action; 915 mToggleAllday = action;
894 916
895 917
896 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 918 connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
897 mToggleNav, SLOT( setEnabled ( bool ) ) ); 919 mToggleNav, SLOT( setEnabled ( bool ) ) );
898 //connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ), 920 //connect( mView->viewManager(), SIGNAL( signalFullScreen( bool ) ),
899 // mToggleFilter, SLOT( setEnabled ( bool ) ) ); 921 // mToggleFilter, SLOT( setEnabled ( bool ) ) );
900 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 922 connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
901 mToggleAllday, SLOT( setEnabled ( bool ) ) ); 923 mToggleAllday, SLOT( setEnabled ( bool ) ) );
902 // connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ), 924 // connect( mView->viewManager(), SIGNAL( signalAgendaView( bool ) ),
903 // configureAgendaMenu, SLOT( setEnabled ( bool ) ) ); 925 // configureAgendaMenu, SLOT( setEnabled ( bool ) ) );
904 926
905 927
906 dPickerAction->addTo( iconToolBar ); 928 dPickerAction->addTo( iconToolBar );
907 viewMenu->insertSeparator(); 929 viewMenu->insertSeparator();
908 930
909 if ( p-> mShowIconToggleFull ) 931 if ( p-> mShowIconToggleFull )
910 FSaction->addTo( iconToolBar ); 932 FSaction->addTo( iconToolBar );
911 if ( p->mShowIconNavigator ) mToggleNav ->addTo( iconToolBar ); 933 if ( p->mShowIconNavigator ) mToggleNav ->addTo( iconToolBar );
912 934
913 //******************** 935 //********************
914 if ( p->mShowIconAllday ) mToggleAllday->addTo( iconToolBar ); 936 if ( p->mShowIconAllday ) mToggleAllday->addTo( iconToolBar );
915 937
916 938
917 icon = loadPixmap( pathString + "whatsnext" ); 939 icon = loadPixmap( pathString + "whatsnext" );
918 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 ); 940 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110 );
919 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 941 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
920 whatsnext_action->addTo( viewMenu ); 942 whatsnext_action->addTo( viewMenu );
921 connect( whatsnext_action, SIGNAL( activated() ), 943 connect( whatsnext_action, SIGNAL( activated() ),
922 mView->viewManager(), SLOT( showWhatsNextView() ) ); 944 mView->viewManager(), SLOT( showWhatsNextView() ) );
923 945
924 icon = loadPixmap( pathString + "xdays" ); 946 icon = loadPixmap( pathString + "xdays" );
925 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 ); 947 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100 );
926 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 948 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
927 xdays_action->addTo( viewMenu ); 949 xdays_action->addTo( viewMenu );
928 connect( xdays_action, SIGNAL( activated() ), 950 connect( xdays_action, SIGNAL( activated() ),
929 mView->viewManager(), SLOT( showNextXView() ) ); 951 mView->viewManager(), SLOT( showNextXView() ) );
930 952
931 953
932 icon = loadPixmap( pathString + "journal" ); 954 icon = loadPixmap( pathString + "journal" );
933 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 955 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
934 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 956 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
935 viewjournal_action->addTo( viewMenu ); 957 viewjournal_action->addTo( viewMenu );
936 connect( viewjournal_action, SIGNAL( activated() ), 958 connect( viewjournal_action, SIGNAL( activated() ),
937 mView->viewManager(), SLOT( showJournalView() ) ); 959 mView->viewManager(), SLOT( showJournalView() ) );
938 960
939 961
940 icon = loadPixmap( pathString + "day" ); 962 icon = loadPixmap( pathString + "day" );
941 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 963 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
942 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 964 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
943 day1_action->addTo( viewMenu ); 965 day1_action->addTo( viewMenu );
944 // action->addTo( toolBar ); 966 // action->addTo( toolBar );
945 connect( day1_action, SIGNAL( activated() ), 967 connect( day1_action, SIGNAL( activated() ),
946 mView->viewManager(), SLOT( showDayView() ) ); 968 mView->viewManager(), SLOT( showDayView() ) );
947 969
948 icon = loadPixmap( pathString + "workweek" ); 970 icon = loadPixmap( pathString + "workweek" );
949 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 971 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
950 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 972 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
951 day5_action->addTo( viewMenu ); 973 day5_action->addTo( viewMenu );
952 connect( day5_action, SIGNAL( activated() ), 974 connect( day5_action, SIGNAL( activated() ),
953 mView->viewManager(), SLOT( showWorkWeekView() ) ); 975 mView->viewManager(), SLOT( showWorkWeekView() ) );
954 976
955 icon = loadPixmap( pathString + "week" ); 977 icon = loadPixmap( pathString + "week" );
956 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 978 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
957 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 979 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
958 day7_action->addTo( viewMenu ); 980 day7_action->addTo( viewMenu );
959 connect( day7_action, SIGNAL( activated() ), 981 connect( day7_action, SIGNAL( activated() ),
960 mView->viewManager(), SLOT( showWeekView() ) ); 982 mView->viewManager(), SLOT( showWeekView() ) );
961 983
962 icon = loadPixmap( pathString + "workweek2" ); 984 icon = loadPixmap( pathString + "workweek2" );
963 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 ); 985 configureToolBarMenu->insertItem(icon, i18n("List week view"), 75 );
964 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this ); 986 QAction* day6_action = new QAction( i18n("List week"), icon, i18n("List week"), 0, this );
965 day6_action->addTo( viewMenu ); 987 day6_action->addTo( viewMenu );
966 connect( day6_action, SIGNAL( activated() ), 988 connect( day6_action, SIGNAL( activated() ),
967 mView->viewManager(), SLOT( showMonthViewWeek() ) ); 989 mView->viewManager(), SLOT( showMonthViewWeek() ) );
968 990
969 icon = loadPixmap( pathString + "month" ); 991 icon = loadPixmap( pathString + "month" );
970 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 992 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
971 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 993 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
972 month_action->addTo( viewMenu ); 994 month_action->addTo( viewMenu );
973 connect( month_action, SIGNAL( activated() ), 995 connect( month_action, SIGNAL( activated() ),
974 mView->viewManager(), SLOT( showMonthView() ) ); 996 mView->viewManager(), SLOT( showMonthView() ) );
975 997
976 icon = loadPixmap( pathString + "list" ); 998 icon = loadPixmap( pathString + "list" );
977 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 999 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
978 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 1000 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
979 showlist_action->addTo( viewMenu ); 1001 showlist_action->addTo( viewMenu );
980 connect( showlist_action, SIGNAL( activated() ), 1002 connect( showlist_action, SIGNAL( activated() ),
981 mView->viewManager(), SLOT( showListView() ) ); 1003 mView->viewManager(), SLOT( showListView() ) );
982 1004
983 icon = loadPixmap( pathString + "todo" ); 1005 icon = loadPixmap( pathString + "todo" );
984 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 1006 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
985 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 1007 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
986 todoview_action->addTo( viewMenu ); 1008 todoview_action->addTo( viewMenu );
987 connect( todoview_action, SIGNAL( activated() ), 1009 connect( todoview_action, SIGNAL( activated() ),
988 mView->viewManager(), SLOT( showTodoView() ) ); 1010 mView->viewManager(), SLOT( showTodoView() ) );
989 1011
990 1012
991 1013
992#if 0 1014#if 0
993 action = new QAction( "view_timespan", "Time Span", 0, this ); 1015 action = new QAction( "view_timespan", "Time Span", 0, this );
994 action->addTo( viewMenu ); 1016 action->addTo( viewMenu );
995 connect( action, SIGNAL( activated() ), 1017 connect( action, SIGNAL( activated() ),
996 mView->viewManager(), SLOT( showTimeSpanView() ) ); 1018 mView->viewManager(), SLOT( showTimeSpanView() ) );
997#endif 1019#endif
998 1020
999 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 1021
1000 this );
1001 mNewSubTodoAction->addTo( actionMenu );
1002 connect( mNewSubTodoAction, SIGNAL( activated() ),
1003 mView, SLOT( newSubTodo() ) );
1004 1022
1005 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0, 1023 action = new QAction( "purge_completed", i18n("Purge Completed..."), 0,
1006 this ); 1024 this );
1007 action->addTo( actionMenu ); 1025 action->addTo( actionMenu );
1008 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 1026 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
1009 1027
1010 1028
1011 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5); 1029 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 5);
1012 1030
1013 1031
1014 1032
1015 actionMenu->insertSeparator(); 1033 actionMenu->insertSeparator();
1016 action = new QAction( "manage cat", i18n("Edit category list..."), 0, 1034 action = new QAction( "manage cat", i18n("Edit category list..."), 0,
1017 this ); 1035 this );
1018 action->addTo( actionMenu ); 1036 action->addTo( actionMenu );
1019 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) ); 1037 connect( action, SIGNAL( activated() ), mView, SLOT( editCategories() ) );
1020 1038
1021 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 1039 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
1022 this ); 1040 this );
1023 action->addTo( actionMenu ); 1041 action->addTo( actionMenu );
1024 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 1042 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
1025 1043
1026 1044
1027 actionMenu->insertSeparator(); 1045 actionMenu->insertSeparator();
1028 icon = loadPixmap( pathString + "configure" ); 1046 icon = loadPixmap( pathString + "configure" );
1029 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this ); 1047 action = new QAction( i18n("Configure"),icon, i18n("Configure KO/Pi..."), 0, this );
1030 action->addTo( actionMenu ); 1048 action->addTo( actionMenu );
1031 connect( action, SIGNAL( activated() ), 1049 connect( action, SIGNAL( activated() ),
1032 mView, SLOT( edit_options() ) ); 1050 mView, SLOT( edit_options() ) );
1033 action = new QAction( i18n("Configure"),icon, i18n("Configure Calendar Files..."), 0, this ); 1051 action = new QAction( i18n("Configure"),icon, i18n("Configure Calendar Files..."), 0, this );
1034 action->addTo( actionMenu ); 1052 action->addTo( actionMenu );
1035 connect( action, SIGNAL( activated() ), 1053 connect( action, SIGNAL( activated() ),
1036 this, SLOT( calHint() ) ); 1054 this, SLOT( calHint() ) );
1037 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this ); 1055 action = new QAction( i18n("Configure"),icon, i18n("Global Settings..."), 0, this );
1038 action->addTo( actionMenu ); 1056 action->addTo( actionMenu );
1039 connect( action, SIGNAL( activated() ), 1057 connect( action, SIGNAL( activated() ),
1040 mView, SLOT( edit_global_options() ) ); 1058 mView, SLOT( edit_global_options() ) );
1041 if ( KOPrefs::instance()->mShowFullMenu ) { 1059 if ( KOPrefs::instance()->mShowFullMenu ) {
1042 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 1060 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
1043 1061
1044 } 1062 }
1045 // actionMenu->insertSeparator(); 1063 // actionMenu->insertSeparator();
1046 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 1064 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
1047 this ); 1065 this );
1048 action->addTo( importMenu_X ); 1066 action->addTo( importMenu_X );
1049 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 1067 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
1050 action = new QAction( "import_quick", i18n("Import last file"), 0, 1068 action = new QAction( "import_quick", i18n("Import last file"), 0,
1051 this ); 1069 this );
1052 action->addTo( importMenu_X ); 1070 action->addTo( importMenu_X );
1053 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 1071 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
1054 importMenu_X->insertSeparator(); 1072 importMenu_X->insertSeparator();
1055 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 1073 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
1056 this ); 1074 this );
1057 action->addTo( importMenu_X ); 1075 action->addTo( importMenu_X );
1058 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 1076 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
1059 //#ifndef DESKTOP_VERSION 1077 //#ifndef DESKTOP_VERSION
1060 importMenu_X->insertSeparator(); 1078 importMenu_X->insertSeparator();
1061 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 1079 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
1062 this ); 1080 this );
1063 action->addTo( importMenu_X ); 1081 action->addTo( importMenu_X );
1064 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 1082 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
1065 //#else 1083 //#else
1066#ifdef _OL_IMPORT_ 1084#ifdef _OL_IMPORT_
1067 importMenu_X->insertSeparator(); 1085 importMenu_X->insertSeparator();
1068 action = new QAction( "import_ol", i18n("Import from OL"), 0, 1086 action = new QAction( "import_ol", i18n("Import from OL"), 0,
1069 this ); 1087 this );
1070 action->addTo( importMenu_X ); 1088 action->addTo( importMenu_X );
1071 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 1089 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
1072#endif 1090#endif
1073 //#endif 1091 //#endif
1074 1092
1075 //importMenu->insertSeparator(); 1093 //importMenu->insertSeparator();
1076#if 0 1094#if 0
1077 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 1095 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
1078 this ); 1096 this );
1079 action->addTo( importMenu ); 1097 action->addTo( importMenu );
1080 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 1098 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
1081#endif 1099#endif
1082 action = new QAction( "save_cal", i18n("Save Backup..."), 0, 1100 action = new QAction( "save_cal", i18n("Save Backup..."), 0,
1083 this ); 1101 this );
1084 action->addTo( importMenu ); 1102 action->addTo( importMenu );
1085 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 1103 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
1086 importMenu->insertSeparator(); 1104 importMenu->insertSeparator();
1087 importMenu->insertItem( i18n("Import"), importMenu_X ); 1105 importMenu->insertItem( i18n("Import"), importMenu_X );
1088 //importMenu->insertSeparator(); 1106 //importMenu->insertSeparator();
1089 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 1107 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
1090 this ); 1108 this );
1091 action->addTo( exportMenu_X ); 1109 action->addTo( exportMenu_X );
1092 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 1110 connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
1093 1111
1094 1112
1095 //LR 1113 //LR
1096 QPopupMenu *ex2phone = new QPopupMenu( this ); 1114 QPopupMenu *ex2phone = new QPopupMenu( this );
1097 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1115 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1098 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1116 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1099 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 1117 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
1100 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone ); 1118 exportMenu_X->insertItem( i18n("Export to phone"), ex2phone );
1101 1119
1102 importMenu->insertItem( i18n("Export"), exportMenu_X ); 1120 importMenu->insertItem( i18n("Export"), exportMenu_X );
1103#ifndef DESKTOP_VERSION 1121#ifndef DESKTOP_VERSION
1104 //importMenu->insertSeparator(); 1122 //importMenu->insertSeparator();
1105 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0, 1123 brAction = new QAction( "beam toggle", i18n("Beam receive enabled"), 0,
1106 this ); 1124 this );
1107 brAction->addTo( beamMenu_X ); 1125 brAction->addTo( beamMenu_X );
1108 brAction->setToggleAction (true ) ; 1126 brAction->setToggleAction (true ) ;
1109 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) ); 1127 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) );
1110 1128
1111 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 1129 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
1112 this ); 1130 this );
1113 action->addTo( beamMenu_X ); 1131 action->addTo( beamMenu_X );
1114 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 1132 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
1115 1133
1116 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 1134 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
1117 this ); 1135 this );
1118 action->addTo( beamMenu_X ); 1136 action->addTo( beamMenu_X );
1119 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 1137 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
1120 importMenu->insertItem( i18n("Beam"), beamMenu_X ); 1138 importMenu->insertItem( i18n("Beam"), beamMenu_X );
1121#else 1139#else
1122 //importMenu->insertSeparator(); 1140 //importMenu->insertSeparator();
1123 icon = loadPixmap( pathString + "print" ); 1141 icon = loadPixmap( pathString + "print" );
1124 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 1142 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
1125 action->addTo( beamMenu_X ); 1143 action->addTo( beamMenu_X );
1126 connect( action, SIGNAL( activated() ), 1144 connect( action, SIGNAL( activated() ),
1127 this, SLOT( printCal() ) ); 1145 this, SLOT( printCal() ) );
1128 1146
1129 icon = loadPixmap( pathString + "print" ); 1147 icon = loadPixmap( pathString + "print" );
1130 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 1148 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
1131 action->addTo( beamMenu_X ); 1149 action->addTo( beamMenu_X );
@@ -1440,256 +1458,257 @@ void MainWindow::exportToPhone( int mode )
1440 if ( add ) { 1458 if ( add ) {
1441 Incidence *in = incidence->clone(); 1459 Incidence *in = incidence->clone();
1442 cal->addIncidence( in ); 1460 cal->addIncidence( in );
1443 } 1461 }
1444 } 1462 }
1445 incidence = delSel.next(); 1463 incidence = delSel.next();
1446 } 1464 }
1447 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1465 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1448 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1466 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1449 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1467 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1450 1468
1451 setCaption( i18n("Writing to phone...")); 1469 setCaption( i18n("Writing to phone..."));
1452 if ( PhoneFormat::writeToPhone( cal ) ) 1470 if ( PhoneFormat::writeToPhone( cal ) )
1453 setCaption( i18n("Export to phone successful!")); 1471 setCaption( i18n("Export to phone successful!"));
1454 else 1472 else
1455 setCaption( i18n("Error exporting to phone!")); 1473 setCaption( i18n("Error exporting to phone!"));
1456 delete cal; 1474 delete cal;
1457} 1475}
1458 1476
1459 1477
1460void MainWindow::setDefaultPreferences() 1478void MainWindow::setDefaultPreferences()
1461{ 1479{
1462 KOPrefs *p = KOPrefs::instance(); 1480 KOPrefs *p = KOPrefs::instance();
1463 1481
1464 p->mCompactDialogs = true; 1482 p->mCompactDialogs = true;
1465 p->mConfirm = true; 1483 p->mConfirm = true;
1466 // p->mEnableQuickTodo = false; 1484 // p->mEnableQuickTodo = false;
1467 1485
1468} 1486}
1469 1487
1470QString MainWindow::resourcePath() 1488QString MainWindow::resourcePath()
1471{ 1489{
1472 return KGlobal::iconLoader()->iconPath(); 1490 return KGlobal::iconLoader()->iconPath();
1473} 1491}
1474 1492
1475void MainWindow::displayText( QString text ,QString cap ) 1493void MainWindow::displayText( QString text ,QString cap )
1476{ 1494{
1477 QDialog dia( this, "name", true ); ; 1495 QDialog dia( this, "name", true ); ;
1478 dia.setCaption( cap ); 1496 dia.setCaption( cap );
1479 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1497 QVBoxLayout* lay = new QVBoxLayout( &dia );
1480 lay->setSpacing( 3 ); 1498 lay->setSpacing( 3 );
1481 lay->setMargin( 3 ); 1499 lay->setMargin( 3 );
1482 QTextBrowser tb ( &dia ); 1500 QTextBrowser tb ( &dia );
1483 lay->addWidget( &tb ); 1501 lay->addWidget( &tb );
1484 tb.setText( text ); 1502 tb.setText( text );
1485#ifdef DESKTOP_VERSION 1503#ifdef DESKTOP_VERSION
1486 dia.resize( 640, 480); 1504 dia.resize( 640, 480);
1487#else 1505#else
1488 dia.showMaximized(); 1506 dia.showMaximized();
1489#endif 1507#endif
1490 dia.exec(); 1508 dia.exec();
1491} 1509}
1492 1510
1493void MainWindow::features() 1511void MainWindow::features()
1494{ 1512{
1495 1513
1496 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" ); 1514 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" );
1497} 1515}
1498 1516
1499void MainWindow::usertrans() 1517void MainWindow::usertrans()
1500{ 1518{
1501 1519
1502 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); 1520 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" );
1503} 1521}
1504 1522
1505void MainWindow::storagehowto() 1523void MainWindow::storagehowto()
1506{ 1524{
1507 KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" ); 1525 KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" );
1508} 1526}
1509void MainWindow::timetrackinghowto() 1527void MainWindow::timetrackinghowto()
1510{ 1528{
1511 KApplication::showFile( "KO/Pi Timetracking HowTo", "kdepim/timetrackerhowto.txt" ); 1529 KApplication::showFile( "KO/Pi Timetracking HowTo", "kdepim/timetrackerhowto.txt" );
1512} 1530}
1513void MainWindow::kdesynchowto() 1531void MainWindow::kdesynchowto()
1514{ 1532{
1515 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 1533 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
1516} 1534}
1517void MainWindow::multisynchowto() 1535void MainWindow::multisynchowto()
1518{ 1536{
1519 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 1537 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
1520} 1538}
1521void MainWindow::synchowto() 1539void MainWindow::synchowto()
1522{ 1540{
1523 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1541 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1524} 1542}
1525void MainWindow::faq() 1543void MainWindow::faq()
1526{ 1544{
1527 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" ); 1545 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" );
1528 1546
1529} 1547}
1530void MainWindow::whatsNew() 1548void MainWindow::whatsNew()
1531{ 1549{
1532 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1550 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1533 1551
1534} 1552}
1535void MainWindow::licence() 1553void MainWindow::licence()
1536{ 1554{
1537 KApplication::showLicence(); 1555 KApplication::showLicence();
1538 1556
1539} 1557}
1540void MainWindow::about() 1558void MainWindow::about()
1541{ 1559{
1542 QString version; 1560 QString version;
1543#include <../version> 1561#include <../version>
1544 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1562 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1545 i18n("KOrganizer/Platform-independent\n") + 1563 i18n("KOrganizer/Platform-independent\n") +
1546 "(KO/Pi) " + version + " - " + 1564 "(KO/Pi) " + version + " - " +
1547 1565
1548#ifdef DESKTOP_VERSION 1566#ifdef DESKTOP_VERSION
1549 i18n("Desktop Edition\n") + 1567 i18n("Desktop Edition\n") +
1550#else 1568#else
1551 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") + 1569 i18n("PDA-Edition\nfor: Zaurus 5x00/7x0/860/3000/6000\n") +
1552#endif 1570#endif
1553 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") ); 1571 i18n("(c)2004 Lutz Rogowski (rogowski@kde.org)\nKO/Pi is based on KOrganizer\n(c)2002,2003 Cornelius Schumacher\n(schumacher@kde.org) and the KDE team.\nKOrganizer/Pi is licensed under the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.pi-sync.info --- www.korganizer.org\nSpecial thanks to Michael and Ben\nfor intensive testing!") );
1554} 1572}
1555void MainWindow::keyBindings() 1573void MainWindow::keyBindings()
1556{ 1574{
1557 QString cap = i18n("KO/Pi Keys + Colors"); 1575 QString cap = i18n("KO/Pi Keys + Colors");
1558 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1576 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1559 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1577 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1560 i18n("<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n") + 1578 i18n("<p><b>N</b>: Switch to next view which has a toolbar icon</p>\n") +
1561 i18n("<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n") + 1579 i18n("<p><b>A+(shift or ctrl)</b>: Show occurence of next alarm</p>\n") +
1562 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1580 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1563 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1581 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1564 i18n("<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n")+ 1582 i18n("<p><b>R</b>: Toggle Resource View |<b>F</b>: Edit filter </p>\n")+
1565 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1583 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1566 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1584 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1567 i18n("<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ")+ 1585 i18n("<p><b>X</b>: Next X days view| <b>W</b>: What's next view\n ")+
1586 i18n("<p><b>Q</b>: Show next date with conflicting events\n ")+
1568 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1587 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1569 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1588 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1570 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1589 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1571 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+ 1590 i18n("<p><b>K</b>: Week view in Month view syle</p>\n")+
1572 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1591 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1573 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1592 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1574 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n")+ 1593 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X+ctrl</b>: Toggle datenavigator</p>\n")+
1575 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1594 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1576 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1595 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1577 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1596 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1578 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1597 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1579 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1598 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1580 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1599 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1581 i18n("<p><h3>In agenda view:</h3></p>\n") + 1600 i18n("<p><h3>In agenda view:</h3></p>\n") +
1582 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1601 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1583 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1602 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1584 i18n("<p><h3>In todo view:</h3></p>\n") + 1603 i18n("<p><h3>In todo view:</h3></p>\n") +
1585 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+ 1604 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+
1586 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+ 1605 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+
1587 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+ 1606 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+
1588 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1607 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1589 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1608 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1590 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1609 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1591 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1610 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1592 i18n("<p><h3>In list view:</h3></p>\n") + 1611 i18n("<p><h3>In list view:</h3></p>\n") +
1593 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1612 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1594 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1613 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1595 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1614 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1596 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1615 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1597 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1616 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1598 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1617 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1599 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1618 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1600 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1619 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1601 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1620 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1602 i18n("<p><b>E</b>: Edit item</p>\n") + 1621 i18n("<p><b>E</b>: Edit item</p>\n") +
1603 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1622 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1604 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1623 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1605 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1624 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1606 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1625 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1607 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1626 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1608 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1627 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1609 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1628 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1610 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1629 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1611 i18n("<p><b>White</b>: Item readonly</p>\n"); 1630 i18n("<p><b>White</b>: Item readonly</p>\n");
1612 displayText( text, cap); 1631 displayText( text, cap);
1613} 1632}
1614void MainWindow::aboutAutoSaving() 1633void MainWindow::aboutAutoSaving()
1615{ 1634{
1616 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); 1635 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n");
1617 1636
1618 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); 1637 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text);
1619 1638
1620} 1639}
1621void MainWindow::aboutKnownBugs() 1640void MainWindow::aboutKnownBugs()
1622{ 1641{
1623 QMessageBox* msg; 1642 QMessageBox* msg;
1624 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), 1643 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"),
1625 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ 1644 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+
1626 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ 1645 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+
1627 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + 1646 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") +
1628 i18n("\nor report them in the bugtracker on\n") + 1647 i18n("\nor report them in the bugtracker on\n") +
1629 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), 1648 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"),
1630 QMessageBox::NoIcon, 1649 QMessageBox::NoIcon,
1631 QMessageBox::Ok, 1650 QMessageBox::Ok,
1632 QMessageBox::NoButton, 1651 QMessageBox::NoButton,
1633 QMessageBox::NoButton); 1652 QMessageBox::NoButton);
1634 msg->exec(); 1653 msg->exec();
1635 delete msg; 1654 delete msg;
1636 1655
1637} 1656}
1638 1657
1639QString MainWindow::defaultFileName() 1658QString MainWindow::defaultFileName()
1640{ 1659{
1641 return locateLocal( "data", "korganizer/mycalendar.ics" ); 1660 return locateLocal( "data", "korganizer/mycalendar.ics" );
1642} 1661}
1643QString MainWindow::syncFileName() 1662QString MainWindow::syncFileName()
1644{ 1663{
1645#ifdef DESKTOP_VERSION 1664#ifdef DESKTOP_VERSION
1646 return locateLocal( "tmp", "synccalendar.ics" ); 1665 return locateLocal( "tmp", "synccalendar.ics" );
1647#else 1666#else
1648 return QString( "/tmp/synccalendar.ics" ); 1667 return QString( "/tmp/synccalendar.ics" );
1649#endif 1668#endif
1650} 1669}
1651#include "koglobals.h" 1670#include "koglobals.h"
1652#include <kcalendarsystem.h> 1671#include <kcalendarsystem.h>
1653void MainWindow::updateWeek(QDate seda) 1672void MainWindow::updateWeek(QDate seda)
1654{ 1673{
1655 int weekNum = KGlobal::locale()->weekNum ( seda ); 1674 int weekNum = KGlobal::locale()->weekNum ( seda );
1656 mWeekPixmap.fill( mWeekBgColor ); 1675 mWeekPixmap.fill( mWeekBgColor );
1657 QPainter p ( &mWeekPixmap ); 1676 QPainter p ( &mWeekPixmap );
1658 p.setFont( mWeekFont ); 1677 p.setFont( mWeekFont );
1659 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); 1678 p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) );
1660 p.end(); 1679 p.end();
1661 QIconSet icon3 ( mWeekPixmap ); 1680 QIconSet icon3 ( mWeekPixmap );
1662 mWeekAction->setIconSet ( icon3 ); 1681 mWeekAction->setIconSet ( icon3 );
1663 1682
1664} 1683}
1665void MainWindow::updateWeekNum(const DateList &selectedDates) 1684void MainWindow::updateWeekNum(const DateList &selectedDates)
1666{ 1685{
1667 updateWeek( selectedDates.first() ); 1686 updateWeek( selectedDates.first() );
1668} 1687}
1669void MainWindow::processIncidenceSelection( Incidence *incidence ) 1688void MainWindow::processIncidenceSelection( Incidence *incidence )
1670{ 1689{
1671 if ( !incidence ) { 1690 if ( !incidence ) {
1672 mShowAction->setMenuText( i18n("Show") ); 1691 mShowAction->setMenuText( i18n("Show") );
1673 enableIncidenceActions( false ); 1692 enableIncidenceActions( false );
1674 mNewSubTodoAction->setEnabled( false ); 1693 mNewSubTodoAction->setEnabled( false );
1675 setCaptionToDates(); 1694 setCaptionToDates();
1676 return; 1695 return;
1677 } 1696 }
1678 QString startString = ""; 1697 QString startString = "";
1679 if ( incidence->typeID() != todoID ) { 1698 if ( incidence->typeID() != todoID ) {
1680 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { 1699 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
1681 if ( incidence->doesFloat() ) { 1700 if ( incidence->doesFloat() ) {
1682 startString += ": "+incidence->dtStartDateStr( true ); 1701 startString += ": "+incidence->dtStartDateStr( true );
1683 startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); 1702 startString += " --- "+((Event*)incidence)->dtEndDateStr( true );
1684 } else { 1703 } else {
1685 startString = ": "+incidence->dtStartStr(true); 1704 startString = ": "+incidence->dtStartStr(true);
1686 startString += " --- "+((Event*)incidence)->dtEndStr(true); 1705 startString += " --- "+((Event*)incidence)->dtEndStr(true);
1687 } 1706 }
1688 } else { 1707 } else {
1689 if ( incidence->dtStart().time() != incidence->dtEnd().time() ) 1708 if ( incidence->dtStart().time() != incidence->dtEnd().time() )
1690 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ 1709 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+
1691 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); 1710 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time());
1692 if ( incidence->isBirthday() || incidence->isAnniversary() ) { 1711 if ( incidence->isBirthday() || incidence->isAnniversary() ) {
1693 bool ok; 1712 bool ok;
1694 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); 1713 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok );
1695 if ( ok ) { 1714 if ( ok ) {
@@ -1974,256 +1993,264 @@ void MainWindow::keyPressEvent ( QKeyEvent * e )
1974 switch ( e->key() ) { 1993 switch ( e->key() ) {
1975 case Qt::Key_Right: 1994 case Qt::Key_Right:
1976 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1995 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1977 mView->goNextMonth(); 1996 mView->goNextMonth();
1978 else 1997 else
1979 mView->goNext(); 1998 mView->goNext();
1980 showSelectedDates = true; 1999 showSelectedDates = true;
1981 break; 2000 break;
1982 case Qt::Key_Left: 2001 case Qt::Key_Left:
1983 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2002 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1984 mView->goPreviousMonth(); 2003 mView->goPreviousMonth();
1985 else 2004 else
1986 mView->goPrevious(); 2005 mView->goPrevious();
1987 showSelectedDates = true; 2006 showSelectedDates = true;
1988 break; 2007 break;
1989 case Qt::Key_Down: 2008 case Qt::Key_Down:
1990 mView->viewManager()->agendaView()->scrollOneHourDown(); 2009 mView->viewManager()->agendaView()->scrollOneHourDown();
1991 break; 2010 break;
1992 case Qt::Key_Up: 2011 case Qt::Key_Up:
1993 mView->viewManager()->agendaView()->scrollOneHourUp(); 2012 mView->viewManager()->agendaView()->scrollOneHourUp();
1994 break; 2013 break;
1995 case Qt::Key_K: 2014 case Qt::Key_K:
1996 mView->viewManager()->showMonthViewWeek(); 2015 mView->viewManager()->showMonthViewWeek();
1997 break; 2016 break;
1998 case Qt::Key_I: 2017 case Qt::Key_I:
1999 mView->showIncidence(); 2018 mView->showIncidence();
2000 break; 2019 break;
2001 case Qt::Key_Delete: 2020 case Qt::Key_Delete:
2002 case Qt::Key_Backspace: 2021 case Qt::Key_Backspace:
2003 mView->deleteIncidence(); 2022 mView->deleteIncidence();
2004 break; 2023 break;
2005 case Qt::Key_D: 2024 case Qt::Key_D:
2006 mView->viewManager()->showDayView(); 2025 mView->viewManager()->showDayView();
2007 showSelectedDates = true; 2026 showSelectedDates = true;
2008 break; 2027 break;
2009 case Qt::Key_O: 2028 case Qt::Key_O:
2010 mView->toggleFilerEnabled( ); 2029 mView->toggleFilerEnabled( );
2011 break; 2030 break;
2012 case Qt::Key_0: 2031 case Qt::Key_0:
2013 case Qt::Key_1: 2032 case Qt::Key_1:
2014 case Qt::Key_2: 2033 case Qt::Key_2:
2015 case Qt::Key_3: 2034 case Qt::Key_3:
2016 case Qt::Key_4: 2035 case Qt::Key_4:
2017 case Qt::Key_5: 2036 case Qt::Key_5:
2018 case Qt::Key_6: 2037 case Qt::Key_6:
2019 case Qt::Key_7: 2038 case Qt::Key_7:
2020 case Qt::Key_8: 2039 case Qt::Key_8:
2021 case Qt::Key_9: 2040 case Qt::Key_9:
2022 pro = e->key()-48; 2041 pro = e->key()-48;
2023 if ( pro == 0 ) 2042 if ( pro == 0 )
2024 pro = 10; 2043 pro = 10;
2025 if ( e->state() == Qt::ControlButton) 2044 if ( e->state() == Qt::ControlButton)
2026 pro += 10; 2045 pro += 10;
2027 break; 2046 break;
2028 case Qt::Key_M: 2047 case Qt::Key_M:
2029 mView->viewManager()->showMonthView(); 2048 mView->viewManager()->showMonthView();
2030 showSelectedDates = true; 2049 showSelectedDates = true;
2031 break; 2050 break;
2032 case Qt::Key_Insert: 2051 case Qt::Key_Insert:
2033 mView->newEvent(); 2052 mView->newEvent();
2034 break; 2053 break;
2035 case Qt::Key_S : 2054 case Qt::Key_S :
2036 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 2055 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
2037 mView->newSubTodo(); 2056 mView->newSubTodo();
2038 else 2057 else
2039 mView->dialogManager()->showSearchDialog(); 2058 mView->dialogManager()->showSearchDialog();
2040 break; 2059 break;
2041 case Qt::Key_Y : 2060 case Qt::Key_Y :
2042 case Qt::Key_Z : 2061 case Qt::Key_Z :
2043 mView->viewManager()->showWorkWeekView(); 2062 mView->viewManager()->showWorkWeekView();
2044 showSelectedDates = true; 2063 showSelectedDates = true;
2045 break; 2064 break;
2046 case Qt::Key_U : 2065 case Qt::Key_U :
2047 mView->viewManager()->showWeekView(); 2066 mView->viewManager()->showWeekView();
2048 showSelectedDates = true; 2067 showSelectedDates = true;
2049 break; 2068 break;
2050 case Qt::Key_H : 2069 case Qt::Key_H :
2051 keyBindings(); 2070 keyBindings();
2052 break; 2071 break;
2053 case Qt::Key_W: 2072 case Qt::Key_W:
2054 mView->viewManager()->showWhatsNextView(); 2073 mView->viewManager()->showWhatsNextView();
2055 break; 2074 break;
2056 case Qt::Key_L: 2075 case Qt::Key_L:
2057 mView->viewManager()->showListView(); 2076 mView->viewManager()->showListView();
2058 break; 2077 break;
2059 case Qt::Key_N: 2078 case Qt::Key_N:
2060 mView->viewManager()->showNextView(); 2079 mView->viewManager()->showNextView();
2061 break; 2080 break;
2062 case Qt::Key_V: 2081 case Qt::Key_V:
2063 mView->viewManager()->showTodoView(); 2082 mView->viewManager()->showTodoView();
2064 break; 2083 break;
2065 case Qt::Key_C: 2084 case Qt::Key_C:
2066 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 2085 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
2067 break; 2086 break;
2068 case Qt::Key_P: 2087 case Qt::Key_P:
2069 mView->showDatePicker( ); 2088 mView->showDatePicker( );
2070 break; 2089 break;
2071 case Qt::Key_F: 2090 case Qt::Key_F:
2072 mView->editFilters(); 2091 mView->editFilters();
2073 break; 2092 break;
2074 case Qt::Key_R: 2093 case Qt::Key_R:
2075 mView->toggleFilter(); 2094 mView->toggleFilter();
2076 break; 2095 break;
2077 case Qt::Key_X: 2096 case Qt::Key_X:
2078 if ( e->state() == Qt::ControlButton ) 2097 if ( e->state() == Qt::ControlButton )
2079 mView->toggleDateNavigatorWidget(); 2098 mView->toggleDateNavigatorWidget();
2080 else { 2099 else {
2081 mView->viewManager()->showNextXView(); 2100 mView->viewManager()->showNextXView();
2082 showSelectedDates = true; 2101 showSelectedDates = true;
2083 } 2102 }
2084 break; 2103 break;
2085 case Qt::Key_Space: 2104 case Qt::Key_Space:
2086 mView->toggleExpand(); 2105 mView->toggleExpand();
2087 break; 2106 break;
2088 case Qt::Key_A: 2107 case Qt::Key_A:
2089 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton ) 2108 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton )
2090 mView->showNextAlarms(); 2109 mView->showNextAlarms();
2091 else 2110 else
2092 mView->toggleAllDaySize(); 2111 mView->toggleAllDaySize();
2093 break; 2112 break;
2094 case Qt::Key_T: 2113 case Qt::Key_T:
2095 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2114 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2096 mView->newTodo(); 2115 mView->newTodo();
2097 else { 2116 else {
2098 mView->goToday(); 2117 mView->goToday();
2099 showSelectedDates = true; 2118 showSelectedDates = true;
2100 } 2119 }
2101 break; 2120 break;
2121 case Qt::Key_Q:
2122 if ( e->state() == Qt::ControlButton )
2123 mView->conflictNotAll();
2124 else if ( e->state() == Qt::ShiftButton )
2125 mView->conflictAllday();
2126 else
2127 mView->conflictAll();
2128 break;
2102 case Qt::Key_J: 2129 case Qt::Key_J:
2103 mView->viewManager()->showJournalView(); 2130 mView->viewManager()->showJournalView();
2104 break; 2131 break;
2105 case Qt::Key_B: 2132 case Qt::Key_B:
2106 mView->editIncidenceDescription();; 2133 mView->editIncidenceDescription();;
2107 break; 2134 break;
2108 // case Qt::Key_Return: 2135 // case Qt::Key_Return:
2109 case Qt::Key_E: 2136 case Qt::Key_E:
2110 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 2137 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
2111 mView->newEvent(); 2138 mView->newEvent();
2112 else 2139 else
2113 mView->editIncidence(); 2140 mView->editIncidence();
2114 break; 2141 break;
2115 case Qt::Key_Plus: 2142 case Qt::Key_Plus:
2116 size = p->mHourSize +2; 2143 size = p->mHourSize +2;
2117 if ( size <= 22 ) 2144 if ( size <= 22 )
2118 configureAgenda( size ); 2145 configureAgenda( size );
2119 break; 2146 break;
2120 case Qt::Key_Minus: 2147 case Qt::Key_Minus:
2121 size = p->mHourSize - 2; 2148 size = p->mHourSize - 2;
2122 if ( size >= 4 ) 2149 if ( size >= 4 )
2123 configureAgenda( size ); 2150 configureAgenda( size );
2124 break; 2151 break;
2125 2152
2126 2153
2127 default: 2154 default:
2128 e->ignore(); 2155 e->ignore();
2129 } 2156 }
2130 if ( pro > 0 ) { 2157 if ( pro > 0 ) {
2131 selectFilter( pro+1 ); 2158 selectFilter( pro+1 );
2132 } 2159 }
2133 if ( showSelectedDates ) { 2160 if ( showSelectedDates ) {
2134 ;// setCaptionToDates(); 2161 ;// setCaptionToDates();
2135 } 2162 }
2136 2163
2137} 2164}
2138void MainWindow::fillFilterMenuTB() 2165void MainWindow::fillFilterMenuTB()
2139{ 2166{
2140 selectFilterMenuTB->clear(); 2167 selectFilterMenuTB->clear();
2141 selectFilterMenuTB->insertItem(i18n ( "Edit Filters" ), 0 ); 2168 selectFilterMenuTB->insertItem(i18n ( "Edit Filters" ), 0 );
2142 selectFilterMenuTB->insertSeparator(); 2169 selectFilterMenuTB->insertSeparator();
2143 selectFilterMenuTB->insertItem(i18n ( "No Filter" ), 1 ); 2170 selectFilterMenuTB->insertItem(i18n ( "No Filter" ), 1 );
2144 2171
2145 selectFilterMenuTB->insertSeparator(); 2172 selectFilterMenuTB->insertSeparator();
2146 QPtrList<CalFilter> fili = mView->filters(); 2173 QPtrList<CalFilter> fili = mView->filters();
2147 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2174 CalFilter *curfilter = mView->filterView()->selectedFilter();
2148 CalFilter *filter = fili.first(); 2175 CalFilter *filter = fili.first();
2149 int iii = 2; 2176 int iii = 2;
2150 bool checkitem = mView->filterView()->filtersEnabled(); 2177 bool checkitem = mView->filterView()->filtersEnabled();
2151 while(filter) { 2178 while(filter) {
2152 selectFilterMenuTB->insertItem( filter->name(), iii ); 2179 selectFilterMenuTB->insertItem( filter->name(), iii );
2153 if ( filter == curfilter) 2180 if ( filter == curfilter)
2154 selectFilterMenuTB->setItemChecked( iii, checkitem ); 2181 selectFilterMenuTB->setItemChecked( iii, checkitem );
2155 filter = fili.next(); 2182 filter = fili.next();
2156 ++iii; 2183 ++iii;
2157 } 2184 }
2158 if ( !checkitem ) 2185 if ( !checkitem )
2159 selectFilterMenuTB->setItemChecked( 1, true ); 2186 selectFilterMenuTB->setItemChecked( 1, true );
2160 2187
2161 int x = 0; 2188 int x = 0;
2162 int y = iconToolBar->height(); 2189 int y = iconToolBar->height();
2163 int dX = 0; 2190 int dX = 0;
2164 int dY = 0; 2191 int dY = 0;
2165 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 2192 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
2166 if ( iconToolBar->y() > height()/2 ) { 2193 if ( iconToolBar->y() > height()/2 ) {
2167 dY = selectFilterMenuTB->sizeHint().height()+8; 2194 dY = selectFilterMenuTB->sizeHint().height()+8;
2168 y = 0; 2195 y = 0;
2169 } 2196 }
2170 } else { 2197 } else {
2171 if ( iconToolBar->x() > width()/2 ) { // right side 2198 if ( iconToolBar->x() > width()/2 ) { // right side
2172 x=0; 2199 x=0;
2173 dX= selectFilterMenuTB->sizeHint().width()+8; 2200 dX= selectFilterMenuTB->sizeHint().width()+8;
2174 y = 0; 2201 y = 0;
2175 } else { 2202 } else {
2176 x= iconToolBar->width(); 2203 x= iconToolBar->width();
2177 y = 0; 2204 y = 0;
2178 } 2205 }
2179 } 2206 }
2180 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() ); 2207 //qDebug("dax %d dy %d %d %d ", dX, dY, iconToolBar->x(), iconToolBar->y() );
2181 selectFilterMenuTB->popup(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY))); 2208 selectFilterMenuTB->popup(iconToolBar->mapToGlobal(QPoint(x,y)-QPoint( dX,dY)));
2182} 2209}
2183void MainWindow::fillFilterMenu() 2210void MainWindow::fillFilterMenu()
2184{ 2211{
2185 selectFilterMenu->clear(); 2212 selectFilterMenu->clear();
2186 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); 2213 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
2187 selectFilterMenu->insertSeparator(); 2214 selectFilterMenu->insertSeparator();
2188 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 ); 2215 selectFilterMenu->insertItem(i18n ( "No Filter" ), 1 );
2189 2216
2190 selectFilterMenu->insertSeparator(); 2217 selectFilterMenu->insertSeparator();
2191 QPtrList<CalFilter> fili = mView->filters(); 2218 QPtrList<CalFilter> fili = mView->filters();
2192 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2219 CalFilter *curfilter = mView->filterView()->selectedFilter();
2193 CalFilter *filter = fili.first(); 2220 CalFilter *filter = fili.first();
2194 int iii = 2; 2221 int iii = 2;
2195 bool checkitem = mView->filterView()->filtersEnabled(); 2222 bool checkitem = mView->filterView()->filtersEnabled();
2196 while(filter) { 2223 while(filter) {
2197 selectFilterMenu->insertItem( filter->name(), iii ); 2224 selectFilterMenu->insertItem( filter->name(), iii );
2198 if ( filter == curfilter) 2225 if ( filter == curfilter)
2199 selectFilterMenu->setItemChecked( iii, checkitem ); 2226 selectFilterMenu->setItemChecked( iii, checkitem );
2200 filter = fili.next(); 2227 filter = fili.next();
2201 ++iii; 2228 ++iii;
2202 } 2229 }
2203 if ( !checkitem ) 2230 if ( !checkitem )
2204 selectFilterMenu->setItemChecked( 1, true ); 2231 selectFilterMenu->setItemChecked( 1, true );
2205} 2232}
2206void MainWindow::fillFilterMenuPopup() 2233void MainWindow::fillFilterMenuPopup()
2207{ 2234{
2208 filterPopupMenu->clear(); 2235 filterPopupMenu->clear();
2209 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 ); 2236 filterPopupMenu->insertItem(i18n ( "No Filter" ), 0 );
2210 2237
2211 filterPopupMenu->insertSeparator(); 2238 filterPopupMenu->insertSeparator();
2212 QPtrList<CalFilter> fili = mView->filters(); 2239 QPtrList<CalFilter> fili = mView->filters();
2213 CalFilter *curfilter = mView->filterView()->selectedFilter(); 2240 CalFilter *curfilter = mView->filterView()->selectedFilter();
2214 CalFilter *filter = fili.first(); 2241 CalFilter *filter = fili.first();
2215 int iii = 1; 2242 int iii = 1;
2216 bool checkitem = mView->filterView()->filtersEnabled(); 2243 bool checkitem = mView->filterView()->filtersEnabled();
2217 while(filter) { 2244 while(filter) {
2218 filterPopupMenu->insertItem( filter->name(), iii ); 2245 filterPopupMenu->insertItem( filter->name(), iii );
2219 if ( filter == curfilter) 2246 if ( filter == curfilter)
2220 filterPopupMenu->setItemChecked( iii, checkitem ); 2247 filterPopupMenu->setItemChecked( iii, checkitem );
2221 filter = fili.next(); 2248 filter = fili.next();
2222 ++iii; 2249 ++iii;
2223 } 2250 }
2224 if ( !checkitem ) 2251 if ( !checkitem )
2225 filterPopupMenu->setItemChecked( 0, true ); 2252 filterPopupMenu->setItemChecked( 0, true );
2226} 2253}
2227void MainWindow::selectFilter( int fil ) 2254void MainWindow::selectFilter( int fil )
2228{ 2255{
2229 2256