author | zautrix <zautrix> | 2005-07-07 04:18:11 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-07-07 04:18:11 (UTC) |
commit | b4d85da57e2d558ec088af6f3b2a34b1854462c0 (patch) (unidiff) | |
tree | 0860bfaae1d15aae6cd24861eaa87d0331fb364a | |
parent | cb350dbe9151db2ded62942d29d11d6c8b88eabd (diff) | |
download | kdepimpi-b4d85da57e2d558ec088af6f3b2a34b1854462c0.zip kdepimpi-b4d85da57e2d558ec088af6f3b2a34b1854462c0.tar.gz kdepimpi-b4d85da57e2d558ec088af6f3b2a34b1854462c0.tar.bz2 |
conflict
-rw-r--r-- | bin/kdepim/WhatsNew.txt | 2 | ||||
-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 14 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 80 | ||||
-rw-r--r-- | korganizer/calendarview.h | 4 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 71 |
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 @@ | |||
1 | Info about the changes in new versions of KDE-Pim/Pi | 1 | Info about the changes in new versions of KDE-Pim/Pi |
2 | 2 | ||
3 | ********** VERSION 2.1.14 ************ | 3 | ********** VERSION 2.1.14 ************ |
4 | 4 | ||
5 | Added 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. | 5 | Added 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. |
6 | Added a button to add a subtodo quickly. | 6 | Added a button to add a subtodo quickly. |
7 | 7 | ||
8 | Added 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 | ||
11 | Fixed a problem in KA/Pi search. | 13 | Fixed a problem in KA/Pi search. |
12 | Fixed some minor problems in KO/Pi. | 14 | Fixed some minor problems in KO/Pi. |
13 | Added calendar selection possibility to the todo view popup and to the event/todo/journal editor. | 15 | Added calendar selection possibility to the todo view popup and to the event/todo/journal editor. |
14 | 16 | ||
15 | Fixed memory usage problems in KA/Pi: | 17 | Fixed memory usage problems in KA/Pi: |
16 | When loading data KA/Pi did load the file data twice. | 18 | When loading data KA/Pi did load the file data twice. |
17 | Example: | 19 | Example: |
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. |
20 | When saving data KA/Pi did consume a lot of memory for the data parsing during the save process. | 22 | When saving data KA/Pi did consume a lot of memory for the data parsing during the save process. |
21 | This is fixed. | 23 | This is fixed. |
22 | Example: | 24 | Example: |
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. |
26 | Note: The memory usage of KA/Pi after the data is loaded/saved has not changed. | 28 | Note: The memory usage of KA/Pi after the data is loaded/saved has not changed. |
27 | The saving of data may be a bit slower now. | 29 | The saving of data may be a bit slower now. |
28 | 30 | ||
29 | Fixed memory usage problems in KO/Pi: | 31 | Fixed memory usage problems in KO/Pi: |
30 | When KO/Pi did save the data to file, it did not release the used buffers after saving. | 32 | When KO/Pi did save the data to file, it did not release the used buffers after saving. |
31 | The used buffer was released after saving the next time, but there was new buffer space allocated again on that save operation. | 33 | The used buffer was released after saving the next time, but there was new buffer space allocated again on that save operation. |
32 | This is fixed. | 34 | This is fixed. |
33 | Example: | 35 | Example: |
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 | ||
36 | Optimized memory usage in KO/Pi Agenda view: | 38 | Optimized memory usage in KO/Pi Agenda view: |
37 | KO/Pi is storing some paint information in extra buffers for faster repainting of the agenda view. | 39 | KO/Pi is storing some paint information in extra buffers for faster repainting of the agenda view. |
38 | These buffers were not made smaller (i.e. downsized) because of performance reasons. | 40 | These buffers were not made smaller (i.e. downsized) because of performance reasons. |
39 | The handling of these buffers are now much smarter: | 41 | The handling of these buffers are now much smarter: |
40 | Two (of six) buffers are removed completely. | 42 | Two (of six) buffers are removed completely. |
41 | The remaing four buffers are now downsized after not using the agenda view for 45 seconds. | 43 | The remaing four buffers are now downsized after not using the agenda view for 45 seconds. |
42 | Such 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. | 44 | Such 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 | ||
44 | Worst case example ( for a maximum size agenda content): | 46 | Worst 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 | ||
47 | When 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. | 49 | When 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 | ||
49 | Summary: | 51 | Summary: |
50 | Many memory wasting problems of KA/Pi and KO/Pi fixed such that it is better to use on the Zaurus. | 52 | Many 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 | ||
54 | KO/Pi: | 56 | KO/Pi: |
55 | Many small usability fixes, e.g. rearranged the popup menus such that they are better to use on the Zaurus. | 57 | Many small usability fixes, e.g. rearranged the popup menus such that they are better to use on the Zaurus. |
56 | Fixed a problem with the month view when file was saved but KO/Pi was not the active window. | 58 | Fixed a problem with the month view when file was saved but KO/Pi was not the active window. |
57 | Fixed some problems in the resource config dialog (e.g. added a warning if you set all calendars to read-only). | 59 | Fixed some problems in the resource config dialog (e.g. added a warning if you set all calendars to read-only). |
58 | Fixed some other small problems. | 60 | Fixed some other small problems. |
59 | 61 | ||
60 | ********** VERSION 2.1.11 ************ | 62 | ********** VERSION 2.1.11 ************ |
61 | 63 | ||
62 | KO/Pi: | 64 | KO/Pi: |
63 | Because we can have many calendars now in KO/Pi we can have more than one journal entry per day. | 65 | Because we can have many calendars now in KO/Pi we can have more than one journal entry per day. |
64 | Added features to handle (and add ) more than one journal entry per day. | 66 | Added features to handle (and add ) more than one journal entry per day. |
65 | Added option for a journal title. | 67 | Added option for a journal title. |
66 | 68 | ||
67 | Added info about the calendar, the item belongs to, to the event/todo/journal viewer. | 69 | Added info about the calendar, the item belongs to, to the event/todo/journal viewer. |
68 | Fixed a problem of the alarm of completed recurring todos. | 70 | Fixed a problem of the alarm of completed recurring todos. |
69 | Added to the event/todo editor to set quickly the category of an item. | 71 | Added to the event/todo editor to set quickly the category of an item. |
70 | 72 | ||
71 | 73 | ||
72 | Fixed some problems when calling KO/Pi or KA/Pi from the alarm applet. | 74 | Fixed some problems when calling KO/Pi or KA/Pi from the alarm applet. |
73 | 75 | ||
74 | Added KA/Pi multi sync to the multi sync called from the alarm applet. | 76 | Added 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 | ||
78 | KO/Pi: | 80 | KO/Pi: |
79 | Importing Birthdays will now create another file resource "Birthdays" and import the birthday data from KA/Pi into that file. | 81 | Importing Birthdays will now create another file resource "Birthdays" and import the birthday data from KA/Pi into that file. |
80 | When a multidayevent is selected in monthview all occurences of this event in the monthview are now hightlighted. | 82 | When a multidayevent is selected in monthview all occurences of this event in the monthview are now hightlighted. |
81 | Fixed a bug in searching for a small timerange, i.e. one day. | 83 | Fixed a bug in searching for a small timerange, i.e. one day. |
82 | 84 | ||
83 | KA/Pi: | 85 | KA/Pi: |
84 | Fixed two problems in csv export. | 86 | Fixed two problems in csv export. |
85 | Fixed problems when calling the contact selection dialog from KO/Pi or OM/Pi. | 87 | Fixed 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 | ||
89 | KO/Pi: | 91 | KO/Pi: |
90 | Fixed some problems of the new search options in the search dialog. | 92 | Fixed some problems of the new search options in the search dialog. |
91 | Fixed some problems in the new resource config options. | 93 | Fixed some problems in the new resource config options. |
92 | Changed 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. | 94 | Changed 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. |
93 | Fixed a problem creating new events in the agenda view if at the day/time is already an agenda item shown: | 95 | Fixed a problem creating new events in the agenda view if at the day/time is already an agenda item shown: |
94 | Now 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. | 96 | Now 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 | ||
96 | Fixed a problem in recurrence range in syncing with DTM. | 98 | Fixed a problem in recurrence range in syncing with DTM. |
97 | 99 | ||
98 | KA/Pi: | 100 | KA/Pi: |
99 | Made it posiible to show in the contact overview the details of all data available for that contact( e.g. office, spouse, children, nickname ...) | 101 | Made 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 | ||
101 | PwM/Pi: | 103 | PwM/Pi: |
102 | Added "sec" to the timeout config settings to make it clear the timeout values are seconds. | 104 | Added "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 | ||
106 | KO/Pi: | 108 | KO/Pi: |
107 | Added info about the completion state of a todo in the ListView/Searchdialog. | 109 | Added info about the completion state of a todo in the ListView/Searchdialog. |
108 | If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well. | 110 | If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well. |
109 | Fixed some updating problems when changing the filter. | 111 | Fixed some updating problems when changing the filter. |
110 | 112 | ||
111 | KA/Pi: | 113 | KA/Pi: |
112 | In the addressee selection dialog now the formatted name is shown, if not empty. | 114 | In the addressee selection dialog now the formatted name is shown, if not empty. |
113 | Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category. | 115 | Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category. |
114 | Now in the addressee selection dialog a selected contact is remove with a single click from the selected list. | 116 | Now in the addressee selection dialog a selected contact is remove with a single click from the selected list. |
115 | 117 | ||
116 | Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored. | 118 | Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored. |
117 | Fixed the sorting for size in the file selector on the Z. | 119 | Fixed the sorting for size in the file selector on the Z. |
118 | 120 | ||
119 | Changed the color selection dialog on the Zaurus to a more user friendly version. | 121 | Changed 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 | ||
123 | KO/Pi: | 125 | KO/Pi: |
124 | Fixed several problems in the new Resource handling. | 126 | Fixed several problems in the new Resource handling. |
125 | Added more options to the search dialog. | 127 | Added more options to the search dialog. |
126 | Fixed a problem in the Month view. | 128 | Fixed a problem in the Month view. |
127 | Added more options to the dialog when setting a todo to stopped. | 129 | Added more options to the dialog when setting a todo to stopped. |
128 | 130 | ||
129 | Fixed two small problems in KO/Pi Alarm applet. | 131 | Fixed two small problems in KO/Pi Alarm applet. |
130 | 132 | ||
131 | ********** VERSION 2.1.6 ************ | 133 | ********** VERSION 2.1.6 ************ |
132 | 134 | ||
133 | This release is for testing only. | 135 | This release is for testing only. |
134 | 136 | ||
135 | KO/Pi: | 137 | KO/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 | ||
646 | CalendarView::~CalendarView() | 646 | CalendarView::~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 | } |
657 | void 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 | |||
710 | void CalendarView::conflictAll() | ||
711 | { | ||
712 | nextConflict ( true, true ); | ||
713 | } | ||
714 | void CalendarView::conflictAllday() | ||
715 | { | ||
716 | nextConflict ( false, true ); | ||
717 | } | ||
718 | void CalendarView::conflictNotAll() | ||
719 | { | ||
720 | nextConflict ( false, false ); | ||
721 | } | ||
722 | |||
657 | void CalendarView::setCalReadOnly( int id, bool readO ) | 723 | void 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 | } |
664 | void CalendarView::setScrollBarStep(int val ) | 730 | void 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 | } |
670 | void CalendarView::scrollBarValue(int val ) | 736 | void 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 | } |
698 | void CalendarView::updateView(const QDate &start, const QDate &end) | 764 | void 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 | ||
718 | void CalendarView::checkFiles() | 784 | void 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 | } |
735 | void CalendarView::checkAlarms() | 801 | void 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 | } |
3040 | void CalendarView::showDatePickerPopup() | 3106 | void 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 | } |
3063 | void CalendarView::showDatePicker( ) | 3129 | void 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 | ||
3070 | void CalendarView::showEventEditor() | 3136 | void 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 | } |
3092 | void CalendarView::showTodoEditor() | 3158 | void 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 | ||
3115 | void CalendarView::cloneIncidence() | 3181 | void 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 | } |
3123 | void CalendarView::moveIncidence() | 3189 | void 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 | } |
3131 | void CalendarView::beamIncidence() | 3197 | void 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 | } |
3139 | void CalendarView::toggleCancelIncidence() | 3205 | void 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 | ||
3149 | void CalendarView::cancelIncidence(Incidence * inc ) | 3215 | void 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 | } |
3155 | void CalendarView::cloneIncidence(Incidence * orgInc ) | 3221 | void 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 | ||
3209 | void CalendarView::newEvent() | 3275 | void 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 | ||
3236 | void CalendarView::newEvent(QDateTime fh) | 3302 | void 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 | ||
3242 | void CalendarView::newEvent(QDate dt) | 3308 | void 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 | } |
3247 | void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) | 3313 | void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) |
3248 | { | 3314 | { |
3249 | newEvent(fromHint, toHint, false); | 3315 | newEvent(fromHint, toHint, false); |
3250 | } | 3316 | } |
3251 | void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) | 3317 | void 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 | } |
3267 | void CalendarView::todoAdded(Todo * t) | 3333 | void CalendarView::todoAdded(Todo * t) |
3268 | { | 3334 | { |
3269 | 3335 | ||
3270 | changeTodoDisplay ( t ,KOGlobals::EVENTADDED); | 3336 | changeTodoDisplay ( t ,KOGlobals::EVENTADDED); |
3271 | updateTodoViews(); | 3337 | updateTodoViews(); |
3272 | } | 3338 | } |
3273 | void CalendarView::todoChanged(Todo * t) | 3339 | void CalendarView::todoChanged(Todo * t) |
3274 | { | 3340 | { |
3275 | emit todoModified( t, 4 ); | 3341 | emit todoModified( t, 4 ); |
3276 | // updateTodoViews(); | 3342 | // updateTodoViews(); |
3277 | } | 3343 | } |
3278 | void CalendarView::todoToBeDeleted(Todo *) | 3344 | void CalendarView::todoToBeDeleted(Todo *) |
3279 | { | 3345 | { |
3280 | //qDebug("todoToBeDeleted(Todo *) "); | 3346 | //qDebug("todoToBeDeleted(Todo *) "); |
3281 | updateTodoViews(); | 3347 | updateTodoViews(); |
3282 | } | 3348 | } |
3283 | void CalendarView::todoDeleted() | 3349 | void CalendarView::todoDeleted() |
3284 | { | 3350 | { |
3285 | //qDebug(" todoDeleted()"); | 3351 | //qDebug(" todoDeleted()"); |
3286 | updateTodoViews(); | 3352 | updateTodoViews(); |
3287 | } | 3353 | } |
3288 | 3354 | ||
3289 | 3355 | ||
3290 | void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) | 3356 | void 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 | } |
3392 | void CalendarView::showEvent(Event *event) | 3458 | void CalendarView::showEvent(Event *event) |
3393 | { | 3459 | { |
3394 | getEventViewerDialog()->setEvent(event); | 3460 | getEventViewerDialog()->setEvent(event); |
3395 | getEventViewerDialog()->showMe(); | 3461 | getEventViewerDialog()->showMe(); |
3396 | } | 3462 | } |
3397 | 3463 | ||
3398 | void CalendarView::showTodo(Todo *event) | 3464 | void CalendarView::showTodo(Todo *event) |
3399 | { | 3465 | { |
3400 | getEventViewerDialog()->setTodo(event); | 3466 | getEventViewerDialog()->setTodo(event); |
3401 | getEventViewerDialog()->showMe(); | 3467 | getEventViewerDialog()->showMe(); |
3402 | } | 3468 | } |
3403 | void CalendarView::showJournal( Journal *jour ) | 3469 | void 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 | ||
3421 | void CalendarView::appointment_show() | 3487 | void 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 | ||
3441 | void CalendarView::appointment_edit() | 3507 | void 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 | ||
3461 | void CalendarView::appointment_delete() | 3527 | void 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 | ||
3481 | void CalendarView::todo_resub( Todo * parent, Todo * sub ) | 3547 | void 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 | } |
3491 | void CalendarView::todo_unsub(Todo *anTodo ) | 3557 | void CalendarView::todo_unsub(Todo *anTodo ) |
3492 | { | 3558 | { |
3493 | todo_resub( 0, anTodo ); | 3559 | todo_resub( 0, anTodo ); |
3494 | } | 3560 | } |
3495 | 3561 | ||
3496 | void CalendarView::deleteTodo(Todo *todo) | 3562 | void 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 | } |
3532 | void CalendarView::deleteJournal(Journal *jour) | 3598 | void 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 | ||
3562 | void CalendarView::deleteEvent(Event *anEvent) | 3628 | void 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 | ||
3646 | bool CalendarView::deleteEvent(const QString &uid) | 3712 | bool 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 | ||
3659 | void CalendarView::action_mail() | 3725 | void 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 | ||
3713 | void CalendarView::schedule_publish(Incidence *incidence) | 3779 | void 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 | ||
4466 | void CalendarView::lookForOutgoingMessages() | 4532 | void CalendarView::lookForOutgoingMessages() |
4467 | { | 4533 | { |
4468 | OutgoingDialog *ogd = mDialogManager->outgoingDialog(); | 4534 | OutgoingDialog *ogd = mDialogManager->outgoingDialog(); |
4469 | ogd->loadMessages(); | 4535 | ogd->loadMessages(); |
4470 | } | 4536 | } |
4471 | 4537 | ||
4472 | void CalendarView::lookForIncomingMessages() | 4538 | void CalendarView::lookForIncomingMessages() |
4473 | { | 4539 | { |
4474 | IncomingDialog *icd = mDialogManager->incomingDialog(); | 4540 | IncomingDialog *icd = mDialogManager->incomingDialog(); |
4475 | icd->retrieve(); | 4541 | icd->retrieve(); |
4476 | } | 4542 | } |
4477 | 4543 | ||
4478 | bool CalendarView::removeCompletedSubTodos( Todo* t ) | 4544 | bool 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 | } |
4500 | void CalendarView::purgeCompleted() | 4566 | void 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 | ||
4524 | void CalendarView::slotCalendarChanged() | 4590 | void CalendarView::slotCalendarChanged() |
4525 | { | 4591 | { |
4526 | ; | 4592 | ; |
4527 | } | 4593 | } |
4528 | 4594 | ||
4529 | void CalendarView::keyPressEvent ( QKeyEvent *e) | 4595 | void 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 | ||
4536 | bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) | 4602 | bool 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 | } |
4548 | bool CalendarView::syncExternal(KSyncManager* manager, QString resource) | 4614 | bool 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 | } |
4562 | void CalendarView::setSyncManager(KSyncManager* manager) | 4628 | void CalendarView::setSyncManager(KSyncManager* manager) |
4563 | { | 4629 | { |
4564 | mSyncManager = manager; | 4630 | mSyncManager = manager; |
4565 | } | 4631 | } |
4566 | 4632 | ||
4567 | void CalendarView::removeSyncInfo( QString syncProfile) | 4633 | void 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 | ||
4574 | void CalendarView::undo_delete() | 4640 | void 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 | ||
4591 | void CalendarView::slotViewerClosed() | 4657 | void CalendarView::slotViewerClosed() |
4592 | { | 4658 | { |
4593 | QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); | 4659 | QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); |
4594 | } | 4660 | } |
4595 | 4661 | ||
4596 | void CalendarView::resetFocus() | 4662 | void 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 | ||
4616 | void CalendarView::showNextAlarms() | 4682 | void 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; } | |||
75 | using namespace KCal; | 75 | using 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 | ||
90 | class MissedAlarmTextBrowser : public QTextBrowser { | 90 | class 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 | ||
105 | class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface | 105 | class 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 ¬i ); | 216 | void addAlarm(const QDateTime &qdt, const QString ¬i ); |
213 | void addSuspendAlarm(const QDateTime &qdt, const QString ¬i ); | 217 | void addSuspendAlarm(const QDateTime &qdt, const QString ¬i ); |
214 | void removeAlarm(const QDateTime &qdt, const QString ¬i ); | 218 | void removeAlarm(const QDateTime &qdt, const QString ¬i ); |
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 | } |
626 | void MainWindow::startMultiSync() | 626 | void 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 | } |
641 | QPixmap MainWindow::loadPixmap( QString name ) | 641 | QPixmap MainWindow::loadPixmap( QString name ) |
642 | { | 642 | { |
643 | return SmallIcon( name ); | 643 | return SmallIcon( name ); |
644 | 644 | ||
645 | } | 645 | } |
646 | void MainWindow::setUsesBigPixmaps ( bool b ) | 646 | void 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 | } |
652 | void MainWindow::initActions() | 652 | void 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 | ||
1460 | void MainWindow::setDefaultPreferences() | 1478 | void 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 | ||
1470 | QString MainWindow::resourcePath() | 1488 | QString MainWindow::resourcePath() |
1471 | { | 1489 | { |
1472 | return KGlobal::iconLoader()->iconPath(); | 1490 | return KGlobal::iconLoader()->iconPath(); |
1473 | } | 1491 | } |
1474 | 1492 | ||
1475 | void MainWindow::displayText( QString text ,QString cap ) | 1493 | void 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 | ||
1493 | void MainWindow::features() | 1511 | void 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 | ||
1499 | void MainWindow::usertrans() | 1517 | void 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 | ||
1505 | void MainWindow::storagehowto() | 1523 | void 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 | } |
1509 | void MainWindow::timetrackinghowto() | 1527 | void 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 | } |
1513 | void MainWindow::kdesynchowto() | 1531 | void 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 | } |
1517 | void MainWindow::multisynchowto() | 1535 | void 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 | } |
1521 | void MainWindow::synchowto() | 1539 | void 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 | } |
1525 | void MainWindow::faq() | 1543 | void 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 | } |
1530 | void MainWindow::whatsNew() | 1548 | void 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 | } |
1535 | void MainWindow::licence() | 1553 | void MainWindow::licence() |
1536 | { | 1554 | { |
1537 | KApplication::showLicence(); | 1555 | KApplication::showLicence(); |
1538 | 1556 | ||
1539 | } | 1557 | } |
1540 | void MainWindow::about() | 1558 | void 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 | } |
1555 | void MainWindow::keyBindings() | 1573 | void 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 | } |
1614 | void MainWindow::aboutAutoSaving() | 1633 | void 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 | } |
1621 | void MainWindow::aboutKnownBugs() | 1640 | void 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 | ||
1639 | QString MainWindow::defaultFileName() | 1658 | QString MainWindow::defaultFileName() |
1640 | { | 1659 | { |
1641 | return locateLocal( "data", "korganizer/mycalendar.ics" ); | 1660 | return locateLocal( "data", "korganizer/mycalendar.ics" ); |
1642 | } | 1661 | } |
1643 | QString MainWindow::syncFileName() | 1662 | QString 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> |
1653 | void MainWindow::updateWeek(QDate seda) | 1672 | void 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 | } |
1665 | void MainWindow::updateWeekNum(const DateList &selectedDates) | 1684 | void MainWindow::updateWeekNum(const DateList &selectedDates) |
1666 | { | 1685 | { |
1667 | updateWeek( selectedDates.first() ); | 1686 | updateWeek( selectedDates.first() ); |
1668 | } | 1687 | } |
1669 | void MainWindow::processIncidenceSelection( Incidence *incidence ) | 1688 | void 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 | } |
2138 | void MainWindow::fillFilterMenuTB() | 2165 | void 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 | } |
2183 | void MainWindow::fillFilterMenu() | 2210 | void 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 | } |
2206 | void MainWindow::fillFilterMenuPopup() | 2233 | void 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 | } |
2227 | void MainWindow::selectFilter( int fil ) | 2254 | void MainWindow::selectFilter( int fil ) |
2228 | { | 2255 | { |
2229 | 2256 | ||