author | zautrix <zautrix> | 2005-01-22 10:18:16 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-01-22 10:18:16 (UTC) |
commit | 6946f6ab0ee6eeafee0c8ff5d33fffc0826c7452 (patch) (unidiff) | |
tree | 006248579ca44ad2e0c1a67db55b1a8013180ed7 | |
parent | b715b109b70b8cd24a2d9da1d4863c44d79fb2a4 (diff) | |
download | kdepimpi-6946f6ab0ee6eeafee0c8ff5d33fffc0826c7452.zip kdepimpi-6946f6ab0ee6eeafee0c8ff5d33fffc0826c7452.tar.gz kdepimpi-6946f6ab0ee6eeafee0c8ff5d33fffc0826c7452.tar.bz2 |
some small fixes
-rw-r--r-- | bin/kdepim/WhatsNew.txt | 17 | ||||
-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 13 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 52 | ||||
-rw-r--r-- | korganizer/calendarview.h | 2 | ||||
-rw-r--r-- | korganizer/koeditorgeneral.cpp | 20 | ||||
-rw-r--r-- | korganizer/koeditorgeneral.h | 1 | ||||
-rw-r--r-- | korganizer/kotodoview.cpp | 5 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 11 | ||||
-rw-r--r-- | libkcal/calendarlocal.cpp | 2 | ||||
-rw-r--r-- | microkde/kdatetbl.cpp | 5 |
10 files changed, 95 insertions, 33 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index fbe16d8..adbfd67 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -1,66 +1,83 @@ | |||
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 1.9.20 ************ | ||
4 | |||
5 | KO/Pi: | ||
6 | Made it possible to delete a Todo, which has sub-todos. | ||
7 | Fixed two small problems in the todo view. | ||
8 | Added missing German translation for filter edit and print dialog. | ||
9 | Made search dialog closeable by cancel key. | ||
10 | |||
11 | Made it possible to select in the date picker the (ligt grey ) | ||
12 | dates of the prev./next month with the mouse. | ||
13 | |||
14 | Added for the "dislplay one day" agenda mode info in the caption: | ||
15 | Now it is displayed, if the selected day is from "day before yesterday" | ||
16 | to "day after tomorrow". | ||
17 | |||
18 | |||
19 | |||
3 | ********** VERSION 1.9.19 ************ | 20 | ********** VERSION 1.9.19 ************ |
4 | 21 | ||
5 | Added a lot of missing translations to KA/Pi, | 22 | Added a lot of missing translations to KA/Pi, |
6 | Added some missing translations to KO/Pi and OM/Pi. | 23 | Added some missing translations to KO/Pi and OM/Pi. |
7 | 24 | ||
8 | Fixed some minor problems in KA/Pi + KO/Pi. | 25 | Fixed some minor problems in KA/Pi + KO/Pi. |
9 | 26 | ||
10 | Fixed a crash when closing PwM/Pi. | 27 | Fixed a crash when closing PwM/Pi. |
11 | Added German translation for PwM/Pi. | 28 | Added German translation for PwM/Pi. |
12 | 29 | ||
13 | Made view change and Month View update faster in KO/Pi. | 30 | Made view change and Month View update faster in KO/Pi. |
14 | 31 | ||
15 | 32 | ||
16 | ********** VERSION 1.9.18 ************ | 33 | ********** VERSION 1.9.18 ************ |
17 | 34 | ||
18 | FYI: The VERSION 1.9.17 was a testing release only. | 35 | FYI: The VERSION 1.9.17 was a testing release only. |
19 | Please read the changelog of VERSION 1.9.17 as well. | 36 | Please read the changelog of VERSION 1.9.17 as well. |
20 | 37 | ||
21 | Cleaned up the syncing config dialog. | 38 | Cleaned up the syncing config dialog. |
22 | Added sync config options for date range for events. | 39 | Added sync config options for date range for events. |
23 | Added sync config options for filters on incoming data. | 40 | Added sync config options for filters on incoming data. |
24 | Added sync config options for filters on outgoing data. | 41 | Added sync config options for filters on outgoing data. |
25 | Please read the updated SyncHowTo about the new filter settings. | 42 | Please read the updated SyncHowTo about the new filter settings. |
26 | These filter settings make it now possible to sync with shared | 43 | These filter settings make it now possible to sync with shared |
27 | calendars without writing back private or confidential data | 44 | calendars without writing back private or confidential data |
28 | (via the outgoing filters). | 45 | (via the outgoing filters). |
29 | To sync only with particular parts of a shared calendar, | 46 | To sync only with particular parts of a shared calendar, |
30 | the incoming filter settings can be used. | 47 | the incoming filter settings can be used. |
31 | An example can be found in the SyncHowTo. | 48 | An example can be found in the SyncHowTo. |
32 | Same for shared addressbooks. | 49 | Same for shared addressbooks. |
33 | 50 | ||
34 | Added a setting for the global kdepim data storage. | 51 | Added a setting for the global kdepim data storage. |
35 | Usually the data is stored in (yourhomedir/kdepim). | 52 | Usually the data is stored in (yourhomedir/kdepim). |
36 | Now you can set in the Global config dialog TAB, subTAB "Data storage path" | 53 | Now you can set in the Global config dialog TAB, subTAB "Data storage path" |
37 | a directory where all the kdepim data is stored. | 54 | a directory where all the kdepim data is stored. |
38 | That makes it easy to save all kdepim data on a SD card on the Z, for example. | 55 | That makes it easy to save all kdepim data on a SD card on the Z, for example. |
39 | 56 | ||
40 | KO/Pi: | 57 | KO/Pi: |
41 | The timeedit input has a pulldown list for times. | 58 | The timeedit input has a pulldown list for times. |
42 | If opened, this pulldown list should now has the right time highlighted. | 59 | If opened, this pulldown list should now has the right time highlighted. |
43 | Added the possibility to exclude events/todos/journals in a filter. | 60 | Added the possibility to exclude events/todos/journals in a filter. |
44 | You should exclude journals, if you do not want them to sync with a public calendar. | 61 | You should exclude journals, if you do not want them to sync with a public calendar. |
45 | 62 | ||
46 | KA/Pi: | 63 | KA/Pi: |
47 | Added the possibility to in/exclude public/private/confidential contacts to a filter. | 64 | Added the possibility to in/exclude public/private/confidential contacts to a filter. |
48 | If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ... | 65 | If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ... |
49 | Added printing of card view and details view on desktop. | 66 | Added printing of card view and details view on desktop. |
50 | Printing of list view is not working... | 67 | Printing of list view is not working... |
51 | Added button for removing pictures in contact editor. | 68 | Added button for removing pictures in contact editor. |
52 | Parsing data fix of KA/Pi version 1.9.17. | 69 | Parsing data fix of KA/Pi version 1.9.17. |
53 | Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. | 70 | Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. |
54 | Fixed some syncing merging problems. | 71 | Fixed some syncing merging problems. |
55 | 72 | ||
56 | 73 | ||
57 | ********** VERSION 1.9.17 ************ | 74 | ********** VERSION 1.9.17 ************ |
58 | 75 | ||
59 | KO/Pi: | 76 | KO/Pi: |
60 | Fixed that tooltips were not updated after moving an item in agenda view. | 77 | Fixed that tooltips were not updated after moving an item in agenda view. |
61 | Fixed a bug in sorting start date for recurring events in list view. | 78 | Fixed a bug in sorting start date for recurring events in list view. |
62 | Changed the left button in todo viewer from "Agenda" to "Set completed". | 79 | Changed the left button in todo viewer from "Agenda" to "Set completed". |
63 | This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View. | 80 | This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View. |
64 | Added more info in the todo viewer: Startdate, parent/sub todos. | 81 | Added more info in the todo viewer: Startdate, parent/sub todos. |
65 | 82 | ||
66 | 83 | ||
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index 0eb46e8..d260be3 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt | |||
@@ -25,129 +25,128 @@ | |||
25 | { "26th","26." }, | 25 | { "26th","26." }, |
26 | { "27th","27." }, | 26 | { "27th","27." }, |
27 | { "28th","28." }, | 27 | { "28th","28." }, |
28 | { "29th","29." }, | 28 | { "29th","29." }, |
29 | { "2nd","2." }, | 29 | { "2nd","2." }, |
30 | { "30 minutes","30 Minuten" }, | 30 | { "30 minutes","30 Minuten" }, |
31 | { "30th","30." }, | 31 | { "30th","30." }, |
32 | { "31st","31." }, | 32 | { "31st","31." }, |
33 | { "3rd","3." }, | 33 | { "3rd","3." }, |
34 | { "4th","4." }, | 34 | { "4th","4." }, |
35 | { "5 (lowest)","5 (Niedrigster)" }, | 35 | { "5 (lowest)","5 (Niedrigster)" }, |
36 | { "5th","5." }, | 36 | { "5th","5." }, |
37 | { "6th","6." }, | 37 | { "6th","6." }, |
38 | { "7th","7." }, | 38 | { "7th","7." }, |
39 | { "8th","8." }, | 39 | { "8th","8." }, |
40 | { "9th","9." }, | 40 | { "9th","9." }, |
41 | { "About...","Über..." }, | 41 | { "About...","Über..." }, |
42 | { "&Accept","&Akzeptieren" }, | 42 | { "&Accept","&Akzeptieren" }, |
43 | { "Accept","Akzeptieren" }, | 43 | { "Accept","Akzeptieren" }, |
44 | { "Accept A&ll","A&lles Akzepieren" }, | 44 | { "Accept A&ll","A&lles Akzepieren" }, |
45 | { "Access:","Zugriff:" }, | 45 | { "Access:","Zugriff:" }, |
46 | { "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" }, | 46 | { "A corresponding event is missing in your calendar!","Ein zugehöriger Termin fehlt in ihrem Kalender!" }, |
47 | { "Actions","Aktionen" }, | 47 | { "Actions","Aktionen" }, |
48 | { "Add Filter","Filter Hinzufügen" }, | 48 | { "Add Filter","Filter Hinzufügen" }, |
49 | { "&Add","Hinzufügen" }, | 49 | { "&Add","Hinzufügen" }, |
50 | { "Add","Hinzufügen" }, | 50 | { "Add","Hinzufügen" }, |
51 | { "Additional email addresses:","Zusätzliche E-Mail Adressen:" }, | 51 | { "Additional email addresses:","Zusätzliche E-Mail Adressen:" }, |
52 | { "Additional email address:","Zusätzliche E-Mail Adresse:" }, | 52 | { "Additional email address:","Zusätzliche E-Mail Adresse:" }, |
53 | { "&Addressbook","&Adressbuch" }, | 53 | { "&Addressbook","&Adressbuch" }, |
54 | { "Address &Book...","Adress&buch..." }, | 54 | { "Address &Book...","Adress&buch..." }, |
55 | { "Agenda Size","Agende Größe" }, | 55 | { "Agenda Size","Agende Größe" }, |
56 | { "Agenda Size:","Größe der Agenda:" }, | 56 | { "Agenda Size:","Größe der Agenda:" }, |
57 | { "Agenda view:","Agenda Ansicht:" }, | 57 | { "Agenda view:","Agenda Ansicht:" }, |
58 | { "Agenda view background color:","Hintergrund der Agenda Ansicht:" }, | 58 | { "Agenda view background color:","Hintergrund der Agenda Ansicht:" }, |
59 | { "All attendees","Alle Teilnehmer" }, | 59 | { "All attendees","Alle Teilnehmer" }, |
60 | { "AllDayAgenda Height:","Höhe Ganztages Agenda:" }, | 60 | { "AllDayAgenda Height:","Höhe Ganztages Agenda:" }, |
61 | { "Allday","Ganztägig" }, | 61 | { "Allday","Ganztägig" }, |
62 | { "Anonymous","Anonym" }, | 62 | { "Anonymous","Anonym" }, |
63 | { "Apply","Anwenden" }, | 63 | { "Apply","Anwenden" }, |
64 | { "Apr","Apr" }, | 64 | { "Apr","Apr" }, |
65 | { "April","April" }, | 65 | { "April","April" }, |
66 | {"Ask for every entry on conflict","Frage bei Konflikten nach"}, | 66 | {"Ask for every entry on conflict","Frage bei Konflikten nach"}, |
67 | { "Ask for preferences before syncing","Vor dem Syncronisieren nachfragen" }, | 67 | { "Ask for preferences before syncing","Vor dem Syncronisieren nachfragen" }, |
68 | { "Ask for quit when closing KO/Pi","Vor dem Beenden von KO/Pi nachfragen" }, | 68 | { "Ask for quit when closing KO/Pi","Vor dem Beenden von KO/Pi nachfragen" }, |
69 | { "Attendees","Teilnehmer" }, | 69 | { "Attendees","Teilnehmer" }, |
70 | { "Aug","Aug" }, | 70 | { "Aug","Aug" }, |
71 | { "August","August" }, | 71 | { "August","August" }, |
72 | { "Auto-Save","Automatisches Abspeichern" }, | 72 | { "Auto-Save","Automatisches Abspeichern" }, |
73 | { "Auto save delay in minutes:","Verzög.autom.Speichern in Min" }, | 73 | { "Auto save delay in minutes:","Verzög.autom.Speichern in Min" }, |
74 | { "Auto saving...","Automatische Sicherung..." }, | 74 | { "Auto saving...","Automatische Sicherung..." }, |
75 | { "Begin on:","Starte mit:" }, | 75 | { "Begin on:","Starte mit:" }, |
76 | { "Begins on: %1","Starte mit: %1" }, | 76 | { "Begins on: %1","Starte mit: %1" }, |
77 | { "<b>From:</b> %1 <b>To:</b> %2","<b>Vom:</b> %1 <b>Zum:</b> %2" }, | 77 | { "<b>From:</b> %1 <b>To:</b> %2","<b>Vom:</b> %1 <b>Zum:</b> %2" }, |
78 | { "Bigger","Größer" }, | 78 | { "Bigger","Größer" }, |
79 | { "Biggest","Riesig" }, | 79 | { "Biggest","Riesig" }, |
80 | { "Big","Groß" }, | 80 | { "Big","Groß" }, |
81 | { "<b>On:</b> %1","<b>Am:</b> %1" }, | 81 | { "<b>On:</b> %1","<b>Am:</b> %1" }, |
82 | { "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Am:</b> %1 <b>Vom:S</b> %2 <b>Zum:</b> %3" }, | 82 | { "<b>On:</b> %1 <b>From:S</b> %2 <b>To:</b> %3","<b>Am:</b> %1 <b>Vom:S</b> %2 <b>Zum:</b> %3" }, |
83 | { "<b>Original event:</b><p>","<b>Original Termin:</b><p>" }, | 83 | { "<b>Original event:</b><p>","<b>Original Termin:</b><p>" }, |
84 | { " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation verändert" }, | 84 | { " - both are modified after last sync"," - beide wurden nach der letzten Syncronisation verändert" }, |
85 | { "Busy","Belegt" }, | 85 | { "Busy","Belegt" }, |
86 | { "&Cancel","Abbre&chen" }, | 86 | { "&Cancel","Abbre&chen" }, |
87 | { "Cancel","Abbrechen" }, | 87 | { "Cancel","Abbrechen" }, |
88 | { "Cannot delete To-Do\nwhich has children.","Kann Todo nicht löschen,\n da noch Einträge vorhanden sind" }, | 88 | { "Cannot delete To-Do\nwhich has children.","Kann Todo nicht löschen,\n da noch Einträge vorhanden sind" }, |
89 | { "Cannot delete To-Do which has children.","Kann Todo nicht löschen, da noch Einträge vorhanden sind" }, | ||
90 | { "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgewählt." }, | 89 | { "Can't generate mail:\nNo event selected.","Kann e-Mail nicht erstellen:\nKein Termin ausgewählt." }, |
91 | { "Categories...","Kategorien..." }, | 90 | { "Categories...","Kategorien..." }, |
92 | { "Categories","Kategorien" }, | 91 | { "Categories","Kategorien" }, |
93 | { "Category","Kategorie" }, | 92 | { "Category","Kategorie" }, |
94 | { "Center View","Zentriere Ansicht" }, | 93 | { "Center View","Zentriere Ansicht" }, |
95 | { "Change","Ändere" }, | 94 | { "Change","Ändere" }, |
96 | { "Cinema","Kino" }, | 95 | { "Cinema","Kino" }, |
97 | { "Click to add a new Todo","Hier klicken, um ein neues Todo anzulegen" }, | 96 | { "Click to add a new Todo","Hier klicken, um ein neues Todo anzulegen" }, |
98 | { "Clone Item","Klone Eintrag" }, | 97 | { "Clone Item","Klone Eintrag" }, |
99 | { "&Close","S&chließen" }, | 98 | { "&Close","S&chließen" }, |
100 | { "Close","Schließen" }, | 99 | { "Close","Schließen" }, |
101 | { "Close this dialog to abort deletion!","Zum Abbrechen des Löschvorganges Dialog schließen!" }, | 100 | { "Close this dialog to abort deletion!","Zum Abbrechen des Löschvorganges Dialog schließen!" }, |
102 | { "Colors","Farben" }, | 101 | { "Colors","Farben" }, |
103 | { "completed","erledigt" }, | 102 | { "completed","erledigt" }, |
104 | { "completed on %1","erledigt am %1" }, | 103 | { "completed on %1","erledigt am %1" }, |
105 | { "Complete","Erledigt" }, | 104 | { "Complete","Erledigt" }, |
106 | { "Confidential","Vertraulich" }, | 105 | { "Confidential","Vertraulich" }, |
107 | { "Configure...","Einstellungen..." }, | 106 | { "Configure...","Einstellungen..." }, |
108 | { "Confirm &deletes","Löschvogang bestätigen" }, | 107 | { "Confirm &deletes","Löschvogang bestätigen" }, |
109 | { "Couldn't load calendar\n '%1'.","Kann Kalender\n '%1' nicht laden." }, | 108 | { "Couldn't load calendar\n '%1'.","Kann Kalender\n '%1' nicht laden." }, |
110 | { "Counter-event Viewer","Terminzähler Ansicht" }, | 109 | { "Counter-event Viewer","Terminzähler Ansicht" }, |
111 | { "Daily ending hour:","Feierabend:" }, | 110 | { "Daily ending hour:","Feierabend:" }, |
112 | { "Daily starting hour:","Anfangszeit:" }, | 111 | { "Daily starting hour:","Anfangszeit:" }, |
113 | { "Daily","Täglich" }, | 112 | { "Daily","Täglich" }, |
114 | { "Date Format","Datums Format" }, | 113 | { "Date Format","Datums Format" }, |
115 | { "Date Format:","Datums Format:" }, | 114 | { "Date Format:","Datums Format:" }, |
116 | { "DateNavigator:(nr)","Datums Navigator" }, | 115 | { "DateNavigator:(nr)","Datums Navigator" }, |
117 | { "Dates: ","Datum: " }, | 116 | { "Dates: ","Datum: " }, |
118 | { "Date && Time","Datum && Zeit" }, | 117 | { "Date && Time","Datum && Zeit" }, |
119 | { "Day begins at:","Der Tag beginnt um:" }, | 118 | { "Day begins at:","Der Tag beginnt um:" }, |
120 | { "Days in Next-X-Days:","Tage in Nächste-X-Tage:" }, | 119 | { "Days in Next-X-Days:","Tage in Nächste-X-Tage:" }, |
121 | { "Days in What's Next:","Tage in What's Next:" }, | 120 | { "Days in What's Next:","Tage in What's Next:" }, |
122 | { "day(s)","Tag(e)" }, | 121 | { "day(s)","Tag(e)" }, |
123 | { "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" }, | 122 | { "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" }, |
124 | { "day","Tag" }, | 123 | { "day","Tag" }, |
125 | { "Dec","Dez" }, | 124 | { "Dec","Dez" }, |
126 | { "December","Dezember" }, | 125 | { "December","Dezember" }, |
127 | { "Default alarm time:","Standard Alarmzeit:" }, | 126 | { "Default alarm time:","Standard Alarmzeit:" }, |
128 | { "Default appointment time:","Standard Termin Startzeit:" }, | 127 | { "Default appointment time:","Standard Termin Startzeit:" }, |
129 | { "Default event color:","Standard Terminfarbe:" }, | 128 | { "Default event color:","Standard Terminfarbe:" }, |
130 | { "Default","Standard" }, | 129 | { "Default","Standard" }, |
131 | { "Def. duration of new app.:","Standard Termin Länge:" }, | 130 | { "Def. duration of new app.:","Standard Termin Länge:" }, |
132 | { "Delete all completed To-Dos?","Alle bereits erledigten Todos löschen?" }, | 131 | { "Delete all completed To-Dos?","Alle bereits erledigten Todos löschen?" }, |
133 | { "Delete All","Lösche alles" }, | 132 | { "Delete All","Lösche alles" }, |
134 | { "Delete all selected","Lösche alle Selektierten" }, | 133 | { "Delete all selected","Lösche alle Selektierten" }, |
135 | { "Delete Current","Aktuellen löschen" }, | 134 | { "Delete Current","Aktuellen löschen" }, |
136 | { "Delete Event...","Lösche Termin..." }, | 135 | { "Delete Event...","Lösche Termin..." }, |
137 | { "Delete Event","Lösche Termin" }, | 136 | { "Delete Event","Lösche Termin" }, |
138 | { "&Delete","Löschen" }, | 137 | { "&Delete","Löschen" }, |
139 | { "Delete...","Löschen..." }, | 138 | { "Delete...","Löschen..." }, |
140 | { "Delete","Löschen" }, | 139 | { "Delete","Löschen" }, |
141 | { "Delete Todo...","Lösche Todo..." }, | 140 | { "Delete Todo...","Lösche Todo..." }, |
142 | { "Delete To-Do","Lösche Todo" }, | 141 | { "Delete To-Do","Lösche Todo" }, |
143 | { "Deleting item %d ...","Lösche Eintrag %d..." }, | 142 | { "Deleting item %d ...","Lösche Eintrag %d..." }, |
144 | { "Descriptions","Beschreibungen" }, | 143 | { "Descriptions","Beschreibungen" }, |
145 | { "Deselect All","Deselektiere Alle" }, | 144 | { "Deselect All","Deselektiere Alle" }, |
146 | { "Details","Details" }, | 145 | { "Details","Details" }, |
147 | { "Dinner","Abendessen" }, | 146 | { "Dinner","Abendessen" }, |
148 | { "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" }, | 147 | { "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" }, |
149 | { "Due Date","Fällig am" }, | 148 | { "Due Date","Fällig am" }, |
150 | { "Due: ","Fällig: "}, | 149 | { "Due: ","Fällig: "}, |
151 | { "Due Time","Fällig um" }, | 150 | { "Due Time","Fällig um" }, |
152 | { "Due:","Fällig:"}, | 151 | { "Due:","Fällig:"}, |
153 | { "Duration: ","Dauer: " }, | 152 | { "Duration: ","Dauer: " }, |
@@ -738,131 +737,131 @@ | |||
738 | { "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, | 737 | { "Local device name undefined!\nPlease define device name!","Name dieses Gerätes undefiniert!\nBitte Namen angeben!" }, |
739 | { "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" }, | 738 | { "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile haben denselben Namen!\nBitte unterschiedliche Namen wählen!" }, |
740 | { "Access: ","Zugriff: " }, | 739 | { "Access: ","Zugriff: " }, |
741 | { "Needs Action","Aktion notwendig" }, | 740 | { "Needs Action","Aktion notwendig" }, |
742 | { "Accepted","Akzeptiert" }, | 741 | { "Accepted","Akzeptiert" }, |
743 | { "Declined","Abgelehnt" }, | 742 | { "Declined","Abgelehnt" }, |
744 | { "Tentative","Vorläufig" }, | 743 | { "Tentative","Vorläufig" }, |
745 | { "Delegated","Beauftragt" }, | 744 | { "Delegated","Beauftragt" }, |
746 | { "Completed","Vollständig" }, | 745 | { "Completed","Vollständig" }, |
747 | { "In Process","In Bearbeitung" }, | 746 | { "In Process","In Bearbeitung" }, |
748 | { "Participant","Teilnehmer" }, | 747 | { "Participant","Teilnehmer" }, |
749 | { "Optional Participant","Möglicher Teilnehmer" }, | 748 | { "Optional Participant","Möglicher Teilnehmer" }, |
750 | { "Observer","Beobachter" }, | 749 | { "Observer","Beobachter" }, |
751 | { "Chair","Vorsitzender" }, | 750 | { "Chair","Vorsitzender" }, |
752 | { "Not supported \non desktop!\n","" }, | 751 | { "Not supported \non desktop!\n","" }, |
753 | { "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Es ist nichts selektiert!\nDieses druckt die volle Breite der Agenda View, so wie man sie sieht.\nUm die verticale Auswahl zum Drucken zu bestimmen,\nbitte einen verticalen Zeitraum (mit gedrückter linker Maustaste)\nin einer Spalte auswählen. " }, | 752 | { "Nothing selected!\n\nThis prints the full width of the Agenda view as you see it!\n\nTo determine the vertical range of the printing, please select\na vertical range (with the left mouse button down) in one column. ","Es ist nichts selektiert!\nDieses druckt die volle Breite der Agenda View, so wie man sie sieht.\nUm die verticale Auswahl zum Drucken zu bestimmen,\nbitte einen verticalen Zeitraum (mit gedrückter linker Maustaste)\nin einer Spalte auswählen. " }, |
754 | { "Date range: ","Datums Zeitspanne: " }, | 753 | { "Date range: ","Datums Zeitspanne: " }, |
755 | { "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " }, | 754 | { "Not supported \non PDA!\n","Nicht verfügbar\nauf dem PDA. " }, |
756 | { "Syncing - close to abort!","Syncing-schließe um abzubrechen." }, | 755 | { "Syncing - close to abort!","Syncing-schließe um abzubrechen." }, |
757 | { "Add / remove events","Add./entferne Termine" }, | 756 | { "Add / remove events","Add./entferne Termine" }, |
758 | { "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." }, | 757 | { "File does not exist:\n '%1'.","Datei existiert nicht:\n '%1'." }, |
759 | { "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." }, | 758 | { "Couldn't load calendar\n '%1'.","Kann Kalender nicht laden:\n '%1'." }, |
760 | { "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie gepeicherte Datei wurde verändert!\nDatei Grösse: %1 Bytes.\nZuletzt geändert: %2\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, | 759 | { "\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie gepeicherte Datei wurde verändert!\nDatei Grösse: %1 Bytes.\nZuletzt geändert: %2\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, |
761 | { "Overwrite","Überschreiben" }, | 760 | { "Overwrite","Überschreiben" }, |
762 | { "Sync+save","Syncen+speichern" }, | 761 | { "Sync+save","Syncen+speichern" }, |
763 | { "Default","Standard" }, | 762 | { "Default","Standard" }, |
764 | { " Categories added to list! "," Kategorien zur Liste hinzugefügt! " }, | 763 | { " Categories added to list! "," Kategorien zur Liste hinzugefügt! " }, |
765 | { " %d items?"," %d Einträge?" }, | 764 | { " %d items?"," %d Einträge?" }, |
766 | { "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nDieses ist ein\nwiederholender Termin!.\nSind Sie sicher, dass Sie\ndiesen Termin und alle\nWiederholungen löschen möchten?" }, | 765 | { "\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?","\nDieses ist ein\nwiederholender Termin!.\nSind Sie sicher, dass Sie\ndiesen Termin und alle\nWiederholungen löschen möchten?" }, |
767 | { " ?\n\nDelete:\n"," ?\n\nLösche:\n" }, | 766 | { " ?\n\nDelete:\n"," ?\n\nLösche:\n" }, |
768 | { "Current","Aktuelle" }, | 767 | { "Current","Aktuelle" }, |
769 | { "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nDieses ist ein\nwiederholender Termin!\nMöchten sie alle Wiederholungen\nlöschen, oder nur die aktuelle am:\n" }, | 768 | { "\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n","\nDieses ist ein\nwiederholender Termin!\nMöchten sie alle Wiederholungen\nlöschen, oder nur die aktuelle am:\n" }, |
770 | { "All","Alle" }, | 769 | { "All","Alle" }, |
771 | { "Data Loss Warning","Datenverlust Warnung" }, | 770 | { "Data Loss Warning","Datenverlust Warnung" }, |
772 | { "Proceed","Weitermachen" }, | 771 | { "Proceed","Weitermachen" }, |
773 | { "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" }, | 772 | { "The journal entries can not be\nexported to a vCalendar file.","Die Journal Einträge können\nnicht in eine vCalendar\nDatei exportiert werden!" }, |
774 | { "Filter disabled ","Filter abgeschaltet" }, | 773 | { "Filter disabled ","Filter abgeschaltet" }, |
775 | { "Filter selected: ","Gewählter Filter: " }, | 774 | { "Filter selected: ","Gewählter Filter: " }, |
776 | { "Toggle Cancel","Gecancelt ändern" }, | 775 | { "Toggle Cancel","Gecancelt ändern" }, |
777 | { "&Toggle Cancel","Gecancel&t ändern" }, | 776 | { "&Toggle Cancel","Gecancel&t ändern" }, |
778 | { "Configure Toolbar","Konfiguriere Toolbar" }, | 777 | { "Configure Toolbar","Konfiguriere Toolbar" }, |
779 | { "Stretched TB","Gedehnte TB" }, | 778 | { "Stretched TB","Gedehnte TB" }, |
780 | { "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, | 779 | { "Import file \n...%1\ndoes not exist!\nNothing imported!\n","Import Datei \n...%1\nexistiert nicht!\nNichts importiert!\n" }, |
781 | { "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, | 780 | { "Import filename(*.ics/*.vcs)","Import Dateiname(*.ics/*.vcs)" }, |
782 | { "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","Wenn ein Kalender doppelt importiert\nwird, werden doppelte Einträge ignoriert!\nSie können eine Backup Datei anlegen unter\nDatei - Speichere Kalender Backup\num den Import rückgängig machen zu können.\n" }, | 781 | { "When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing","Wenn ein Kalender doppelt importiert\nwird, werden doppelte Einträge ignoriert!\nSie können eine Backup Datei anlegen unter\nDatei - Speichere Kalender Backup\num den Import rückgängig machen zu können.\n" }, |
783 | { "Not supported \non desktop!\n","Nur verfügbar auf PDA!" }, | 782 | { "Not supported \non desktop!\n","Nur verfügbar auf PDA!" }, |
784 | { "Imported file successfully","Datei erfolgreich importiert" }, | 783 | { "Imported file successfully","Datei erfolgreich importiert" }, |
785 | { "Error importing file","Fehler beim Importieren der Datei" }, | 784 | { "Error importing file","Fehler beim Importieren der Datei" }, |
786 | { "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, | 785 | { "Export vcal filename(*.vcs)","Export vcal Dateiname(*.vcs)" }, |
787 | { "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Zu speichernde Datei\existiert bereits!\nExist. Datei vom:\n%1\nÜberschreiben?\n" }, | 786 | { "Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n","Zu speichernde Datei\existiert bereits!\nExist. Datei vom:\n%1\nÜberschreiben?\n" }, |
788 | { "Overwrite!","Überschreiben!" }, | 787 | { "Overwrite!","Überschreiben!" }, |
789 | { "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import Datei \n...%1\nvom:\n%2\nDuplizierte Einträge\nwerden nicht importiert!\n" }, | 788 | { "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n","Import Datei \n...%1\nvom:\n%2\nDuplizierte Einträge\nwerden nicht importiert!\n" }, |
790 | { "Load backup filename","Lade Backup Dateiname" }, | 789 | { "Load backup filename","Lade Backup Dateiname" }, |
791 | { "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, | 790 | { "Backup file\ndoes not exist!\nNothing loaded!","Backup Datei\nexistiert nicht!\nNichts geladen!" }, |
792 | { "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, | 791 | { "KO/Pi:Loaded %1","KO/Pi:Geladen %1" }, |
793 | { "Save backup filename","Speichere Backup Dateiname" }, | 792 | { "Save backup filename","Speichere Backup Dateiname" }, |
794 | { "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Backup Datei\nexistiert bereits!\nAlte Backup Datei vom:\n%1\nÜberschreiben?\n" }, | 793 | { "Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n","Backup Datei\nexistiert bereits!\nAlte Backup Datei vom:\n%1\nÜberschreiben?\n" }, |
795 | { "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, | 794 | { "KO/Pi:Saved %1","KO/Pi:Gespeichert %1" }, |
796 | { "Details of attendee","Teilnehmerdetails" }, | 795 | { "Details of attendee","Teilnehmerdetails" }, |
797 | { "Work phone:\n","Telefon Arbeit:\n" }, | 796 | { "Work phone:\n","Telefon Arbeit:\n" }, |
798 | { "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, | 797 | { "Work mobile phone:\n","Mobiltelefon Arbeit:\n" }, |
799 | { "Home phone:\n","Telefon privat:\n" }, | 798 | { "Home phone:\n","Telefon privat:\n" }, |
800 | { "Mobile home phone:\n","Mobiltelefon privat:\n" }, | 799 | { "Mobile home phone:\n","Mobiltelefon privat:\n" }, |
801 | { "Email:\n","Email:\n" }, | 800 | { "Email:\n","Email:\n" }, |
802 | { "Alarm disabled","Alarm deaktiviert" }, | 801 | { "Alarm disabled for this item","Alarm deaktiviert für dieses Item" }, |
803 | { "Audio.Al.: ","Audio Al.: " }, | 802 | { "Audio Al.: ","Audio Al.: " }, |
804 | { "Proc.Al.: ","Proc.Al.: " }, | 803 | { "Proc.Al.: ","Proz.Al.: " }, |
805 | { "No sound set","Kein Sound definiert" }, | 804 | { "No sound set","Kein Sound definiert" }, |
806 | { "*.wav|Wav Files","*.wav|Wav Dateien" }, | 805 | { "*.wav|Wav Files","*.wav|Wav Dateien" }, |
807 | { "No program set","Kein Programm definiert" }, | 806 | { "No program set","Kein Programm definiert" }, |
808 | { "Running '%1'","Ausführen '%1'" }, | 807 | { "Running '%1'","Ausführen '%1'" }, |
809 | { "Playing '%1'","Abspielen '%1'" }, | 808 | { "Playing '%1'","Abspielen '%1'" }, |
810 | { "Show Sync Events in WN/Agenda view","Zeige Sync Events in WN/Agenda Ansicht" }, | 809 | { "Show Sync Events in WN/Agenda view","Zeige Sync Events in WN/Agenda Ansicht" }, |
811 | { "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, | 810 | { "User defined (usertranslation.txt)","Benutzerdefiniert (usertranslation.txt)" }, |
812 | { "Load!","Laden!" }, | 811 | { "Load!","Laden!" }, |
813 | { "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Backup Datei vom:\n%1\nDas Laden der Backup Datei\nlöscht die aktuellen Daten!\n" }, | 812 | { "Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n","Backup Datei vom:\n%1\nDas Laden der Backup Datei\nlöscht die aktuellen Daten!\n" }, |
814 | { "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, | 813 | { "KO/Pi Features and hints","KO/Pi Eigenschaften und Tipps" }, |
815 | { "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, | 814 | { "KO/Pi User translation HowTo","KO/Pi Benutzer-Übersetzung HowTo" }, |
816 | { "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, | 815 | { "KO/Pi Synchronization HowTo","KO/Pi Synchronisation HowTo" }, |
817 | { "Features + hints...","Eigenschaften + Tipps..." }, | 816 | { "Features + hints...","Eigenschaften + Tipps..." }, |
818 | { "User translation...","Benutzer Übersetzung..." }, | 817 | { "User translation...","Benutzer Übersetzung..." }, |
819 | { "Sync HowTo...","Synchronisation HowTo..." }, | 818 | { "Sync HowTo...","Synchronisation HowTo..." }, |
820 | { "Print calendar...","Drucke Kalender..." }, | 819 | { "Print calendar...","Drucke Kalender..." }, |
821 | { "Anniversary","Jahrestag" }, | 820 | { "Anniversary","Jahrestag" }, |
822 | { "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Wenn Geburtstage mehrfach importiert\nwerden, werden doppelte Einträge ignoriert\nwenn sie nicht verändert wurden.\n" }, | 821 | { "When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n","Wenn Geburtstage mehrfach importiert\nwerden, werden doppelte Einträge ignoriert\nwenn sie nicht verändert wurden.\n" }, |
823 | { "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, | 822 | { "Import Birthdays (KA/Pi)","Importiere Geburtstage (KA/Pi)" }, |
824 | { "Next recurrence is on: ","Nächste Wiederholung ist am:" }, | 823 | { "Next recurrence is on: ","Nächste Wiederholung ist am:" }, |
825 | { "<b>Alarm on: </b>","<b>Alarm am: </b>" }, | 824 | { "<b>Alarm on: </b>","<b>Alarm am: </b>" }, |
826 | { "<b>Access: </b>","<b>Zugriff: </b>" }, | 825 | { "<b>Access: </b>","<b>Zugriff: </b>" }, |
827 | { "(%1 min before)","(%1 min vorher)" }, | 826 | { "(%1 min before)","(%1 min vorher)" }, |
828 | { "<b>Categories: </b>","<b>Kategorien: </b>" }, | 827 | { "<b>Categories: </b>","<b>Kategorien: </b>" }, |
829 | { "Save Journal/Description...","Speichere Journal/Details..." }, | 828 | { "Save Journal/Description...","Speichere Journal/Details..." }, |
830 | { "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Das speichert den Text bzw.\ndie Details von selektierten\nJournalen und Events/Todos\nin eine Textdatei." }, | 829 | { "This saves the text/details of selected\nJournals and Events/Todos\nto a text file.","Das speichert den Text bzw.\ndie Details von selektierten\nJournalen und Events/Todos\nin eine Textdatei." }, |
831 | { "Continue","Weitermachen" }, | 830 | { "Continue","Weitermachen" }, |
832 | { " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, | 831 | { " birthdays/anniversaries added!"," Geburts-/Jahrestage hinzugefügt" }, |
833 | { "Attendee:","Teilnehmer:" }, | 832 | { "Attendee:","Teilnehmer:" }, |
834 | { "Click OK to search ->","Klicke zum Suchen auf OK ->" }, | 833 | { "Click OK to search ->","Klicke zum Suchen auf OK ->" }, |
835 | { "On day ","Am Tag " }, | 834 | { "On day ","Am Tag " }, |
836 | { "%1 of ","%1 des Monats" }, | 835 | { "%1 of ","%1 des Monats" }, |
837 | { "%1 of the year","%1 des Jahres" }, | 836 | { "%1 of the year","%1 des Jahres" }, |
838 | { "Anonymous","Anonymo" }, | 837 | { "Anonymous","Anonymo" }, |
839 | { "nobody@nowhere","niemand@nirgendwo" }, | 838 | { "nobody@nowhere","niemand@nirgendwo" }, |
840 | { "calendar.html","calendar.html" }, | 839 | { "calendar.html","calendar.html" }, |
841 | { " Local Time"," Locale Zeit" }, | 840 | { " Local Time"," Locale Zeit" }, |
842 | { "Unknown Name","Unbekannter Name" }, | 841 | { "Unknown Name","Unbekannter Name" }, |
843 | { "unknown@nowhere","unbekannt@nirgendwo" }, | 842 | { "unknown@nowhere","unbekannt@nirgendwo" }, |
844 | { "Beam via IR!","Beam via IR!" }, | 843 | { "Beam via IR!","Beam via IR!" }, |
845 | { "Next Month","Nächster Monat" }, | 844 | { "Next Month","Nächster Monat" }, |
846 | { "Prio","Prio" }, | 845 | { "Prio","Prio" }, |
847 | { "Reparent Todo","Mache Sub-Todo" }, | 846 | { "Reparent Todo","Mache Sub-Todo" }, |
848 | { "tomorrow","morgen" }, | 847 | { "tomorrow","morgen" }, |
849 | { "today","heute" }, | 848 | { "today","heute" }, |
850 | { "yesterday","gestern" }, | 849 | { "yesterday","gestern" }, |
851 | { "Ok","Ok" }, | 850 | { "Ok","Ok" }, |
852 | { "Ok+Agenda","Ok+Agenda" }, | 851 | { "Ok+Agenda","Ok+Agenda" }, |
853 | { "Email","Email" }, | 852 | { "Email","Email" }, |
854 | { "RSVP","RSVP" }, | 853 | { "RSVP","RSVP" }, |
855 | { "Email:","Email:" }, | 854 | { "Email:","Email:" }, |
856 | { "Appointment Time ","Termin Zeit " }, | 855 | { "Appointment Time ","Termin Zeit " }, |
857 | { "2","2" }, | 856 | { "2","2" }, |
858 | { "3","3" }, | 857 | { "3","3" }, |
859 | { "4","4" }, | 858 | { "4","4" }, |
860 | { " 0 %"," 0 %" }, | 859 | { " 0 %"," 0 %" }, |
861 | { " 20 %"," 20 %" }, | 860 | { " 20 %"," 20 %" }, |
862 | { " 40 %"," 40 %" }, | 861 | { " 40 %"," 40 %" }, |
863 | { " 60 %"," 60 %" }, | 862 | { " 60 %"," 60 %" }, |
864 | { " 80 %"," 80 %" }, | 863 | { " 80 %"," 80 %" }, |
865 | { "100 %","100 %" }, | 864 | { "100 %","100 %" }, |
866 | { "Filter","Filter" }, | 865 | { "Filter","Filter" }, |
867 | { "Configure","Konfiguriere" }, | 866 | { "Configure","Konfiguriere" }, |
868 | { "What's Next","What's Next" }, | 867 | { "What's Next","What's Next" }, |
@@ -1130,69 +1129,73 @@ | |||
1130 | { "&Setup Printer...","Drucker &Setup..." }, | 1129 | { "&Setup Printer...","Drucker &Setup..." }, |
1131 | { "View Type","Zeige Typ" }, | 1130 | { "View Type","Zeige Typ" }, |
1132 | { "Page &orientation:","Seiten Ausrichtung:" }, | 1131 | { "Page &orientation:","Seiten Ausrichtung:" }, |
1133 | { "Use Default of Selected Style","Default des selektierten Stils" }, | 1132 | { "Use Default of Selected Style","Default des selektierten Stils" }, |
1134 | { "Use Default Setting of Printer","Default Einstellung des Druckers" }, | 1133 | { "Use Default Setting of Printer","Default Einstellung des Druckers" }, |
1135 | { "Portrait","Portrait" }, | 1134 | { "Portrait","Portrait" }, |
1136 | { "Landscape","Landschaft" }, | 1135 | { "Landscape","Landschaft" }, |
1137 | { "Print day","Drucke Tag" }, | 1136 | { "Print day","Drucke Tag" }, |
1138 | { "CalPrintDay_Base","CalPrintDay_Base" }, | 1137 | { "CalPrintDay_Base","CalPrintDay_Base" }, |
1139 | { "Date && Time Range","Datum && Zeitspanne" }, | 1138 | { "Date && Time Range","Datum && Zeitspanne" }, |
1140 | { "&End date:","&Enddatum:" }, | 1139 | { "&End date:","&Enddatum:" }, |
1141 | { "&Start date:","&Startdatum:" }, | 1140 | { "&Start date:","&Startdatum:" }, |
1142 | { "Start &time:","Startzeit:" }, | 1141 | { "Start &time:","Startzeit:" }, |
1143 | { "End ti&me:","Endzeit:" }, | 1142 | { "End ti&me:","Endzeit:" }, |
1144 | { "E&xtend time range to include all events","Erweitere Zeitspanne um alle Ereignisse einzuschliessen" }, | 1143 | { "E&xtend time range to include all events","Erweitere Zeitspanne um alle Ereignisse einzuschliessen" }, |
1145 | { "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, | 1144 | { "Include to&dos that are due on the printed day(s)","Inclusive To&dos, die an den selektierten Tagen fällig sind" }, |
1146 | { "Alt+D","Alt+D" }, | 1145 | { "Alt+D","Alt+D" }, |
1147 | { "&Use colors","Nutze Farben" }, | 1146 | { "&Use colors","Nutze Farben" }, |
1148 | { "Alt+U","Alt+U" }, | 1147 | { "Alt+U","Alt+U" }, |
1149 | { "Print week","Drucke Woche" }, | 1148 | { "Print week","Drucke Woche" }, |
1150 | { "CalPrintWeek_Base","CalPrintWeek_Base" }, | 1149 | { "CalPrintWeek_Base","CalPrintWeek_Base" }, |
1151 | { "Use &colors","Nutze Farben" }, | 1150 | { "Use &colors","Nutze Farben" }, |
1152 | { "Type of View","Typ der Ansicht" }, | 1151 | { "Type of View","Typ der Ansicht" }, |
1153 | { "Print as &Filofax page","Drucke als &Filofax Seite" }, | 1152 | { "Print as &Filofax page","Drucke als &Filofax Seite" }, |
1154 | { "Alt+F","Alt+F" }, | 1153 | { "Alt+F","Alt+F" }, |
1155 | { "Print as &timetable view:","Drucke als Zeittabelle:" }, | 1154 | { "Print as &timetable view:","Drucke als Zeittabelle:" }, |
1156 | { "Alt+T","Alt+T" }, | 1155 | { "Alt+T","Alt+T" }, |
1157 | { "Print as split week view","Drucke als gesplittete Wochenansicht" }, | 1156 | { "Print as split week view","Drucke als gesplittete Wochenansicht" }, |
1158 | { "Print month","Drucke Monat" }, | 1157 | { "Print month","Drucke Monat" }, |
1159 | { "CalPrintMonth_Base","CalPrintMonth_Base" }, | 1158 | { "CalPrintMonth_Base","CalPrintMonth_Base" }, |
1160 | { "&Start month:","&Startmonat:" }, | 1159 | { "&Start month:","&Startmonat:" }, |
1161 | { "&End month:","&Endmonat:" }, | 1160 | { "&End month:","&Endmonat:" }, |
1162 | { "Print week &numbers","Drucke Wochen Nummer(n)" }, | 1161 | { "Print week &numbers","Drucke Wochen Nummer(n)" }, |
1163 | { "Print todos","Drucke Todos" }, | 1162 | { "Print todos","Drucke Todos" }, |
1164 | { "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, | 1163 | { "CalPrintTodoConfig_Base","CalPrintTodoConfig_Base" }, |
1165 | { "Include &description of the item","Inclusive Itembeschreibung" }, | 1164 | { "Include &description of the item","Inclusive Itembeschreibung" }, |
1166 | { "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" }, | 1165 | { "Include d&ue date of the item","Inclusive Fälligkeitsdatum des Items" }, |
1167 | { "Include &priority of the item","Inclusive Priorität des Items" }, | 1166 | { "Include &priority of the item","Inclusive Priorität des Items" }, |
1168 | { "Items to Print","Zu druckende Items" }, | 1167 | { "Items to Print","Zu druckende Items" }, |
1169 | { "&From:","Von:" }, | 1168 | { "&From:","Von:" }, |
1170 | { "&To:","Bis:" }, | 1169 | { "&To:","Bis:" }, |
1171 | { "Print &all todo items","Drucke alle Todo Items" }, | 1170 | { "Print &all todo items","Drucke alle Todo Items" }, |
1172 | { "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, | 1171 | { "Print only &uncompleted items","Drucke nur nicht erledigte Todos" }, |
1173 | { "Only items due in the &range:","Nur Items in dem Zeitraum:" }, | 1172 | { "Only items due in the &range:","Nur Items in dem Zeitraum:" }, |
1174 | { "Todo List","Todo Liste" }, | 1173 | { "Todo List","Todo Liste" }, |
1175 | { "&Title:","&Titel:" }, | 1174 | { "&Title:","&Titel:" }, |
1176 | { "Co&nnect subtodos with its parent","Verbinde Unter-Todos mit ihren Ober-Todos" }, | 1175 | { "Co&nnect subtodos with its parent","Verbinde Unter-Todos mit ihren Ober-Todos" }, |
1177 | { "Todo list","Todo Liste" }, | 1176 | { "Todo list","Todo Liste" }, |
1178 | { "&Print...","Drucke..." }, | 1177 | { "&Print...","Drucke..." }, |
1179 | { "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, | 1178 | { "<qt>Printing on printer <b>%1</b></qt>","<qt>Drucke auf Drucker <b>%1</b></qt>" }, |
1180 | { "[Unconfigured]","[Unkonfiguriert]" }, | 1179 | { "[Unconfigured]","[Unkonfiguriert]" }, |
1181 | { "OK","OK" }, | 1180 | { "OK","OK" }, |
1182 | { "FilterEditor","FilterEditor" }, | 1181 | { "FilterEditor","FilterEditor" }, |
1183 | { "Include","Inclusive" }, | 1182 | { "Include","Inclusive" }, |
1184 | { "Exclude","Exclusive" }, | 1183 | { "Exclude","Exclusive" }, |
1185 | { "Edit Selection...","Editiere Selektion..." }, | 1184 | { "Edit Selection...","Editiere Selektion..." }, |
1186 | { "recurring events","wiederholende Ereignisse" }, | 1185 | { "recurring events","wiederholende Ereignisse" }, |
1187 | { "completed to-dos","erledigte Todos" }, | 1186 | { "completed to-dos","erledigte Todos" }, |
1188 | { "events","Ereignisse" }, | 1187 | { "events","Ereignisse" }, |
1189 | { "todos","Todos" }, | 1188 | { "todos","Todos" }, |
1190 | { "journals","Journale" }, | 1189 | { "journals","Journale" }, |
1191 | { "public","öffentlich" }, | 1190 | { "public","öffentlich" }, |
1192 | { "private","privat" }, | 1191 | { "private","privat" }, |
1193 | { "confidential","vertraulich" }, | 1192 | { "confidential","vertraulich" }, |
1194 | { "","" }, | 1193 | { "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" }, |
1194 | { "Yesterday","Gestern" }, | ||
1195 | { "Day after tomorrow","Übermorgen" }, | ||
1196 | { "Tomorrow","Morgen" }, | ||
1197 | { "Day before yesterday","Vorgestern" }, | ||
1195 | { "","" }, | 1198 | { "","" }, |
1196 | { "","" }, | 1199 | { "","" }, |
1197 | { "","" }, | 1200 | { "","" }, |
1198 | { "","" }, | 1201 | { "","" }, |
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 8f05276..038da54 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -2124,131 +2124,131 @@ void CalendarView::changeIncidenceDisplay(Incidence *which, int action) | |||
2124 | updateUnmanagedViews(); | 2124 | updateUnmanagedViews(); |
2125 | //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); | 2125 | //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); |
2126 | if ( action == KOGlobals::EVENTDELETED ) { //delete | 2126 | if ( action == KOGlobals::EVENTDELETED ) { //delete |
2127 | mCalendar->checkAlarmForIncidence( 0, true ); | 2127 | mCalendar->checkAlarmForIncidence( 0, true ); |
2128 | if ( mEventViewerDialog ) | 2128 | if ( mEventViewerDialog ) |
2129 | mEventViewerDialog->hide(); | 2129 | mEventViewerDialog->hide(); |
2130 | } | 2130 | } |
2131 | else | 2131 | else |
2132 | mCalendar->checkAlarmForIncidence( which , false ); | 2132 | mCalendar->checkAlarmForIncidence( which , false ); |
2133 | } | 2133 | } |
2134 | 2134 | ||
2135 | // most of the changeEventDisplays() right now just call the view's | 2135 | // most of the changeEventDisplays() right now just call the view's |
2136 | // total update mode, but they SHOULD be recoded to be more refresh-efficient. | 2136 | // total update mode, but they SHOULD be recoded to be more refresh-efficient. |
2137 | void CalendarView::changeEventDisplay(Event *which, int action) | 2137 | void CalendarView::changeEventDisplay(Event *which, int action) |
2138 | { | 2138 | { |
2139 | // kdDebug() << "CalendarView::changeEventDisplay" << endl; | 2139 | // kdDebug() << "CalendarView::changeEventDisplay" << endl; |
2140 | changeIncidenceDisplay((Incidence *)which, action); | 2140 | changeIncidenceDisplay((Incidence *)which, action); |
2141 | mDateNavigator->updateView(); | 2141 | mDateNavigator->updateView(); |
2142 | //mDialogManager->updateSearchDialog(); | 2142 | //mDialogManager->updateSearchDialog(); |
2143 | 2143 | ||
2144 | if (which) { | 2144 | if (which) { |
2145 | // If there is an event view visible update the display | 2145 | // If there is an event view visible update the display |
2146 | mViewManager->currentView()->changeEventDisplay(which,action); | 2146 | mViewManager->currentView()->changeEventDisplay(which,action); |
2147 | // TODO: check, if update needed | 2147 | // TODO: check, if update needed |
2148 | // if (which->getTodoStatus()) { | 2148 | // if (which->getTodoStatus()) { |
2149 | mTodoList->updateView(); | 2149 | mTodoList->updateView(); |
2150 | // } | 2150 | // } |
2151 | } else { | 2151 | } else { |
2152 | mViewManager->currentView()->updateView(); | 2152 | mViewManager->currentView()->updateView(); |
2153 | } | 2153 | } |
2154 | } | 2154 | } |
2155 | 2155 | ||
2156 | 2156 | ||
2157 | void CalendarView::updateTodoViews() | 2157 | void CalendarView::updateTodoViews() |
2158 | { | 2158 | { |
2159 | 2159 | ||
2160 | mTodoList->updateView(); | 2160 | mTodoList->updateView(); |
2161 | mViewManager->currentView()->updateView(); | 2161 | mViewManager->currentView()->updateView(); |
2162 | 2162 | ||
2163 | } | 2163 | } |
2164 | 2164 | ||
2165 | 2165 | ||
2166 | void CalendarView::updateView(const QDate &start, const QDate &end) | 2166 | void CalendarView::updateView(const QDate &start, const QDate &end) |
2167 | { | 2167 | { |
2168 | mTodoList->updateView(); | 2168 | mTodoList->updateView(); |
2169 | mViewManager->updateView(start, end); | 2169 | mViewManager->updateView(start, end); |
2170 | //mDateNavigator->updateView(); | 2170 | //mDateNavigator->updateView(); |
2171 | } | 2171 | } |
2172 | 2172 | ||
2173 | void CalendarView::updateView() | 2173 | void CalendarView::updateView() |
2174 | { | 2174 | { |
2175 | DateList tmpList = mNavigator->selectedDates(); | 2175 | DateList tmpList = mNavigator->selectedDates(); |
2176 | 2176 | ||
2177 | if ( KOPrefs::instance()->mHideNonStartedTodos ) | 2177 | if ( KOPrefs::instance()->mHideNonStartedTodos ) |
2178 | mTodoList->updateView(); | 2178 | mTodoList->updateView(); |
2179 | // We assume that the navigator only selects consecutive days. | 2179 | // We assume that the navigator only selects consecutive days. |
2180 | updateView( tmpList.first(), tmpList.last() ); | 2180 | updateView( tmpList.first(), tmpList.last() ); |
2181 | } | 2181 | } |
2182 | 2182 | ||
2183 | void CalendarView::updateUnmanagedViews() | 2183 | void CalendarView::updateUnmanagedViews() |
2184 | { | 2184 | { |
2185 | mDateNavigator->updateDayMatrix(); | 2185 | mDateNavigator->updateDayMatrix(); |
2186 | } | 2186 | } |
2187 | 2187 | ||
2188 | int CalendarView::msgItemDelete() | 2188 | int CalendarView::msgItemDelete(const QString name) |
2189 | { | 2189 | { |
2190 | return KMessageBox::warningContinueCancel(this, | 2190 | return KMessageBox::warningContinueCancel(this,name +"\n\n"+ |
2191 | i18n("This item will be\npermanently deleted."), | 2191 | i18n("This item will be\npermanently deleted."), |
2192 | i18n("KO/Pi Confirmation"),i18n("Delete")); | 2192 | i18n("KO/Pi Confirmation"),i18n("Delete")); |
2193 | } | 2193 | } |
2194 | 2194 | ||
2195 | 2195 | ||
2196 | void CalendarView::edit_cut() | 2196 | void CalendarView::edit_cut() |
2197 | { | 2197 | { |
2198 | Event *anEvent=0; | 2198 | Event *anEvent=0; |
2199 | 2199 | ||
2200 | Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); | 2200 | Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); |
2201 | 2201 | ||
2202 | if (mViewManager->currentView()->isEventView()) { | 2202 | if (mViewManager->currentView()->isEventView()) { |
2203 | if ( incidence && incidence->type() == "Event" ) { | 2203 | if ( incidence && incidence->type() == "Event" ) { |
2204 | anEvent = static_cast<Event *>(incidence); | 2204 | anEvent = static_cast<Event *>(incidence); |
2205 | } | 2205 | } |
2206 | } | 2206 | } |
2207 | 2207 | ||
2208 | if (!anEvent) { | 2208 | if (!anEvent) { |
2209 | KNotifyClient::beep(); | 2209 | KNotifyClient::beep(); |
2210 | return; | 2210 | return; |
2211 | } | 2211 | } |
2212 | DndFactory factory( mCalendar ); | 2212 | DndFactory factory( mCalendar ); |
2213 | factory.cutEvent(anEvent); | 2213 | factory.cutEvent(anEvent); |
2214 | changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); | 2214 | changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); |
2215 | } | 2215 | } |
2216 | 2216 | ||
2217 | void CalendarView::edit_copy() | 2217 | void CalendarView::edit_copy() |
2218 | { | 2218 | { |
2219 | Event *anEvent=0; | 2219 | Event *anEvent=0; |
2220 | 2220 | ||
2221 | Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); | 2221 | Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); |
2222 | 2222 | ||
2223 | if (mViewManager->currentView()->isEventView()) { | 2223 | if (mViewManager->currentView()->isEventView()) { |
2224 | if ( incidence && incidence->type() == "Event" ) { | 2224 | if ( incidence && incidence->type() == "Event" ) { |
2225 | anEvent = static_cast<Event *>(incidence); | 2225 | anEvent = static_cast<Event *>(incidence); |
2226 | } | 2226 | } |
2227 | } | 2227 | } |
2228 | 2228 | ||
2229 | if (!anEvent) { | 2229 | if (!anEvent) { |
2230 | KNotifyClient::beep(); | 2230 | KNotifyClient::beep(); |
2231 | return; | 2231 | return; |
2232 | } | 2232 | } |
2233 | DndFactory factory( mCalendar ); | 2233 | DndFactory factory( mCalendar ); |
2234 | factory.copyEvent(anEvent); | 2234 | factory.copyEvent(anEvent); |
2235 | } | 2235 | } |
2236 | 2236 | ||
2237 | void CalendarView::edit_paste() | 2237 | void CalendarView::edit_paste() |
2238 | { | 2238 | { |
2239 | QDate date = mNavigator->selectedDates().first(); | 2239 | QDate date = mNavigator->selectedDates().first(); |
2240 | 2240 | ||
2241 | DndFactory factory( mCalendar ); | 2241 | DndFactory factory( mCalendar ); |
2242 | Event *pastedEvent = factory.pasteEvent( date ); | 2242 | Event *pastedEvent = factory.pasteEvent( date ); |
2243 | 2243 | ||
2244 | changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); | 2244 | changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); |
2245 | } | 2245 | } |
2246 | 2246 | ||
2247 | void CalendarView::edit_options() | 2247 | void CalendarView::edit_options() |
2248 | { | 2248 | { |
2249 | mDialogManager->showOptionsDialog(); | 2249 | mDialogManager->showOptionsDialog(); |
2250 | //writeSettings(); | 2250 | //writeSettings(); |
2251 | } | 2251 | } |
2252 | 2252 | ||
2253 | 2253 | ||
2254 | void CalendarView::slotSelectPickerDate( QDate d) | 2254 | void CalendarView::slotSelectPickerDate( QDate d) |
@@ -2827,162 +2827,165 @@ void CalendarView::appointment_edit() | |||
2827 | } | 2827 | } |
2828 | 2828 | ||
2829 | if (!anEvent) { | 2829 | if (!anEvent) { |
2830 | KNotifyClient::beep(); | 2830 | KNotifyClient::beep(); |
2831 | return; | 2831 | return; |
2832 | } | 2832 | } |
2833 | 2833 | ||
2834 | editEvent(anEvent); | 2834 | editEvent(anEvent); |
2835 | } | 2835 | } |
2836 | 2836 | ||
2837 | void CalendarView::appointment_delete() | 2837 | void CalendarView::appointment_delete() |
2838 | { | 2838 | { |
2839 | Event *anEvent = 0; | 2839 | Event *anEvent = 0; |
2840 | 2840 | ||
2841 | Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); | 2841 | Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); |
2842 | 2842 | ||
2843 | if (mViewManager->currentView()->isEventView()) { | 2843 | if (mViewManager->currentView()->isEventView()) { |
2844 | if ( incidence && incidence->type() == "Event" ) { | 2844 | if ( incidence && incidence->type() == "Event" ) { |
2845 | anEvent = static_cast<Event *>(incidence); | 2845 | anEvent = static_cast<Event *>(incidence); |
2846 | } | 2846 | } |
2847 | } | 2847 | } |
2848 | 2848 | ||
2849 | if (!anEvent) { | 2849 | if (!anEvent) { |
2850 | KNotifyClient::beep(); | 2850 | KNotifyClient::beep(); |
2851 | return; | 2851 | return; |
2852 | } | 2852 | } |
2853 | 2853 | ||
2854 | deleteEvent(anEvent); | 2854 | deleteEvent(anEvent); |
2855 | } | 2855 | } |
2856 | 2856 | ||
2857 | void CalendarView::todo_resub( Todo * parent, Todo * sub ) | 2857 | void CalendarView::todo_resub( Todo * parent, Todo * sub ) |
2858 | { | 2858 | { |
2859 | if (!sub) return; | 2859 | if (!sub) return; |
2860 | if (!parent) return; | 2860 | if (!parent) return; |
2861 | if ( sub->relatedTo() ) | 2861 | if ( sub->relatedTo() ) |
2862 | sub->relatedTo()->removeRelation(sub); | 2862 | sub->relatedTo()->removeRelation(sub); |
2863 | sub->setRelatedTo(parent); | 2863 | sub->setRelatedTo(parent); |
2864 | sub->setRelatedToUid(parent->uid()); | 2864 | sub->setRelatedToUid(parent->uid()); |
2865 | parent->addRelation(sub); | 2865 | parent->addRelation(sub); |
2866 | sub->updated(); | 2866 | sub->updated(); |
2867 | parent->updated(); | 2867 | parent->updated(); |
2868 | setModified(true); | 2868 | setModified(true); |
2869 | updateView(); | 2869 | updateView(); |
2870 | } | 2870 | } |
2871 | void CalendarView::todo_unsub(Todo *anTodo ) | 2871 | void CalendarView::todo_unsub(Todo *anTodo ) |
2872 | { | 2872 | { |
2873 | // Todo *anTodo = selectedTodo(); | 2873 | // Todo *anTodo = selectedTodo(); |
2874 | if (!anTodo) return; | 2874 | if (!anTodo) return; |
2875 | if (!anTodo->relatedTo()) return; | 2875 | if (!anTodo->relatedTo()) return; |
2876 | anTodo->relatedTo()->removeRelation(anTodo); | 2876 | anTodo->relatedTo()->removeRelation(anTodo); |
2877 | anTodo->setRelatedTo(0); | 2877 | anTodo->setRelatedTo(0); |
2878 | anTodo->updated(); | 2878 | anTodo->updated(); |
2879 | anTodo->setRelatedToUid(""); | 2879 | anTodo->setRelatedToUid(""); |
2880 | setModified(true); | 2880 | setModified(true); |
2881 | updateView(); | 2881 | updateView(); |
2882 | } | 2882 | } |
2883 | 2883 | ||
2884 | void CalendarView::deleteTodo(Todo *todo) | 2884 | void CalendarView::deleteTodo(Todo *todo) |
2885 | { | 2885 | { |
2886 | if (!todo) { | 2886 | if (!todo) { |
2887 | KNotifyClient::beep(); | 2887 | KNotifyClient::beep(); |
2888 | return; | 2888 | return; |
2889 | } | 2889 | } |
2890 | if (KOPrefs::instance()->mConfirm) { | 2890 | if (KOPrefs::instance()->mConfirm) { |
2891 | switch (msgItemDelete()) { | 2891 | QString text = todo->summary().left(20); |
2892 | if (!todo->relations().isEmpty()) { | ||
2893 | text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); | ||
2894 | |||
2895 | } | ||
2896 | switch (msgItemDelete(text)) { | ||
2892 | case KMessageBox::Continue: // OK | 2897 | case KMessageBox::Continue: // OK |
2898 | bool deleteT = false; | ||
2893 | if (!todo->relations().isEmpty()) { | 2899 | if (!todo->relations().isEmpty()) { |
2894 | KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), | 2900 | deleteT = removeCompletedSubTodos( todo ); |
2895 | i18n("Delete To-Do")); | 2901 | } |
2896 | } else { | 2902 | // deleteT == true: todo already deleted in removeCompletedSubTodos |
2903 | if ( !deleteT ) { | ||
2897 | checkExternalId( todo ); | 2904 | checkExternalId( todo ); |
2898 | calendar()->deleteTodo(todo); | 2905 | calendar()->deleteTodo(todo); |
2899 | changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); | 2906 | changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); |
2900 | updateView(); | 2907 | updateView(); |
2901 | } | 2908 | } |
2902 | break; | 2909 | break; |
2903 | } // switch | 2910 | } // switch |
2904 | } else { | 2911 | } else { |
2905 | if (!todo->relations().isEmpty()) { | 2912 | checkExternalId( todo ); |
2906 | KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), | 2913 | mCalendar->deleteTodo(todo); |
2907 | i18n("Delete To-Do")); | 2914 | changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); |
2908 | } else { | 2915 | updateView(); |
2909 | checkExternalId( todo ); | ||
2910 | mCalendar->deleteTodo(todo); | ||
2911 | changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); | ||
2912 | updateView(); | ||
2913 | } | ||
2914 | } | 2916 | } |
2917 | |||
2915 | emit updateSearchDialog(); | 2918 | emit updateSearchDialog(); |
2916 | } | 2919 | } |
2917 | void CalendarView::deleteJournal(Journal *jour) | 2920 | void CalendarView::deleteJournal(Journal *jour) |
2918 | { | 2921 | { |
2919 | if (!jour) { | 2922 | if (!jour) { |
2920 | KNotifyClient::beep(); | 2923 | KNotifyClient::beep(); |
2921 | return; | 2924 | return; |
2922 | } | 2925 | } |
2923 | if (KOPrefs::instance()->mConfirm) { | 2926 | if (KOPrefs::instance()->mConfirm) { |
2924 | switch (msgItemDelete()) { | 2927 | switch (msgItemDelete( jour->description().left(20))) { |
2925 | case KMessageBox::Continue: // OK | 2928 | case KMessageBox::Continue: // OK |
2926 | calendar()->deleteJournal(jour); | 2929 | calendar()->deleteJournal(jour); |
2927 | updateView(); | 2930 | updateView(); |
2928 | break; | 2931 | break; |
2929 | } // switch | 2932 | } // switch |
2930 | } else { | 2933 | } else { |
2931 | calendar()->deleteJournal(jour);; | 2934 | calendar()->deleteJournal(jour);; |
2932 | updateView(); | 2935 | updateView(); |
2933 | } | 2936 | } |
2934 | emit updateSearchDialog(); | 2937 | emit updateSearchDialog(); |
2935 | } | 2938 | } |
2936 | 2939 | ||
2937 | void CalendarView::deleteEvent(Event *anEvent) | 2940 | void CalendarView::deleteEvent(Event *anEvent) |
2938 | { | 2941 | { |
2939 | if (!anEvent) { | 2942 | if (!anEvent) { |
2940 | KNotifyClient::beep(); | 2943 | KNotifyClient::beep(); |
2941 | return; | 2944 | return; |
2942 | } | 2945 | } |
2943 | 2946 | ||
2944 | if (anEvent->recurrence()->doesRecur()) { | 2947 | if (anEvent->recurrence()->doesRecur()) { |
2945 | QDate itemDate = mViewManager->currentSelectionDate(); | 2948 | QDate itemDate = mViewManager->currentSelectionDate(); |
2946 | int km; | 2949 | int km; |
2947 | if (!itemDate.isValid()) { | 2950 | if (!itemDate.isValid()) { |
2948 | //kdDebug() << "Date Not Valid" << endl; | 2951 | //kdDebug() << "Date Not Valid" << endl; |
2949 | if (KOPrefs::instance()->mConfirm) { | 2952 | if (KOPrefs::instance()->mConfirm) { |
2950 | km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + | 2953 | km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + |
2951 | i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), | 2954 | i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), |
2952 | i18n("KO/Pi Confirmation"),i18n("Delete All")); | 2955 | i18n("KO/Pi Confirmation"),i18n("Delete All")); |
2953 | if ( km == KMessageBox::Continue ) | 2956 | if ( km == KMessageBox::Continue ) |
2954 | km = KMessageBox::No; // No = all below | 2957 | km = KMessageBox::No; // No = all below |
2955 | } else | 2958 | } else |
2956 | km = KMessageBox::No; | 2959 | km = KMessageBox::No; |
2957 | } else { | 2960 | } else { |
2958 | km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + | 2961 | km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + |
2959 | i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ | 2962 | i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ |
2960 | KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), | 2963 | KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), |
2961 | i18n("KO/Pi Confirmation"),i18n("Current"), | 2964 | i18n("KO/Pi Confirmation"),i18n("Current"), |
2962 | i18n("All")); | 2965 | i18n("All")); |
2963 | } | 2966 | } |
2964 | switch(km) { | 2967 | switch(km) { |
2965 | 2968 | ||
2966 | case KMessageBox::No: // Continue // all | 2969 | case KMessageBox::No: // Continue // all |
2967 | //qDebug("KMessageBox::No "); | 2970 | //qDebug("KMessageBox::No "); |
2968 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) | 2971 | if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) |
2969 | schedule(Scheduler::Cancel,anEvent); | 2972 | schedule(Scheduler::Cancel,anEvent); |
2970 | 2973 | ||
2971 | checkExternalId( anEvent); | 2974 | checkExternalId( anEvent); |
2972 | mCalendar->deleteEvent(anEvent); | 2975 | mCalendar->deleteEvent(anEvent); |
2973 | changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); | 2976 | changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); |
2974 | break; | 2977 | break; |
2975 | 2978 | ||
2976 | // Disabled because it does not work | 2979 | // Disabled because it does not work |
2977 | //#if 0 | 2980 | //#if 0 |
2978 | case KMessageBox::Yes: // just this one | 2981 | case KMessageBox::Yes: // just this one |
2979 | //QDate qd = mNavigator->selectedDates().first(); | 2982 | //QDate qd = mNavigator->selectedDates().first(); |
2980 | //if (!qd.isValid()) { | 2983 | //if (!qd.isValid()) { |
2981 | // kdDebug() << "no date selected, or invalid date" << endl; | 2984 | // kdDebug() << "no date selected, or invalid date" << endl; |
2982 | // KNotifyClient::beep(); | 2985 | // KNotifyClient::beep(); |
2983 | // return; | 2986 | // return; |
2984 | //} | 2987 | //} |
2985 | //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); | 2988 | //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); |
2986 | if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { | 2989 | if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { |
2987 | anEvent->addExDate(itemDate); | 2990 | anEvent->addExDate(itemDate); |
2988 | int duration = anEvent->recurrence()->duration(); | 2991 | int duration = anEvent->recurrence()->duration(); |
@@ -3422,128 +3425,145 @@ void CalendarView::processIncidenceSelection( Incidence *incidence ) | |||
3422 | } else { | 3425 | } else { |
3423 | emit groupEventsSelected(false); | 3426 | emit groupEventsSelected(false); |
3424 | } | 3427 | } |
3425 | return; | 3428 | return; |
3426 | } else { | 3429 | } else { |
3427 | if ( incidence && incidence->type() == "Todo" ) { | 3430 | if ( incidence && incidence->type() == "Todo" ) { |
3428 | emit todoSelected( true ); | 3431 | emit todoSelected( true ); |
3429 | Todo *event = static_cast<Todo *>( incidence ); | 3432 | Todo *event = static_cast<Todo *>( incidence ); |
3430 | if ( event->organizer() == KOPrefs::instance()->email() ) { | 3433 | if ( event->organizer() == KOPrefs::instance()->email() ) { |
3431 | emit organizerEventsSelected( true ); | 3434 | emit organizerEventsSelected( true ); |
3432 | } else { | 3435 | } else { |
3433 | emit organizerEventsSelected(false); | 3436 | emit organizerEventsSelected(false); |
3434 | } | 3437 | } |
3435 | if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, | 3438 | if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, |
3436 | KOPrefs::instance()->email() ) ) { | 3439 | KOPrefs::instance()->email() ) ) { |
3437 | emit groupEventsSelected( true ); | 3440 | emit groupEventsSelected( true ); |
3438 | } else { | 3441 | } else { |
3439 | emit groupEventsSelected(false); | 3442 | emit groupEventsSelected(false); |
3440 | } | 3443 | } |
3441 | return; | 3444 | return; |
3442 | } else { | 3445 | } else { |
3443 | emit todoSelected( false ); | 3446 | emit todoSelected( false ); |
3444 | emit organizerEventsSelected(false); | 3447 | emit organizerEventsSelected(false); |
3445 | emit groupEventsSelected(false); | 3448 | emit groupEventsSelected(false); |
3446 | } | 3449 | } |
3447 | return; | 3450 | return; |
3448 | } | 3451 | } |
3449 | 3452 | ||
3450 | /* if ( incidence && incidence->type() == "Todo" ) { | 3453 | /* if ( incidence && incidence->type() == "Todo" ) { |
3451 | emit todoSelected( true ); | 3454 | emit todoSelected( true ); |
3452 | } else { | 3455 | } else { |
3453 | emit todoSelected( false ); | 3456 | emit todoSelected( false ); |
3454 | }*/ | 3457 | }*/ |
3455 | } | 3458 | } |
3456 | 3459 | ||
3457 | 3460 | ||
3458 | void CalendarView::checkClipboard() | 3461 | void CalendarView::checkClipboard() |
3459 | { | 3462 | { |
3460 | #ifndef KORG_NODND | 3463 | #ifndef KORG_NODND |
3461 | if (ICalDrag::canDecode(QApplication::clipboard()->data())) { | 3464 | if (ICalDrag::canDecode(QApplication::clipboard()->data())) { |
3462 | emit pasteEnabled(true); | 3465 | emit pasteEnabled(true); |
3463 | } else { | 3466 | } else { |
3464 | emit pasteEnabled(false); | 3467 | emit pasteEnabled(false); |
3465 | } | 3468 | } |
3466 | #endif | 3469 | #endif |
3467 | } | 3470 | } |
3468 | 3471 | ||
3469 | void CalendarView::showDates(const DateList &selectedDates) | 3472 | void CalendarView::showDates(const DateList &selectedDates) |
3470 | { | 3473 | { |
3471 | // kdDebug() << "CalendarView::selectDates()" << endl; | 3474 | // kdDebug() << "CalendarView::selectDates()" << endl; |
3472 | 3475 | ||
3473 | 3476 | ||
3474 | if ( !mBlockShowDates ) { | 3477 | if ( !mBlockShowDates ) { |
3475 | if ( mViewManager->currentView() ) { | 3478 | if ( mViewManager->currentView() ) { |
3476 | updateView( selectedDates.first(), selectedDates.last() ); | 3479 | updateView( selectedDates.first(), selectedDates.last() ); |
3477 | } else { | 3480 | } else { |
3478 | mViewManager->showAgendaView(); | 3481 | mViewManager->showAgendaView(); |
3479 | } | 3482 | } |
3480 | } | 3483 | } |
3481 | 3484 | ||
3482 | QString selDates; | 3485 | QString selDates; |
3483 | selDates = KGlobal::locale()->formatDate( selectedDates.first(), true); | 3486 | selDates = KGlobal::locale()->formatDate( selectedDates.first(), true); |
3484 | if (selectedDates.first() < selectedDates.last() ) | 3487 | if (selectedDates.first() < selectedDates.last() ) |
3485 | selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); | 3488 | selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); |
3489 | else { | ||
3490 | QString addString; | ||
3491 | if ( selectedDates.first() == QDateTime::currentDateTime().date() ) | ||
3492 | addString = i18n("Today"); | ||
3493 | else if ( selectedDates.first() == QDateTime::currentDateTime().date().addDays(1) ) | ||
3494 | addString = i18n("Tomorrow"); | ||
3495 | else if ( selectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) ) | ||
3496 | addString = i18n("Yesterday"); | ||
3497 | else if ( selectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) ) | ||
3498 | addString = i18n("Day before yesterday"); | ||
3499 | else if ( selectedDates.first() == QDateTime::currentDateTime().date().addDays(2) ) | ||
3500 | addString = i18n("Day after tomorrow"); | ||
3501 | if ( !addString.isEmpty() ) { | ||
3502 | topLevelWidget()->setCaption( addString+", " + selDates ); | ||
3503 | return; | ||
3504 | } | ||
3505 | } | ||
3486 | topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); | 3506 | topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); |
3487 | 3507 | ||
3488 | } | 3508 | } |
3489 | 3509 | ||
3490 | QPtrList<CalFilter> CalendarView::filters() | 3510 | QPtrList<CalFilter> CalendarView::filters() |
3491 | { | 3511 | { |
3492 | return mFilters; | 3512 | return mFilters; |
3493 | 3513 | ||
3494 | } | 3514 | } |
3495 | void CalendarView::editFilters() | 3515 | void CalendarView::editFilters() |
3496 | { | 3516 | { |
3497 | // kdDebug() << "CalendarView::editFilters()" << endl; | 3517 | // kdDebug() << "CalendarView::editFilters()" << endl; |
3498 | 3518 | ||
3499 | CalFilter *filter = mFilters.first(); | 3519 | CalFilter *filter = mFilters.first(); |
3500 | while(filter) { | 3520 | while(filter) { |
3501 | kdDebug() << " Filter: " << filter->name() << endl; | 3521 | kdDebug() << " Filter: " << filter->name() << endl; |
3502 | filter = mFilters.next(); | 3522 | filter = mFilters.next(); |
3503 | } | 3523 | } |
3504 | 3524 | ||
3505 | mDialogManager->showFilterEditDialog(&mFilters); | 3525 | mDialogManager->showFilterEditDialog(&mFilters); |
3506 | } | 3526 | } |
3507 | void CalendarView::toggleFilter() | 3527 | void CalendarView::toggleFilter() |
3508 | { | 3528 | { |
3509 | showFilter(! mFilterView->isVisible()); | 3529 | showFilter(! mFilterView->isVisible()); |
3510 | } | 3530 | } |
3511 | 3531 | ||
3512 | KOFilterView *CalendarView::filterView() | 3532 | KOFilterView *CalendarView::filterView() |
3513 | { | 3533 | { |
3514 | return mFilterView; | 3534 | return mFilterView; |
3515 | } | 3535 | } |
3516 | void CalendarView::selectFilter( int fil ) | 3536 | void CalendarView::selectFilter( int fil ) |
3517 | { | 3537 | { |
3518 | mFilterView->setSelectedFilter( fil ); | 3538 | mFilterView->setSelectedFilter( fil ); |
3519 | } | 3539 | } |
3520 | void CalendarView::showFilter(bool visible) | 3540 | void CalendarView::showFilter(bool visible) |
3521 | { | 3541 | { |
3522 | if (visible) mFilterView->show(); | 3542 | if (visible) mFilterView->show(); |
3523 | else mFilterView->hide(); | 3543 | else mFilterView->hide(); |
3524 | } | 3544 | } |
3525 | void CalendarView::toggleFilerEnabled( ) | 3545 | void CalendarView::toggleFilerEnabled( ) |
3526 | { | 3546 | { |
3527 | mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); | 3547 | mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); |
3528 | if ( !mFilterView->filtersEnabled() ) | 3548 | if ( !mFilterView->filtersEnabled() ) |
3529 | topLevelWidget()->setCaption( i18n("Filter disabled ") ); | 3549 | topLevelWidget()->setCaption( i18n("Filter disabled ") ); |
3530 | 3550 | ||
3531 | } | 3551 | } |
3532 | void CalendarView::updateFilter() | 3552 | void CalendarView::updateFilter() |
3533 | { | 3553 | { |
3534 | CalFilter *filter = mFilterView->selectedFilter(); | 3554 | CalFilter *filter = mFilterView->selectedFilter(); |
3535 | if (filter) { | 3555 | if (filter) { |
3536 | if (mFilterView->filtersEnabled()) { | 3556 | if (mFilterView->filtersEnabled()) { |
3537 | topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() ); | 3557 | topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() ); |
3538 | filter->setEnabled(true); | 3558 | filter->setEnabled(true); |
3539 | } | 3559 | } |
3540 | else filter->setEnabled(false); | 3560 | else filter->setEnabled(false); |
3541 | mCalendar->setFilter(filter); | 3561 | mCalendar->setFilter(filter); |
3542 | updateView(); | 3562 | updateView(); |
3543 | } | 3563 | } |
3544 | } | 3564 | } |
3545 | 3565 | ||
3546 | void CalendarView::filterEdited() | 3566 | void CalendarView::filterEdited() |
3547 | { | 3567 | { |
3548 | mFilterView->updateFilters(); | 3568 | mFilterView->updateFilters(); |
3549 | updateFilter(); | 3569 | updateFilter(); |
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index e27da9a..c8d6bdd 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h | |||
@@ -424,129 +424,129 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser | |||
424 | /** Look for new messages in the outbox */ | 424 | /** Look for new messages in the outbox */ |
425 | void lookForOutgoingMessages(); | 425 | void lookForOutgoingMessages(); |
426 | 426 | ||
427 | void processMainViewSelection( Incidence * ); | 427 | void processMainViewSelection( Incidence * ); |
428 | void processTodoListSelection( Incidence * ); | 428 | void processTodoListSelection( Incidence * ); |
429 | 429 | ||
430 | void processIncidenceSelection( Incidence * ); | 430 | void processIncidenceSelection( Incidence * ); |
431 | 431 | ||
432 | void purgeCompleted(); | 432 | void purgeCompleted(); |
433 | bool removeCompletedSubTodos( Todo* ); | 433 | bool removeCompletedSubTodos( Todo* ); |
434 | void slotCalendarChanged(); | 434 | void slotCalendarChanged(); |
435 | bool importBday(); | 435 | bool importBday(); |
436 | bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); | 436 | bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); |
437 | bool importQtopia( const QString &categoriesFile, | 437 | bool importQtopia( const QString &categoriesFile, |
438 | const QString &datebookFile, | 438 | const QString &datebookFile, |
439 | const QString &tasklistFile ); | 439 | const QString &tasklistFile ); |
440 | void syncExternal( int mode ); | 440 | void syncExternal( int mode ); |
441 | void slotSelectPickerDate( QDate ) ; | 441 | void slotSelectPickerDate( QDate ) ; |
442 | void showDatePicker( ) ; | 442 | void showDatePicker( ) ; |
443 | void moveIncidence(Incidence *) ; | 443 | void moveIncidence(Incidence *) ; |
444 | void beamIncidence(Incidence *) ; | 444 | void beamIncidence(Incidence *) ; |
445 | void beamCalendar() ; | 445 | void beamCalendar() ; |
446 | void beamFilteredCalendar() ; | 446 | void beamFilteredCalendar() ; |
447 | void beamIncidenceList(QPtrList<Incidence>) ; | 447 | void beamIncidenceList(QPtrList<Incidence>) ; |
448 | void manageCategories(); | 448 | void manageCategories(); |
449 | int addCategories(); | 449 | int addCategories(); |
450 | void removeCategories(); | 450 | void removeCategories(); |
451 | void setSyncDevice( QString ); | 451 | void setSyncDevice( QString ); |
452 | void setSyncName( QString ); | 452 | void setSyncName( QString ); |
453 | void showDay( QDate ); | 453 | void showDay( QDate ); |
454 | void undo_delete(); | 454 | void undo_delete(); |
455 | protected slots: | 455 | protected slots: |
456 | void timerAlarm(); | 456 | void timerAlarm(); |
457 | void suspendAlarm(); | 457 | void suspendAlarm(); |
458 | void beamDone( Ir *ir ); | 458 | void beamDone( Ir *ir ); |
459 | /** Select a view or adapt the current view to display the specified dates. */ | 459 | /** Select a view or adapt the current view to display the specified dates. */ |
460 | void showDates( const KCal::DateList & ); | 460 | void showDates( const KCal::DateList & ); |
461 | void selectWeekNum ( int ); | 461 | void selectWeekNum ( int ); |
462 | 462 | ||
463 | public: | 463 | public: |
464 | // show a standard warning | 464 | // show a standard warning |
465 | // returns KMsgBox::yesNoCancel() | 465 | // returns KMsgBox::yesNoCancel() |
466 | int msgCalModified(); | 466 | int msgCalModified(); |
467 | virtual bool sync(KSyncManager* manager, QString filename, int mode); | 467 | virtual bool sync(KSyncManager* manager, QString filename, int mode); |
468 | 468 | ||
469 | virtual bool syncExternal(KSyncManager* manager, QString resource); | 469 | virtual bool syncExternal(KSyncManager* manager, QString resource); |
470 | virtual void removeSyncInfo( QString syncProfile); | 470 | virtual void removeSyncInfo( QString syncProfile); |
471 | void setSyncManager(KSyncManager* manager); | 471 | void setSyncManager(KSyncManager* manager); |
472 | void setLoadedFileVersion(QDateTime); | 472 | void setLoadedFileVersion(QDateTime); |
473 | bool checkFileVersion(QString fn); | 473 | bool checkFileVersion(QString fn); |
474 | bool checkFileChanged(QString fn); | 474 | bool checkFileChanged(QString fn); |
475 | Event* getLastSyncEvent(); | 475 | Event* getLastSyncEvent(); |
476 | /** Adapt navigation units correpsonding to step size of navigation of the | 476 | /** Adapt navigation units correpsonding to step size of navigation of the |
477 | * current view. | 477 | * current view. |
478 | */ | 478 | */ |
479 | void adaptNavigationUnits(); | 479 | void adaptNavigationUnits(); |
480 | bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); | 480 | bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); |
481 | int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); | 481 | int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); |
482 | //Attendee* getYourAttendee(Event *event); | 482 | //Attendee* getYourAttendee(Event *event); |
483 | void setBlockShowDates( bool b ) { mBlockShowDates = b ;} | 483 | void setBlockShowDates( bool b ) { mBlockShowDates = b ;} |
484 | protected: | 484 | protected: |
485 | void schedule(Scheduler::Method, Incidence *incidence = 0); | 485 | void schedule(Scheduler::Method, Incidence *incidence = 0); |
486 | 486 | ||
487 | // returns KMsgBox::OKCandel() | 487 | // returns KMsgBox::OKCandel() |
488 | int msgItemDelete(); | 488 | int msgItemDelete(const QString name); |
489 | void showEventEditor(); | 489 | void showEventEditor(); |
490 | void showTodoEditor(); | 490 | void showTodoEditor(); |
491 | void writeLocale(); | 491 | void writeLocale(); |
492 | Todo *selectedTodo(); | 492 | Todo *selectedTodo(); |
493 | 493 | ||
494 | private: | 494 | private: |
495 | bool mBlockShowDates; | 495 | bool mBlockShowDates; |
496 | KSyncManager* mSyncManager; | 496 | KSyncManager* mSyncManager; |
497 | AlarmDialog * mAlarmDialog; | 497 | AlarmDialog * mAlarmDialog; |
498 | QString mAlarmNotification; | 498 | QString mAlarmNotification; |
499 | QString mSuspendAlarmNotification; | 499 | QString mSuspendAlarmNotification; |
500 | QTimer* mSuspendTimer; | 500 | QTimer* mSuspendTimer; |
501 | QTimer* mAlarmTimer; | 501 | QTimer* mAlarmTimer; |
502 | QTimer* mRecheckAlarmTimer; | 502 | QTimer* mRecheckAlarmTimer; |
503 | void computeAlarm( QString ); | 503 | void computeAlarm( QString ); |
504 | void startAlarm( QString, QString ); | 504 | void startAlarm( QString, QString ); |
505 | void setSyncEventsReadOnly(); | 505 | void setSyncEventsReadOnly(); |
506 | 506 | ||
507 | QDateTime loadedFileVersion; | 507 | QDateTime loadedFileVersion; |
508 | void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); | 508 | void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); |
509 | void checkExternalId( Incidence * inc ); | 509 | void checkExternalId( Incidence * inc ); |
510 | int mGlobalSyncMode; | 510 | int mGlobalSyncMode; |
511 | QString mCurrentSyncDevice; | 511 | QString mCurrentSyncDevice; |
512 | QString mCurrentSyncName; | 512 | QString mCurrentSyncName; |
513 | KOBeamPrefs* beamDialog; | 513 | KOBeamPrefs* beamDialog; |
514 | void init(); | 514 | void init(); |
515 | int mDatePickerMode; | 515 | int mDatePickerMode; |
516 | bool mFlagEditDescription; | 516 | bool mFlagEditDescription; |
517 | QDateTime mLastCalendarSync; | 517 | QDateTime mLastCalendarSync; |
518 | void createPrinter(); | 518 | void createPrinter(); |
519 | 519 | ||
520 | void calendarModified( bool, Calendar * ); | 520 | void calendarModified( bool, Calendar * ); |
521 | 521 | ||
522 | CalPrinter *mCalPrinter; | 522 | CalPrinter *mCalPrinter; |
523 | 523 | ||
524 | QSplitter *mPanner; | 524 | QSplitter *mPanner; |
525 | QSplitter *mLeftSplitter; | 525 | QSplitter *mLeftSplitter; |
526 | QWidget *mLeftFrame; | 526 | QWidget *mLeftFrame; |
527 | QWidgetStack *mRightFrame; | 527 | QWidgetStack *mRightFrame; |
528 | 528 | ||
529 | KDatePicker* mDatePicker; | 529 | KDatePicker* mDatePicker; |
530 | QVBox* mDateFrame; | 530 | QVBox* mDateFrame; |
531 | NavigatorBar *mNavigatorBar; | 531 | NavigatorBar *mNavigatorBar; |
532 | 532 | ||
533 | KDateNavigator *mDateNavigator; // widget showing small month view. | 533 | KDateNavigator *mDateNavigator; // widget showing small month view. |
534 | 534 | ||
535 | KOFilterView *mFilterView; | 535 | KOFilterView *mFilterView; |
536 | 536 | ||
537 | ResourceView *mResourceView; | 537 | ResourceView *mResourceView; |
538 | 538 | ||
539 | // calendar object for this viewing instance | 539 | // calendar object for this viewing instance |
540 | Calendar *mCalendar; | 540 | Calendar *mCalendar; |
541 | 541 | ||
542 | CalendarResourceManager *mResourceManager; | 542 | CalendarResourceManager *mResourceManager; |
543 | 543 | ||
544 | FileStorage *mStorage; | 544 | FileStorage *mStorage; |
545 | 545 | ||
546 | DateNavigator *mNavigator; | 546 | DateNavigator *mNavigator; |
547 | 547 | ||
548 | KOViewManager *mViewManager; | 548 | KOViewManager *mViewManager; |
549 | KODialogManager *mDialogManager; | 549 | KODialogManager *mDialogManager; |
550 | 550 | ||
551 | // Calendar filters | 551 | // Calendar filters |
552 | QPtrList<CalFilter> mFilters; | 552 | QPtrList<CalFilter> mFilters; |
diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp index 94e1f4c..b4fe965 100644 --- a/korganizer/koeditorgeneral.cpp +++ b/korganizer/koeditorgeneral.cpp | |||
@@ -222,148 +222,162 @@ void KOEditorGeneral::initAlarm(QWidget *parent,QBoxLayout *topLayout) | |||
222 | } | 222 | } |
223 | 223 | ||
224 | void KOEditorGeneral::pickAlarmSound() | 224 | void KOEditorGeneral::pickAlarmSound() |
225 | { | 225 | { |
226 | 226 | ||
227 | //QString prefix = mAlarmSound; | 227 | //QString prefix = mAlarmSound; |
228 | if (!mAlarmSoundButton->isOn()) { | 228 | if (!mAlarmSoundButton->isOn()) { |
229 | //mAlarmSound = ""; | 229 | //mAlarmSound = ""; |
230 | QToolTip::remove(mAlarmSoundButton); | 230 | QToolTip::remove(mAlarmSoundButton); |
231 | QToolTip::add(mAlarmSoundButton, i18n("No sound set")); | 231 | QToolTip::add(mAlarmSoundButton, i18n("No sound set")); |
232 | mAlarmProgramButton->setOn(true); | 232 | mAlarmProgramButton->setOn(true); |
233 | mAlarmSoundButton->setOn(false); | 233 | mAlarmSoundButton->setOn(false); |
234 | } else { | 234 | } else { |
235 | QString fileName(KFileDialog::getOpenFileName(mAlarmSound, | 235 | QString fileName(KFileDialog::getOpenFileName(mAlarmSound, |
236 | i18n("*.wav|Wav Files"), 0)); | 236 | i18n("*.wav|Wav Files"), 0)); |
237 | if (!fileName.isEmpty()) { | 237 | if (!fileName.isEmpty()) { |
238 | mAlarmSound = fileName; | 238 | mAlarmSound = fileName; |
239 | QToolTip::remove(mAlarmSoundButton); | 239 | QToolTip::remove(mAlarmSoundButton); |
240 | QString dispStr = i18n("Playing '%1'").arg(fileName); | 240 | QString dispStr = i18n("Playing '%1'").arg(fileName); |
241 | QToolTip::add(mAlarmSoundButton, dispStr); | 241 | QToolTip::add(mAlarmSoundButton, dispStr); |
242 | mAlarmProgramButton->setOn(false); | 242 | mAlarmProgramButton->setOn(false); |
243 | mAlarmSoundButton->setOn(true); | 243 | mAlarmSoundButton->setOn(true); |
244 | } else { | 244 | } else { |
245 | mAlarmProgramButton->setOn(true); | 245 | mAlarmProgramButton->setOn(true); |
246 | mAlarmSoundButton->setOn(false); | 246 | mAlarmSoundButton->setOn(false); |
247 | 247 | ||
248 | } | 248 | } |
249 | } | 249 | } |
250 | 250 | ||
251 | if (mAlarmProgramButton->isOn()) | 251 | if (mAlarmProgramButton->isOn()) |
252 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); | 252 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); |
253 | if ( mAlarmSoundButton->isOn()) | 253 | if ( mAlarmSoundButton->isOn()) |
254 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio.Al.: ") + mAlarmSound ); | 254 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio.Al.: ") + mAlarmSound ); |
255 | } | 255 | } |
256 | 256 | ||
257 | void KOEditorGeneral::pickAlarmProgram() | 257 | void KOEditorGeneral::pickAlarmProgram() |
258 | { | 258 | { |
259 | if (!mAlarmProgramButton->isOn()) { | 259 | if (!mAlarmProgramButton->isOn()) { |
260 | //mAlarmProgram = ""; | 260 | //mAlarmProgram = ""; |
261 | QToolTip::remove(mAlarmProgramButton); | 261 | QToolTip::remove(mAlarmProgramButton); |
262 | QToolTip::add(mAlarmProgramButton, i18n("No program set")); | 262 | QToolTip::add(mAlarmProgramButton, i18n("No program set")); |
263 | mAlarmProgramButton->setOn(false); | 263 | mAlarmProgramButton->setOn(false); |
264 | mAlarmSoundButton->setOn(true); | 264 | mAlarmSoundButton->setOn(true); |
265 | } else { | 265 | } else { |
266 | QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); | 266 | QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0)); |
267 | if (!fileName.isEmpty()) { | 267 | if (!fileName.isEmpty()) { |
268 | mAlarmProgram = fileName; | 268 | mAlarmProgram = fileName; |
269 | QToolTip::remove(mAlarmProgramButton); | 269 | QToolTip::remove(mAlarmProgramButton); |
270 | QString dispStr = i18n("Running '%1'").arg(fileName); | 270 | QString dispStr = i18n("Running '%1'").arg(fileName); |
271 | QToolTip::add(mAlarmProgramButton, dispStr); | 271 | QToolTip::add(mAlarmProgramButton, dispStr); |
272 | mAlarmSoundButton->setOn(false); | 272 | mAlarmSoundButton->setOn(false); |
273 | mAlarmProgramButton->setOn(true); | 273 | mAlarmProgramButton->setOn(true); |
274 | } else { | 274 | } else { |
275 | mAlarmProgramButton->setOn(false); | 275 | mAlarmProgramButton->setOn(false); |
276 | mAlarmSoundButton->setOn(true); | 276 | mAlarmSoundButton->setOn(true); |
277 | } | 277 | } |
278 | } | 278 | } |
279 | if (mAlarmProgramButton->isOn()) | 279 | if (mAlarmProgramButton->isOn()) |
280 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); | 280 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); |
281 | if ( mAlarmSoundButton->isOn()) | 281 | if ( mAlarmSoundButton->isOn()) |
282 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound ); | 282 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound ); |
283 | } | 283 | } |
284 | 284 | ||
285 | 285 | ||
286 | QString KOEditorGeneral::getFittingPath( const QString s ) | ||
287 | { | ||
288 | int maxlen = 50; | ||
289 | if ( QApplication::desktop()->width() < 640 ) { | ||
290 | if ( QApplication::desktop()->width() < 320 ) | ||
291 | maxlen = 22; | ||
292 | else | ||
293 | maxlen = 35; | ||
294 | } | ||
295 | if ( s.length() > maxlen ) { | ||
296 | return "..."+s.right(maxlen -3); | ||
297 | } | ||
298 | return s; | ||
299 | } | ||
286 | 300 | ||
287 | void KOEditorGeneral::enableAlarmEdit(bool enable) | 301 | void KOEditorGeneral::enableAlarmEdit(bool enable) |
288 | { | 302 | { |
289 | if ( enable ) { | 303 | if ( enable ) { |
290 | if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) { | 304 | if (!mAlarmProgramButton->isOn() && !mAlarmSoundButton->isOn()) { |
291 | mAlarmSoundButton->setOn( true ); | 305 | mAlarmSoundButton->setOn( true ); |
292 | if ( mAlarmSound.isEmpty() ) | 306 | if ( mAlarmSound.isEmpty() ) |
293 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; | 307 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; |
294 | else { | 308 | else { |
295 | if ( ! QFile::exists( mAlarmSound ) ) | 309 | if ( ! QFile::exists( mAlarmSound ) ) |
296 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; | 310 | mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile; |
297 | } | 311 | } |
298 | } | 312 | } |
299 | if (mAlarmProgramButton->isOn()) | 313 | if (mAlarmProgramButton->isOn()) |
300 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + mAlarmProgram ); | 314 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Proc.Al.: ") + getFittingPath(mAlarmProgram) ); |
301 | if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn()) | 315 | if (!mAlarmSound.isEmpty() && mAlarmSoundButton->isOn()) |
302 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Sound.Al.: ") + mAlarmSound ); | 316 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Audio Al.: ") + getFittingPath(mAlarmSound) ); |
303 | } | 317 | } |
304 | else { | 318 | else { |
305 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Alarm disabled")); | 319 | ((QWidget*)parent())->topLevelWidget()->setCaption(i18n("Alarm disabled for this item")); |
306 | 320 | ||
307 | } | 321 | } |
308 | mAlarmTimeEdit->setEnabled(enable); | 322 | mAlarmTimeEdit->setEnabled(enable); |
309 | mAlarmSoundButton->setEnabled(enable); | 323 | mAlarmSoundButton->setEnabled(enable); |
310 | mAlarmProgramButton->setEnabled(enable); | 324 | mAlarmProgramButton->setEnabled(enable); |
311 | mAlarmIncrCombo->setEnabled(enable); | 325 | mAlarmIncrCombo->setEnabled(enable); |
312 | } | 326 | } |
313 | 327 | ||
314 | void KOEditorGeneral::disableAlarmEdit(bool disable) | 328 | void KOEditorGeneral::disableAlarmEdit(bool disable) |
315 | { | 329 | { |
316 | enableAlarmEdit( !disable ); | 330 | enableAlarmEdit( !disable ); |
317 | } | 331 | } |
318 | 332 | ||
319 | void KOEditorGeneral::enableAlarm( bool enable ) | 333 | void KOEditorGeneral::enableAlarm( bool enable ) |
320 | { | 334 | { |
321 | enableAlarmEdit( enable ); | 335 | enableAlarmEdit( enable ); |
322 | } | 336 | } |
323 | 337 | ||
324 | void KOEditorGeneral::alarmDisable(bool disable) | 338 | void KOEditorGeneral::alarmDisable(bool disable) |
325 | { | 339 | { |
326 | if (!disable) { | 340 | if (!disable) { |
327 | //mAlarmBell->setEnabled(true); | 341 | //mAlarmBell->setEnabled(true); |
328 | mAlarmButton->setEnabled(true); | 342 | mAlarmButton->setEnabled(true); |
329 | } else { | 343 | } else { |
330 | //mAlarmBell->setEnabled(false); | 344 | //mAlarmBell->setEnabled(false); |
331 | mAlarmButton->setEnabled(false); | 345 | mAlarmButton->setEnabled(false); |
332 | mAlarmButton->setChecked(false); | 346 | mAlarmButton->setChecked(false); |
333 | mAlarmTimeEdit->setEnabled(false); | 347 | mAlarmTimeEdit->setEnabled(false); |
334 | mAlarmSoundButton->setEnabled(false); | 348 | mAlarmSoundButton->setEnabled(false); |
335 | mAlarmProgramButton->setEnabled(false); | 349 | mAlarmProgramButton->setEnabled(false); |
336 | mAlarmIncrCombo->setEnabled(false); | 350 | mAlarmIncrCombo->setEnabled(false); |
337 | } | 351 | } |
338 | } | 352 | } |
339 | 353 | ||
340 | void KOEditorGeneral::setCategories(const QString &str) | 354 | void KOEditorGeneral::setCategories(const QString &str) |
341 | { | 355 | { |
342 | mCategoriesLabel->setText(str); | 356 | mCategoriesLabel->setText(str); |
343 | } | 357 | } |
344 | 358 | ||
345 | void KOEditorGeneral::setDefaults(bool allDay) | 359 | void KOEditorGeneral::setDefaults(bool allDay) |
346 | { | 360 | { |
347 | #if 0 | 361 | #if 0 |
348 | mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName()); | 362 | mOwnerLabel->setText(i18n("Owner: ") + KOPrefs::instance()->fullName()); |
349 | #endif | 363 | #endif |
350 | 364 | ||
351 | enableAlarmEdit( !allDay ); | 365 | enableAlarmEdit( !allDay ); |
352 | 366 | ||
353 | // TODO: Implement a KPrefsComboItem to solve this in a clean way. | 367 | // TODO: Implement a KPrefsComboItem to solve this in a clean way. |
354 | int alarmTime; | 368 | int alarmTime; |
355 | int a[] = { 1,5,10,15,30,60,180, 1440 }; | 369 | int a[] = { 1,5,10,15,30,60,180, 1440 }; |
356 | int index = KOPrefs::instance()->mAlarmTime; | 370 | int index = KOPrefs::instance()->mAlarmTime; |
357 | if (index < 0 || index > 7) { | 371 | if (index < 0 || index > 7) { |
358 | alarmTime = 15; | 372 | alarmTime = 15; |
359 | } else { | 373 | } else { |
360 | alarmTime = a[index]; | 374 | alarmTime = a[index]; |
361 | } | 375 | } |
362 | mAlarmButton ->setChecked( false ); | 376 | mAlarmButton ->setChecked( false ); |
363 | mAlarmTimeEdit->setValue(alarmTime); | 377 | mAlarmTimeEdit->setValue(alarmTime); |
364 | mAlarmIncrCombo->setCurrentItem(0); | 378 | mAlarmIncrCombo->setCurrentItem(0); |
365 | enableAlarmEdit( false ); | 379 | enableAlarmEdit( false ); |
366 | //alarmDisable (false); | 380 | //alarmDisable (false); |
367 | mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic); | 381 | mSecrecyCombo->setCurrentItem(Incidence::SecrecyPublic); |
368 | mCancelBox->setChecked( false ); | 382 | mCancelBox->setChecked( false ); |
369 | mSummaryEdit->setEditText(""); | 383 | mSummaryEdit->setEditText(""); |
diff --git a/korganizer/koeditorgeneral.h b/korganizer/koeditorgeneral.h index c58335e..de8edaf 100644 --- a/korganizer/koeditorgeneral.h +++ b/korganizer/koeditorgeneral.h | |||
@@ -44,69 +44,70 @@ | |||
44 | 44 | ||
45 | class KDateEdit; | 45 | class KDateEdit; |
46 | class KOLocationBox; | 46 | class KOLocationBox; |
47 | using namespace KCal; | 47 | using namespace KCal; |
48 | 48 | ||
49 | class KOEditorGeneral : public QObject | 49 | class KOEditorGeneral : public QObject |
50 | { | 50 | { |
51 | Q_OBJECT | 51 | Q_OBJECT |
52 | public: | 52 | public: |
53 | KOEditorGeneral (QObject* parent=0,const char* name=0); | 53 | KOEditorGeneral (QObject* parent=0,const char* name=0); |
54 | virtual ~KOEditorGeneral(); | 54 | virtual ~KOEditorGeneral(); |
55 | void setFocusOn( int i ); | 55 | void setFocusOn( int i ); |
56 | void initHeader(QWidget *,QBoxLayout *); | 56 | void initHeader(QWidget *,QBoxLayout *); |
57 | void initDescription(QWidget *,QBoxLayout *); | 57 | void initDescription(QWidget *,QBoxLayout *); |
58 | void initSecrecy(QWidget *,QBoxLayout *); | 58 | void initSecrecy(QWidget *,QBoxLayout *); |
59 | void initCategories(QWidget *,QBoxLayout *); | 59 | void initCategories(QWidget *,QBoxLayout *); |
60 | void initAlarm(QWidget *,QBoxLayout *); | 60 | void initAlarm(QWidget *,QBoxLayout *); |
61 | 61 | ||
62 | /** Set widgets to default values */ | 62 | /** Set widgets to default values */ |
63 | void setDefaults(bool allDay); | 63 | void setDefaults(bool allDay); |
64 | /** Read event object and setup widgets accordingly */ | 64 | /** Read event object and setup widgets accordingly */ |
65 | void readIncidence(Incidence *); | 65 | void readIncidence(Incidence *); |
66 | /** Write event settings to event object */ | 66 | /** Write event settings to event object */ |
67 | void writeIncidence(Incidence *); | 67 | void writeIncidence(Incidence *); |
68 | 68 | ||
69 | /** Check if the input is valid. */ | 69 | /** Check if the input is valid. */ |
70 | bool validateInput() { return true; } | 70 | bool validateInput() { return true; } |
71 | 71 | ||
72 | void enableAlarm( bool enable ); | 72 | void enableAlarm( bool enable ); |
73 | void setSecrecy( int num ); | 73 | void setSecrecy( int num ); |
74 | public slots: | 74 | public slots: |
75 | void setCategories(const QString &); | 75 | void setCategories(const QString &); |
76 | void editCategories(); | 76 | void editCategories(); |
77 | 77 | ||
78 | protected slots: | 78 | protected slots: |
79 | void enableAlarmEdit( bool enable ); | 79 | void enableAlarmEdit( bool enable ); |
80 | void disableAlarmEdit( bool disable ); | 80 | void disableAlarmEdit( bool disable ); |
81 | void alarmDisable( bool disable ); | 81 | void alarmDisable( bool disable ); |
82 | void pickAlarmSound(); | 82 | void pickAlarmSound(); |
83 | void pickAlarmProgram(); | 83 | void pickAlarmProgram(); |
84 | 84 | ||
85 | signals: | 85 | signals: |
86 | void openCategoryDialog(); | 86 | void openCategoryDialog(); |
87 | void allAccepted(); | 87 | void allAccepted(); |
88 | 88 | ||
89 | protected: | 89 | protected: |
90 | //QLineEdit *mSummaryEdit; | 90 | //QLineEdit *mSummaryEdit; |
91 | //QLineEdit *mLocationEdit; | 91 | //QLineEdit *mLocationEdit; |
92 | KOLocationBox *mSummaryEdit; | 92 | KOLocationBox *mSummaryEdit; |
93 | KOLocationBox *mLocationEdit; | 93 | KOLocationBox *mLocationEdit; |
94 | QLabel *mAlarmBell; | 94 | QLabel *mAlarmBell; |
95 | QCheckBox *mAlarmButton; | 95 | QCheckBox *mAlarmButton; |
96 | QSpinBox *mAlarmTimeEdit; | 96 | QSpinBox *mAlarmTimeEdit; |
97 | QPushButton *mAlarmSoundButton; | 97 | QPushButton *mAlarmSoundButton; |
98 | QPushButton *mAlarmProgramButton; | 98 | QPushButton *mAlarmProgramButton; |
99 | QComboBox *mAlarmIncrCombo; | 99 | QComboBox *mAlarmIncrCombo; |
100 | KTextEdit *mDescriptionEdit; | 100 | KTextEdit *mDescriptionEdit; |
101 | QLabel *mOwnerLabel; | 101 | QLabel *mOwnerLabel; |
102 | QComboBox *mSecrecyCombo; | 102 | QComboBox *mSecrecyCombo; |
103 | QCheckBox *mCancelBox; | 103 | QCheckBox *mCancelBox; |
104 | QPushButton *mCategoriesButton; | 104 | QPushButton *mCategoriesButton; |
105 | QLabel *mCategoriesLabel; | 105 | QLabel *mCategoriesLabel; |
106 | 106 | ||
107 | private: | 107 | private: |
108 | QString getFittingPath( const QString ) ; | ||
108 | QString mAlarmSound; | 109 | QString mAlarmSound; |
109 | QString mAlarmProgram; | 110 | QString mAlarmProgram; |
110 | }; | 111 | }; |
111 | 112 | ||
112 | #endif | 113 | #endif |
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 97b4a03..30adb06 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp | |||
@@ -757,134 +757,129 @@ void KOTodoView::newTodo() | |||
757 | 757 | ||
758 | void KOTodoView::newSubTodo() | 758 | void KOTodoView::newSubTodo() |
759 | { | 759 | { |
760 | if (mActiveItem) { | 760 | if (mActiveItem) { |
761 | emit newSubTodoSignal(mActiveItem->todo()); | 761 | emit newSubTodoSignal(mActiveItem->todo()); |
762 | } | 762 | } |
763 | } | 763 | } |
764 | void KOTodoView::unparentTodo() | 764 | void KOTodoView::unparentTodo() |
765 | { | 765 | { |
766 | if (mActiveItem) { | 766 | if (mActiveItem) { |
767 | emit unparentTodoSignal(mActiveItem->todo()); | 767 | emit unparentTodoSignal(mActiveItem->todo()); |
768 | } | 768 | } |
769 | } | 769 | } |
770 | 770 | ||
771 | void KOTodoView::reparentTodo() | 771 | void KOTodoView::reparentTodo() |
772 | { | 772 | { |
773 | if (mActiveItem) { | 773 | if (mActiveItem) { |
774 | qDebug("KOTodoView::reparentTodo() "); | 774 | qDebug("KOTodoView::reparentTodo() "); |
775 | topLevelWidget()->setCaption(i18n("Click on new parent item")); | 775 | topLevelWidget()->setCaption(i18n("Click on new parent item")); |
776 | pendingSubtodo = mActiveItem; | 776 | pendingSubtodo = mActiveItem; |
777 | } | 777 | } |
778 | } | 778 | } |
779 | void KOTodoView::editTodo() | 779 | void KOTodoView::editTodo() |
780 | { | 780 | { |
781 | if (mActiveItem) { | 781 | if (mActiveItem) { |
782 | emit editTodoSignal(mActiveItem->todo()); | 782 | emit editTodoSignal(mActiveItem->todo()); |
783 | } | 783 | } |
784 | } | 784 | } |
785 | void KOTodoView::cloneTodo() | 785 | void KOTodoView::cloneTodo() |
786 | { | 786 | { |
787 | if (mActiveItem) { | 787 | if (mActiveItem) { |
788 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); | 788 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); |
789 | } | 789 | } |
790 | } | 790 | } |
791 | void KOTodoView::cancelTodo() | 791 | void KOTodoView::cancelTodo() |
792 | { | 792 | { |
793 | if (mActiveItem) { | 793 | if (mActiveItem) { |
794 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); | 794 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); |
795 | } | 795 | } |
796 | } | 796 | } |
797 | void KOTodoView::moveTodo() | 797 | void KOTodoView::moveTodo() |
798 | { | 798 | { |
799 | if (mActiveItem) { | 799 | if (mActiveItem) { |
800 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); | 800 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); |
801 | } | 801 | } |
802 | } | 802 | } |
803 | void KOTodoView::beamTodo() | 803 | void KOTodoView::beamTodo() |
804 | { | 804 | { |
805 | if (mActiveItem) { | 805 | if (mActiveItem) { |
806 | emit beamTodoSignal((Incidence*)mActiveItem->todo()); | 806 | emit beamTodoSignal((Incidence*)mActiveItem->todo()); |
807 | } | 807 | } |
808 | } | 808 | } |
809 | 809 | ||
810 | 810 | ||
811 | void KOTodoView::showTodo() | 811 | void KOTodoView::showTodo() |
812 | { | 812 | { |
813 | if (mActiveItem) { | 813 | if (mActiveItem) { |
814 | emit showTodoSignal(mActiveItem->todo()); | 814 | emit showTodoSignal(mActiveItem->todo()); |
815 | } | 815 | } |
816 | } | 816 | } |
817 | 817 | ||
818 | void KOTodoView::deleteTodo() | 818 | void KOTodoView::deleteTodo() |
819 | { | 819 | { |
820 | if (mActiveItem) { | 820 | if (mActiveItem) { |
821 | if (mActiveItem->childCount()) { | ||
822 | KMessageBox::sorry(this,i18n("Cannot delete To-Do which has children."), | ||
823 | i18n("Delete To-Do")); | ||
824 | } else { | ||
825 | emit deleteTodoSignal(mActiveItem->todo()); | 821 | emit deleteTodoSignal(mActiveItem->todo()); |
826 | } | ||
827 | } | 822 | } |
828 | } | 823 | } |
829 | 824 | ||
830 | void KOTodoView::setNewPriority(int index) | 825 | void KOTodoView::setNewPriority(int index) |
831 | { | 826 | { |
832 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 827 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
833 | mActiveItem->todo()->setPriority(mPriority[index]); | 828 | mActiveItem->todo()->setPriority(mPriority[index]); |
834 | mActiveItem->construct(); | 829 | mActiveItem->construct(); |
835 | todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED); | 830 | todoModified (mActiveItem->todo(), KOGlobals::PRIORITY_MODIFIED); |
836 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 831 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
837 | } | 832 | } |
838 | } | 833 | } |
839 | 834 | ||
840 | void KOTodoView::setNewPercentage(int index) | 835 | void KOTodoView::setNewPercentage(int index) |
841 | { | 836 | { |
842 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 837 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
843 | if (mPercentage[index] == 100) { | 838 | if (mPercentage[index] == 100) { |
844 | mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); | 839 | mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); |
845 | } else { | 840 | } else { |
846 | mActiveItem->todo()->setCompleted(false); | 841 | mActiveItem->todo()->setCompleted(false); |
847 | } | 842 | } |
848 | mActiveItem->todo()->setPercentComplete(mPercentage[index]); | 843 | mActiveItem->todo()->setPercentComplete(mPercentage[index]); |
849 | mActiveItem->construct(); | 844 | mActiveItem->construct(); |
850 | todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); | 845 | todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); |
851 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 846 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
852 | } | 847 | } |
853 | } | 848 | } |
854 | 849 | ||
855 | 850 | ||
856 | QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem) | 851 | QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem) |
857 | { | 852 | { |
858 | QPopupMenu* tempMenu = new QPopupMenu (this); | 853 | QPopupMenu* tempMenu = new QPopupMenu (this); |
859 | QStringList checkedCategories = todoItem->todo()->categories (); | 854 | QStringList checkedCategories = todoItem->todo()->categories (); |
860 | 855 | ||
861 | tempMenu->setCheckable (true); | 856 | tempMenu->setCheckable (true); |
862 | for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); | 857 | for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); |
863 | it != KOPrefs::instance()->mCustomCategories.end (); | 858 | it != KOPrefs::instance()->mCustomCategories.end (); |
864 | ++it) { | 859 | ++it) { |
865 | int index = tempMenu->insertItem (*it); | 860 | int index = tempMenu->insertItem (*it); |
866 | mCategory[index] = *it; | 861 | mCategory[index] = *it; |
867 | if (checkedCategories.find (*it) != checkedCategories.end ()) tempMenu->setItemChecked (index, true); | 862 | if (checkedCategories.find (*it) != checkedCategories.end ()) tempMenu->setItemChecked (index, true); |
868 | } | 863 | } |
869 | 864 | ||
870 | connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); | 865 | connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); |
871 | return tempMenu; | 866 | return tempMenu; |
872 | 867 | ||
873 | 868 | ||
874 | } | 869 | } |
875 | void KOTodoView::changedCategories(int index) | 870 | void KOTodoView::changedCategories(int index) |
876 | { | 871 | { |
877 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { | 872 | if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { |
878 | QStringList categories = mActiveItem->todo()->categories (); | 873 | QStringList categories = mActiveItem->todo()->categories (); |
879 | if (categories.find (mCategory[index]) != categories.end ()) | 874 | if (categories.find (mCategory[index]) != categories.end ()) |
880 | categories.remove (mCategory[index]); | 875 | categories.remove (mCategory[index]); |
881 | else | 876 | else |
882 | categories.insert (categories.end(), mCategory[index]); | 877 | categories.insert (categories.end(), mCategory[index]); |
883 | categories.sort (); | 878 | categories.sort (); |
884 | mActiveItem->todo()->setCategories (categories); | 879 | mActiveItem->todo()->setCategories (categories); |
885 | mActiveItem->construct(); | 880 | mActiveItem->construct(); |
886 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); | 881 | mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); |
887 | todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); | 882 | todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); |
888 | } | 883 | } |
889 | } | 884 | } |
890 | void KOTodoView::itemDoubleClicked(QListViewItem *item) | 885 | void KOTodoView::itemDoubleClicked(QListViewItem *item) |
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 151b55b..7b07a2e 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -1643,129 +1643,138 @@ void MainWindow::fillFilterMenu() | |||
1643 | if ( mView->filterView()->filtersEnabled() ) { | 1643 | if ( mView->filterView()->filtersEnabled() ) { |
1644 | selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 ); | 1644 | selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 ); |
1645 | } | 1645 | } |
1646 | else { | 1646 | else { |
1647 | selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 ); | 1647 | selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 ); |
1648 | disable = true; | 1648 | disable = true; |
1649 | } | 1649 | } |
1650 | selectFilterMenu->insertSeparator(); | 1650 | selectFilterMenu->insertSeparator(); |
1651 | QPtrList<CalFilter> fili = mView->filters(); | 1651 | QPtrList<CalFilter> fili = mView->filters(); |
1652 | CalFilter *curfilter = mView->filterView()->selectedFilter(); | 1652 | CalFilter *curfilter = mView->filterView()->selectedFilter(); |
1653 | CalFilter *filter = fili.first(); | 1653 | CalFilter *filter = fili.first(); |
1654 | int iii = 2; | 1654 | int iii = 2; |
1655 | while(filter) { | 1655 | while(filter) { |
1656 | selectFilterMenu->insertItem( filter->name(), iii ); | 1656 | selectFilterMenu->insertItem( filter->name(), iii ); |
1657 | if ( filter == curfilter) | 1657 | if ( filter == curfilter) |
1658 | selectFilterMenu->setItemChecked( iii, true ); | 1658 | selectFilterMenu->setItemChecked( iii, true ); |
1659 | if ( disable ) | 1659 | if ( disable ) |
1660 | selectFilterMenu->setItemEnabled( iii, false ); | 1660 | selectFilterMenu->setItemEnabled( iii, false ); |
1661 | filter = fili.next(); | 1661 | filter = fili.next(); |
1662 | ++iii; | 1662 | ++iii; |
1663 | } | 1663 | } |
1664 | } | 1664 | } |
1665 | void MainWindow::selectFilter( int fil ) | 1665 | void MainWindow::selectFilter( int fil ) |
1666 | { | 1666 | { |
1667 | if ( fil == 0 ) { | 1667 | if ( fil == 0 ) { |
1668 | mView->editFilters( ); | 1668 | mView->editFilters( ); |
1669 | } else if ( fil == 1 ){ | 1669 | } else if ( fil == 1 ){ |
1670 | mView->toggleFilerEnabled( ); | 1670 | mView->toggleFilerEnabled( ); |
1671 | } else { | 1671 | } else { |
1672 | mView->selectFilter( fil-2 ); | 1672 | mView->selectFilter( fil-2 ); |
1673 | } | 1673 | } |
1674 | } | 1674 | } |
1675 | void MainWindow::configureToolBar( int item ) | 1675 | void MainWindow::configureToolBar( int item ) |
1676 | { | 1676 | { |
1677 | 1677 | ||
1678 | configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); | 1678 | configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); |
1679 | KOPrefs *p = KOPrefs::instance(); | 1679 | KOPrefs *p = KOPrefs::instance(); |
1680 | p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); | 1680 | p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); |
1681 | p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); | 1681 | p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); |
1682 | p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); | 1682 | p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); |
1683 | p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); | 1683 | p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); |
1684 | p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); | 1684 | p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); |
1685 | p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); | 1685 | p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); |
1686 | p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); | 1686 | p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); |
1687 | p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); | 1687 | p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); |
1688 | p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); | 1688 | p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); |
1689 | p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); | 1689 | p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); |
1690 | p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); | 1690 | p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); |
1691 | p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); | 1691 | p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); |
1692 | p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); | 1692 | p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); |
1693 | p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); | 1693 | p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); |
1694 | p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); | 1694 | p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); |
1695 | p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); | 1695 | p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); |
1696 | p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); | 1696 | p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); |
1697 | p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); | 1697 | p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); |
1698 | p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); | 1698 | p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); |
1699 | // initActions(); | 1699 | // initActions(); |
1700 | } | 1700 | } |
1701 | 1701 | ||
1702 | void MainWindow::setCaptionToDates() | 1702 | void MainWindow::setCaptionToDates() |
1703 | { | 1703 | { |
1704 | QString selDates; | 1704 | QString selDates; |
1705 | selDates = KGlobal::locale()->formatDate(mView->startDate(), true); | 1705 | selDates = KGlobal::locale()->formatDate(mView->startDate(), true); |
1706 | if (mView->startDate() < mView->endDate() ) | 1706 | if (mView->startDate() < mView->endDate() ) |
1707 | selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true); | 1707 | selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true); |
1708 | else { | ||
1709 | QString addString; | ||
1710 | if ( mView->startDate() == QDateTime::currentDateTime().date() ) | ||
1711 | addString = i18n("Today"); | ||
1712 | else if ( mView->startDate() == QDateTime::currentDateTime().date().addDays(1) ) | ||
1713 | addString = i18n("Tomorrow"); | ||
1714 | if ( !addString.isEmpty() ) | ||
1715 | selDates = addString+", "+selDates ; | ||
1716 | } | ||
1708 | setCaption( i18n("Dates: ") + selDates ); | 1717 | setCaption( i18n("Dates: ") + selDates ); |
1709 | 1718 | ||
1710 | } | 1719 | } |
1711 | // parameter item == 0: reinit | 1720 | // parameter item == 0: reinit |
1712 | void MainWindow::configureAgenda( int item ) | 1721 | void MainWindow::configureAgenda( int item ) |
1713 | { | 1722 | { |
1714 | 1723 | ||
1715 | KOPrefs *p = KOPrefs::instance(); | 1724 | KOPrefs *p = KOPrefs::instance(); |
1716 | 1725 | ||
1717 | int i; | 1726 | int i; |
1718 | // do not allow 4 for widgets higher than 480 | 1727 | // do not allow 4 for widgets higher than 480 |
1719 | // if ( QApplication::desktop()->height() > 480 ) { | 1728 | // if ( QApplication::desktop()->height() > 480 ) { |
1720 | // if ( item == 4 ) | 1729 | // if ( item == 4 ) |
1721 | // item = 6; | 1730 | // item = 6; |
1722 | // } | 1731 | // } |
1723 | for ( i = 4; i <= 18; i= i+2 ) | 1732 | for ( i = 4; i <= 18; i= i+2 ) |
1724 | configureAgendaMenu->setItemChecked( i, false ); | 1733 | configureAgendaMenu->setItemChecked( i, false ); |
1725 | configureAgendaMenu->setItemChecked( item, true ); | 1734 | configureAgendaMenu->setItemChecked( item, true ); |
1726 | if ( p->mHourSize == item ) | 1735 | if ( p->mHourSize == item ) |
1727 | return; | 1736 | return; |
1728 | p->mHourSize=item; | 1737 | p->mHourSize=item; |
1729 | mView->viewManager()->agendaView()->updateConfig(); | 1738 | mView->viewManager()->agendaView()->updateConfig(); |
1730 | } | 1739 | } |
1731 | 1740 | ||
1732 | void MainWindow::saveCalendar() | 1741 | void MainWindow::saveCalendar() |
1733 | { | 1742 | { |
1734 | QString fn = KOPrefs::instance()->mLastSaveFile; | 1743 | QString fn = KOPrefs::instance()->mLastSaveFile; |
1735 | fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this ); | 1744 | fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this ); |
1736 | 1745 | ||
1737 | if ( fn == "" ) | 1746 | if ( fn == "" ) |
1738 | return; | 1747 | return; |
1739 | QFileInfo info; | 1748 | QFileInfo info; |
1740 | info.setFile( fn ); | 1749 | info.setFile( fn ); |
1741 | QString mes; | 1750 | QString mes; |
1742 | bool createbup = true; | 1751 | bool createbup = true; |
1743 | if ( info. exists() ) { | 1752 | if ( info. exists() ) { |
1744 | mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ; | 1753 | mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ; |
1745 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, | 1754 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, |
1746 | i18n("Overwrite!"), i18n("Cancel"), 0, | 1755 | i18n("Overwrite!"), i18n("Cancel"), 0, |
1747 | 0, 1 ); | 1756 | 0, 1 ); |
1748 | if ( result != 0 ) { | 1757 | if ( result != 0 ) { |
1749 | createbup = false; | 1758 | createbup = false; |
1750 | } | 1759 | } |
1751 | } | 1760 | } |
1752 | if ( createbup ) { | 1761 | if ( createbup ) { |
1753 | mView->saveCalendar( fn ); | 1762 | mView->saveCalendar( fn ); |
1754 | mes = i18n("KO/Pi:Saved %1").arg(fn); | 1763 | mes = i18n("KO/Pi:Saved %1").arg(fn); |
1755 | KOPrefs::instance()->mLastSaveFile = fn; | 1764 | KOPrefs::instance()->mLastSaveFile = fn; |
1756 | setCaption(mes); | 1765 | setCaption(mes); |
1757 | } | 1766 | } |
1758 | } | 1767 | } |
1759 | void MainWindow::loadCalendar() | 1768 | void MainWindow::loadCalendar() |
1760 | { | 1769 | { |
1761 | 1770 | ||
1762 | QString fn = KOPrefs::instance()->mLastLoadFile; | 1771 | QString fn = KOPrefs::instance()->mLastLoadFile; |
1763 | fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); | 1772 | fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); |
1764 | 1773 | ||
1765 | if ( fn == "" ) | 1774 | if ( fn == "" ) |
1766 | return; | 1775 | return; |
1767 | QFileInfo info; | 1776 | QFileInfo info; |
1768 | info.setFile( fn ); | 1777 | info.setFile( fn ); |
1769 | QString mess; | 1778 | QString mess; |
1770 | bool loadbup = true; | 1779 | bool loadbup = true; |
1771 | if ( info. exists() ) { | 1780 | if ( info. exists() ) { |
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp index 12294c0..0eba6a9 100644 --- a/libkcal/calendarlocal.cpp +++ b/libkcal/calendarlocal.cpp | |||
@@ -141,130 +141,130 @@ bool CalendarLocal::addEventNoDup( Event *event ) | |||
141 | 141 | ||
142 | bool CalendarLocal::addEvent( Event *event ) | 142 | bool CalendarLocal::addEvent( Event *event ) |
143 | { | 143 | { |
144 | insertEvent( event ); | 144 | insertEvent( event ); |
145 | 145 | ||
146 | event->registerObserver( this ); | 146 | event->registerObserver( this ); |
147 | 147 | ||
148 | setModified( true ); | 148 | setModified( true ); |
149 | 149 | ||
150 | return true; | 150 | return true; |
151 | } | 151 | } |
152 | 152 | ||
153 | void CalendarLocal::deleteEvent( Event *event ) | 153 | void CalendarLocal::deleteEvent( Event *event ) |
154 | { | 154 | { |
155 | if ( mUndoIncidence ) delete mUndoIncidence; | 155 | if ( mUndoIncidence ) delete mUndoIncidence; |
156 | mUndoIncidence = event->clone(); | 156 | mUndoIncidence = event->clone(); |
157 | if ( mEventList.removeRef( event ) ) { | 157 | if ( mEventList.removeRef( event ) ) { |
158 | setModified( true ); | 158 | setModified( true ); |
159 | } | 159 | } |
160 | } | 160 | } |
161 | 161 | ||
162 | 162 | ||
163 | Event *CalendarLocal::event( const QString &uid ) | 163 | Event *CalendarLocal::event( const QString &uid ) |
164 | { | 164 | { |
165 | 165 | ||
166 | Event *event; | 166 | Event *event; |
167 | 167 | ||
168 | for ( event = mEventList.first(); event; event = mEventList.next() ) { | 168 | for ( event = mEventList.first(); event; event = mEventList.next() ) { |
169 | if ( event->uid() == uid ) { | 169 | if ( event->uid() == uid ) { |
170 | return event; | 170 | return event; |
171 | } | 171 | } |
172 | } | 172 | } |
173 | 173 | ||
174 | return 0; | 174 | return 0; |
175 | } | 175 | } |
176 | bool CalendarLocal::addTodoNoDup( Todo *todo ) | 176 | bool CalendarLocal::addTodoNoDup( Todo *todo ) |
177 | { | 177 | { |
178 | Todo * eve; | 178 | Todo * eve; |
179 | for ( eve = mTodoList.first(); eve ; eve = mTodoList.next() ) { | 179 | for ( eve = mTodoList.first(); eve ; eve = mTodoList.next() ) { |
180 | if ( *eve == *todo ) { | 180 | if ( *eve == *todo ) { |
181 | //qDebug("duplicate todo found! not inserted! "); | 181 | //qDebug("duplicate todo found! not inserted! "); |
182 | return false; | 182 | return false; |
183 | } | 183 | } |
184 | } | 184 | } |
185 | return addTodo( todo ); | 185 | return addTodo( todo ); |
186 | } | 186 | } |
187 | bool CalendarLocal::addTodo( Todo *todo ) | 187 | bool CalendarLocal::addTodo( Todo *todo ) |
188 | { | 188 | { |
189 | mTodoList.append( todo ); | 189 | mTodoList.append( todo ); |
190 | 190 | ||
191 | todo->registerObserver( this ); | 191 | todo->registerObserver( this ); |
192 | 192 | ||
193 | // Set up subtask relations | 193 | // Set up subtask relations |
194 | setupRelations( todo ); | 194 | setupRelations( todo ); |
195 | 195 | ||
196 | setModified( true ); | 196 | setModified( true ); |
197 | 197 | ||
198 | return true; | 198 | return true; |
199 | } | 199 | } |
200 | 200 | ||
201 | void CalendarLocal::deleteTodo( Todo *todo ) | 201 | void CalendarLocal::deleteTodo( Todo *todo ) |
202 | { | 202 | { |
203 | // Handle orphaned children | 203 | // Handle orphaned children |
204 | if ( mUndoIncidence ) delete mUndoIncidence; | 204 | if ( mUndoIncidence ) delete mUndoIncidence; |
205 | mUndoIncidence = todo->clone(); | ||
206 | removeRelations( todo ); | 205 | removeRelations( todo ); |
206 | mUndoIncidence = todo->clone(); | ||
207 | 207 | ||
208 | if ( mTodoList.removeRef( todo ) ) { | 208 | if ( mTodoList.removeRef( todo ) ) { |
209 | setModified( true ); | 209 | setModified( true ); |
210 | } | 210 | } |
211 | } | 211 | } |
212 | 212 | ||
213 | QPtrList<Todo> CalendarLocal::rawTodos() | 213 | QPtrList<Todo> CalendarLocal::rawTodos() |
214 | { | 214 | { |
215 | return mTodoList; | 215 | return mTodoList; |
216 | } | 216 | } |
217 | Todo *CalendarLocal::todo( QString syncProf, QString id ) | 217 | Todo *CalendarLocal::todo( QString syncProf, QString id ) |
218 | { | 218 | { |
219 | Todo *todo; | 219 | Todo *todo; |
220 | for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { | 220 | for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { |
221 | if ( todo->getID( syncProf ) == id ) return todo; | 221 | if ( todo->getID( syncProf ) == id ) return todo; |
222 | } | 222 | } |
223 | 223 | ||
224 | return 0; | 224 | return 0; |
225 | } | 225 | } |
226 | void CalendarLocal::removeSyncInfo( QString syncProfile) | 226 | void CalendarLocal::removeSyncInfo( QString syncProfile) |
227 | { | 227 | { |
228 | QPtrList<Incidence> all = rawIncidences() ; | 228 | QPtrList<Incidence> all = rawIncidences() ; |
229 | Incidence *inc; | 229 | Incidence *inc; |
230 | for ( inc = all.first(); inc; inc = all.next() ) { | 230 | for ( inc = all.first(); inc; inc = all.next() ) { |
231 | inc->removeID( syncProfile ); | 231 | inc->removeID( syncProfile ); |
232 | } | 232 | } |
233 | if ( syncProfile.isEmpty() ) { | 233 | if ( syncProfile.isEmpty() ) { |
234 | QPtrList<Event> el; | 234 | QPtrList<Event> el; |
235 | Event *todo; | 235 | Event *todo; |
236 | for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { | 236 | for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { |
237 | if ( todo->uid().left( 15 ) == QString("last-syncEvent-") ) | 237 | if ( todo->uid().left( 15 ) == QString("last-syncEvent-") ) |
238 | el.append( todo ); | 238 | el.append( todo ); |
239 | } | 239 | } |
240 | for ( todo = el.first(); todo; todo = el.next() ) { | 240 | for ( todo = el.first(); todo; todo = el.next() ) { |
241 | deleteIncidence ( todo ); | 241 | deleteIncidence ( todo ); |
242 | } | 242 | } |
243 | } else { | 243 | } else { |
244 | Event *lse = event( "last-syncEvent-"+ syncProfile); | 244 | Event *lse = event( "last-syncEvent-"+ syncProfile); |
245 | deleteIncidence ( lse ); | 245 | deleteIncidence ( lse ); |
246 | } | 246 | } |
247 | } | 247 | } |
248 | QPtrList<Event> CalendarLocal::getExternLastSyncEvents() | 248 | QPtrList<Event> CalendarLocal::getExternLastSyncEvents() |
249 | { | 249 | { |
250 | QPtrList<Event> el; | 250 | QPtrList<Event> el; |
251 | Event *todo; | 251 | Event *todo; |
252 | for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { | 252 | for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { |
253 | if ( todo->uid().left( 15 ) == QString("last-syncEvent-") ) | 253 | if ( todo->uid().left( 15 ) == QString("last-syncEvent-") ) |
254 | if ( todo->summary().left(3) == "E: " ) | 254 | if ( todo->summary().left(3) == "E: " ) |
255 | el.append( todo ); | 255 | el.append( todo ); |
256 | } | 256 | } |
257 | 257 | ||
258 | return el; | 258 | return el; |
259 | 259 | ||
260 | } | 260 | } |
261 | Event *CalendarLocal::event( QString syncProf, QString id ) | 261 | Event *CalendarLocal::event( QString syncProf, QString id ) |
262 | { | 262 | { |
263 | Event *todo; | 263 | Event *todo; |
264 | for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { | 264 | for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { |
265 | if ( todo->getID( syncProf ) == id ) return todo; | 265 | if ( todo->getID( syncProf ) == id ) return todo; |
266 | } | 266 | } |
267 | 267 | ||
268 | return 0; | 268 | return 0; |
269 | } | 269 | } |
270 | Todo *CalendarLocal::todo( const QString &uid ) | 270 | Todo *CalendarLocal::todo( const QString &uid ) |
diff --git a/microkde/kdatetbl.cpp b/microkde/kdatetbl.cpp index 146291b..508ce31 100644 --- a/microkde/kdatetbl.cpp +++ b/microkde/kdatetbl.cpp | |||
@@ -283,140 +283,143 @@ KDateTable::keyPressEvent( QKeyEvent *e ) | |||
283 | void | 283 | void |
284 | KDateTable::viewportResizeEvent(QResizeEvent * e) | 284 | KDateTable::viewportResizeEvent(QResizeEvent * e) |
285 | { | 285 | { |
286 | QGridView::viewportResizeEvent(e); | 286 | QGridView::viewportResizeEvent(e); |
287 | 287 | ||
288 | setCellWidth(viewport()->width()/7); | 288 | setCellWidth(viewport()->width()/7); |
289 | setCellHeight(viewport()->height()/7); | 289 | setCellHeight(viewport()->height()/7); |
290 | } | 290 | } |
291 | 291 | ||
292 | void | 292 | void |
293 | KDateTable::setFontSize(int size) | 293 | KDateTable::setFontSize(int size) |
294 | { | 294 | { |
295 | int count; | 295 | int count; |
296 | QRect rect; | 296 | QRect rect; |
297 | // ----- store rectangles: | 297 | // ----- store rectangles: |
298 | fontsize=size; | 298 | fontsize=size; |
299 | QFont font = KGlobalSettings::generalFont(); | 299 | QFont font = KGlobalSettings::generalFont(); |
300 | font.setPointSize(fontsize); | 300 | font.setPointSize(fontsize); |
301 | font.setBold( true ); | 301 | font.setBold( true ); |
302 | QFontMetrics metrics(font); | 302 | QFontMetrics metrics(font); |
303 | 303 | ||
304 | // ----- find largest day name: | 304 | // ----- find largest day name: |
305 | maxCell.setWidth(0); | 305 | maxCell.setWidth(0); |
306 | maxCell.setHeight(0); | 306 | maxCell.setHeight(0); |
307 | for(count=0; count<7; ++count) | 307 | for(count=0; count<7; ++count) |
308 | { | 308 | { |
309 | rect=metrics.boundingRect(KGlobal::locale()->weekDayName(count+1, true)); | 309 | rect=metrics.boundingRect(KGlobal::locale()->weekDayName(count+1, true)); |
310 | maxCell.setWidth(QMAX(maxCell.width(), rect.width())); | 310 | maxCell.setWidth(QMAX(maxCell.width(), rect.width())); |
311 | maxCell.setHeight(QMAX(maxCell.height(), rect.height())); | 311 | maxCell.setHeight(QMAX(maxCell.height(), rect.height())); |
312 | } | 312 | } |
313 | // ----- compare with a real wide number and add some space: | 313 | // ----- compare with a real wide number and add some space: |
314 | rect=metrics.boundingRect(QString::fromLatin1("88")); | 314 | rect=metrics.boundingRect(QString::fromLatin1("88")); |
315 | maxCell.setWidth(QMAX(maxCell.width()+2, rect.width())); | 315 | maxCell.setWidth(QMAX(maxCell.width()+2, rect.width())); |
316 | maxCell.setHeight(QMAX(maxCell.height()+4, rect.height())); | 316 | maxCell.setHeight(QMAX(maxCell.height()+4, rect.height())); |
317 | if ( maxCell.width() * 1000 / maxCell.height() > 1900 ) | 317 | if ( maxCell.width() * 1000 / maxCell.height() > 1900 ) |
318 | maxCell.setHeight(maxCell.width() * 1000 / 1900 ); | 318 | maxCell.setHeight(maxCell.width() * 1000 / 1900 ); |
319 | } | 319 | } |
320 | 320 | ||
321 | void | 321 | void |
322 | KDateTable::contentsMousePressEvent(QMouseEvent *e) | 322 | KDateTable::contentsMousePressEvent(QMouseEvent *e) |
323 | { | 323 | { |
324 | if(e->type()!=QEvent::MouseButtonPress) | 324 | if(e->type()!=QEvent::MouseButtonPress) |
325 | { // the KDatePicker only reacts on mouse press events: | 325 | { // the KDatePicker only reacts on mouse press events: |
326 | return; | 326 | return; |
327 | } | 327 | } |
328 | if(!isEnabled()) | 328 | if(!isEnabled()) |
329 | { | 329 | { |
330 | KNotifyClient::beep(); | 330 | KNotifyClient::beep(); |
331 | return; | 331 | return; |
332 | } | 332 | } |
333 | 333 | ||
334 | int dayoff = KGlobal::locale()->weekStartsMonday() ? 1 : 0; | 334 | int dayoff = KGlobal::locale()->weekStartsMonday() ? 1 : 0; |
335 | // ----- | 335 | // ----- |
336 | int row, col, pos, temp; | 336 | int row, col, pos, temp; |
337 | QPoint mouseCoord; | 337 | QPoint mouseCoord; |
338 | // ----- | 338 | // ----- |
339 | mouseCoord = e->pos(); | 339 | mouseCoord = e->pos(); |
340 | row=rowAt(mouseCoord.y()); | 340 | row=rowAt(mouseCoord.y()); |
341 | col=columnAt(mouseCoord.x()); | 341 | col=columnAt(mouseCoord.x()); |
342 | if(row<0 || col<0) | 342 | if(row<0 || col<0) |
343 | { // the user clicked on the frame of the table | 343 | { // the user clicked on the frame of the table |
344 | return; | 344 | return; |
345 | } | 345 | } |
346 | pos=7*(row-1)+col+1; | 346 | pos=7*(row-1)+col+1; |
347 | #if 0 | ||
347 | if(pos+dayoff<=firstday) | 348 | if(pos+dayoff<=firstday) |
348 | { // this day is in the previous month | 349 | { // this day is in the previous month |
349 | KNotifyClient::beep(); | 350 | KNotifyClient::beep(); |
350 | return; | 351 | return; |
351 | } | 352 | } |
352 | if(firstday+numdays<pos+dayoff) | 353 | if(firstday+numdays<pos+dayoff) |
353 | { // this date is in the next month | 354 | { // this date is in the next month |
354 | KNotifyClient::beep(); | 355 | KNotifyClient::beep(); |
355 | return; | 356 | return; |
356 | } | 357 | } |
358 | #endif | ||
357 | temp=firstday+date.day()-dayoff-1; | 359 | temp=firstday+date.day()-dayoff-1; |
358 | setDate(QDate(date.year(), date.month(), pos-firstday+dayoff)); | 360 | QDate da = QDate(date.year(), date.month(),1); |
361 | setDate(da.addDays( pos-firstday+dayoff-1)); | ||
359 | updateCell(temp/7+1, temp%7); // Update the previously selected cell | 362 | updateCell(temp/7+1, temp%7); // Update the previously selected cell |
360 | updateCell(row, col); // Update the selected cell | 363 | updateCell(row, col); // Update the selected cell |
361 | // assert(QDate(date.year(), date.month(), pos-firstday+dayoff).isValid()); | 364 | // assert(QDate(date.year(), date.month(), pos-firstday+dayoff).isValid()); |
362 | emit(tableClicked()); | 365 | emit(tableClicked()); |
363 | } | 366 | } |
364 | 367 | ||
365 | bool | 368 | bool |
366 | KDateTable::setDate(const QDate& date_) | 369 | KDateTable::setDate(const QDate& date_) |
367 | { | 370 | { |
368 | bool changed=false; | 371 | bool changed=false; |
369 | QDate temp; | 372 | QDate temp; |
370 | mMarkCurrent = false; | 373 | mMarkCurrent = false; |
371 | // ----- | 374 | // ----- |
372 | if(!date_.isValid()) | 375 | if(!date_.isValid()) |
373 | { | 376 | { |
374 | kdDebug() << "KDateTable::setDate: refusing to set invalid date." << endl; | 377 | kdDebug() << "KDateTable::setDate: refusing to set invalid date." << endl; |
375 | return false; | 378 | return false; |
376 | } | 379 | } |
377 | if(date!=date_) | 380 | if(date!=date_) |
378 | { | 381 | { |
379 | date=date_; | 382 | date=date_; |
380 | changed=true; | 383 | changed=true; |
381 | } | 384 | } |
382 | mMarkCurrent = ( date.month() == QDate::currentDate().month() && date.year() == QDate::currentDate().year() ); | 385 | mMarkCurrent = ( date.month() == QDate::currentDate().month() && date.year() == QDate::currentDate().year() ); |
383 | temp.setYMD(date.year(), date.month(), 1); | 386 | temp.setYMD(date.year(), date.month(), 1); |
384 | firstday=temp.dayOfWeek(); | 387 | firstday=temp.dayOfWeek(); |
385 | if(firstday==1) firstday=8; | 388 | if(firstday==1) firstday=8; |
386 | numdays=date.daysInMonth(); | 389 | numdays=date.daysInMonth(); |
387 | if(date.month()==1) | 390 | if(date.month()==1) |
388 | { // set to december of previous year | 391 | { // set to december of previous year |
389 | temp.setYMD(date.year()-1, 12, 1); | 392 | temp.setYMD(date.year()-1, 12, 1); |
390 | } else { // set to previous month | 393 | } else { // set to previous month |
391 | temp.setYMD(date.year(), date.month()-1, 1); | 394 | temp.setYMD(date.year(), date.month()-1, 1); |
392 | } | 395 | } |
393 | numDaysPrevMonth=temp.daysInMonth(); | 396 | numDaysPrevMonth=temp.daysInMonth(); |
394 | if(changed) | 397 | if(changed) |
395 | { | 398 | { |
396 | repaintContents(false); | 399 | repaintContents(false); |
397 | } | 400 | } |
398 | emit(dateChanged(date)); | 401 | emit(dateChanged(date)); |
399 | return true; | 402 | return true; |
400 | } | 403 | } |
401 | 404 | ||
402 | const QDate& | 405 | const QDate& |
403 | KDateTable::getDate() const | 406 | KDateTable::getDate() const |
404 | { | 407 | { |
405 | return date; | 408 | return date; |
406 | } | 409 | } |
407 | 410 | ||
408 | void KDateTable::focusInEvent( QFocusEvent *e ) | 411 | void KDateTable::focusInEvent( QFocusEvent *e ) |
409 | { | 412 | { |
410 | repaintContents(false); | 413 | repaintContents(false); |
411 | QGridView::focusInEvent( e ); | 414 | QGridView::focusInEvent( e ); |
412 | } | 415 | } |
413 | 416 | ||
414 | void KDateTable::focusOutEvent( QFocusEvent *e ) | 417 | void KDateTable::focusOutEvent( QFocusEvent *e ) |
415 | { | 418 | { |
416 | repaintContents(false); | 419 | repaintContents(false); |
417 | QGridView::focusOutEvent( e ); | 420 | QGridView::focusOutEvent( e ); |
418 | } | 421 | } |
419 | 422 | ||
420 | QSize | 423 | QSize |
421 | KDateTable::sizeHint() const | 424 | KDateTable::sizeHint() const |
422 | { | 425 | { |