-rw-r--r-- | bin/kdepim/WhatsNew.txt | 17 | ||||
-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 13 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 44 | ||||
-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 | 9 | ||||
-rw-r--r-- | libkcal/calendarlocal.cpp | 2 | ||||
-rw-r--r-- | microkde/kdatetbl.cpp | 5 |
10 files changed, 90 insertions, 28 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,50 +1,67 @@ | |||
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... |
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 | |||
@@ -41,97 +41,96 @@ | |||
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" }, |
@@ -754,99 +753,99 @@ | |||
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" }, |
@@ -1146,53 +1145,57 @@ | |||
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 | |||
@@ -2140,99 +2140,99 @@ void CalendarView::changeEventDisplay(Event *which, int action) | |||
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 | { |
@@ -2843,130 +2843,133 @@ void CalendarView::appointment_delete() | |||
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()) { | ||
2906 | KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), | ||
2907 | i18n("Delete To-Do")); | ||
2908 | } else { | ||
2909 | checkExternalId( todo ); | 2912 | checkExternalId( todo ); |
2910 | mCalendar->deleteTodo(todo); | 2913 | mCalendar->deleteTodo(todo); |
2911 | changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); | 2914 | changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); |
2912 | updateView(); | 2915 | updateView(); |
2913 | } | 2916 | } |
2914 | } | 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); |
@@ -3438,96 +3441,113 @@ void CalendarView::processIncidenceSelection( Incidence *incidence ) | |||
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 | { |
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index e27da9a..c8d6bdd 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h | |||
@@ -440,97 +440,97 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser | |||
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 | ||
diff --git a/korganizer/koeditorgeneral.cpp b/korganizer/koeditorgeneral.cpp index 94e1f4c..b4fe965 100644 --- a/korganizer/koeditorgeneral.cpp +++ b/korganizer/koeditorgeneral.cpp | |||
@@ -238,116 +238,130 @@ void KOEditorGeneral::pickAlarmSound() | |||
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. |
diff --git a/korganizer/koeditorgeneral.h b/korganizer/koeditorgeneral.h index c58335e..de8edaf 100644 --- a/korganizer/koeditorgeneral.h +++ b/korganizer/koeditorgeneral.h | |||
@@ -60,53 +60,54 @@ class KOEditorGeneral : public QObject | |||
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 | |||
@@ -773,104 +773,99 @@ void KOTodoView::reparentTodo() | |||
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 | } | 822 | } |
827 | } | 823 | } |
828 | } | ||
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 | { |
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 151b55b..7b07a2e 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -1660,96 +1660,105 @@ void MainWindow::fillFilterMenu() | |||
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; |
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp index 12294c0..0eba6a9 100644 --- a/libkcal/calendarlocal.cpp +++ b/libkcal/calendarlocal.cpp | |||
@@ -157,98 +157,98 @@ void CalendarLocal::deleteEvent( Event *event ) | |||
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: " ) |
diff --git a/microkde/kdatetbl.cpp b/microkde/kdatetbl.cpp index 146291b..508ce31 100644 --- a/microkde/kdatetbl.cpp +++ b/microkde/kdatetbl.cpp | |||
@@ -299,108 +299,111 @@ KDateTable::setFontSize(int 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 | } |